• 作者单位:北京航空航天大学,北京大学
  • 论文出处:International Journal of Computer Vision (IJCV)
  • 链接Springer, arxiv
  • 代码Github

摘要

近期,在不完整标注(例如一张包含「人」和「狗」的图像只标注了「狗」,「人」在训练中未知)的数据集上进行图像多标签识别逐渐受到了人们的关注,此类方法的性能优秀,并且相比完全标注更加节省人力成本。

当前方法主要集中于通过标签补充和相关性等方法来增强性能,然而在仅标单个正标签的情况下这些方法不再有效。为了解决在该情景下的图像识别问题,该论文提出了一种语义级对比学习自举框架,通过 CAM 提供语义指导,在单标签数据集上逐步发掘实例间的关系,增强模型在单标注多标签图像上的识别效果。基于语义指导,该论文提出了循环语义掩膜 Transformer 来提取实例级表征,用于对比学习;论文而后提出基于期望最大化算法的自举框架,不断地优化模型参数、修正语义指导信息(CAM 掩膜)来规避错误。实验结果显示,论文方法在 4 个数据集上超过现有方法,达到了最佳性能。

引言和动机

常规情况下,基于深度学习的图像识别方法在训练中需要大量带标注数据,ImageNet 的出现带给视觉领域大量训练样本,促进了该领域深度学习技术的迅速发展。然而人们在研究多标签图像识别时发现,收集数据集的成本变得有点不可承受。单标签数据集的样本仅包含一个物体、仅需标注一个标签;多标签数据集的样本可能包含不定量物体,需要逐一检查所有类别存在性。识别一个显著物体对人来讲相对简单且直接,但对照预设类别检查图像中是否存在对应物体就不那么容易了。因此,在实际研究中,模型性能常常受制于数据的收集难度。

为了缓解这个问题,很多研究者开始关注在不完全标注的情况下进行多标签识别。这些情况中十分具有代表性、挑战性的一种就是单正标注,即每张图像虽然可能包含多种物体,但仅标注一种。这也是 ImageNet 的标注模式。首先,单标注能大幅节省成本,并且还能充分利用大量已有的单标注数据。其次,考虑到已有单标签数据集事实上并不能保证所有图像只包含一种物体,研究单正标注多标签识别对多类别识别任务亦有着指导意义。

不完全标注情况的一种代表性方法是引入相关性来增强模型性能,但这些方法依赖于多标注所反映的相关性(例如 p%p\% 标注数据集中每个样本可能标注多个标签,同样能导出相关性信息),所以在该任务上难以使用。为了将相关性引入该任务,本文另辟蹊径,充分利用了单正标注所提供的语义掩膜信息,借助实例级对比学习来发掘各个类别间的相关性。

论文动机:充分利用单标注,从数据集中提取各个类别的显著样本,在正负对比中发掘类别的相关性。

方法

如上文所说,本文主要集中于如何利用仅有的单标注来找到显著物体,排除错误物体,实现对比学习过程。为了实现目标,本文提出了两个主要的模块

  1. 循环语义掩膜 Transformer,用于裁剪图像,获取实例级特征。
  2. 实例优先队列,为对比学习挑选高质量样本。

两个模块在基于期望最大化算法的自举训练框架中共同配合,实现实例级对比学习。

方法示意图

循环语义掩膜 Transformer

我们见到的对比学习一般是图像级别,也就是直接给一张图像生成两个「视角」(例如使用两种的数据增强分别处理),两个视角互为正样本,和同 batch 其他样本互为负样本。经典的 MoCo[1]、BYOL[2] 都属于这种。但是这种方法在多标签图像上就比较抽象了,因为多标签图像不能保证只有一个显著物体,所以不能保证满足图像级的一致性,说不定增强完自己都认不出来是同一张。

为了解决这个问题,本文使用一种能够进行掩膜操作的 Transformer,来从图像中屏蔽不必要的部分,提取单个物体的特征。笼统来讲,方法利用图像的单标注,计算图像的类激活图(Class Activation Map,CAM)来找到模型的关注区域,将该区域切割出来作为潜在的物体实例。

