deeplabv2~3+ 随笔记录

亲身经历使用过v2,v3和v3+只看了文章资料,随笔记下:

deeplab v2:

1. atrous conv的使用,后续的v3、v3+都一直有延用...  即空洞卷积,不增加参数量的前提保护感受野及 feature map 分辨率。

2. atrous spatial pooling (ASPP) 多尺度重采样金字塔结构,说是 pooling,其实还是 conv,就是再多卷积几次 feature map,并且是使用不同的 rate (atrous conv 的孔径系数)去卷,达到多尺度提取特征的作用,有助 pixel 分类。

3. 以上完了之后,map 还是缩小了的,那么进行双线性插值 resize 回原 img 尺寸(文中是8倍)。网络后端连接全连接CRF,优化分割结果。考虑 pixel 的空间位置和 RGB 信息设计惩罚函数,来优化调整得到最终的分割结果。


然后是v3:

1. 把resnet又加深了,block4 copy了3份得到block5、6、7. ( 这一块是串行)


2. 延用 atrous conv,作者实验发现当 rate 慢慢变大(至接近当前作用的 map 尺寸), 3x3 的kernel 退化成了 1x1. (因为rate等于map的size,每次卷积只有 3 x 3 中心那个 pixel 是原 map 的值,其他都是padding 来的.) 所以对 ASPP 结构进行变化:

把 rate = 24 的剔除,换成一个 1x1 的卷积操作。

并且还结合全局 feature map 信息,把 block4 的 feature map average pooling 加过来。 (这一块是并行了哈...)

加上之前的 rate = 6、12、18 共5层。concat起来,再 1x1 的conv一次,得到最终的结果。

对了,这里的 ASPP 使用了  batch normalization


3. 不需要后端的 CRF 了。



最后是v3+了:主要是在v3的基础上“进步”

1. 为了更进一步“修饰”边界信息,提出了个 decoder module.


图中红框所示,把“浅”层的 map 加进来(有点当年fcn8s做分割的意思哈...)

2. 因为 Xception 结构优秀,就把它“借用”过来。这个 Xception 是 mobilenet里的 depthwise separable conv,又有点类似于 inception v4 的结构...文章还是修改了一些 Xception 结构的:

(1)更多层:重复8次改为16次(基于MSRA目标检测的工作)。(2)将原来简单的pool层改成了stride为2的deepwish seperable convolution。 (3)额外的RELU层和归一化操作添加在每个 3 × 3 depthwise convolution之后(原来只在1*1卷积之后)


当然,也不需要 CRF 啊...

以上....

因为v3、v3+自己也没做实验所以体会不是很深,有新的理解会再来补充,欢迎指正~!



猜你喜欢

转载自blog.csdn.net/jiachen0212/article/details/79996364