FCN & CRF 论文笔记

原文链接:https://www.jianshu.com/p/434b3e22a47e

本篇文章涉及4篇论文分别是

Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials

Conditional Random Fields as Recurrent Neural Networks

SEMANTIC IMAGE SEGMENTATION WITH DEEP CON-VOLUTIONAL NETS AND FULLY CONNECTED CRFS

FULLY CONVOLUTIONAL MULTI-CLASS MULTIPLE
INSTANCE LEARNING

Weakly-_and_Semi-Supervised_Learning_of_a_Deep_Convolutional_Network_for

第一篇是介绍CRF在分割图片区域的算法(Mean Field)
第二篇是在VOC2012上排在前排的一个模型,它的特点是在fcn-8s的后面添加CRF层,与普通的算法不同的是,CRFasRNN模型会把Mean Field算法嵌入在网络层中,进行EndToEnd的训练(虽然效果并不是那么理想)
第三篇和第四篇是同一个算法,第三篇介绍是FCN-8S+CRF的调参大法,第四篇则是利用弱标签生成更多的训练数据,以优化网络参数。

CRF

CRF stands for Condition Random Field.

我们由于篇幅限制,在此处不过多讨论CRF的普遍的数学意义。我们简要地介绍CRF在图片区域分割的作用。

直观上的图片分割

我们使用Photoshop的魔术棒抠图作为例子。
实际上两个物体在边界的附近会有很明显的分别。这个“分别”表现为RGB值不平滑地变化。

PS前

PS后

CRF和最大熵

此处引入部分必要的数学公式。原文:

derivation1.png

derivation2.png

简而言之就是考虑以下的条件,以达到最小的Loss(最大熵)

  1. 从fcn-8s生成的每个点属于每一个类的概率。
  2. 相近且相似的点是否属于同一类,若属于同一类则penalty比较小,若不属于同一类则penalty比较大。

用公示表达则为:

Formula1

仅仅考虑1.的话就是裸的fcn-8s算法。我们来解释一下2.

考虑下图:

High Penalty

很明显,在瓶身的部分,绿色边界的两边RGB值是平滑的。而瓶子和白色背景部分RGB值不平滑。
在平滑的部分若存在区域与区域的切分,则会产生很高的loss
在不平滑的部分若不存在区域与区域的切分,则会产生很高的loss

比起上图,下图的loss会更低:

Low Penalty

用公示表达则为:

CRF Kernel

Mean Field Iteration

第一篇论文介绍了一种类似于Flood Fill和遗传算法的算法来求这个分割,这个算法叫做Mean Field。

这个算法的过程如下:

Mean Field Formula 1

Mean Field Formula 2

整个过程分成4步:

  1. Initialize: 首先从fcn-8s生成一个很粗糙的分割(如下图中虚线部分)
  2. Message Passing. 传递相邻像素label之间的互相影响的关系。我们之前定义过k(fi, fj)的意义:
    在平滑的部分若存在区域与区域的切分,则会产生很高的loss
    在不平滑的部分若不存在区域与区域的切分,则会产生很高的loss
    也就是说这种Message Passing会很难穿过不平滑的部分(下图中实线的部分),所以label会像flood fill那样填充(如下图箭头方向)
  3. Compatibility Transform. 此部分是均衡一下各种二元关系之间的系数(Appearance Kernel & Smoothness Kernel)
  4. Local Update. 更新权值。输出结果或者将Update后的dense label map作为新的Q进行新的一轮Iteration。

Mean Field Iteration Direction

CRF as RNN

这个Model在PASCAL VOC2012达到了65.2%IOU

这个Model先将训练好的fcn-8s,在后面添加自己写的Caffe层,用类似于Conv的操作模拟Mean Field的四部,并且实现了back propagation以达到end-to-end的训练。具体实现细节可以参照论文中所给的代码

DeepLab

DeepLab是Google搞出来的一个model,在VOC上的排名要比CRF as RNN的效果好。文中还提出了很多非常多inspirational point.

结构

  1. 加速运算
    和普通的FCN-8s相同,DeepLab保留了VGG16前5层的结构,唯一和FCN-8s不同的地方在于FC层:

derivation3.png

derivation4.png

其实这仅仅是在不很降低结果的准确性的情况下将计算的瓶颈砍掉FC层并没有提高准确率。

  1. Multi-Scale PREDICTION

这一部分DeepLab使用了比FCN-8S更激进的做法,在每一层Pooling之后都添加了一个分支层,再把各层的结果连接起来(FCN-8S是相加):

derivation4.png

但如文中所说,位置信息提取度并没有CRF那么厉害。

  1. View Of Field (atrous algorithm)
    这个部分主要还是解决由于subsample导致的
    主要还是解决由于subsample导致的。由于subsample的原因(stride > 1的所有layer都算subsample)图片的大小和比例会被弄坏。DeepLab介绍了一种办法,在每一个subsample后在像素与像素之间补0,这样大小就不会偏离太多。

"We skip subsampling afterthe last two max-pooling layers in the network of Simonyan & Zisserman (2014) and modify theconvolutional filters in the layers that follow them by introducing zeros to increase their length (2⇥inthe last three convolutional layers and 4⇥in the first fully connected layer). We can implement this more efficiently by keeping the filters intact and instead sparsely sample the feature maps on whichthey are applied on using an input stride of 2 or 4 pixels, respectively. This approach, illustratedin Fig. 1 is known as the ‘hole algorithm’ (‘atrous algorithm’) and has been developed before forefficient computation of the undecimated wavelet transform (Mallat, 1999). We have implementedthis within the Caffe framework (Jia et al., 2014) by adding to the im2col function (it converts multi-channel feature maps to vectorized patches) the option to sparsely sample the underlying featuremap. This approach is generally applicable and allows us to efficiently compute dense CNN featuremaps at any target subsampling rate without introducing any approximations."

Hole Algorithm

Semi Weak Annotation

最后一篇文章则是介绍怎么使用弱监督的信息(图片级label和框级label)来进行像素级语义分割。

Bound Boxes Annotation

label仅仅含有圈出物体并指出此物体是什么的信息

Image-level Annotation

label仅含有此图片中有什么物体

最后一篇文章中介绍的3种关于此类弱监督数据集的方法

Model Training Using Bounding Box WeakAnnotations

bounding box weak annotations

pre-processing

简单来说首先先将bounding box里的像素点全部填充为该物体的label(如果同时属于多个box则选择大小小的box)。然后使用CRF过程把图片的进行细分(Bbox-Baseling -> Bbox-Seg)

再把最终输出的图片作为监督学习的结果给DCNN进行学习。

Model Training Using Weak Image-Level Labels

在倒数第二篇论文中有介绍到一种叫做MIL的方法,能够从Image-level的数据让DCNN学习如何像素级分割。DeepLab在这个基础上使用了一个前景/背景的方案使得这个输出更精准。同时让这个结果反过来训练神经网络。

FG/BG Bias

Semi-Supervised Model Training Using Both Fullyand Weakly Annotated Images

如果理解了之前的方法看懂下面这个应该不难。这个方法的目的是在我们有少量强label数据但不充足,但我们有大量的弱监督的数据集,如何增强我们的网络。

Both

训练结果

result1

result2

result3

result4



作者:voidrank
链接:https://www.jianshu.com/p/434b3e22a47e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/y_f_raquelle/article/details/83689417
FCN
CRF
今日推荐