《 Self-supervised Sample Mining》笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24548569/article/details/83687881

CVPR2018论文:《Human-Machine Cooperation: Self-supervised Sample Mining
作者:加州大学洛杉矶分校(UCLA)博士后王可泽

Motivation

在许多应用场景中,已标注的数据集不是很多,但是未标注或部分标注的数据集非常多。在监督学习任务中,足够多的标注数据对模型来说至关重要,因此使用未标注和部分标注的数据集的想法越来越重要。但是为未标注或部分标注的数据进行标注的成本很高,因为通常需要人力来标注,而且未标注的数据太多。同时,挑选出可以提高模型表现的好样本不是一件简单的工作。论文提出了一种Self-supervised Sample Mining(SSM)框架,可以使用未标注或部分标注的数据训练模型。

Innovation

SSM借鉴了自主学习、主动学习和自监督学习的思想。
自主学习(Self-paced Learning, SPL)起源于课程学习(Curriculum learning, CL),灵感来自于人的认知过程,先学习简单的知识(样本),然后总结归纳,再学习复杂的知识(样本),再总结归纳,如此重复学习。

自监督学习(Self-supervised Learning, SSL)是使用没有额外的人工标注数据学习特征的表征,一般就是适合有未标注或部分标注数据集的任务。

主动学习(Active Learning, AL)也是使用未标注或部分标注的数据的学习算法,但是AL重点在于主动提出标注请求,关注的是样本选择策略,关键是选择能够提高模型表现的好样本。目前的样本选择策略大概可以分成两种,分别是不确定性准则(uncertainty)和差异性准则(diversity)。信息熵越大,就代表不确定性越大,包含的信息量也就越丰富。不确定性策略就是要想方设法地找出不确定性高的样本,因为这些样本所包含的丰富信息量,对我们训练模型来说就是有用的。差异性策略是希望所选择的样本提供的信息是全面的,各个样本提供的信息不重复不冗余,即样本之间具有一定的差异性,避免样本信息冗余。

Advantage

之前的工作在单个样本上下文之间计算样本选择指标,这种方法对模型偏差和样本数据类型不平衡问题很敏感,鲁棒性不行。SSM则可以在多个样本上下文之间计算样本选择指标,提高了方法的鲁棒性。而且之前的方法不支持mini-batch训练,但是SSM支持。

根据SSM设计的SSM框架可以使用未标注或部分标注的数据进行模型训练,而且可以最小化人力标注的成本。训练出来的模型的表现效果比当前先进的方法要好。

Disadvantage

这是个人观点。因为SSM涉及AL,模型的训练过程需要人参与,为proposal人工标注,因此训练过程会变慢。对于一些很庞大的训练数据集(比如ImageNet),光是训练就要好几周。因为任务只有少量的已标注的数据集,因此SSM肯定需要迁移学习,SSM训练的过程只是fine-tune,但是SSM在每次mini-batch之后都要选择低一致性样本,通过人工标注低一致性样本,因此人工标注的速度对模型的训练速度有很大的影响。

Method

论文提出的SSM框架的管道流图如下
the pipeline of the proposed framework
这个框架有两个阶段,分别是通过SSM对高一致性样本进行伪标注阶段和通过AL选择低一致性样本阶段。首先使用已标注的图片对模型进行fine-tune,对未标注或部分标注的图片提取region proposals(未标注样本),把这些region proposals粘贴到已标注的图片中进行交叉图片验证,根据重新预测出来的置信度确定如何对未标注样本进行标注。对于高一致性样本,直接进行伪标注,对于低一致性样本,通过AL挑选出来,让相关人员进行标注。伪标注的样本用于模型的fine-tune,而新标注的样本添加到已标注的图片中,同时也用于模型的fine-tune。

Formulation

我们先了解SSM使用的公式,从公式中获取框架的具体细节。

在物体检测问题中,假设我们有n个region proposals(指的是ground truth bb)和m个类别。定义训练集为 D = { x i } i = 1 n R d \mathcal{D} = \{x_i\}_{i=1}^n \in R^d ,其中 x i x_i 表示第i个region proposal。我们有m个检测器/分类器(包括背景),使用one-vs-rest策略识别region proposal。定义 x i x_i 的标签为 y i = { y i } j = 1 m \mathbf{y}_i = \{y_i\}_{j=-1}^m ,是one-hot向量,其中 y i ( j ) { + 1 , 1 } y_i^{(j)} \in \{+1, -1\} 表示 x i x_i 是否属于第j类。

大多数样本的标签 Y = { y i } i = 1 n \mathbf{Y} = \{y_i\}_{i=1}^n 是不知道的。初始化的已标注的图片定义为 I \mathbf{I} 。数据 { x i } i = 1 n \{x_i\}_{i=1}^n 在训练过程中会增加。

