deeplabcv2 的 Atrous Convolution(带孔卷机核),感受野,及tensorflow实现crf的一点理解。

来源:互联网 发布:淘宝网直通车怎么开 编辑:程序博客网 时间:2024/06/06 06:55

首先是因为做图像分割,所以使用deeplab。思想基本和fcn一样。先卷机提取特征,然后阔尺寸至原图像大小。

普通fcn先把图像padding至很大(据说是边缘补100个0),然后一层层下来,pool (stride=2)或者是卷机( stride=2)5次,图像缩小了32倍,所以之前才需要把图像放大,不然最后得到的特征图就太小了。但是补0加大了噪声。。。

deeplabcv2 采用的新做法是:在pool5开始用一种新的卷机核 Atrous Convolution,hole算法

把conv5 开始起的conv都换成atrous conv 并且con的stride和pool的stride都给的1,使得图像不再缩小。并且保证感受野不变。如下图:

普通的卷集核在stride=1后,感受野就变小了(7-5),


Atrous Convolution会在卷机中间插0,使得卷机核“扩大”,c 和 a 具有一样的感受野。hole size的取值可变。

再来一张图:


这样操作,就在保证感受野的前提下,还不缩小图像大小。

然后,deeplab cv2还连接了一个金字塔型:


hole_size 设置了6 12 18 24.然后想嫁的到fc8,再使用阔尺寸8倍,的到原图尺寸一致的图像。(用tensorflow实现的话,直接有resize函数扩大,默认是双线性插值法,也可选择别的插值参数方法。)

最后做的crf使边缘更细节,这里就一点值得注意,crf的输入要求,需要把维度转换好,需要的一个是rgb的原图,还有一个是以上f8阔尺寸后再softmax(使前向结算结果变为概率分布形式)的结果。然后,就得到最后的分割图像了。


图片来自 deeplab发表在ICLR 2015上。论文下载地址:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFS.

参考的博文:http://blog.csdn.net/c_row/article/details/52161394

也可以参看我的另一片博文,说得更细些:

http://blog.csdn.net/jiachen0212/article/details/78548667


原创粉丝点击