基于CNN的年龄和性别分类
学习论文 Age and Gender Classification using Convolutional Neural Networks.
主要是针对年龄和性别分别建立分类问题,基于CaffeNet,年龄转化为 8 类别、性别为 2 分类问题,训练两个网络模型,实现原理较为直接简单.
1. 年龄和性别分类的CNN网络
CNN的第一个应用是用于字符识别的 LeNet5 网络. 随着GPU发展,训练数据的快速增长,用于图像分类的深度CNN网络显著提高了准确率. 随后,CNN成功应用于更多领域,如人体姿态估计、人脸关键点检测、语音识别及动作分类等. 这里将CNN网络用于年龄和性别分类任务.
收集大型的、标签化的年龄和性别图像训练集有两种方式:
- 用户的个人注册信息,如出生日期和性别,往往是私人信息.
- 手工标注,繁琐且耗时.
现阶段,尚无该类型数据集. 针对小型图像数据集,机器学习方法易出现过拟合问题. 深度CNN网络方法由于其具有大量的模型参数,过拟合问题更加突出. 因此,过拟合问题需要慎重考虑.
网络结构说明
Figure2. CNN网络结构例示. 网络包括 3 个卷积层,每一个卷积层后接一个 ReLU 和 Pooling 层. 此外,前两层采用LRN(local response normalization)归一化. 第一个卷积层是 96 个 7×7 fliters, 第二个卷积层是 256 个5×5 fliters,第三个和最后一个卷积层均是 384 个 3×3 fliters. 网络最后是两个全连接层,均是 512 个输出单元. 如Figure3. 主要是基于CaffeNet.
分类问题:
-
年龄分类: 8 类
age = "0 - 2"
age = "4 - 6"
age = "8 - 13"
age = "15 - 20"
age = "25 - 32"
age = "38 - 43"
age = "48 - 53"
age = "60 -"
性别分类: 2 类
网络输入图片是从 256×256 中裁剪 227×227 大小,输出的全连接层后接 softmax layer,以估计各类的概率. 针对测试图片,概率最大的类即为预测结果.
2. 联合训练年龄和性别分类网络
根据对论文方法及其实现的学习,个人考虑,可以将年龄和性别分类问题转化为二标签多任务分类问题,即每张人脸图像均有两个标签——年龄和性别,训练数据格式为:
# train.txt
faceimg1.jpg 1 0
faceimg2.jpg 0 1
faceimg3.jpg 2 0
...
具体操作可参考Caffe实践 - 基于VGG16 多标签分类的训练与部署.