基础概念

  • Feature manifold(特征流形)

    流形是一种空间,一个流形好比是一个 m 维的数据在 d 维的空间上被扭曲的结果。其中(m > d)(一般维度压缩的方法中都会提到这个概念)

    论文学习笔记——弱监督语义分割(Learning Integral Objects with Intra-Class Discriminator for Weakly-Supervised Sema)

    上图中每张图片为同一张人脸的 64×64 的灰度图,如果按照列(或行)拼起来,就可以得到一个 4096 维的向量,这样一来,每一张图片就可以看成是 4096 维欧氏空间中的一个点。很显然,并不是 4096 维空间中任意一个点都可以对应于一张人脸图片的,这就类似于球面的情形,我们可以假定所有可以是人脸的 4096 维向量实际上分布在一个 d 维 (d < 4096) 的子空间中。而特定到 Isomap 的人脸这个例子,实际上我们知道所有的 698 张图片是拍自同一个人脸(模型),不过是在不同的 pose 和光照下拍摄的,如果把 pose (上下和左右)当作两个自由度(也就是坐标轴),而光照当作一个自由度,那么这些图片实际只有三个自由度,换句话说,存在一个类似于球面一样的参数方程(当然,解析式是没法写出来的),给定一组参数(也就是上下、左右的 pose 和光照这三个值),就可以生成出对应的 4096 维的坐标来。换句话说,这是一个嵌入在 4096 维欧氏空间中的一个 3 维流形。 实际上,上面的那张图就是 Isomap 将这个数据集从 4096 维映射到 3 维空间中,并显示了其中 2 维的结果,图中的小点就是每个人脸在这个二维空间中对应的坐标位置,其中一些标红圈的点被选出来,并在旁边画上了该点对应的原始图片,可以很直观地看出这两个维度正好对应了 pose 的两个自由度平滑变化的结果。 就我目前所知,把流形引入到机器学习领域来主要有两种用途:一是将原来在欧氏空间中适用的算法加以改造,使得它工作在流形上,直接或间接地对流形的结构和性质加以利用;二是直接分析流形的结构,并试图将其映射到一个欧氏空间中,再在得到的结果上运用以前适用于欧氏空间的算法来进行学习。 这里 Isomap 正巧是一个非常典型的例子,因为它实际上是通过“改造一种原本适用于欧氏空间的算法”,达到了“将流形映射到一个欧氏空间”的目的。Isomap 所改造的这个方法叫做 Multidimensional Scaling (MDS) ,MDS 是一种降维方法,它的目的就是使得降维之后的点两两之间的距离尽量不变(也就是和在原是空间中对应的两个点之间的距离要差不多)。只是 MDS 是针对欧氏空间设计的,对于距离的计算也是使用欧氏距离来完成的。如果数据分布在一个流形上的话,欧氏距离就不适用了。

    参考资料

CAM 与 ICD 的不同

  • CAM(Class activation maps)

    • 在此过程中,主要标准是类别间的区分。局部区域中较容易识别的前景物体像素主导了**,例如人的脸部或汽车的车轮。其他前景像素则无法与背景区分开
    • 该模型的最终目标是学习类别间识别的边界。但是,要获得WSSS的整体对象蒙版,我们需要精确地区分像素是属于前景对象还是属于背景。因为前景像素和背景像素位于同一图像中,所以这种鉴别主要在同一图像级类别内进行,即,类别内鉴别
    • 通常,如图所示,CAM所学习的类间边界不符合我们对前景和背景之间的类内区分的要求。因此,仅通过对CAM分数进行阈值化就很难获得完整的目标蒙版
    • CAM做到的核心内容为分离不同类物体,只能给出目标对象的稀疏和不完整的估计,因此难以平衡前景的召回率和背景的假阳性率
  • ICD(Intra-Class Discriminator)

    • 为解决上述问题,文章引入了一个类内的分类器,目的是在同类下,能够清楚分出前景以及后景
    • 因此ICD相比CAM更适合于WSSS类问题
  • 为提升WSSS问题的精度需要对上述模型进行融合使用,通过下图可以清楚的看出两者的关系
    论文学习笔记——弱监督语义分割(Learning Integral Objects with Intra-Class Discriminator for Weakly-Supervised Sema)

  • ICD的贡献

    • 文章在将CAM应用于WSSS时发现了边界不匹配问题,即图像级类间识别与所需像素级类内分割之间的差距
    • 文章提出了一种有效的端到端类内鉴别器(ICD)方法,通过学习类内边界来分离前景对象和背景来解决此问题
    • 文章进行了广泛的实验,以分析文章提出的ICD方法的有效性。 所提出的模型实现了基于图像标签的WSSS的最新性能

