【论文阅读】Comprehensive Attention Self-Distillation for Weakly-Supervised Object Detection

1.本文针对什么问题

  1. 使用用图像级标签做弱监督训练,检测器会趋向于检测突出、聚集的目标或者目标的某一部分;
  2. 对同一个图像做不同变换后,检测器会产生不一样的目标检测框(即不一致性)。

2.已有的工作是什么,有什么问题

​ 已存在的弱监督目标检测工作存在两类问题:

  1. 偏置性(Biased WSOD)
    • 实例消失(missing instance):突出的目标容易被检测到,但不显眼的目标容易被忽略
    • 实例聚集( clustered instance):相同类别的多个邻近目标可能被检测为一个目标
    • 部分支配(part domination):边界框更倾向于包含目标中最具判别性的部分而不是包含住整个物体
  2. 不一致性(Inconsistent WSOD)
    • 相同的图片经过不同的变换之后检测器产生了不同的目标边界框

3. 产生问题的原因

作者从特征学习的角度分析了一下产生问题的原因:

  1. 偏置性

    这个导致偏置性的原因没看明白。原文内容是“突出目标、聚集目标和目标某一部分包含了支配WSOD分类的空间特征,从统计机器学习的角度来看,特征支配通常是由训练数据中的偏置特征分布来建立的”。

    For “Biased WSOD”, it is clear that salient objects, clustered objects, and certain object parts contain spatial features that dominate the WSOD classification. From a statistical machine learning point-of-view, feature domination is typically established by the biased feature distribution in training data.

  2. 不一致性

    同一图片由数据增强产生的不同变换版本被用于WSOD网络不同训练轮次中,但是这些不同版本的图片虽然有着相同的图像级标签,但相同的标签不能使网络学习到一致的空间特征。简单来说就是同一张图片经过数据增强后,特征提取网络提取出了不同的特征(按理说同一张图片的特征应该是一致的),这会导致检测出不同的目标。

    而全监督训练中就不会产生这个问题,因为不同增强版本的训练数据有精确的边界框标注,这天然的可以鼓励一致性。

