[深度学习从入门到女装]DeepLab

DeepLab v2

论文地址:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

 

文章首先提出目前使用深层卷积网络进行语义分割的三点挑战

1、特征分辨率的减少

文章指出这种问题的出现是因为网络中重复的下采样也就是maxpooling的操作,这种操作虽然在分类问题上表现突出,但是语义分割问题会导致特征分辨率下降

为了解决这个问题,本文移除了最后几层maxpooling,使用空洞卷积(atrous convolution为提出的新术语/upsample the filters)来取代,使用空洞卷积来达到maxpool的扩大感受野的效果,并且对于原始尺寸的特征响应使用简单的双线性插值(bilinear interpolation),文章中指出这种方式是对于deconv(反卷积)更有效的替代方法,对于之前使用加大卷积核尺寸的方法,空洞卷积可以在不增加参数和计算量的情况下,提高卷积的感受野

è¿éåå¾çæè¿°

空洞卷积通过在卷积核元素之间增加r-1个0来扩大卷积核,新卷积核尺寸K*K如下计算

K=k+(k-1)(r-1)

其中k为原卷积核大小,r为rate

 

如原来ksize为5*5,rate=10

K=5+(5-1)*(10-1)=41

该空洞卷积核size为41*41

 

2、多尺度对象的存在

对于这种问题,之前使用的都是对于多尺度特征的融合或者使用score maps(分数图)进行解决,文章说使用这种方法会导致计算量的增加,本文借鉴了SPP(spatial pyramid pooling)的思想,本文提出了一种有效的在特征层进行多rate采样只会再进行卷积,这样可以给原图像在多filter时有足够有效的感受野,能够更有效的在多尺度捕捉上下文。并不是对于特征进行重采样,我们使用多个不同的采样rate在多个平行卷积层进行,把这种方法称为ASPP(atrous spatial pyramid pooling”)

作者把pool5层的结果,使用rate=6、12、18、24四种不同尺度的空洞卷积核得到不同野的特征图,随后将这四个特征图fuse在一起,在进行双线性插值恢复到输入图像的尺寸大小

3、因为深层卷积网络不变性导致的局部准确率降低

之前为了解决这种问题,使用的多是skip-layers。本文使用了一种更效率的方式,为了增强局部细节使用了全连接条件随机场(fully-connected Conditional Random Field),使用了这篇文章fcCRFs的方法

其中能量函数为

E(x)=\sum_{i}^{n} \theta _{i}(x_{i})+\sum_{i,j}^{n} \theta_{i,j}(x_{i},x_{j})

其中\theta_{i}(x_{i})=-logP(x_{i})P(x_{i})为之前神经网络输出的score map

\theta_{i,j}(x_{i},x_{j})=\mu (x_{i},x_{j})[w_{1}*exp(-\frac{\left \| p_{i}-p_{j} \right \|^2}{2\sigma_{\alpha }^2}-\frac{\left \| I_{i}-I_{j} \right \|^2}{2\sigma_{\beta }^2})+w_{2}*exp(-\frac{\left \| p_{i}-p_{j} \right \|^2}{2\sigma_{\gamma }^2})]

x_{i}\neq x_{j}时,\mu (x_{i},x_{j})=1,否则为0

p表示各个像素之间的距离,I表示每个像素的RGB像素值

\sigma_{\alpha }\sigma_{\beta }\sigma_{\gamma }为超参数

 

 

DeepLab V2 基于VGG16源码分析

假设输入图像大小为3*128*128 三通道128*128分辨率图像

conv1_1、conv1_2:num_output: 64 pad: 1 kernel_size: 3 输出为64*128*128

maxpool1:kernel_size: 3 stride: 2 pad: 1 输出为64*64*64

conv2_1、conv2_2:num_output: 128 pad: 1 kernel_size: 3 输出为128*64*64

maxpool2:kernel_size: 3 stride: 2 pad: 1 输出为128*32*32

conv3_1、conv3_2、conv3_3:num_output: 256 pad: 1 kernel_size: 3 输出为256*32*32

maxpool3:kernel_size: 3 stride: 2 pad: 1 输出为256*16*16

conv4_1、conv4_2、conv4_3:num_output: 512 pad: 1 kernel_size: 3 输出为512*16*16

maxpool4:kernel_size: 3 pad: 1 stride: 1输出为512*16*16

conv5_1、conv5_2、conv5_3:(这三层均为空洞卷积层)num_output: 512 pad: 2 kernel_size: 3 dilation: 2 输出为512*16*16

maxpool5:kernel_size: 3 stride: 1 pad: 1 输出为512*16*16

-----------------------------------

#hole=6

输入为maxpool5

fc6_1:(此层为空洞卷积层)num_output: 1024 pad: 6 kernel_size: 3 dilation: 6 输出为1024*16*16

fc7_1:(卷积层)num_output: 1024 kernel_size: 1 输出为1024*16*16

fc8_1:(卷积层)num_output: ${NUM_LABELS} kernel_size: 1 输出为NUM_LABELS*16*16

-----------------------------------

 

-----------------------------------

#hole=12

输入为maxpool5

fc6_2:(此层为空洞卷积层)num_output: 1024 pad: 12 kernel_size: 3 dilation: 12 输出为1024*16*16

fc7_2:(卷积层)num_output: 1024 kernel_size: 1 输出为1024*16*16

fc8_2:(卷积层)num_output: ${NUM_LABELS} kernel_size: 1 输出为NUM_LABELS*16*16

-----------------------------------

 

-----------------------------------

#hole=18

输入为maxpool5

fc6_3:(此层为空洞卷积层)num_output: 1024 pad: 18 kernel_size: 3 dilation: 18 输出为1024*16*16

fc7_3:(卷积层)num_output: 1024 kernel_size: 1 输出为1024*16*16

fc8_3:(卷积层)num_output: ${NUM_LABELS} kernel_size: 1 输出为NUM_LABELS*16*16

-----------------------------------

 

-----------------------------------

#hole=24

输入为maxpool5

fc6_4:(此层为空洞卷积层)num_output: 1024 pad: 24 kernel_size: 3 dilation: 24 输出为1024*16*16

fc7_4:(卷积层)num_output: 1024 kernel_size: 1 输出为1024*16*16

fc8_4:(卷积层)num_output: ${NUM_LABELS} kernel_size: 1 输出为NUM_LABELS*16*16

-----------------------------------

fc8_${EXP}:(此为Eltwise层)operation: SUM 输入为fc8_1、fc8_2、fc8_3、fc8_4,将这四个特征图相加得来最终特征图

输出为NUM_LABELS*16*16

-----------------------------------

label_shrink:type: "Interp" 输入为fc8_${EXP},进行8倍双线性差值,得到与输入图像相同尺寸的分割图 输出为NUM_LABELS*128*128

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值