方法首先使用 ResNet Φ(x;θb)\Phi(\mathbf x;\theta_b) 提取图像特征,选取网络中间层特征 F=Φ(x;θb)R(H×W)×C\mathbf F=\Phi(\mathbf x;\theta_b) \in \mathbb R^{(H \times W) \times C} 作为 Transformer 的输入,用于最终的图像识别,得到置信度 p\mathbf p

记类别 c 的置信度为 pcp_c,那么基于梯度的 Grad-CAM 可以经由以下公式计算

Gc=ReLU(1Kk=1K1WHi=1WHpcFikFk)\mathbf G^c=\mathrm{ReLU}\left( \frac{1}{K} \sum_{k=1}^K \frac{1}{WH} \sum_{i=1}^{WH} \frac{\partial p_c}{\partial \mathbf F_i^k} \cdot \mathbf F^k \right)

简单来讲,就是计算最终置信度对特征图中每个元素偏导的均值,作为权重将各通道特征图 (H,W)(H,W) 加和,得到最终的 CAMCAM 能够反映网络在识别某类别存在与否时究竟关注到了图像的什么位置。

通过计算图像的 CAM,能够获得对应物体的粗略掩膜。但是这种掩膜往往质量差,在实践中并不能完全覆盖图像。文章提出了块状掩膜

Mijc=[(1l2u=il/2i+l/2v=jl/2j+l/2Guvc)γcam]\mathbf M_{ij}^c=\left[ \left( \frac{1}{l^2} \sum_{u=i-\lfloor l/2\rfloor}^{i+\lfloor l/2\rfloor} \sum_{v=j-\lfloor l/2\rfloor}^{j+\lfloor l/2\rfloor} \mathbf G_{uv}^c \right) \geq \gamma_{\text{cam}} \right]

外部 [condition][\text{condition}] 为指示函数,当条件为真时取 11,否则取 00。原 CAM 中大小为 l×ll \times l 的区块只有均值达到阈值之上,才会反映在最终的掩膜中。

在有了掩膜 Mijc\mathbf M_{ij}^c 后,本文能够在图像中模糊定位 cc 类别物体。但是在上面的分析中,又暴露了一个问题,就是掩膜与物体特征间存在着相互依赖的关系:在有物体特征后才能计算 CAM,在有 CAM 后才能计算物体特征。为了解决循环,文章通过修改 Transformer 中 Attention 公式,最终提出能够使用该掩膜遮挡和选取特定物体的循环语义掩膜 Transformer。模块循环式依赖上一轮掩膜生成下一轮特征。模块可以描述为

Hijc(t)=Attention(WqryM(Fij(t)),WkeyM(Fij(t)))WvalFij(t)M(Fij(t))=(Fij(t)+Δ(i,j))(1Mijc(t1))\begin{aligned} \mathbf H_{ij}^c(t)&=\mathrm{Attention}(\mathbf W_{\text{qry}}\mathcal M(\mathbf F_{ij}(t)), \mathbf W_{\text{key}}^\top \mathcal M(\mathbf F_{ij}(t))^\top) \cdot \mathbf W_{\text{val}}\mathbf F_{ij}(t) \\ \mathcal M(\mathbf F_{ij}(t))&=(\mathbf F_{ij}(t)+\Delta(i,j)) \cdot (1-\mathbf M_{ij}^c(t-1)) \end{aligned}

  1. W{qry,key,val}\mathbf W_{\{\text{qry,key,val}\}} 是可学习的参数,Δ(i,j)\Delta(i,j) 为可学习的位置编码。
  2. 由于 CAM 取激活部分(前景),而该模块意在去除背景,因此对掩膜进行了反转。
  3. tt 时刻的图像特征从 t1t-1 时刻掩膜提取。

通过 CAM + 该模块,文章实现了借助单标签从图像中提出实例级特征的目标。虽然每张图像仅有一个标签仅能提取一个实例,但在综合全部数据集样本后,就获得了不同类别的大量实例特征。

