利用CNN进行人脸年龄预测

时间:2021-08-16 14:07:13

很久之前做的东西了,最近做了一个人脸相似度检测,里面用到了这里的一个模型,所以抽个空把人脸年龄检测的思路总结一下。

与其他CNN分类问题类似,人脸年龄预测无非就是将人脸分为多个类别,然后训练卷积神经网络,最后利用训练好的卷积神经网络进行分类即可。

但是在人脸年龄分类方面,有几个比较重要的问题,第一,人脸数据集不好获取,第二,人脸对偏移,光照敏感度很高。第三,特征不容易提取。

在数据集方面,我直接用了歪果仁的一个数据集,大概有40W张图片,分为100个年龄类,虽然质量不高,但是勉强可用。

对人脸图像进行预处理可降低偏移,光照等带来的影响,例如对正人脸图像,使用均值文件等等。

对于第三个问题,则需要用到caffe里面强大的功能::fine-turning,我选择了vgg-16神经网络,其中训练分为6个阶段,其结构图为:

利用CNN进行人脸年龄预测

从左到右一共6个阶段,每个阶段为一个fine-turning,使用fine-turning能非常有效的提升神经网络预测的准确率。

接下来训练网络,训练时间比较慢,我在GTX1060上训练大概3天才训练玩。

训练好以后直接将模型文件保存为age.caffemodel,将网络配置文件保存为age.prototxt。

当预测一张新图片时,会得到图像的最终预测值,维度为100的向量,每个值代表属于此类的概率,然后乘以range(100)即可。