程序会经历什么流程?面部识别程序如何工作?
21
A
回答
36
非常粗略地,所述处理阶段将是:
- 检测面部位置
- 规格化的面部
- 收集特征为每个检测到的面部
- 订阅特征的机器学习算法
步骤1通常是使用传统Viola&Jones face detection algorithm完成。它非常快速和可靠。
在步骤1中发现的面可具有不同的亮度,对比度和不同的尺寸。为了简化处理,它们都被调整为相同的大小和曝光差被补偿在步骤(例如,使用直方图均衡)2.
有许多方法步骤3早期面部检测试图找到特定位置(中心眼睛,鼻子的末端,嘴唇的末端等),并使用几何距离和角度作为识别特征。从我读过的内容来看,这些方法非常快,但并不可靠。
更近期的方法“特征脸”是基于这样一个事实,即人脸图片可以近似为基础图像的线性组合(通过PCA从大量训练图像中找到)。这种近似中的线性因素可以用作特征。这种方法也可以单独应用于脸部的部位(眼睛,鼻子,嘴巴)。如果所有图像之间的姿势相同,则效果最好。如果一些面孔向左看,其他面向上看,它不会工作。主动外观模型试图通过训练完整的3D模型而不是平坦的2D图片来抵消该效应。
步骤4相对比较简单:对于每个人脸以及在训练期间获取的人脸图像,您都有一组数字,并且您想要找到与当前测试人脸“最相似”的人脸。这就是机器学习算法的功能。我认为最常用的算法是支持向量机(SVM)。其他选择例如人工神经网络或k近邻。如果特征很好,ML算法的选择不会有太大影响。
文学主题:
- Computer Vision - Algorithms an Applications对待人脸检测,面部识别和机器学习(许多其他主体之间)。这是相当新的,因此它涵盖了最新的研究。它也有一个很好的参考书目。
- Template Matching Techniques in Computer Vision对待模板匹配方法人脸识别,深入。
- 你可以找到很多使用谷歌学者的研究文章。
3
Principal Component Analysis是在模式识别系统,例如facial recognition的基极。
相关问题
- 1. 有没有任何C#面部识别库的工作?
- 2. 如何识别程序集?
- 3. 如何识别连续工作日期?
- 4. 人脸识别如何实时工作
- 5. 面部识别登录到Android应用程序
- 6. 面部识别功能在Facebook应用程序
- 7. 如何从内部识别Java Web应用程序的URL?
- 8. 如何通过程序识别部分图片?
- 9. 如何识别安装程序文件?
- 10. 如何识别安装程序类型?
- 11. 如何识别重复的程序集?
- 12. 如何自动识别过程是否停止工作(powershell?)
- 13. 角度表达未被识别。程序不能正常工作
- 14. 如何制作一个Python程序识别首次使用
- 15. 脸部识别
- 16. Java的实时面部识别库
- 17. Java中的面部识别/处理
- 18. 面部识别/合并软件
- 19. 面部识别库自动簇
- 20. kinect v2.0面部识别(wpf)c#
- 21. 面部表情识别like snapchat
- 22. 对象的iOS 5'面部识别'
- 23. 程序不被识别为内部或外部命令
- 24. 识别调用程序
- 25. C#活动程序识别
- 26. 如何在iOS上执行面部识别?
- 27. 如何正常化面部识别中的特征脸?
- 28. 识别脸部以识别情绪
- 29. jQuery方法识别页面底部将不起作用
- 30. 如何识别擅长多线程编程的程序员?
你的问题是脱离主题 - 它可能适合于cstheory.stackexchange.com – 2011-02-12 14:39:36
@Daniel A. White:根据FAQ,有关软件算法和编程问题的问题是关于SO的话题。人脸识别是一个使用软件算法解决的编程问题。我不明白这是如何脱离主题的。 – Niki 2011-02-12 16:16:25