Interlude: 对比学习

在继续讲解前,我们预先回忆一下上文提到的对比学习的具体流程。对比学习是一种常用的无监督学习方法,简单来讲,对比学习借助了数据的一致(对一张图像进行两种变换所生成的不同版本仍然反映了同一张图像的信息),要求模型自行学习的表征能区分同类和异类样本。

对比学习的代表性方法有 MoCo、BYOL 等,它们都采用了两套网络,一套称为 Online Network Ton\mathcal T_{\text{on}},另一套称为 Target Network Ttar\mathcal T_{\text{tar}}。其中在线网络使用深度学习惯用的梯度优化,而目标网络则使用 EMA 方法从在线网络更新参数,这种设计保证了表征在学习过程中的稳定性。一次迭代中,两套网络接受同一张图像的不同版本,输出同一张图像的表征。

本文方法同样遵循了这种实践,但整套学习过程面向实例级特征。记上文提取的实例集合为 Xn\mathcal X_n,如果设定一个类别,就能将其划分为正和负集合 Xn+,Xn=XnXn+\mathcal X_n^+,\mathcal X_n^-=\mathbf X_n - \mathcal X_n^+,而后就能针对样本 xnXn+\mathbf x_n \in \mathcal X_n^+ 找到与之匹配的正样本对 xt+Xn+\mathbf x_t^+ \in \mathcal X_n^+ 和负样本对 xtXn\mathbf x_t^- \in \mathcal X_n^- 了。

对所有样本提取特征与图像级对比学习区别不大

H~on=Ton(Augo(xn);θon),H~tar=Ttar(Augt(xt{+,});θtar).\begin{aligned} \widetilde{\mathbf H}_{\text{on}}&=\mathcal T_{\text{on}}(\mathrm{Aug}_o(\mathbf x_n); \theta_{\text{on}}), \\ \widetilde{\mathbf H}_{\text{tar}}&=\mathcal T_{\text{tar}}(\mathrm{Aug}_t(\mathbf x_t^{\{+,-\}}); \theta_{\text{tar}}). \end{aligned}

实例优先队列 Instance Priority Tree

由于实例来自于弱监督 CAM,虽然经过了一定增强,但数据中仍然包含了很多错误。为了排除其中的错误,本文使用了一个优先队列来选取显著样本。所有类别的实例特征被按照网络置信度排序,仅选取靠前的高置信部分参与对比学习。

实例优先队列

自举学习框架 Bootrapping Optimization

首先是本文构建的实例级对比学习,其 loss 采用了常见的 InfoNCE。记优先队列选出的样本为 N\mathcal N,其中第 i 类为 Ni\mathcal N^i,则 loss 为

Lcont=λc11+NNilogexp(H~H~+/τ)exp(H~H~+/τ)+H~NNiexp(H~H~/τ).\mathcal L_{\text{cont}}=-\lambda_c\frac{1}{1+|\mathcal N-\mathcal N^i|}\log\frac{\exp(\widetilde{\mathbf H} \cdot \widetilde{\mathbf H}^+/\tau)}{\exp(\widetilde{\mathbf H} \cdot \widetilde{\mathbf H}^+/\tau)+\sum_{\widetilde{\mathbf H}^- \in \mathcal N-\mathcal N^i}\exp(\widetilde{\mathbf H} \cdot \widetilde{\mathbf H}^-/\tau)}.

在提取物体掩膜时,本文就提出了一个问题,实例掩膜与模型预测结果间有着循环依赖关系,掩膜质量影响模型预测精度,模型预测精度决定掩膜质量。为了解决这个问题,文章提出了基于期望最大化的自举学习框架。

在 E 阶段,框架使用 t1t-1 时刻的网络参数 Θt1\Theta^{t-1} 计算掩膜

