DeepLabv1

Semantic image segmentation with deep convolutional nets and fully connected CRFS

一、概述

来自DeepLab的研究人员Chen等人提出了一种结合全卷积网络与条件随机场(Conditional Random Field,CRF)的语义分割模型,也被称为DeepLab v1。在论文《 Semantic image segmentation with deep convolutional nets and fully connected CRFS》中提出,发表在ICLR 2015。

二、动机及解决的问题

写这篇文章的动机是啥呢?能解决啥问题呢?是通过怎样的方法解决的呢?
在FCN中池化层会使得特征的长和宽不断下降,为了保证之后输出的尺寸不至于太小,FCN作者直接在第一层就对原图加了100的padding,这样会引入噪声,feature map尺寸的逐渐减小还会使得在语义分割时进行upsampling,但是upsampling并不能将丢失的信息全部无损的找回来,如果单单的去掉池化层的话,就会改变之前可用的结构,就不能再用以前的参数进行fine-tune了。有没有一种方法能既增大感受野,又不减小图像尺寸呢?
对此,DeepLab的研究人员对池化层做了操作:将pooling的stride改为1,再加上1 padding,这样池化后的尺寸并未减小,且依旧保留了池化整合特征的特性,避免了池化层的下采样操作带来的信息损失。但是去掉池化层会导致网络各层的感受野过小,降低整个模型的预测精度,因此将后继的卷积改为带孔卷积以增加卷积层的感受野,在卷积网络进行了粗略的语义分割后,再使用全连接的条件随机场进行更精细的调整,以解决卷积神经网络边界定位不准确的问题。

三、解决策略

  1. 带孔卷积(Atrous Convolution):也叫空洞卷积
    先来两张动图感受一波:
    普通卷积:
    在这里插入图片描述
    空洞卷积:
    在这里插入图片描述
    在这里插入图片描述
    在空洞卷积里,有个重要的参数叫rate,该参数代表了空洞的大小,当rate=1时,进行标准卷积操作,也就对应图(a),当rate>1时,比如rate=2,就是在原图上每隔(rate-1)个像素采样,如图(b),实际上kernel size还为3,只不过空洞为1,也就对应了7×7的patch,可以理解为7×7的kernel,但是只有图中9个点的weight不为0,其余都为0,可以看到,虽然kernel_size=3×3,但这个卷积的感受野已经增大到了7×7(因为在原map上,确实9个点跨越覆盖到了传统卷积的49个像素点),(c)图是rate=4的卷积,能达到15×15的感受野。对比传统的卷积操作,3层3×3的卷积加起来,stride=1时,只能达到(kernel-1)*layer+1,也就是和layer成线性关系,而空洞卷积的感受野是呈指数级增长。
    空洞卷积的好处是不做pooling损失的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。
    需要注意的是:
    (1)带孔卷积并不是卷积核里带孔,而是在卷积的时候,跳着去卷积
    (2)带孔卷积并不增加参数量,3×3的依旧是9个weights,多出的点给的权值直接是0,是不需要被训练的,所以它在提高感受野的同时还不增加参数量的负担,已经很不错了。
    (3)weight给0的点的那些信息,设置好stride,慢慢一步步的滑过图像,这些之前weights被置0的点会在某个下一次的卷积操作被卷到的。
    (4)这里所关心的感受野,只是这一次卷积得到的点,覆盖了原map中的多少个像素点。

  2. DenseCRF(全连接随机场)
    FCN module因为经过层层下采样和上采样(参数多,感受野大且重合),丢失了大量位置信息,使得最后的分类结果十分smooth,但我们需要的是sharp segmentation,于是在本文中提出的模型避开了之前的层层上采样,直接用bilinear interpolation(双线性插值)恢复到原状,然后进行CRF通过领域之间的锐化,得到最终分割结果。
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
文章中作者在全卷积网络后面接DenseCRF,以提高边缘预测的结果
全连接随机场:即图像中每一个像素点都与其它所有像素相关,为每个像素都建立pairwise potential。
定义随机场 X X X={ X 1 , X 2 . . . X N X_1,X_2...X_N X1,X2...XN}, N N N为一副图像的像素个数, X i X_i Xi为给第 i i i个像素分配的标签, X X X为一幅图像所有像素标签的集合, X i X_i Xi的取值范围为 L L L={ l 1 , l 2 . . . l k l_1,l_2...l_k l1,l2...lk},即有 k k k类标签,可以将 X X X理解为某一种标签分配方案。

