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

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

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


回答:

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

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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