学习了机器人人脸识别程序的心得体会
整个人脸识别流程分为三个部分(1)人脸检测;(2)人脸特
征提取;(3)基于欧几里得距离的比较。
人脸识别和图片分类不同,我们不能像在图片分类工程中一样
针对每一个分类提供大量的训练集去训练我们的模型。在人脸识别
的网络模型中,我们所需要的结果并不是最后全连接层输出的置信
度结果,而是经过 CNN 网络提取的特征值。这些特征值的维度根据
网络模型的选用和输入图片像素的不同而变化。
由于需求不同,我们对于神经网络的训练方式自然不同。通常
可以选择基于三元组损失的训练方式和基于中心损失的训练方式。
但是基于三元组损失的训练方式难以定义且难以收敛,所以多选择
基于中心损失的训练方法,简单来说中心损失就是为训练集的每一
个分类设置一个中心,通过优化提取特征和这个中心之间的距离来
达到优化的效果。在这里需要注意:尽管我们是基于中心损失去训
练神经网络,但这样的效果并不会很好。所以我们的损失定义应该
是中心损失和传统的分类损失的加权结合。
至于训练集,有很多可选的训练集,但大多需要科学上网甚至
正式申请才能够下载。我使用的训练集是 casia-webface,很好获
取。
我们应该在开始人脸识别之前,应该预先处理数据库中的图
片。我认为比较好的方法是将提取的特征值(一个数组)记录在
(.txt)文档里,在启动服务的时候统一读取进来。