图像分割方法deeplab以及Hole算法解析
来源:互联网 发布:multisim单片机继电器 编辑:程序博客网 时间:2024/06/05 10:43
尊重原创,转载请注明:http://blog.csdn.net/tangwei2014
deeplab发表在ICLR 2015上。论文下载地址:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFS.
deeplab方法概述
deeplab方法分为两步走,第一步仍然采用了FCN得到 coarse score map并插值到原图像大小,然后第二步借用fully connected CRF对从FCN得到的分割结果进行细节上的refine。(有关FCN的内容介绍,可以参考我的前面得一篇博客:http://blog.csdn.net/tangwei2014/article/details/46882257)
下面这张图很清楚地展示了整个结构:
然后这张图展示了CRF处理前后的效果对比,可以看出用了CRF以后,细节确实改善了很多:deeplab对FCN更加优雅的处理方式
在第一步中,deeplab仍然采用了FCN来得到score map,并且也是在VGG网络上进行fine-tuning。但是在得到score map的处理方式上,要比原FCN处理的优雅很多。
还记得CVPR 2015的FCN中是怎么得到一个更加dense的score map的吗? 是一张500x500的输入图像,直接在第一个卷积层上conv1_1来了一个100的大padding。最终在fc7层勉强得到一个16x16的score map。虽然处理上稍显粗糙,但是毕竟人家是第一次将图像分割在CNN上搞成end-to-end,并且在当时performance是state-of-the-art,也很理解。
deeplab摒弃了这种做法,取而代之的是对VGG的网络结构上做了小改动:将VGG网络的pool4和pool5层的stride由原来的2改为了1。就是这样一个改动,使得vgg网络总的stride由原来的32变成8,进而使得在输入图像为514x514,正常的padding时,fc7能得到67x67的score map, 要比FCN确实要dense很多很多。
但是这种改变网络结果的做法也带来了一个问题: stride改变以后,如果想继续利用vgg model进行fine tuning,会导致后面filter作用的区域发生改变,换句话说就是感受野发生变化。这个问题在下图(a) (b)中通过花括号体现出来了:Hole算法
于是乎,作者想出了一招,来解决两个看似有点矛盾的问题:
既想利用已经训练好的模型进行fine-tuning,又想改变网络结构得到更加dense的score map.
这个解决办法就是采用Hole算法。如下图(a) (b)所示,在以往的卷积或者pooling中,一个filter中相邻的权重作用在feature map上的位置都是物理上连续的。如下图(c)所示,为了保证感受野不发生变化,某一层的stride由2变为1以后,后面的层需要采用hole算法,具体来讲就是将连续的连接关系是根据hole size大小变成skip连接的(图(c)为了显示方便直接画在本层上了)。不要被(c)中的padding为2吓着了,其实2个padding不会同时和一个filter相连。
pool4的stride由2变为1,则紧接着的conv5_1, conv5_2和conv5_3中hole size为2。接着pool5由2变为1, 则后面的fc6中hole size为4。代码
主要是im2col(前传)和col2im(反传)中做了改动 (增加了hole_w, hole_h),这里只贴cpu的用于理解:
- 图像分割方法deeplab以及Hole算法解析
- 论文阅读笔记:图像分割方法deeplab以及Hole算法解析
- DeepLab:语义图像分割
- 图像分割 DeepLab v2
- 图像语义分割:从头开始训练deeplab v2系列之一【源码解析】
- 【译】DeepLab V2:基于深度卷积网、孔洞算法和全连接CRFs的语义图像分割
- SLIC图像超像素分割算法解析
- SLIC图像超像素分割算法解析
- 图像分割--金字塔分割算法
- 【Java】K-means算法Java实现以及图像分割
- 图像语义分割:从头开始训练deeplab v2系列之二【VOC2012数据集】
- 【图像语义分割】DeepLab V2: CNN + Atrous Convolution + Fully Connected CRF
- 图像语义分割:从头开始训练deeplab v2系列之三【pascal-context数据集】
- 图像语义分割:从头开始训练deeplab v2系列之四【nyu v2数据集】
- 【译】DeepLab V1:基于Deep CNNs和全连接CRFs的语义图像分割
- 图像分割算法
- EM算法分割图像
- 图像分割算法
- Jmeter参数化
- ionic实现A-Z城市选择
- 安装cocoapods出现的问题(2)
- CDH 5 时钟服务器配置
- Mac 终端命令大全
- 图像分割方法deeplab以及Hole算法解析
- Linux文件和目录操作命令
- gulp教程之 jshint
- css图形库的引用
- 车牌识别遇到的问题
- echarts的x轴y轴的颜色改变
- 阻止冒泡事件即子元素父元素间的事件继承或传递
- 1.2 groovy 语法 2
- JAVA WebService