use*_*543 7 algorithm computer-vision
我正在做一个个人项目,试图找到一个人的外观相似的数据库,其他人的照片都以一致的方式拍摄 - 人们直视镜头,中性表情,不倾向于头部(想想护照照片) ).
我有一个用于在面部放置2d坐标标记的系统,我想知道是否有任何已知的方法可以找到这种方法的外观相似?
我发现了以下面部识别算法:http: //www.face-rec.org/algorithms/
但没有人能够解决看起来相似的具体任务.
谢谢你的时间.
我相信你也可以尝试搜索"面部验证",而不仅仅是"面部识别".这可能会为您提供更相关的结果.
严格地说,2在科学文献中实际上是不同的东西,但有时在人脸识别中被混淆.有关它们的差异和一些示例代码的详细信息,请查看此处:http://www.idiap.ch/~marcel/labs/faceverif.php
然而,出于您的目的,Edvard和Ari等其他人也建议也会这样做.基本上他们建议使用K最近邻风格的人脸识别分类器.首先,您可以尝试一下.首先,为数据库中的每个面部图像计算特征向量.使用的一个可能的特征是局部二进制模式(LBP).您可以通过Google搜索找到代码.对查询图像执行相同操作.现在,循环遍历所有特征向量,并使用欧几里德距离将它们与查询图像进行比较,并返回K最近的特征向量.
虽然上面的方法很容易编码,但它通常不会像一些更复杂的方法一样健壮,因为它们通常在面部未对齐时会严重失败(称为无约束姿势.搜索"野外的标记面孔")该问题的最新技术成果.)或在不同的环境条件下拍摄.但是,如果数据库中的面对齐并在您提到的类似条件下进行,那么它可能正常工作.如果它们未对齐,您可以使用您提到的能够计算的面部关键点来对齐面.通常,比较未对齐的面部是计算机视觉中非常困难的问题,并且仍然是非常活跃的研究领域.但是,如果你只考虑看起来相似并且姿势相似的面部相似(即姿势和外观相似)那么这应该不是问题.
您提供的网站链接到Eigenfaces和Fisherfaces的代码.这些基本上是两种计算脸部图像特征向量的方法.通过对具有最接近查询图像的特征向量(分别使用PCA和LDA计算)的数据库中的面部进行K最近邻搜索来识别面部.
我可能还应该提到,在Fisherfaces方法中,您需要为数据库中的面具有"标签"以识别面.这是因为线性判别分析(LDA),即Fisherfaces中使用的分类方法,需要这些信息来计算投影矩阵,该投影矩阵将投射相近的相似面和不相似的面的特征向量.然后对这些投影矢量进行比较.这就是面部识别和面部验证之间的区别:对于识别,您需要在数据库中"标记"您的训练图像,即您需要识别它们.为了验证,您只是试图判断任何2个给定的面是否属于同一个人.通常,您不需要传统意义上的"标记"数据(尽管某些方法可能会使用辅助训练数据来帮助进行面部验证).
OpenCV中提供了计算Eigenfaces和Fisherfaces的代码,以备您使用时使用.
作为旁注:特征向量实际上只是线性代数意义上的向量.它只是n个数字打包在一起."特征"一词指的是类似"统计"的东西,即特征向量是包含表征其所代表的对象的统计数据的向量.例如,对于面部识别的任务,最简单的特征向量将是面部的灰度图像的强度值.在这种情况下,我只是将2D数组数组重新整形为一行1列向量,每个条目包含一个像素的值.这里的像素值是"特征",像素值的nx 1矢量是特征向量.在LBP的情况下,粗略地说,它计算图像中小像素块的直方图,并将这些直方图连接成一个直方图,然后将其用作特征向量.因此局部二进制模式是统计数据,并且直方图连接在一起是特征向量.他们一起描述了你脸上的"纹理"和面部图案.
希望这可以帮助.