ICD

  • 模型框架
    论文学习笔记——弱监督语义分割(Learning Integral Objects with Intra-Class Discriminator for Weakly-Supervised Sema)

    如图所示,本文提出一个端到端的模型框架,存在两个分支,一个为CAM(CAM只在部分前景区域**,但突出显示的区域集中在前景上),另一个就是本文提出的ICD模型。框架综合CAM给出的得分以及ICD给出前景和后景的得分,计算出最终的结果

  • ICD分支

    ICD分支中存在两条路径:

    • Bottom-Up Estimation(自底向上的估计)
      ICD的核心思想是基于特征流形将像素分为前景和背景组。我们通过学习每个类cc的方向向量wcw_c来解决这个问题。假设X={Xi}i=1NX=\left \{ X_i \right \}^N_{i=1}为所有输入图像的合集,fif_i为对应输入图像XiX_i的特征图,其大小为H×WH \times W,通过学习得到的方向向量为:
      Lbu(X)=1NHWi=1Nk=1HWc=1Cyi,c(wcTfi,k)2(1) L_{bu}(X) = - \frac{1}{NHW}\sum^N_{i=1}\sum^{HW}_{k=1}\sum^C_{c=1}y_{i,c}(w^T_cf_{i,k})^2 \tag{1}
      wc=wc^wc^2(2) w_c = \frac{\hat{w_c}}{\|\hat{w_c}\|_2} \tag{2}
      其中fi,kf_{i,k}为特征图fif_i中第kk个像素点,yi,cy_{i,c}是一个二进制标签(当第cc个标签存在于图像中时,为1;反之为0)。为了防止琐碎的无穷大解,wcw_c受到L2-归一化的约束,如方程式2中所示。

      优化公式1可以促进wcw_c将像素特征分为两类。这些特征共享相同的图像级类标签,并且属于第c类的前景或背景。因此,ICD不会像CAM那样陷入难以进行类间分区的问题。由于前景(或背景)像素的特征趋于聚集在一起,并且前景和背景的向量通常不重叠,如图1所示,方向矢量学会将其分为两类,分别是前景与背景。因此,很自然地采用在定向向量上特征投影的符号(正负),来区分前景和后景。为此,我们通过以下方式计算每个像素的得分:
      S^i,k,c=wcTfi,k(3) \hat{S}_{i,k,c} = w_c^Tf_{i,k} \tag{3}
      其中,S^i,k,c\hat{S}_{i,k,c}的绝对值可以看作为自信度,符号(正负)表示像素属于前景还是背景。注意,到目前为止,暂时还不知道是正号代表前景,还是负号代表前景,反之亦然。

      但我们注意到,虽然CAM只在部分前景区域**,但突出显示的区域集中在前景上。(这一属性被前人们论文提出的方法的高效性广泛的证明了,因为它们将CAM中的高分区域作为前景种子。)因此,我们可以利用这个属性来识别这两个组中的哪一个是前景。为此,对于图像中呈现的每个类,我们首先根据公式3中的符号将像素分成两组。例如,Ii,cpos={kS^i,k,c>0,yi,c=1}I^{pos}_{i,c} = \left \{k|\hat{S}_{i,k,c} > 0,y_{i,c} = 1 \right \}Ii,cneg={kS^i,k,c<0,yi,c=1}I^{neg}_{i,c} = \left \{k|\hat{S}_{i,k,c} < 0,y_{i,c} = 1 \right \}。定义Mi,k,cM_{i,k,c}为对应的CAM得分,我们计算这两组CAM得分的均值:
      Mˉcg=1NIi,cgi=1NkIi,cgMi,k,c,g{pos,neg}(4) \bar{M}^g_c=\frac{1}{N|I^g_{i,c}|}\sum^N_{i=1}\sum_{k\in I^g_{i,c}} M_{i,k,c}, \quad g\in\{pos,neg\}\tag{4}
      其中|\cdot|表示集合中元素的数量。

      然后比较Mˉcpos\bar{M}^{pos}_cMˉcneg\bar{M}^{neg}_c的值,如果后者也就是Mˉcneg\bar{M}^{neg}_c的值更大,则反转ICD的得分。因此在ICD的得分S^i,k,c\hat{S}_{i,k,c}中,正值永远表示前景。
      S^i,k,c=S^i,k,csign(MˉcposMˉcneg)(5) \hat{S}_{i,k,c} = \hat{S}_{i,k,c} \cdot \text{sign}(\bar{M}^{pos}_c - \bar{M}^{neg}_c) \tag{5}
      其中,sign()\text{sign}(\cdot)是一个符号函数,将正值映射为11,负值映射为1-1

      出于效率方面的考虑,我们将上述步骤作为网络中的一个模块来进行实施,以便可以在线调整ICD分数的符号。 我们通过公式4,来计算本地平均CAM分数。 在每个小型批次中,并采用步长为0.9的移动平均策略来更新全局平均CAM分数。 然后根据公式5来进行全局CAM分数符号翻转。

    • Top-Down Adaptation(自上而下的适应)

      • 首先,通过对每个超像素中的ICD分数Si,k,cS_{i,k,c}取平均值,从而得到精炼的ICD分数Si,k,cS'_{i,k,c}

      • 上述步骤有助于恢复通常在下采样过程中丢失的物体边界信息。 随后根据改进的ICD分数生成二进制掩码Bi,k,cB_{i,k,c}
        Bi,k,c=Π(Si,k,c>0),k{1,,HW}(6) B_{i,k,c} = \Pi(S'_{i,k,c}>0),\quad k\in\{1,\dotsc,HW\} \tag{6}
        其中,Π()\Pi(\cdot)为指针函数,当状态为True时为1,反之为0。

      • 最后,我们训练了一个新的分支来拟合二进制掩码,并得出了新的ICD分数Si,k,cS''_{i,k,c},并通过极大似然估计来构建损失函数:
        Ltd(X)=1NHWi=1Nk=1HWc=1Cyi,c(Bi,k,clogσ(Si,k,c))+(1Bi,k,c)log(1σ(Si,k,c))(7) L_{td}(X)=-\frac{1}{NHW}\sum^N_{i=1}\sum^{HW}_{k=1}\sum^C_{c=1}y_{i,c}(B_{i,k,c}\log \sigma(S''_{i,k,c}))+(1-B_{i,k,c})\log(1-\sigma(S''_{i,k,c})) \tag{7}
        其中,σ()\sigma(\cdot)sigmoidsigmoid函数,Si,k,cS''_{i,k,c}为分支的预测值,也是最后生成遮罩的最终ICD得分。

  • 损失函数

    整个ICD框架是和CAM一起训练的。将Lcam(X)L_{cam}(X)表示为CAM的多类别Sigmoid损失函数,总的损失函数为:
    Lall(X)=Lcam(X)+Lbu(X)+Ltd(X)(8) L_{all}(X)= L_{cam}(X)+L_{bu}(X)+L_{td}(X)\tag{8}
    其中论文对上述Lbu(X)L_{bu}(X)Ltd(X)L_{td}(X)两个损失函数提出了两个变体(改进方案):

    • 使用L1L1正则化(将原先的平方改为绝对值)来学习wcw_c:
      Labs(X)==1NHWi=1Nk=1HWc=1Cyi,cwcTfi,k(9) L_{abs}(X)== - \frac{1}{NHW}\sum^N_{i=1}\sum^{HW}_{k=1}\sum^C_{c=1}y_{i,c}|w^T_cf_{i,k} |\tag{9}
    • 另一个直观的选择是将其视为标准的二分类问题,该问题会生成在线伪标签并采用Sigmo损失函数进行训练:
      Yi,k,c=Π(wcTfi,k>0)(10) Y_{i,k,c}=\Pi(w^T_cf_{i,k}>0)\tag{10}
      Lsig(X)=1NHWi=1Nk=1HWc=1Cyi,c(Yi,k,clogσ(wcTfi,k)+(1Yi,k,c)log(1σ(wcTfi,k)))(11) L_{sig}(X)=-\frac{1}{NHW}\sum^N_{i=1}\sum^{HW}_{k=1}\sum^C_{c=1}y_{i,c}(Y_{i,k,c}\log \sigma(w^T_cf_{i,k})+(1-Y_{i,k,c})\log(1-\sigma(w^T_cf_{i,k}))) \tag{11}
    • 通过分析梯度,论文揭示了这些变体的联系。 这三个变体的梯度可以统一形式表示:
      L(X)wc=i1Nk=1NW(yi,csign(wcTfi,k))λi,kfi,k(11) \frac{\partial L(X)}{\partial w_c}=-\sum^N_{i-1}\sum ^{NW}_{k=1}(y_{i,c}\text{sign}(w^T_cf_{i,k}))\cdot \lambda_{i,k}\cdot f_{i,k}\tag{11}
      其中:
      λi,k={wcTfi,kforLbu1forLabsσ(wcTfi,k)Yi,k,cforLsig(12) \lambda_{i,k}= \begin{cases} |w^T_cf_{i,k} |\qquad\qquad&\text{for}\quad L_{bu}\\ 1 &\text{for}\quad L_{abs}\\ |\sigma(w^T_cf_{i,k})-Y_{i,k,c}|&\text{for}\quad L_{sig}\tag{12} \end{cases}
      公式11和12显示,梯度是特征的加权和。文章最初的方法将更多的权重放在具有较大绝对值投影的特征上,这通常是可靠的,因为它们距离决策边界较远。 相比之下,Sigmoid损失函数法对决策边界附近特征权重的关注度更高,这是次要的,因为这些估计值不可靠。
  • 训练并生成种子

    在训练过后,通过适应的ICD得分Si,k,cS''_{i,k,c}来生成种子。对于只有单类别的图像,我们直接使用ICD分数以阈值为0的方式生成遮罩(pseudo-masks)。对于多类别的图像,将被所有ICD分数标记为背景的像素用作种子背景,而其他像素为前景。如果有一个像素被多个ICD分数标记为前景,我们将采用CAM分数和ICD分数的乘积来确定其类别,因为CAM是专门被类别识别问题优化的。CRF后处理也被采用以进一步完善细节。

效果展示

论文学习笔记——弱监督语义分割(Learning Integral Objects with Intra-Class Discriminator for Weakly-Supervised Sema)
通过上图可以看出,论文提出的方法所展示出的结果效果非常出色。最后使用CRF进行优化后对物体的细节部分有了更高的精度。

论文代码https://github.com/js-fan/ICD
原文地址Learning Integral Objects with Intra-Class Discriminator for Weakly-Supervised Semantic Segmentation

相关文章: