InisghtFace 制作自定义数据集和模型训练评估

前言

本文以lfw数据集进行示例
lfw结果集下载地址:http://vis-www.cs.umass.edu/lfw/lfw.tgz
insightface源码下载地址:https://github.com/deepinsight/insightface
insightface作者提供了完整的工程,能够基本满足并完成人脸识别流程

人脸识别流程4步:1、检测;2、对齐矫正;3、提取特征;特征匹配
其中,检测对齐使用ssh或mtcnn并用dlib即可实现,然后对完成1和2步的人脸图像进行提取特征,作者使用的是改进后的resnet网络来提取特征(其中用的损失层为arcface loss),提取到的512维向量,归一化后内积得到相似度。

insightface让我感觉是一个大型的分类问题,其中的回归问题例如回归出人脸关键点并进行对齐矫正的代码作者已经帮我们写好了,所以这个流程仅仅有实践意义,理论讲述可以看作者发表的论文,讲述得很详细。
在实现一个优秀人脸识别系统的过程中,我觉得应该有几个重要环节:
1、干净而且大量的数据
2、优秀的网络结构
3、优秀的网络损失函数
4、由以上1,2,3决定一个优秀的模型,作为一个大型的分类过程,优秀的模型能够提取到人脸更加独有的特征,具有更好的“辨别特性”

数据清洗

用的方法是先用作者的model对我的数据集进行一次特征提取和匹配,对于数据集中的每一个人我有一张标准的底图,提取了底图的特征并对每个人的所有图片进行匹配,将不匹配的图片剪切出来进行人工筛选,(人多的话并合