整个框架的损失函数为:
(1) Loss = L loc ( W ) + L cls AL ( W ) + L cls SSM ( W , V ) \text{Loss} = \mathcal{L}_{\text{loc}}(\mathbf{W}) + \mathcal{L}_{\text{cls}}^{\text{AL}}(\mathbf{W}) + \mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V}) \tag{1}
其中 L loc ( W ) \mathcal{L}_{\text{loc}}(\mathbf{W}) 定义bounding box的回归损失,和R-CNN的一样。 L cls AL ( W ) \mathcal{L}_{\text{cls}}^{\text{AL}}(\mathbf{W}) L cls SSM ( W , V ) \mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V}) 是AL和SSM过程的损失。

论文定义
L cls AL ( W ) = 1 Ω I i Ω I j = 1 m i ( x i , W ) \mathcal{L}_{\text{cls}}^{\text{AL}}(\mathbf{W}) = \frac{1}{ \left | \varOmega_I \right |} \sum_{i \in \varOmega_I} \sum_{j=1}^{m} \ell _i(x_i, \mathbf{W})
其中 Ω I \varOmega_I 为当前已标注图片I( I I I \in \mathbf{I} )的region proposal。 i ( x i , W ) \ell _i(x_i, \mathbf{W}) 表示proposal x i x_i 在第j个分类器的softmax损失:
i ( x i , W ) = ( 1 + y i ( j ) 2 log ϕ j ( x i ; W ) + 1 y i ( j ) 2 log ( 1 ϕ j ( x i ; W ) ) ) \ell _i(x_i, \mathbf{W}) = -\left ( \frac{1+y_i^{(j)}}{2} \log \phi_j (x_i; \mathbf{W}) + \frac{1-y_i^{(j)}}{2} \log (1 - \phi_j (x_i; \mathbf{W})) \right )
其中 W \mathbf{W} 是m个类别的CNN模型的参数。 ϕ j ( x i ; W ) ) \phi_j (x_i; \mathbf{W})) x i x_i 输入第j类的似然值(概率值)。注意似然值前面的系数,因为 y i ( j ) { + 1 , 1 } y_i^{(j)} \in \{ +1, -1\} ,所以与常见的形式不同,但效果还是是的似然值的系数为0或1。

接着讲 L cls SSM ( W , V ) \mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V}) 损失。为了选择 x i x_i 更新 y i \mathbf{y}_i ,论文引入了一组权重变量,如 V = { v ( j ) } j = 1 m = { [ v 1 ( j ) ,   , v n ( j ) ] T } j = 1 m \mathbf{V} = \{ v^{(j)}\}_{j=1}^{m} = \{ [v_1^{(j)}, \cdots, v_n^{(j)}]^T \}_{j=1}^m ,定义:
(2) L cls SSM ( W , V ) = 1 Ω I i Ω I j = 1 m ( v i ( j ) j ( x i , W ) + R ( x i , v i ( j ) , W ) ) s . t . j = 1 m y i ( j ) + 1 2 , y i ( j ) { 1 , + 1 } \mathcal{L}_{\text{cls}}^{\text{SSM}}(\mathbf{W}, \mathbf{V}) = \frac{1}{\left | \overline{\varOmega_I} \right |} \sum_{i \in \overline{\varOmega_I}} \sum_{j=1}^{m} \left ( v_i^{(j)} \ell_j (x_i, \mathbf{W}) + R(x_i, v_i^{(j)}, \mathbf{W}) \right ) s.t. \sum_{j=1}^{m} \left | y_i^{(j)} + 1 \right | \le 2, y_i^{(j)} \in \{ -1, +1\} \tag{2}
其中 Ω I \overline{\varOmega_I} 表示未标注或部分标注的图片I的region proposals。约束条件限制标签 y i \mathbf{y}_i 为one-hot向量或0向量。正则化函数 R ( ) R(\cdot) 在损失方面线性地对样本权重进行惩罚。论文使用硬加权正则化以适应复杂的场景。硬加权就是权重为0或1。论文定义的硬加权正则化公式为:
(3) R ( x i , v i ( j ) , W ) = f ( x i , W ) v i ( j ) R(x_i, v_i^{(j)}, \mathbf{W}) = -f(x_i, W)v_i^{(j)} \tag{3}
其中
(4) v i ( j ) = { 1 , j ( x i , W ) f ( x i , W ) 0 , otherwise v_i^{(j)} = \begin{cases} 1, \ell_j (x_i, \mathbf{W}) \le f(x_i, \mathbf{W}) \\ 0, \text{otherwise} \end{cases} \tag{4}
f ( ) f(\cdot) 是交叉图片验证函数:
(5) f ( x i , W ) = λ Ω I j p Ω I j 1 ( IoU ( B I ( x i ) , B I ( x p ) ) γ ) ϕ j ( x p ; W ) ) f(x_i, \mathbf{W}) = \frac{\lambda}{\left | \varOmega_I^{\overline{j}} \right |} \sum_{p \in \varOmega_I^{\overline{j}}} \mathbf{1} (\text{IoU}(B_I(x_i), B_I(x_p)) \ge \gamma) \phi_j (x_p; \mathbf{W})) \tag{5}
为了理解交叉图片验证函数,首先了解交叉图片验证的过程,如下图
The illustration of the proposed cross image validation
首先从未标注的图片中选择一个region proposal x i x_i ,被预测为属于第j类。把 x i x_i 随机粘贴到一个没有j类别物体的已标注的图片中,然后进行一致性评估。红色的bounding box B I ( x p ) B_I(x_p) B I ( x q ) B_I(x_q) 表示最新的分类器在新生成的图片中提出的region proposal x p x_p x q x_q

