0.前言
本文记载网上各种关于 人脸识别 的知识,不定期更新
1.概括
人脸识别系统 主要分为三大部分:人脸检测,人脸定位(矫正),人脸识别
人脸检测:有基于机器学习的算法的,有 基于深度学习的,可以关注R-CNN及其后面的衍生系列
人脸定位:这个不太了解,主要是标记关键的点(眼睛,鼻子等),有5点到很多点不等。用于人脸的矫正
人脸识别:应用较广的领域,也是我重点学习的方向。
2.人脸识别
初级的人脸识别可以看做是一个多分类问题,但本质上人脸识别是个特征提取的问题。
目前主要的研究方向有三个:
1.网络结构的优化:从alnexnet到vgg到resnet,到最近的DeepID,FaceID等,都是在特征提取和参数数量优化上下文章,这一般是Google,Facebook等大公司才能挑战的。
2.数据集
数据是一切的基础,LFW等早期的人脸数据集样本少且不具代表性,大公司和研究所们提供了越来越大的数据集。
3.Loss损失函数
学术界大多围绕这个开展,最初的Softmax-loss只是将人脸看做一个我分类问题,我用resnet18网络,1400张图片训练测试200个人,准确率达到72%左右,详情可见 https://blog.csdn.net/sinat_37787331/article/details/80149034
关于loss的演变推荐几个好的博主 https://github.com/KaleidoZhouYN/Loss-Functions
https://www.cnblogs.com/heguanyou/p/7503025.html
https://zhuanlan.zhihu.com/p/34404607
https://github.com/JuZiSYJ/sphereface_pytorch
接下来写我自己对于loss的学习理解
4.centerloss
2016年提出,传统的softmax关注分类,centerloss提出分类的同时也要关注聚类,于是有了下面著名的图
主要的代码实现:https://github.com/ydwen/caffe-face(基于caffe)
https://github.com/jxgu1016/MNIST_center_loss_pytorch(基于pytroch,但我没有复现出这个效果,mnist训练下来的acc只有11%,不知道哪里错了)
5.A-softmax-loss,sphereface
这两个是softmax进行修改,将不同类之间的角度扩大。
这个博主讲的很好 http://www.cnblogs.com/heguanyou/p/7503025.html
一些实现的代码: https://github.com/JuZiSYJ/sphereface_pytorch
https://github.com/wy1iu/sphereface