C3AE: Exploring the Limits of Co
这篇文章是提出新的浅层网络来做人脸年龄估计的任务。
文章主要是利用小的浅层网络来处理低分辨率的图片,创新的点到不是很大,但是值得引人思考的是,对于一些低分辨率的图片是否可以不去用重量级的网络以及一些经典的连接就可以取得很好的效果。
文章分为三点去展开
第一是研究了一下mobilenet和shufflenet中的depth-wise卷积和标准的卷积在低分辨率图像任务中,是否真正能够减小网络参数。
第二是提出使用类似于one-hot的,两点表示人类年龄的方法。
第三是尽可能更多的采用图片的信息对年龄进行估计。
下面依次说明
一、重新审视标准的卷积在低分辨率图片中的压缩效果
这部分主要解释为什么本文采用标准卷积,而不是mobilenet和shufflenet里面提出的通道分离卷积,如群卷积和depth-wise卷积。
这里是从参数的量和对应的效果考虑。
首先考虑一个卷积层,输入维度为,输出维度为,其中表示特征图的大小,M和N表示输入和输出卷积的通道数。对于mobilenet里面提出的depth-wise的分离卷积来说计算量为。对于一个标准的卷积来说计算量为。上面为卷积核的大小。那么通过上面两式相除就能得到计算量的比较了,如下式所示:
上式中如果假设普通的卷积和depth-wise卷积的输入通道和输出通道是对应相等的,即和,上式可以简化为,可以看出这种情况下确实是depth-wise计算量更小。但是为了在低分辨率图片上使depth-wise卷积能和普通的卷积有相应的特征表达能力,常常会增加depth-wise卷积的通道数,即一般会有和。
举个例子来说明,假设使用32通道大小的普通卷积提取图像特征,在MobileNet-V2中会使用144甚至更大的通道数来提取图像特征。在这种情况,上式结果。
所以从对图片特征提取效果和计算量综合考虑,本文采用了标准的卷积。
二、使用类似one-hot向量的两点表示法来表示年龄
对于给定的数据库,用符号表示,其中表示图片,表示年龄的标签。对于深度学习模型可以用一个映射关系来表示,。对于任何年龄标签都能使用表示:
其中为权重,且
对于一个给定的年龄区间[a,b],。将年龄区间均匀划分为K个小区间,那么就能用和表示,其中和分别表示向下和向上取整符。和因子计算如下:
下面举例说明,如下图所示,给定年龄区间为[10,80],下图第二行是K=10的情况,第三行是K=20的情况。下图分别使用不同的划分来对年龄68和74进行两点表示。比如68,在K=10区间为[10,80]的情况下,可以表示为。
其实扩展一下思考,年龄还可以用多点表示,例如50可以表示为,但是这种表示方式意义不大,对模型的训练没有什么指导意义。
三、级联训练(Cascade Training)
先给出一个形象的网络结构图,如下图所示
2.png
从上图看出,流程用符号表示是这样的
这步说白了就是将年龄的两点表示和真实的年龄用来同时指导网络模型的训练。
对于两点表示的loss计算采用KL-Divergence,如下所示
对于最终的年龄预估阶段采用的loss是L1距离,如下所示
最终采用的loss函数如下所示
上式中是个超参数
四、基于上下文的回归模型
为了更好的利用图片的信息,对于网络的输入文章将输入图片截取三次,如上图中的三种颜色的框,提取好三种输入后对特征进行concat操作,然后用于年龄的预估。
这里是怎么截取的,文章没有说的很明白
最后看看文章使用的网络结构如下表所示
3.png
文章没有很大的创新,主要是给人一种启发。人工设计的网络有可能存在冗余部分,对于一些任务没必要用很复杂的网络,比如本文的低分辨率图片的年龄预估,没必要使用很深的网络也能达到好的效果,文章还做了很多实验,详情可以查看原文。