如果预测为j类的 x i x_i 是一个好样本,那么 x i x_i 的内容可以很好地展示j类的特征。把 x i x_i 粘贴到没有j类物体的图片中,那么从新生成的图片提取的region proposals中有包含 x i x_i 的proposal。选择没有j类物体的图片是为了避免歧义,使得验证结果更有说服力。包含 x i x_i 内容的新的region proposal x p x_p x q x_q 的预测结果应该在第j类有很大的概率值。如果 x p x_p x q x_q 的预测结果应该在第j类有很大的概率值,那么说明 x i x_i 在不同的图片中有高的(预测)一致性。SSM选择一个高一致性的样本,SSM过程就没太多的损失。

现在说明公式(5)的符号, Ω I j \varOmega_I^{\overline{j}} 表示没有j类别物体的已标注图片上的region proposals, λ \lambda 表示步长参数(和自主学习有关), B I ( x i ) B_I(x_i) 表示选中的未标注的region proposal x i x_i IoU ( B I ( x i ) , B I ( x p ) ) \text{IoU}(B_I(x_i), B_I(x_p)) 表示 B I ( x i ) B_I(x_i) B I ( x p ) B_I(x_p) 的交并比, γ \gamma 是交并比的阈值,在论文中设为0.5, 1 ( ) \mathbf{1}(\cdot) 是指示函数。

如果 x i x_i 是一个好样本,具有高一致性,那么交叉图片验证 f ( ) f(\cdot) 的值比较大,会有 j ( x i , W ) f ( x i , W ) \ell_j (x_i, \mathbf{W}) \le f(x_i, \mathbf{W}) ,从而样本权重 v i ( j ) = 1 v_i^{(j)} = 1 。至于为什么硬加权正则化函数(公式(3))有个负号,我也不懂,而且后面没有使用到硬加权正则化函数。

Alternative Optimization Strategy

开始讲模型的优化过程。论文中通过SSM过程更新样本权重 V \mathbf{V} ,通过伪标注和AL过程更新标签 Y \mathbf{Y} ,通过BP过程更新模型参数 W \mathbf{W}

更新 V \mathbf{V} :固定 { Y , X , W } \{ \mathbf{Y}, \mathbf{X}, \mathbf{W}\} ,然后通过公式(5)计算 f ( x i , W ) f(x_i, \mathbf{W}) ,接着根据公式(4)确定 V \mathbf{V}

更新 Y \mathbf{Y} :更新 V \mathbf{V} 之后,计算用于选择样本的一致性分数 s i s_i
(6) s i = 1 I I I 1 Ω I j p Ω I j ϕ j ( x p ; W ) s_i = \frac{1}{\left | \mathbf{I} \right |} \sum_{I \in \mathbf{I}} \frac{1}{\left | \varOmega_I^{\overline{j^*}} \right |} \sum_{p \in \varOmega_I^{\overline{j^*}}} \phi_{j^*} (x_p; \mathbf{W}) \tag{6}
其中 j j^* 表示有最高置信度的预测类别:
j = arg max j [ m ] ϕ j ( x p , W ) j^* = \arg \underset{j \in [m]}{\max} \phi_j (x_p, W)
我觉得论文中公式写错了,应该是
j = arg max j [ m ] ϕ j ( x i , W ) j^* = \arg \underset{j \in [m]}{\max} \phi_j (x_i, W)
应该是选择 x i x_i 置信度最高的预测类别j,然后把 x i x_i 粘贴到没有j类别物体的已标注的图片中。论文中最多选择N张已标注的图片,为了平衡精度和效率,减少计算量。论文实验设置 N = 5 N=5

