原始题目 | SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation |
---|---|
中文名称 | SSR-Net: 一个小型的 软分段回归网络 用于年龄估计 |
发表时间 | 2018年7月13日 |
平台 | IJCAI-18 |
来源 | 台湾中央研究院、国立台湾大学 |
文章链接 | https://www.ijcai.org/proceedings/2018/0150.pdf |
开源代码 | https://github.com/shamangary/SSR-Net (官方实现) https://github.com/b02901145/SSR-Net_megaage-asian https://github.com/oukohou/SSR_Net_Pytorch |
本文提出了一种新的 CNN 模型,称为 Soft Stagewise Regression Network (SSR-Net),使用从小型模型对单个图像进行年龄估计。受 DEX 的启发,我们通过执行 多类分类来解决年龄估计问题 ,然后通过计算期望值将分类结果转化为回归。SSR-Net 采用由粗到细的策略并执行 多阶段的多类分类 。每个阶段只负责完善其前一阶段的决策,以获得更准确的年龄估计。因此,每个阶段执行的任务很少,需要的神经元也很少,从而大大减少了模型的大小。为了解决将年龄分组到不同类别所引入的量化问题,SSR-Net 根据输入人脸图像为每个年龄类别分配一个可移动和缩放(shifted and scaled)的动态范围。多阶段策略和动态范围都包含在 soft stagewise 回归的公式中。提出了一种新的网络架构来执行 soft stagewise 回归。由此产生的 SSR-Net 模型非常小型,仅占用 0.32 MB。尽管模型很小,但 SSR-Net 的性能接近模型大小通常大近 1500 倍以上的最先进的方法。
在本文中,我们提出了一种新的年龄估计方法,Soft Stagewsie 回归网络(SSR-Net)。它既小型又高效。它还在多个年龄估计数据集上取得了良好的表现。 Stagewise 预测结构避免了大量神经元并导致模型更加小。通过利用动态范围,可以更好地解决量化错误,从而使 SSR-Net 的性能可以与庞大模型的性能相媲美。凭借其紧凑的尺寸和效率,SSR-Net 适用于在移动或嵌入式设备上进行年龄估计。
从一张人脸图像中预测一个人的真实 (生物) 年龄是计算机视觉和人工智能中的一个经典问题[Ramanathan et al., 2009]。它可用于许多应用,例如监控(surveillance)、产品推荐、人机界面和市场分析。这个问题具有挑战性,因为同龄人的外表存在显着差异。老年人可能看起来比一些年轻人年轻,反之亦然。因此,即使对人类来说,从外表估计真实年龄的任务也是具有挑战性的。
将年龄估计问题表述为回归问题是很直观的,因为年龄是一个连续值而不是一组离散类[Agustsson et al., 2017; Rothe et al., 2016b]。然而,正如之前的研究所指出的[Chang et al., 2011; Rothe et al., 2016a; Tan et al., 2018],基于回归的年龄估计方法可能会由于老化过程中的随机性以及人脸外观与其真实年龄之间的模糊映射而受到过拟合的影响。另一方面,人们可以很容易地分为几个年龄段,例如 青少年、中年或老年人 。因此,许多研究使用多类分类方法通过将年龄量化成组来解决年龄估计问题[Rothe et al., 2015; Rothe et al., 2016a; Tan et al., 2018]。然而,将年龄估计作为多类分类问题必须面临 年龄组是有序的且高度相关而不是独立的类的问题 。此外,将年龄量化为年龄组可能会遇到量化误差和年龄组间模糊性的问题。一些方法采用 序数信息(ordinal information)[Chang et al., 2011; Zhang et al., 2017] 用于获取年龄之间的相对排序和解决年龄组之间的歧义。分布学习方法n [Geng et al., 2014; Hou et al., 2017] 将年龄建模为可学习的分布用于解决组歧义问题。然而,使用序数信息和分布学习的方法通常需要额外的信息,例如分布或 ranks 之间的相似性。此外,它们通常需要更复杂的损失函数和算法。
大多数最先进的基于 CNN 的年龄估计方法都建立在复杂网络或网络集成的基础上[Simonyan and Zisserman, 2014; Chen et al., 2017]。他们的模型通常体积庞大,模型大小大于 500 MB。因此,它们不适合在内存和计算资源有限的平台上采用,例如移动和嵌入式设备。目前已经有使用 小内存 占用(footprints) 的 小型 通用 CNN 模型[Howard et al., 2017; Huang et al., 2017] 以便智能应用程序可以在此类设备上运行。 对于年龄估计,Niu 等人提出的 ORCNN,其模型消耗大约 1.7 MB 的内存 [Niu et al., 2016]。
本文提出了一种新的 CNN 模型,称为 Soft Stagewise Regression Network (SSR-Net),用于年龄估计。该模型结构紧凑,内存占用仅为 0.32 MB,并实现了最先进的性能。SSR-Net 的灵感来自 DEX[Rothe et al., 2015; Rothe et al., 2016a]。DEX 将年龄估计作为一个多类分类问题,通过计算期望值作为年龄将分类结果转化为回归。DEX 的一个问题是它需要大量神经元,每个年龄段一个。最后一个全连接层的 links 数是特征数和神经元(类别)数的乘积。因此,许多神经元导致许多参数和大型模型。SSR-Net 用从粗到细的策略解决了这个问题。每个阶段只对 少数类进行中间(intermediate)分类,比如当前年龄组内的 “相对年轻”、“大约一致” 和 “相对较老”。下一阶段细化上一阶段指定的年龄组内的决策。这样,每个阶段只需要少量的神经元,模型大小可以大大减小。基于分类的方法的另一个问题是年龄的量化。SSR-Net 通过为每个年龄组引入动态范围来解决这个问题。每个组的年龄间隔可以根据输入的人脸图像进行移动和缩放。这些想法被纳入 soft stagewise 回归的公式中。提出了一种新的网络结构来实现 soft stagewise 回归。与基于序数信息(ordinal information)或分布学习的方法相比,SSRNet 可以通过简单的回归损失和端到端的方式进行训练,而无需额外的信息,例如分布/rank 相似性。实验表明,SSRNet 优于现有的紧凑型网络,包括 MobileNet [Howard et al., 2017]、DenseNet[Huang et al., 2017] 和 ORCNN [Niu et al., 2016]。SSR-Net 的性能接近具有更大模型尺寸 (1500 倍以上) 的最先进方法的性能。
在本节中,通过将它们分为四类来回顾最先进的年龄估计方法。
将年龄估计问题转换为回归问题是很直观的。Rothe et al. 通过将 CNN 特征传输给以支持向量回归 [Chang and Lin, 2011] 以用于年龄估计 [Rothe et al., 2016b].。 Agustsson et al. 提出的 Anchored Regression Network (ARN) 将多个线性回归器结合 soft 分配到 anchor 点 [Agustsson et al.,
2017]。正如之前的研究所指出的那样[Chang et al.,2011;Rothe et al.2016a], 由于老化过程中的随机性和模糊映射,基于回归的方法经常过度拟合。
DEX 通过进行多类别分类,然后计算期望值作为年龄估计来执行年龄估计 [Rothe et al., 2015; Rothe et al., 2016a].。此外,Liu et al. 同时使用回归和分类进行年龄估计 [Liu et al., 2015] 。Malli et al. 使用年龄组和 age-shifted 分组来训练一个集成的深度学习模型[Malli et al., 2016]。
考虑到分类经常受到分组歧义和量化错误的影响,Geng 等人提出了两种不同的自适应分布学习方法,IIS-ALDL 和 BFGS-ALDL 以用于年龄估计[Geng et al., 2014]。分布的标准偏差根据 KL 散度进行更新。为了解决具有精确年龄的训练数据短缺的问题,Hou 等人提出标签分布学习以在学习特定年龄的同时利用相邻年龄信息。
一些方法侧重于从数据集中学习相对排序以进行年龄估计。 OHRank 通过开发具有多个二元分类的 cost-sensitive 框架,成功地获得了年龄估计的排序关系 [Chang et al., 2011]。 Ranking-CNN 在 ImageNet 等大型数据集上预训练几个基本 CNN,并使用有序年龄标签对它们进行微调 [Chen et al., 2017]。 Zhang 等人提出了一种范式用于将多个类似年龄映射到年龄分布 posterior 以进行年龄估计。
本节首先说明问题。 然后描述了两个关键思想:stagewise 回归和动态范围。 最后给出了网络架构,并提出了 soft stagewise 回归的公式。
在使用单张人脸图像进行真实年龄估计的问题中,我们给出了一组训练人脸图像 X = { x n ∣ n = 1 , . . . , N } X=\{x_n|n=1,...,N\} X={xn∣n=1,...,N} 和每个图像 x n x_n xn 的真实年龄 y n ∈ Y y_n \in Y yn∈Y ,其中 N 是图像数量,Y 是年龄间隔。目标是找到一个函数 F 来预测 y ~ = F ( x ) \tilde{y} = F(x) y~=F(x) 作为给定图像 x 的年龄。 对于训练,通过 最小化预测年龄和真实年龄之间的 平均绝对误差 (mean absolute error (MAE)) 来搜索函数 F,
J ( X ) = 1 N ∑ n = 1 N ∣ y ~ n − y n ∣ , (1) J(X)=\frac{1}{N}\sum_{n=1}^{N}|\tilde{y}_{n}-y_{n}|\,, \tag{1} J(X)=N1n=1∑N∣y~n−yn∣,(1)
其中 y n ~ = F ( x n ) \tilde{y_n}= F(x_n) yn~=F(xn) 是给定图像 x n x_{n} xn 的预测年龄。
以前的工作已经将年龄估计的回归问题转化为解决多类分类问题,然后计算期望值作为预测年龄。
例如,DEX
将年龄区间 Y = [0, V] 均匀地划分为 s 个不重叠的 bins。 因此,每个 bin 的宽度 w 是 V s \frac{V}{s} sV。 将第 i 个 bin 的代表年龄表示为 µ i µ_i µi 并且 DEX 选择 µ i = i ( V s ) µ_i = i(\frac{V}{s}) µi=i(sV) 。 DEX 为 s 类 年龄分类问题训练一个网络。 对于给定的图像 x,网络输出分布向量 p → = ( p 0 , p 1 , . . . , p s − 1 ) \overrightarrow{p} = (p_0, p_1, . . . , p_{s−1}) p=(p0,p1,...,ps−1) 表示 x 属于每个年龄组的概率。 然后通过计算以下期望值来预测年龄,
y ~ = p ⃗ ⋅ μ ⃗ = ∑ i = 0 s − 1 p i ⋅ μ i = ∑ i = 0 s − 1 p i ⋅ i ( V s ) . (2) \tilde{y}=\vec{p}\cdot\vec{\mu}=\sum_{i=0}^{s-1}p_{i}\cdot\mu_{i}=\sum_{i=0}^{s-1}p_{i}\cdot i\left(\frac{V}{s}\right).\tag{2} y~=p⋅μ=i=0∑s−1pi⋅μi=i=0∑s−1pi⋅i(sV).(2)
为了获得更准确的估计,DEX 将年龄间隔细分,并将 bin 宽度设置为 one year old,即,如果 Y = [0…100],则有 101 个 bin。 这会导致 最后阶段的全连接(FC)层有大量参数并消耗大量内存。
paper: https://www.cv-foundation.org/openaccess/content_iccv_2015_workshops/w11/html/Rothe_DEX_Deep_EXpectation_ICCV_2015_paper.html 。其实很简单,就是划分为 101 类,然后 FC 输出 101 个概率,然后和对应的 0-101 加权求和即可得到最终的年龄结果。
为了在 **不牺牲太多准确性的情况下 ** 减小模型大小,我们提出使用 一个具有多阶段预测由粗到细的策略( a coarse-to-fine strategy with multi-stage prediction)。 假设有 K 个 阶段,第 k 个阶段有 s k s_k sk 个 bins。 对于每个阶段,我们训练一个网络 F k F_k Fk ,该网络生成该阶段的分布 p → ( k ) = ( p 0 ( k ) , p 1 ( k ) , . . . , p s k − 1 ( k ) ) \overrightarrow{p}^{(k)} =(p^{(k)}_0,p^{(k)}_1, ..., p^{(k)}_{sk-1}) p(k)=(p0(k),p1(k),...,psk−1(k)) 。 年龄由以下阶段回归公式预测,
y ~ = ∑ k = 1 K p ˉ ( k ) ⋅ μ ˉ ( k ) = ∑ k = 1 K ∑ i = 0 s k − 1 p i ( k ) ⋅ i ( V ∏ j = 1 k s j ) . (3) \tilde{y}=\sum_{k=1}^{K}\bar{p}^{(k)}\cdot\bar{\mu}^{(k)}=\sum_{k=1}^{K}\sum_{i=0}^{s_{k}-1}p_{i}^{(k)}\cdot i\left(\frac{V}{\prod_{j=1}^{k}\mathbf{s}_{j}}\right). \tag{3} y~=k=1∑Kpˉ(k)⋅μˉ(k)=k=1∑Ki=0∑sk−1pi(k)⋅i(∏j=1ksjV).(3)
上述等式中的最后一项是第 k 个阶段的 bin 宽度 w k w_k wk ,i 是 bin 索引。通过一个具体的例子来直观的理解 stagewise 回归。
需要注意的是 第二阶段只有一个分类器,被第一阶段的所有年龄分组共享。将阶段分类转化为回归给出了上面等式中的公式3。第一阶段以粗粒度预测年龄,而第二阶段则以更细粒度对其进行细化。 阶段回归的优点是每个阶段的类数量很少,从而导致参数更少,模型更紧凑(compact)。
相对 DEX 的改进是:DEX 相当于是一个阶段来回归年龄,而 SSR-Net 使用多个阶段,从粗到细去分类年龄,再使用和 DEX 同样的加权求和得到最终的年龄。优点:因为每个阶段分的类别较少,因此全连接参数少,模型就占得内存小。stagewise 可以翻译为 阶段级。
将年龄间隔均匀地划分为不重叠的 bins 在处理年龄组歧义和年龄连续性方面不太灵活。这个问题在粗粒度时更加严重。我们通过为每个 bin 引入动态范围来解决这个问题;即允许根据输入图像移动和缩放每个 bin。有几种可能的选项可以将移位和比例应用于一个 bin。为了在 方程3 中使用相同的 stagewise 回归公式,我们选择修改 方程3 中的 bin 索引 i 和 bin 宽度 w k w_k wk 以分别调整 bin 的移位和尺度。为了在第 k 阶段调整 bin 宽度 w k w_k wk ,作者引入了一个项 Δ k Δ_k Δk 来将 s k s_k sk 修改为 s ˉ k \bar{s}_k sˉk 如下,
s ˉ k = s k ( 1 + Δ k ) , (4) \bar{s}_{k}=s_{k}(1+\Delta_{k}),\tag{4} sˉk=sk(1+Δk),(4)
其中 Δ k Δ_k Δk 是给定输入图像的回归网络的输出。回归网络的细节将在 3.4 节中给出。修改 s k s_{k} sk 后,bin 宽度现在变为:
w ˉ k = V ∏ j = 1 k s ˉ j . (5) \bar{w}_{k}=\frac{V}{\prod_{j=1}^{k}\bar{s}_{j}}. \tag{5} wˉk=∏j=1ksˉjV.(5)
因此, s k s_{k} sk 的调整有效地改变了 bin 宽度。对于 shifting bin,我们向每个 bin 索引 i 添加一个偏移项 η。 在第 k 个阶段有 s k s_{k} sk 个 bin。因此,需要一个用于第 k 阶段的偏移向量, η ⃗ ( k ) = ( η 0 ( k ) , η 1 ( k ) , . . . η s k − 1 ( k ) ) \vec{\eta }^{(k)}=(\eta _{0}^{(k)},\eta _{1}^{(k)},...\eta _{s_{k}-1}^{(k)}) η(k)=(η0(k),η1(k),...ηsk−1(k))。 同样,偏移向量是在输入图像上回归网络的输出。bin 索引 i 被修改如下,
i ˉ = i + η i ( k ) . (6) \bar{i}=i+\eta_{i}^{(k)}. \tag{6} iˉ=i+ηi(k).(6)
修改后的 bin 索引 i ˉ \bar{i} iˉ 有效地 shifts 第 i 个 bin。bin 的尺度和位移都是输入图像的回归结果。根据输入图像, 依赖于输入的 动态范围提供更准确的细化。
图1:(a)本文提出的三阶段(K = 3) Soft Stagewise Regression Network (SSR-Net) 的网络结构,各阶段池化大小固定为2 × 2。(b) SSR-Net 中融合块的详细结构和融合块内 the prediction block (PB) 的结构。
b 图中,灰色阴影部分表示为 a 中的 PB,这里的乘法为 对应元素相乘。每个阶段输出 三个值: p → ( k ) , η → ( k ) , Δ k \overrightarrow{p}^{(k)},\overrightarrow{\eta}^{(k)},Δ_k p(k),η(k),Δk 。
图 1 (a) 说明了所提出的 SSR-Net 的整体网络结构。 受到 Yang et al. [Yang et al., 2017] 提出的 互补 2-stream 结构 的启发,我们采用 2-stream 模型,其中有 两个异构(heterogeneous)流。 对于这两个流,基本构建块由 3 × 3 卷积、batch normalization、non-linear activation 和 2 × 2 pooling 组成。 然而,每个流都采用了不同类型的激活函数(ReLU 与 Tanh
)和 pooling(average VS(versus) maximum
)以使其异构。 这样,可以提取不同的特征,它们的融合可以提高性能。
不同阶段采用不同 levels 的特征。如图 1(b) 所示,对于每个阶段,来自某个 level 的两个流的特征都被馈送到融合块中。融合块负责生成 第 k 阶段 的 stage-wise 输出、分布为 p → ( k ) \overrightarrow{p}^{(k)} p(k) ,偏移向量 η → ( k ) \overrightarrow{η}^{(k)} η(k) 和比例因子 Δ k Δ_k Δk 。在融合块中,来自两个流的特征首先经过 1×1 卷积、激活和 pooling 以获得更紧凑的特征。为了获得 Δ k Δ_k Δk ,两个获得的特征图通过 element-wise 乘法 ⊗ 融合。乘积经过一个全连接层,然后是一个 Tanh 函数,用于在 [−1, 1] 中获得一个值作为 Δ k Δ_k Δk 。 p → ( k ) \overrightarrow{p}^{(k)} p(k) 和 η → ( k ) \overrightarrow{η}^{(k)} η(k) 都是向量,而且更复杂。因此,特征在进行逐元素乘法、FC 层和激活之前经过一个额外的预测块。由于 p → ( k ) \overrightarrow{p}^{(k)} p(k) 表示一个分布,因此使用 ReLU 作为其激活函数以获得正值。另一方面, η → ( k ) \overrightarrow{η}^{(k)} η(k) 使用 Tanh 以使其在正负两侧移动。
为输入图像 x , 给定网络的 stagewise 输出 { p → ( k ) , η → ( k ) , Δ k } \{\overrightarrow{p}^{(k)}, \overrightarrow{η}^{(k)}, Δ_k\} {p(k),η(k),Δk} ,bins 的数量 s k s_k sk ,对于 x 预测的年龄 y ~ \tilde{y} y~ 被计算如下:
y ~ = ∑ k = 1 K ∑ i = 0 s k − 1 p i ( k ) ⋅ i ˉ ( V ∏ j = 1 k s ˉ j ) , (7) \tilde{y}=\sum_{k=1}^{K}\sum_{i=0}^{s_{k}-1}p_{i}^{(k)}\cdot\bar{i}\left(\frac{V}{\prod_{j=1}^{k}\bar{s}_{j}}\right), \tag{7} y~=k=1∑Ki=0∑sk−1pi(k)⋅iˉ(∏j=1ksˉjV),(7)
其中 i ˉ \bar{i} iˉ 是 公式6 中定义的移位 bin 索引,而 s j ˉ \bar{s_j} sjˉ 是公式 4 中定义的调整后的 bin 数。因为 bin 是通过小数调整的,所以 我们将 公式7 中的公式命名为 soft stagewise 回归。通过这种方式将 softness 带入 bin 的索引和宽度。使用预测的年龄 y ~ \tilde{y} y~ ,通过最小化 公式1 中 MAE 定义的 L 1 L_1 L1 损失,可以获得用于年龄估计的 SSR-Net 模型。
数据集:the IMDB-WIKI [Rothe et al., 2015; Rothe et al., 2016a], MORPH2[Ricanek and Tesafaye, 2006], and MegaAge-Asian [Zhang et al., 2017] datasets
预处理:
好多实现直接写死为 64*64,不太好!!!
实验设置:
根据模型大小,比较方法可以粗略地分为两类,即庞大模型和小模型。
庞大模型:更大更准。 DEX
将年龄估计的回归问题转化为多类分类问题,并使用期望值作为年龄估计。 ARN
通过将多个线性回归量与 soft 分配结合到 anchor point 来解决年龄回归问题。 AP
训练了一个联合执行序数 超平面(hyperplane)分类和 posterior 分布学习的网络。 Hot
将 VGG16 特征输入支持向量回归 (SVR) 以进行年龄预测。 RankingCNN
集成了一系列二元分类网络,每个网络都使用有序年龄标签进行训练。
小模型:内存占用小更快,可能牺牲 accuracy。 ORCNN
将序数回归问题转化为一系列二元分类问题,并使用多输出 CNN 来共同解决这些子问题。 MRCNN
使用类似的网络,但用于 metric 回归。MobileNet
用深度可分离卷积代替标准卷积,以减少参数和计算成本。DenseNet
以 前馈方式 将每一层连接,并且可以用更少的参数实现良好的性能。MobileNet 和 DenseNet
都是具有可调参数的通用网络模型。作者挑选了参数,以便它们的模型大小大约为 1 MB,与 SSR-Net 进行公平比较。
Soft 动态范围的使用对于 SSR-Net 很重要。没有它,SSR-Net 的 MAE 为 9.29。它表明动态范围提供的灵活性对于多阶段回归至关重要。由粗到细的逐步回归方法减少了神经元的数量,分类中的每一类对应一个神经元。对于 SSR-Net ( s 1 , s 2 , s 3 ) (s_1,s_2,s_3) (s1,s2,s3),需要 s 1 + s 2 + s 3 s_1+s_2+s_3 s1+s2+s3 个神经元。对于大致相同数量的类别,单阶段方法将需要 s 1 × s 2 × s 3 s_1 × s_2 × s_3 s1×s2×s3 个神经元。图 3 比较了具有不同配置的 SSR-Net 和 ORCNN 的参数数量。多阶段设计通常比单阶段设计导致更少的参数,尤其是当 V 很大时。此外,所提出的网络结构也有助于减少参数。总体而言,与 ORCNN 相比,SSR-Net 在实现更好的 MAE 的同时拥有更少的参数。
CA 定义: C A ( n ) = K n / K × 100 CA(n) = K_n/K×100 CA(n)=Kn/K×100
K 是测试图像的总数, K n K_{n} Kn 表示绝对误差小于 n 的测试图像的数量。