随机场 I I I={ I 1 , I 2 . . . I N I_1,I_2...I_N I1,I2...IN}为一幅图像中的像素个数, I i I_i Ii为第 i i i个像素的特征向量(比如颜色), I I I 为一幅图像所有像素的特征向量,可以将 I I I理解为一幅图像的 “整体特征”。
由全局观测像素 I I I推测标签变量 X X X
定义条件随机场 ( I , X ) (I,X) (I,X)对应的吉布斯分布:
在这里插入图片描述
规范化因子为 Z Z Z,由分子求和得到, Z = ∑ e x p ( − E ( x ∣ I ) ) Z=\sum{exp(-E(x|I))} Z=exp(E(xI)),以确保 P ( x ) P(x) P(x)是被正确计算的概率,势函数
ψ = e x p ( − E ( x ∣ I ) ) ψ=exp(-E(x|I)) ψ=exp(E(xI)),由于势函数恒>0,故其为指数函数
对于CRF模型的能量函数:
在这里插入图片描述
能量越大,势能越小,概率越小。

其中:
θ i ( x i ) = − l o g P ( x i ) \theta_i(x_i)=-logP(x_i) θi(xi)=logP(xi)
每个像素都有一个一元势函数(unary potentials),其中 P ( x i ) P(x_i) P(xi)表示DCNN输出的score map在i这个像素上,其真实标签的概率,其只考虑当前像素的类别,而不考虑其它像素。

θ i ( x i , x j ) = μ ( x i , x j ) ∑ m = 1 k w m ⋅ k m ( f i , f j ) \theta_i(x_i,x_j)=\mu(x_i,x_j)\sum_{m=1}^{k}w_m·k^m(f_i,f_j) θi(xi,xj)=μ(xi,xj)m=1kwmkm(fi,fj)

每个像素都有一个二元势函数(pairwise potentials),它鼓励特征相似(距离小)的像素具有一致的标签,相差较大的像素分配不同的标签,这个“距离”的定义与颜色值和实际相距距离有关。
∑ m = 1 k w m ⋅ k m ( f i , f j ) = \sum_{m=1}^kw_m·k^m(f_i,f_j)= m=1kwmkm(fi,fj)=
在这里插入图片描述
x i ≠ x j x_i\neq{x_j} xi=xj时, μ ( x i , x j ) \mu(x_i,x_j) μ(xi,xj)=1,否则为0;也就是说,只有当标签不同时,才会有第二项,才会增大能量E。
w 1 和 w 2 w_1和w_2 w1w2加权的两个表达式表示的是在不同特征空间里的两个高斯核函数,第一个双边高斯核函数基于像素位置 p p p以及像素颜色强度 I I I,强制控制相似RGB和位置的像素分配在相似的label里,第二个只考虑像素位置,相当于施加一个平滑项,超参数 σ α \sigma_{\alpha} σα, σ β \sigma_{\beta} σβ, σ γ \sigma_{\gamma} σγ控制高斯核的权重。

对于每一个类(21个类),求解E(x),当取到minE(x)时像素值最稳定。

  1. Multi-scale prediction
    在这里插入图片描述
    多尺度预测,希望获得更好的边界信息,与FCN skip layer类似,将input,pooling1,pooling2,pooling3,pooling4后面加上多层感知机MLP
    (两层,first layer:128* 3* 3,second layer:128* 1* 1)后的输出结果传到softmax中,并拼接到一起,最终相当于多了5* 128=640个channel,该种方法的效果不如CRF惊艳,但也有一定的的提高,最终模型是结合了DenseCRF和Multi-scale prediction。

四、整体结构

主要对原有VGG网络进行了一些变换,

  1. 将原先的全连接层通过卷积层实现
  2. VGG network中原本有5个max pooling层,在DeepLabv1中,保留前三层max pooling,将后两个max pooling层的stride由2变为1,相当于只进行了8倍下采样,并将更改的后两个max pooling层的卷积变为带孔卷积,来控制感受野大小
  3. 将原VGG-16中的第一个FC层的7×7的卷积层,使用4×4或3×3来代替,这样会控制感受野大小,同时减少计算量(计算时间减少了2-3倍)
  4. 将fully connected layers的通道数从4096变为1024,这样做同样是为了减少计算量和内存的使用,而且也没有牺牲最后的结果表现力。
  5. 损失函数:交叉熵之和
  6. 训练数据label:对原始Ground Truth进行下采样8倍,得到训练label
  7. 预测数据label:对预测结果进行双线性插值来上采样8倍(这里没有用deconv,deconv会增加参数量,且二者使用后效果差别不大),得到预测结果。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值