M^=argmaxMP(Mx;Θt1)CAM(g(Φ(x;Θt1))Φ(x;Θt1)Φ(x;Θt1)).\begin{aligned} \hat{\mathbf M}&=\arg\max_{\mathbf M} P(\mathbf M \mid \mathbf x; \Theta^{t-1}) \\ &\approx \mathrm{CAM}\left( \frac{\partial g(\Phi(\mathbf x;\Theta^{t-1}))}{\partial \Phi(\mathbf x;\Theta^{t-1})} \Phi(\mathbf x;\Theta^{t-1})\right). \end{aligned}

在 M 阶段,框架使用反向传播优化网络。本文延续了 Cole 在引入单正标注任务时所提出的方法[3],其 loss 的主要组成为

Lsp(PBY~B;θon)=1B(nBLBCE(pn,S(y~n))+nBLBCE+(pn,zn))+((k^(PB)k)/L)2,\mathcal L_{\text{sp}}(\mathbf P_B \mid \widetilde{\mathbf Y}_B;\theta_{\text{on}})=\frac{1}{|B|}\left( \sum_{n \in B} \mathcal L_{\text{BCE}}(\mathbf p_n,\mathcal S(\widetilde{\mathbf y}_n)) + \sum_{n \in B} \mathcal L_{\text{BCE}}^+(\mathbf p_n,\mathbf z_n) \right)+\left( (\hat k(\mathbf P_B)-k)/L\right)^2,

  1. loss 在一个 batch BB 上计算。
  2. PB\mathbf P_B 为网络预测结果,Y~B\widetilde{\mathbf Y}_B 为估计器在整个训练过程中对样本伪标签的估计。估计器在训练过程中平滑地从模型预测结果学习整个数据集的伪标签。k^,k\hat k,k 分别为该 batch 数据上观测到的标签数及数据集的平均标签数(超参)。更加详细的细节可以参考原文。
  3. LBCE+\mathcal L_{\text{BCE}}^+ 为仅作用于正标注的 BCE loss。S()\mathcal S(\cdot) 为梯度截断,阻止反向传播。zn\mathbf z_n 为真实单标注。LL 为预设的标签数。

结合对估计器的优化,最终的分类 loss 为

Lclass=Lsp(PBY~B;θon)+Lsp(Y~BPB;θon)2.\mathcal L_{\text{class}}=\frac{\mathcal L_{\text{sp}}(\mathbf P_B \mid \widetilde{\mathbf Y}_B;\theta_{\text{on}})+\mathcal L_{\text{sp}}(\widetilde{\mathbf Y}_B \mid \mathbf P_B;\theta_{\text{on}})}{2}.

方法的 loss 由 Lcont\mathcal L_{\text{cont}}Lclass\mathcal L_{\text{class}} 组成,并作用于 Ton\mathcal T_{\text{on}}Ttar\mathcal T_{\text{tar}} 网络由 EMA 更新

θtarαθtar+(1α)θon.\theta_{\text{tar}} \gets \alpha\theta_{\text{tar}}+(1-\alpha)\theta_{\text{on}}.

整个优化过程的伪代码为

伪代码

实验

在 4 个典型多标签数据集上,本文方法超过了其他方法,达到 SOTA。

主要实验结果

其他主要指标对比

文章还对方法设计进行了详细的消融实验,具体可参考原文。

总结 & 局限性

本文聚焦于单正标注的多标签图像识别问题,并针对性提出了语义对比学习的自举学习框架。框架充分利用了单标注数据所提供的语义信息,实现了实例级对比学习。实验中,提出的方法达到了最优性能。不过,因为这种方法依赖于弱监督的 CAM 来生成掩膜,在实际中仍然会受制于错误的掩膜信息,所以在性能上有着内在的限制。

参考文献


  1. He K, Fan H, Wu Y, et al. Momentum contrast for unsupervised visual representation learning[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 9729-9738. ↩︎

  2. Grill J B, Strub F, Altché F, et al. Bootstrap your own latent-a new approach to self-supervised learning[J]. Advances in neural information processing systems, 2020, 33: 21271-21284. ↩︎

  3. Cole E, Mac Aodha O, Lorieul T, et al. Multi-label learning from single positive labels[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 933-942. ↩︎