论文阅读学习 - CurriculumNet: Weakly Supervised Learning from Large-Scale Web Images

原文:论文阅读学习 - CurriculumNet: Weakly Supervised Learning from Large-Scale Web Images - AIUAI

论文:CurriculumNet: Weakly Supervised Learning from Large-Scale Web Images - ECCV2018

作者:Sheng Guo, Weilin Huang, Haozhi Zhang, Chenfan Zhuang, Dengke Dong, Matthew R. Scott, Dinglong Huang

团队:码隆科技

实现:<Github - research-curriculumnet - Caffe>

1. 主要点

  • 对于大规模网络图像数据的半监督学习
  • 利用课程学习(curriculum learning)实现的原则性学习策略(principled learning strategy),以有效的处理大量噪声标签(noisy labels) 和数据不均衡(data imbalance) 问题.
  • 设计新的课程学习方法,通过在特征空间中数据的分布密度(distribution density),评估数据的复杂度;并以无监督的方式对数据复杂度进行排名.
  • 实验说明,高度噪声标签也能够作为一种正则方法,提升模型的泛化能力.

2. 目标

有效的处理大规模网络图像数据集中存在大量噪声标签和数据不均衡的问题.

3. CurriculumNet

基于课程学习的思想,其类似于人类的学习过程,模型从简单的问题开始学起,然后逐渐学习越来越复杂的任务问题.

CurriculumNet 中设计了一种无监督课程学习方法,如图 Fig.2,逐渐的增加噪声标签数据的数据量. 主要包括三步:

[1] - 初始特征生成(initial features generation);

首先,采用全部的训练数据,学习初始模型;然后,利用训练的模型计算训练数据集中每一张图像的深度特征表示(如,FC 层输出特征).

[2] - 课程设计(curriculum design);

训练的初始模型旨在粗略地将训练图像映射到特征空间,以挖掘每一类别内图像的潜在结构及潜在关系; 其提供了定义图像复杂度的有效方法.

对定义的图像复杂度进行分析,以设计学习课程. 其中,每一类别内所有图像,根据复杂度次序,被划分为多个子集.

[3] - 课程学习(curriculum learning).

基于设计的课程,进行课程学习. 即,

首先从包含全部类别的简单数据子集开始训练 CNNs 模型. 这里,假设在简单数据子集中包含更多的准确标签的干净图像.

然后,在训练过程中逐渐连续的添加复杂度越来越高的数据,来提升模型的识别能力.

3.1. 课程设计(Curriculum Design)

Curriculum Learning - ICML2009

Yoshua Bengio

设计课程学习的目标是:能够以无监督的方式对训练图像由简单到复杂进行排序.

这里,采用基于密度聚类算法(density based clustering algorithm),根据数据分布密度(data distribution density) 评估训练样本的复杂度.

具体地,将全部训练数据集划分为多个数据子集,并将数据子集由简单到复杂进行排名,其中简单数据子集中包含更多标签更可靠的干净图像;而复杂数据子集则包含更多大量的噪声标签.

Clustering by fast search and find of density peaks - 2014Science

根据基于密度聚类算法,对每一类别图像数据集进行处理.

[1] - 首先,对全部训练数据集训练 Inception_V2 模型,作为初始模型;

[2] - 然后,基于初始模型的 fc 层特征,将每一类别内的全部图像,投影到深度特征空间. 对于每张图像 P i f ( P i ) P_i \rightarrow f(P_i) .

[3] - 接着,计算欧氏距离矩阵 D R n × n D \in \mathcal{R} ^{n \times n} :
D i j = f ( P i ) f ( P j ) 2 D_{ij} = ||f(P_i) - f(P_j)||^2
其中, n n 为当前类别中图像数; D i j D_{ij} 表示图像 P i P_i P j P_j 之间的相似性( D i j D_{ij} 值越小,则 P i P_i P j P_j 月相似).