计算所有挑选出来的 x i x_i s i s_i ,得到 S = { s i } i = 1 m S = \{s_i\}_{i=1}^m ,然后对S进行降序排序,每种类别挑选出前k个一致性分数不为0的样本。令 H \mathcal{H} 表示伪标注的高一致性样本。因为要对挑选出来的样本进行算法标注,所以称伪标注。m种类别中重要的样本定义为 H = [ H 1 ,   , H j ,   , H m ] \mathcal{H} = [H_1, \cdots, H_j, \cdots, H_m] ,其中 [ H j k ] [| H_j | \le k] ,k是一个经验参数,用了控制每种类别挑选的样本的数量。

固定 { W , V , { x i } i = 1 H } {\{ \mathbf{W}, \mathbf{V}, \{{x_i}\}_{i=1}^{|\mathcal{H}|} \}} ,可以优化公式(2)的 y i y_i
(7) min y i { 1 , + 1 } m , i H j = 1 m v i ( j ) j ( x i , W ) s . t . j = 1 m y i ( j ) + 1 2 \underset{y_i \in \{-1, +1\}^m, i \in \mathcal{H}}{\min} \sum_{j=1}^{m} v_i^{(j)} \ell _j (x_i, \mathbf{W}) \quad s.t. \sum_{j=1}^{m} \left | y_i^{(j)} + 1 \right | \le 2 \tag{7}
样本的权重向量 v i ̸ = 0 v_i \not = 0 。约束条件要求 y i y_i 必须是one-hot向量或者0向量。因此要求出一个样本的最优标签 y i y_i ,只需要尝试 m + 1 m+1 次。

这样挑选样本可以有效地抑制逐渐增加的伪标签错误的积累,因为(1)在不同图片内容中交叉图片验证提供更精确和更鲁棒性的评估,(2)所有的伪标签都是一次性的,每次mini-batch迭代之后就会被丢弃。

Low-consistency Sample Annotating:对高一致性样本进行伪标注之后,使用AL过程更新已标注的图片集 I \mathbf{I} 。AL过程目的是选择有更多信息的未标注的样本,然后让用户标注它。论文中的选择指标基于不确定性准则。收集 s i s_i 特别小,预测结果有多个正标签(分类有歧义)的样本,称这些样本为低一致性样本。随机从低一致性样本中挑选z个,放到低一致性样本集 U \mathcal{U} ,然后通过人工标注。

更新 W \mathbf{W} :固定 { D , V , Y } \{\mathcal{D}, \mathbf{V}, \mathbf{Y}\} ,公式(2)可近似为:
(8) min w 1 H { Ω I } I I i H { Ω I } I I j = 1 m j ( x i , W ) + L loc ( W ) \underset{w}{\min} \frac{1}{\left | \mathcal{H \cup \{{\varOmega_I}\}_{I \in \mathbf{I}} } \right |} \sum_{i \in \mathcal{H \cup \{{\varOmega_I}\}_{I \in \mathbf{I}} }} \sum_{j=1}^m \ell_j (x_i, \mathbf{W}) + \mathcal{L}_{\text{loc}}(\mathbf{W}) \tag{8}
这里使用AL和SSM的分类损失和bounding box的回归损失,没有考虑正则化函数 R ( ) R(\cdot)

整个优化过程由下面的伪代码表示:
Alternative Optimization Strategy

收敛分析:这个框架能够保证收敛,有3个原因。(1)公式(2)关于 V \mathbf{V} 是凸函数。(2)使用公式(8)对模型进行fine-tune可以收敛到局部最优。(3)AL过程会在没有找到低一致性样本时停止。

Experiment

首先是SSM和其他方法的比较,这里只简单的说下结果。

下图是在VOC 2007 test set的结果
Quantitative comparison of detection performance on PASCAL VOC 2007 test set
横轴表示模型使用多少人工标注进行训练,可以看到论文的方法(FRCN+Ours)比其他方法的表现都要好,大概需要30%的人工标注就能达到全监督学习的效果,而其他方法大概需要60%的人工标注才能达到全监督学习效果。因为数据存在冗余,不需要所有的样本同样能学到很好的效果。

下表是更加具体的实验结果
Test set mAP for VOC 2007/2012

下图是通过交叉图片验证过程选择高一致性样本和低一致性样本。
selected high-consistent and low-consistent region proposals
第一列表示未标注的图片,黄色标注的是region proposals和对应的伪标注。其他的是在新图片的预测结果。
a是高一致性样本,可以看到无论是在原图还是新图,样本的proposal的预测类别一样,预测值都很高。b是低一致性样本,上两行低一致性的原因是新图预测了错误的bounding box,下两行是因为伪标注错误。

猜你喜欢

转载自blog.csdn.net/qq_24548569/article/details/83687881
今日推荐