OpenCV深度学习人脸识别示例——看大佬如何秀恩爱
(欢迎关注“我爱计算机视觉”公众号,一个有价值有深度的公众号~)
提到OpenCV人脸识别,你是否还停留在Haar级联人脸检测+LBP特征人脸识别上?对于小规模数据库如何用OpenCV开发简易的人脸识别系统?
PyImageSearch博主Adrian Rosebrock昨日发表博文,展示如何使用OpenCV的深度学习工具在小库上进行人脸识别。昨天是我们中国人的传统佳节——中秋节,
Adrian推送博文时也喜不胜收,不过原因是他结婚啦!而且这篇博文使用的人脸数据正是来自他与新娘Trisha。
赶紧看看他们的秀恩爱照~
恭喜Adrian!原来秋天也是收获爱情的季节~
言归正传,在这篇博文中,Adrian展示了如何使用OpenCV现有深度学习工具进行人脸识别,主要流程包括:
1.人脸检测,OpenCV使用Caffe训练好的SSD检测模型检测人脸;
2.提取人脸嵌入特征,OpenCV使用OpenFace工程中的FaceNet模型提取深度学习人脸嵌入特征;
3.训练人脸识别模型,使用scikit-learn中的SVM算法在人脸嵌入特征上训练分类器;
4.使用步骤3中训练的模型在图像和视频中识别人脸。
作者收集的数据库就是他们夫妻两个人的照片,并增加了“unknown”类来自电影侏罗纪公园的部分剧照。每类只有6幅图片。
看看效果
虽然库很小,但还是能将这甜蜜小两口认出来的。
不过也出现了一些看起来不太理想的情况。毕竟数据库太小了。
作者又探讨了下如何提高人脸识别系统的识别率:
1.收集更多的数据,作者推荐最少每人10-20张人脸图像;
2.增加人脸对齐预处理,相当于包含旋转、尺度、平移的人脸几何归一化;
3.调整超参数;
4.使用dlib的深度学习嵌入特征提取,嗯,dlib开源的人脸识别模型比较强大。
参见:
http://blog.dlib.net/2017/02/high-quality-face-recognition-with-deep.html
为什么要在使用SVM分类器而不是end-to-end训练?
因为数据库太小没法训练,通常的做法就是使用在大库上训练的人脸模型提取特征,使用传统的分类算法识别人脸。
Adrian在博文中说“As I mentioned in the introduction to today’s face recognition post, I was just married over the weekend, so this post is a “gift” to my new wife .“
不知道作为程序员的妻子Trisha,收到这样的礼物是不是很惊喜^_^
原博文地址:
https://www.pyimagesearch.com/2018/09/24/opencv-face-recognition/
代码下载:
因为原始下载需要梯子,52CV君已经把它搬到百度云,在“我爱计算机视觉”公众号对话界面回复“opencvfr”,即可收到百度云下载地址。
最后祝福Adrian新婚快乐,百年好合~
(欢迎关注“我爱计算机视觉”公众号,一个有价值有深度的公众号~)