论文阅读笔记:年龄识别—SSR-Net

今天分享的是IJCAI2018关于年龄预测的一个工作,即基于人脸来预测人的年龄。具体工作是:SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation。

1.关于人脸

在图像识别领域里,人脸技术非常有代表性,达到了极高的精准度,并且应用最为广泛。人脸的基本问题包括人脸目标检测(即定位人脸的目标区域),人脸比对(比如人脸和证件照比对是否同一人),人脸属性(性别、年龄、颜值、是否戴眼镜),人脸关键点等。

年龄是人脸属性预测的一个topic。其基本流程是:

2.摘要:

论文的工作是一个年龄预测模型,它的输入是经过人脸检测得到的人脸目标框,输出是预测的年龄结果。其要点包括:

网络设计尽可能轻量化,满足端上应用的时效性要求。

用分类损失预测年龄的分段(bin),设计了一个可以平移和缩放的软分类目标。

效果:网络大小0.32M,小于主流的mobile-net和dense-net,效果比以上两者要好。

3. 论文工作:

论文首先探讨了年龄问题的4种损失函数及存在的问题:

1)  回归:样本的随机性和分布不均导致易过拟合。

2)  多年龄段分类:硬分类,分段边界处理不好。

3)  学习年龄分布:样本不好标记。

4)  Pair-wise的学习:复杂度太高。

论文提出的改进方案是:

1)  多层分段。由粗到细策略,每个阶段执行部分年龄分类,任务量少(Stagewise),产生更少参数和更紧凑的模型。例如文中设计的3-stage,每个stage进行3分类,第三stage可以分出3*3*3=27个bin。因为采用软分类,所以每一个bin的区间不是固定值,而是有一定交叠的自适应值。

预测出的年龄阶段是融合各阶段的分布

其中每一个bin的宽度

,  这里i是bin的索引.

在训练时,最小化平均误差函数,这里

,年龄预测损失函数为:

2)  软分类,引入动态范围,让每个bin可以平移和缩放,且平移和缩放参数采用与input相关的自适应值,能通过网络进行学习。

具体的网络实现了一个3-stage的2-stream网络,网络设计非常紧凑。

2-stream是两个平行的异构网络,为了抽取异构特征(2-stream网络参数数量相同,激活函数和pooling方式不同)。

每个stage进行软分类的缩放和平移量,以及每阶段的预测分布p的产生方式如图b中所示。缩放系数是实数值,而平移量和预测分布是向量,因此做了不同的处理。

在最后的stage,模型的预测结果与真实值产生的误差,会进行梯度回传,同时软分类的参数也会一起得到更新。

4. 效果:

首先和较深的复杂网络结构(如VGG或res-net)相比,还是复杂模型的效果更好一些,但复杂模型大小一般在几百M,无法在端上应用。对比其他轻量级网络,主要是和Mobile-net, dense-net相比,模型更小(0.32M),效果更好。

局限性:人脸属性的主流解决方案中,一般可以用一个分类器同时优化多个人脸属性目标,所以底层选择mobile-net或dense-net更通用,SSR-net的网络结构和损失函数专门为年龄预测定制,通用性稍差一些。

5.项目代码和demo:

项目的github代码地址如下:https://github.com/shamangary/SSR-Net

代码中的Demo可以调用摄像头进行帧维度的实时预测,目标检测用的是LBP和MTCNN(可选,MTCNN效果更佳),支持对比mobile-net , dense-net的结果。代码简洁,非常容易跑通。

实测时发现,随着人脸的移动,预测数值波动比较大,同一个人上一秒预测24岁,下一秒可能是35岁。视角,距离,清晰度会对预测结果产生比较大的影响,也从另一个角度说明年龄预测很难做到非常精准。


另外作者还提供了针对亚洲人脸优化的一个model,即在Megaage-Asian数据集上重新训练的版本。具体地址为:

https://github.com/b02901145/SSR-Net_megaage-asian

你可能感兴趣的:(论文阅读笔记:年龄识别—SSR-Net)