我有网络摄像头,可以检测面部并将它们存储在图像存储库中。在存储库中,只有面孔(图像)将存储在其中我有多个重复的面孔。有没有可以检测重复面孔的选项?
我尝试通过计算图像的哈希值,但它只能检测到重复的图像而不是人脸。请提出最佳解决方案。
我尝试使用链接https://www.tensorflow.org/api_docs/python/tf/contrib/learn/KMeansClustering但我无法输入图像并执行。
谢谢阿维纳什
我有网络摄像头,可以检测面部并将它们存储在图像存储库中。在存储库中,只有面孔(图像)将存储在其中我有多个重复的面孔。有没有可以检测重复面孔的选项?
我尝试通过计算图像的哈希值,但它只能检测到重复的图像而不是人脸。请提出最佳解决方案。
我尝试使用链接https://www.tensorflow.org/api_docs/python/tf/contrib/learn/KMeansClustering但我无法输入图像并执行。
谢谢阿维纳什
人脸检测=识别人脸出现在图像中的事实,并定位它在图像中的位置。
人脸识别= 将人脸与已知人的身份进行匹配,或者基于多个人脸图像是同一个人的图像来相互匹配。
您说您的网络摄像头(至少)进行面部检测。你的问题表明你也想做识别。
这两个过程都需要提取图像中的高级不变量。这些不变特征表示的计算几乎处于现代计算机视觉的前沿。简单地散列像素值与此相距数光年:只要一个像素的强度在一个通道中甚至发生一个级别的变化,图像的散列就会出现任意程度的差异。当然,像这样的微小变化并不会改变图像中人脸的身份。即使是像素级别的大得多的变化也不一定会改变身份——它们可能是由于头部的旋转、不同的照明条件、胡须/太阳镜/发型的变化等。
如果你说你的网络摄像头“检测到人脸”,是不是因为网络摄像头制造商提供的人脸检测技术?如果是这样,请从他们的 API 文档开始。也许他们也支持人脸识别?检查一下,然后谷歌“人脸识别库”来比较解决这个复杂问题的其他软件方法。
您可能决定进一步探索的一个选项是 OpenCV,它具有 Python 绑定并且包含用于检测(使用CascadeClassifier
对象)和识别(使用FaceRecognizer
)的工具。这是一个教程: http ://docs.opencv.org/2.4/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.html
大多数“识别”方法都是有监督的因为他们需要预先指定一个“训练集”。也许您的应用程序允许这样做:也许您事先知道谁将出现在照片中并且已经拥有他们的照片,每张照片都与一个身份相关联。(例如,Facebook 的人脸识别能够利用人们之前在照片中标记人脸这一事实,从而为与特定身份相关联的图像提供多个训练点。)如果没有,那么你将不得不想出一些即时构建训练集的方案,并持续或定期更新训练。这种人脸识别问题的特殊子类型可以描述为“无监督人脸聚类”——即将人脸图像分组在一起,而无需先验地知道其中任何人的身份。Facebook也在一定程度上做到了这一点。这甚至更接近于最前沿的前沿,您可能需要深入研究计算机科学文献来弄清楚它是如何完成的。见这里,例如:http://bitsearch.blogspot.com/2013/02/unsupervised-face-clustering-with-opencv.html