[3-1] - 对于每张图像,计算局部密度(local density) ρ i \rho _i :
ρ i = j X ( D i j d c ) \rho _i = \sum_j X(D_{ij} - d_c)
其中,
X ( d ) = { 1 d &lt; 0 0 other X(d) = \begin{cases} 1 &amp; d&lt;0 \\ 0 &amp;\text{other} \end{cases}
d c d_c 是通过对 D R n × n D \in \mathcal{R} ^{n \times n} 中的 n 2 n^2 个距离值从小到大进行排列,并选取前 k k % 得到的. 这里 k = 60 k=60 .

ρ i \rho _i 是与 i i 的距离值小于 d c d_c 的样本数.

易知,正确标签组成的干净图像通常具有相对相似的视觉表征,其在特征投影空间里会具有较大的局部密度值.

反之,噪声图像往往具有明显的视觉差异性,在特征投影空间里一般是稀疏分布,具有较小的密度值.

[3-2] - 对于每张图像,定义距离 δ i \delta _i :
X ( d ) = { m i n j : p j &gt; p i ( D i j ) if  j ,  s.t.  ρ j &gt; ρ i m a x ( D i j ) otherwise X(d) = \begin{cases} min_{j:p_j&gt;p_i}(D_{ij}) &amp; \text{if } \exists j, \text{ s.t. } \rho_j &gt; \rho_i \\ max(D_{ij}) &amp;\text{otherwise} \end{cases}
即,如果存在图像 I j I_j ,其 ρ j &gt; ρ i \rho_j &gt; \rho_i ,则, δ i \delta _i 等于 D i j ^ D_{i \hat{j}} . 其中, j ^ \hat{j} 是数据集中与 i i 最接近的样本. 否则, δ i \delta_i 等于所有密度中的最大值, ρ j \rho _j i i 与数据点之间的距离,且与 i i 的距离最大的值.

因此,具有最大局部密度值的数据点的 δ \delta 值最大,并被作为该类别图像的聚类中心.

对于每一类别内的图像,如果其与计算的聚类中心距离越近,则具有更高的正确标签的置信度. 因此,可以简单的采用 k-mean 算法,根据数据样本与聚类中心之间的距离 D c j D_{cj} ,将数据样本划分为多个聚类. 其中, c c 为聚类中心.

如图 Fig 3(左) 为 WebVision 数据集中 cat 类别所有图像的 δ ρ \delta - \rho 图.

对于每一类的图像数据集,生成三个聚类,并将每个聚类的图像作为数据子集.

由于,每个聚类都包含一个密度值来度量其数据分布,以及不同聚类间的关系(relationship). 因此,很容易定义每个数据子集的复杂度,给定课程学习的设计规则.

具有高密度值的数据子集中,所有的图像在特征空间中更彼此接近,表明这些图像具有更强的相似性. 故,定义该数据子集为干净的,具有更多正确的类别标签;

具有低密度值的数据子集中,所有的图像具有较大的视觉表征差异性,其可能包含更多不正确标签的不相关图像. 故,定义该数据子集为噪声的.

此时,既可以得到三个复杂度不同的数据子集:clean, noisy, highly noisy. 每个图像类别包含相同的数据子集数,将其所有图像类组合为最终的课程学习数据集. 如图 Fig.3(左)

3.2. 课程学习(Curriculum Learning)

设计的课程能够以无监督的方式,基于图像的视觉表征来挖掘潜在的数据结构.

这里,设计 multi-stage 学习方案,如图 Fig.3(右). 通过连续地混合从干净数据子集到高度噪声数据子集的三个阶段,训练 CNN 模型.

[1] - 首先,仅基于干净数据子集训练 Inception_V2 模型,其中,数据子集中,每一类别图像具有更接近的视觉表征,有助于模型学习图像的基本的,及干净的视觉信息,以作为后续处理的基础特征.

[2] - [1] 中 Inception_V2 模型训练收敛后,添加噪声数据,继续学习过程. 此时,图像包含更明显的视觉差异性,使得模型能够学习困难样本的更有意义和判别性更强的特征.

虽然噪声数据包含不正确的类别标签,但其仍粗略的保持着数据的主要结构,故有助于模型能力提升.

[3] - 继续添加 highly noisy 的噪声数据,进一步训练模型. highly noisy 的数据集中包含大量的类别标签不正确的视觉不相关图像.

前两个阶段 [1] 和 [2] 课程学习的深度特征能够挖掘数据的主要潜在结构.

论文作者发现,highly noisy 的数据子集并没有对学习的数据结构产生负面影响. 相反,其可以提高模型的泛化能力,使提供一种正则化方式,使得模型避免对于干净数据出现过拟合.

当最终模型训练收敛后,三个数据子集均被利用.

此外,在训练时,对于不同数据子集的样本,在 [2] 和 [3] 阶段的训练,设置类不同的 loss 权重,对于 clean, noisy 和 highly noisy 数据子集,权重分别为 1, 0.5, 0.5.

4. 实现细节

4.1. 训练参数

数据集:WebVision Datasets.

网络模型:Inception with batchnormalization(bn-inception).

训练参数:

[1] - SGD 优化算法,batchsize=256,RMSprop 算法.

[2] - 学习率从 0.1 开始,然后在 30 × 1 0 4 30 \times 10^4 50 × 1 0 4 50 \times 10^4 60 × 1 0 4 60 \times 10^4 65 × 1 0 4 65 \times 10^4 70 × 1 0 4 70 \times 10^4 次迭代时,分别将学习力衰减 10x 倍. 训练过程总迭代次数 70 × 1 0 4 70 \times 10^4 .

[3] - 数据增强,random cropping, scale jittering, ratio jittering.

[4] - 在 global pool 层后接 dropout 层,dropout_ratio=0.2.

4.2. 数据均衡

对于 WebVision 数据集,存在严重的数据不均衡问题. 例如,对于很多大类别的图像数据样本超过 10000 张,而对于小类别的图像数据样本少于 400 张.

直接采用 CNN 模型进行训练,会导致模型偏向于样本较多的大类别.

对此,这里提出 two-level 数据均衡方法:subset-level balancecategory-level balance.

[1] - subset-level balance

每个 mini-batch 中,对于 stage 1-3,训练样本的选择分别为:(256, 0, 0), (128, 128, 0) 和 (128, 64, 64).

[2] - category-level balance

每个 mini-batch 中,首先从 1000 个类别随机选择 256(stage1),128(stage 2 和 3) 个类别;然后,对于每个选择的类别,仅随机选取其中的一个样本.

注:category-level balance 仅在干净的数据子集上进行. 在噪声数据子集上进行时,模型表现会下降. 因为,从每一类别图像中随机选取一个样本,其很可能得到单个,但完全不相关的样本,其对于模型训练有负面影响.

4.3. Multi-scale 卷积核

在网络的第一个卷积层,采用了三种不同 kernel 尺寸:5x5, 7x7, 9x9. 然后,将三种 kernel 得到的卷积 maps 进行组合,以得到第一个卷积层的最终输出 feature maps.

Multi-scale 卷积核有助于在第一层增强 low-level 的特征,在 WebVision 数据上的 top-5 errors 有 0.5% 的精度提升.

5. Results

5.1. 不同训练策略

基于 Inception_V2 模型,尝试了四种不同的训练策略:

[1] - Model-A - 直接在整个训练数据集进行模型训练;

[2] - Model-B - 仅在干净的数据子集进行模型训练;

[3] - Model-C - 采用提出的课程学习策略进行模型训练,只采用 2-subset 数据子集课程学习,cleannoisy 数据子集.

[4] - Model-D - 采用提出的课程学习策略进行模型训练,采用 3-subset 数据子集课程学习,cleannoisyhighly noisy 数据子集.

5.2. 不同的聚类算法

Fig 4(右).

5.3. WebVision 竞赛最终结果

六种模型的集成结果.

Inception v2, Inception v3, Inception v4,Inception resnet v2模型.

5.4. 不同方法对比

5.5. WebVision+ImageNet 更多干净数据