如何检测给定图片是否为人脸?

有没有简单的方法来判断给定的图像是否是人脸还是其他东西(希望不需要训练)?

我的想法是构建每张图像的特征向量,然后应用一些聚类方法(例如k-means,k=2)。但即使得到了好的聚类结果,我也不确定区分人脸/非人脸的最佳标准是什么?


回答:

特征分解通过在数据空间中寻找高方差的方向来降低连续域的维度。K-means在点密度高的空间中寻找聚类。你似乎把它们混在一起了,完全忽略了你如何首先获得人脸特征(你如何缩放、旋转和裁剪你想要检查的任何东西)。

你不需要训练Haar检测器,因为它们已经为人脸训练好了。它们检测人脸,而不是识别其身份。你只需要像@人名上面建议的那样,将代码与训练后获得的参数文件一起移植即可(这些训练已经完成)。

不过,毫无思考地复制粘贴代码并没有多大意义。阅读一些关于Haar的内容。试着理解

  1. 它们为什么有效 – 人脸在中间空间尺度上具有最明显的特征,如眼睛、鼻子、眉毛。太小(瞳孔大小)或太大(整个脸的大小)的特征不太有用。
  2. 为什么Haar优于小波或Gabor – Haar只是Gabor的原始(方形)近似,但由于它们可以用积分图像快速计算,因此优于更精确但速度较慢的对应物;
  3. 有什么限制 – Haar有自己的空间尺度和方向,但可以快速重新计算为另一个尺度。
  4. 如何训练Haar分类器(你试图避免的最激动人心的主题)。AdaBoost是训练由多个Haar组成的更复杂分类器的一种方法。最后,为了加速处理,你可以问一个稍微不同的问题,而不是找到一张脸。即,你可以尝试快速排除图像中不可能是人脸的区域。这被称为级联分类。系统地研究这些方面,你将比从代码粘贴中学到更多关于人脸检测的知识。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注