4.为了解决这个问题,做了什么工作

  • 为了解决偏置性,作者根据论文《Multiple Instance Detection Network with Online Instance Classifier Refinement》引入了多阶段OICR分支来精炼MIL head。除了这个之外,作者在OICR的基础上在精炼分支中添加了一个回归损失,这个回归损失是Faster-RCNN中的。
  • 为了解决不一致性,作者提出了一个综合注意力。通过将所有增强版本的注意力综合到一起然后形成一个总的综合注意力图,然后让每一个输入、每一个特征提取层的特征都趋近于这个综合注意力图(我有一个想法,原文的中是每一层的特征都趋近于同一个综合注意力图,这是不合理的,所以能不能每一层都计算一个综合注意力图然后再分别趋近每一层的综合注意力图

总体来说,CASD通过使用综合注意力图指导促进一致性和空间特征完整性

5.具体方法是什么

请添加图片描述
主体网络结构如上所示,可以看出整体是在OICR的框架上进行创新的,下面对每个部分进行分别介绍。

  1. Proposal Feature Extractor

    通过选择搜索生成N个proposals,使用CNN提取整张图象的特征,然后在这张特征图上得到每个proposal的特征,最后使用ROI池化将每个特征调整到固定大小,得到每个proposal的特征向量。

  2. Multiple Instance Learning (MIL) Head

    从结构图的MIL head部分可以看到,整个部分分为两个区域。

    • 上面的区域(被分为检测和分类两个分支,通过查找对应的文献对这两个分支的理解如下:分类分支的结果表示某个proposal属于某个类的概率,检测分支的结果表示图片中某个proposal对该图片含有某个类的贡献,用于对分类结果加权),这个区域是Multiple instance detection network,具体步骤如下:

      • FC:这两个分支各自生成一个矩阵 X c l s , X d e t ∈ R C × N X^{cls},X^{det} \in {{\rm{R}}^{C \times N}} XclsXdetRC×N(C个类别,N个proposal);
      • Softmax:将 X c l s X^{cls} Xcls沿着类别方向(列方向)使用softmax正则化,将 X d e t X^{det} Xdet沿着proposal方向(行方向)使用softmax正则化;
      • ⊗ \otimes :使用公式 x = σ ( x c l s ) ⊙ σ ( x d e t ) x = \sigma ({x^{cls}}) \odot \sigma ({x^{det}}) x=σ(xcls)σ(xdet)计算得到实例级(instance-lecel)的分类分数(每一个proposal的分类分数);
      • Sum over:使用公式${p_c} = \sum\nolimits_{i = 1}^N {{x_{i,c}}} $计算得到图像级(image-level)的第i个类的分类分数,即直接将所有proposal的第i类分类分数加起来;
      • Cross-entropy:损失计算,更新网络参数 L m l c = − ∑ c = 1 C { y c log ⁡ p c + ( 1 − y c ) log ⁡ ( 1 − p c ) } {L _{mlc}} = - \sum\limits_{c = 1}^C {\{ {y_c}\log {p_c} + (} 1 - {y_c})\log (1 - {p_c})\} Lmlc=c=1C{yclogpc+(1yc)log(1pc)}
    • 下面的区域,这个区域是Instance classifier refinement

      在上面已经有一个基础的分类器了,在这一部分是对分类器进行精炼。如总体结构图所示,精炼的主要过程是使用当前分类器生成的分类分数对实例标签进行更新,然后将更新后的标签作为下一个阶段分类器训练的伪标签。当前分类器使用上一个阶段生成的伪标签进行训练。

      生成伪标签(更新标签)的大致流程是:先对所有实例分类得到分类分数,然后根据图像级标签的类别,给在该类别得分最高的实例赋予标签,然后计算所有实例与该实例的重叠度,如果某一个实例在与所有实例计算重叠度的过程中,与当前得分最高的实例重叠度最大,且该重叠度大于给定的阈值,则判定当前实例与得分最高的实例包含的是同一个目标,赋予相同标签。

      第k个分类器的损失被定义为 L r e f k = − 1 N k ∑ r = 1 N k ∑ c = 1 C + 1 y ^ r , c k log ⁡ x r , c k L_{ref}^k = - \frac{1}{{{N_k}}}\sum\limits_{r = 1}^{{N_k}} {\sum\limits_{c = 1}^{C + 1} {\hat y_{r,c}^k} } \log x_{r,c}^k Lrefk=Nk1r=1Nkc=1C+1y^r,cklogxr,ck。在推理过程中,将全部K个分类器的proposal分数矩阵相加,然后使用NMS来预测边界框。(精炼的意义应该是使用实例级标签对网络进行训练,提高分类的准确率,进而提高检测的准确率,这里有一个问题,检测分支得到的贡献度是怎么进行监督的,如何就知道这个贡献度是准确的呢?)

  3. Comprehensive Attention Distillation(CASD)

    此部分是本文的主要创新部分,主要是为了解决不一致性问题,主要思想是通过特征图与综合注意力图之间的差距对特征提取网络进行更新。该部分主要分为两点:Input-wise CASD和Layer-wise CASD。如下图所示:
    请添加图片描述

    • Input-wise(IW)CASD

      将同一图片的不同数据增强版本分别输入到网络中,然后在每一个图片的精炼过程中,每次精炼都会挑选出 N K N_K NK个正样本目标和负样本目标(背景),然后对这 N K N_K NK个proposal的特征使用逐通道平均池化和逐元素Sigmoid激活计算每个proposal的注意力图 A r ∈ R H × W A_r \in R^{H \times W} ArRH×W:
      A r ( m , n ) = S ( 1 L ∑ i = 1 L P r i ( m , n ) ) {A_r}(m,n) = S(\frac{1}{L}\sum\limits_{i = 1}^{\rm{L}} {P_r^i} (m,n)) Ar(m,n)=S(L1i=1LPri(m,n))
      其中L是通道数,P是每个proposal对应的特征图,S是Sigmoid激活。最后对这些注意力图求并集得到综合注意力图,计算方法就是取每个注意力图的最大值:
      A r I W = m a x ( A r , T f l i p ( A r f l i p ) , A r s c a l e ) A_r^{IW} = max({A_r},{T_{flip}}(A_r^{flip}),A_r^{scale}) ArIW=max(Ar,Tflip(Arflip),Arscale)
      然后在每一个精炼分支中计算每一个注意力图与综合注意力图之间的损失来更新特征提取器:
      L I W k = 1 N K ∑ r = 1 N K ( ∥ A r 1 W − A r ∥ 2 + ∥ A r 1 W − T f i l p ( A r f l i p ) ∥ 2 + ∥ A r 1 W − A r s c a l e ∥ 2 ) L_{IW}^k = \frac{1}{{{N_K}}}\sum\limits_{r = 1}^{{N_K}} {\left( {{{\left\| {A_r^{1W} - {A_r}} \right\|}_2} + {{\left\| {A_r^{1W} - {T_{filp}}(A_r^{flip})} \right\|}_2} + {{\left\| {A_r^{1W} - A_r^{scale}} \right\|}_2}} \right)} LIWk=NK1r=1NK( Ar1WAr 2+ Ar1WTfilp(Arflip) 2+ Ar1WArscale 2)
      N K N_K NK是第K个分支中全部的被选proposal数量。

      仅仅上面的过程可能会陷入局部最优,作者表明在实际过程中某些值较大的注意力图可能会支配其他的增强版本的注意力图。为了平衡不同增强版本之间的蒸馏,作者对每个注意力图都独立的使用了反注意力,随机屏蔽掉某些注意力图中最大的值来激活其他的值。

      除此之外,在MIL head中每个精炼分支计算proposal分数矩阵时会将各种增强版本得到的分数聚合起来: x ˉ k = 1 3 ( x k + x f l i p k + x s c a l e k ) {\bar x^k} = \frac{1}{3}({x^k} + x_{flip}^k + x_{scale}^k) xˉk=31(xk+xflipk+xscalek)

    • Layer-wise(LW)CASD

      这一部分的步骤与上面IW的步骤类似。特征提取网络由许多卷积块 B 1 , … , B Q B_1,…,B_Q B1,,BQ构成,在不同卷积块输出的特征图上使用ROI Pooling来生成固定大小的proposal特征图,然后根据这些proposal特征图计算每个特征块的注意力图,然后聚合到一起获得综合注意力图:
      A r L W = m a x ( A r B 1 , ⋯   , A B Q ) A_r^{LW} = max(A_r^{{B_1}}, \cdots ,{A^{{B_Q}}}) ArLW=max(ArB1,,ABQ)
      对于第K个精炼分支,IW-CASD损失为:
      L L W k = 1 N K ∑ q = 1 Q ∑ r = 1 N K ∥ A r L W − A r B q ∥ 2 L_{LW}^k = \frac{1}{{{N_K}}}\sum\limits_{q = 1}^Q {\sum\limits_{r = 1}^{{N_K}} {{{\left\| {A_r^{LW} - A_r^{{B_q}}} \right\|}_2}} } LLWk=NK1q=1Qr=1NK ArLWArBq 2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值