极简笔记 From Image-level to Pixel-level Labeling with Convolutional Networks

极简笔记 From Image-level to Pixel-level Labeling with Convolutional Networks

本篇文章是2015年的一篇依赖image-level标注的语义分割弱监督文章。文章主要流程是先让图片经过一个普通CNN,得到一个score map(相当于分割网络最后的预测结果,几个类别就几个channel),然后将每个类别的score进行集合,这里作者没有使用求均值或者求max的方式,而是使用Log-Sum-Exp (LSE)进行计算(公式如下):
s k = 1 r log ⁡ [ 1 h o w o ∑ i , j exp ⁡ ( r s i , j k ) ] s^k=\frac{1}{r}\log\left[\frac{1}{h^ow^o}\sum_{i,j}\exp(rs^k_{i,j})\right] sk=r1log[howo1i,jexp(rsi,jk)]
其中 s i , j k s^k_{i,j} si,jk表示位置 ( i , j ) (i,j) (i,j)对应类别 k k k的得分, h o w o h^ow^o howo表示总像素数。系数 r r r用来控制aggregation的平滑程度: r r r越大该式越接近max操作,越小越等价于求平均。得到全图关于各类别的score之后就可以依赖image-level标注进行训练。

在inference阶段,作者又提出两部分操作:Image-level prior和smooth prior。Image-level prior本质很简单,就是每个像素的score map经过softmax之后得到逐像素的类别概率,这个概率需要乘上全图score对应的类别概率:
y ^ i , j ′ ( k ) = p i , j ( k ∣ I ) × p ( k ∣ I ) \hat{y}_{i,j}'(k)=p_{i,j}(k|I)\times p(k|I) y^i,j(k)=pi,j(kI)×p(kI)
另一个smooth prior则有三种方式:

  1. SP-sppxl,就是把原图超像素分割,然后各个超像素内各个像素进行类别投票决定该超像素是什么类别;
  2. SP-bb,预先提取 1 0 4 10^4 104个bbox proposal,每个bbox有一个score。然后对每个像素位置,对包含该像素的bbox的score求均值赋予该像素,表示该像素属于object的概率。该像素的类别预测则为( δ k \delta_k δk是各类的confidence threshold):
    极简笔记 From Image-level to Pixel-level Labeling with Convolutional Networks_第1张图片
  3. SP-seg,利用传统算法生成无类别的mask proposal,然后按照SP-bb的方式进行smooth

作者在VOC2010上进行实验,比较了sota强监督算法和sota弱监督算法,以及各种smooth方式的性能,实验结果如下:
极简笔记 From Image-level to Pixel-level Labeling with Convolutional Networks_第2张图片
极简笔记 From Image-level to Pixel-level Labeling with Convolutional Networks_第3张图片

你可能感兴趣的:(极简笔记)