语义分割网络DeepLabV3在Cityscapes数据集上的探索(上)

论文名称:Rethinking Atrous Convolution for Semantic Image Segmentation1.重新讨论了空洞卷积的使用,使得在串行模块和空间金字塔池化的框架下,能够获取更大的感受野从而获取多尺度信息;2.改进了ASPP模块:由不同采样率的空洞卷积和BN层组成,尝试以串行或并行的方式布局模块;3.讨论了一个重要问题:使用大采样率的3×3的空洞卷积,因为图像边界响应无法捕捉远距离信息(小目标),会退化为1×1的卷积, 建议将图像级特征融合到ASPP模块中。
论文下载地址:https://arxiv.org/abs/1706.05587

参考代码:https://github.com/fregu856/deeplabv3
参考文章:
https://blog.csdn.net/qq_37541097/article/details/121797301
https://blog.csdn.net/qq_35759272/article/details/123700919
https://blog.csdn.net/qq_43492938/article/details/111183906
1.Cascaded modules
图1(a)未使用空洞卷积,所以图像分辨率一直缩小(信息的丢失非常严重);图1(b) 不改变分辨率以及感受野,其中Block1-4是原始ResNet网络中的层结构,但在Block4中将第一个残差结构里的3x3卷积层以及捷径分支上的1x1卷积层步距stride由2改成了1(即不再进行下采样),并且所有残差结构里3x3的普通卷积层都换成了空洞卷积层。Block5,Block6和Block7是额外新增的层结构,其结构与Block4一致,即由三个残差结构构成。

2.Atrous Spatial Pyramid Pooling
ASPP可以以不同的rate有效地捕捉多尺度信息,但是随着Block的深入与空洞卷积rate的增大,会导致卷积退化为1x1。例如,对于尺寸为65x65的特征图,如果将3x3、rate=30的空洞卷积核应用于它,生成的特征图会仅有中心点,捕获不到全局信息。为解决此问题,添加了Image-Level 图像级别的特征。具体来讲,将输入特征图的每一个通道做全局平均池化,再通过256个1x1的卷积核构成新的大小为(1, 1, 256)的特征图,再通过双线性插值得到需要的分辨率的图(如(b)所示),这么做可以弥补当rate太大的时候丢失的信息。(a)的部分包括一个1x1和rate分别为6、12、18的3x3的空洞卷积。将(a)和(b)进行concat,然后再通过256个1x1的卷积核得到新的特征图,上采样后进行损失的计算。

DeepLab V3中的ASPP结构有5个并行分支(图3中心部分),分别是一个1x1的卷积层,三个3x3的膨胀卷积层,以及一个全局平均池化层(为了增加全局上下文信息global context information),然后通过Concat的方式将这5个分支的输出进行拼接,最后再通过一个1x1的卷积层进一步融合信息。

Part 1 数据预处理
1.将cityscapes数据集中gtFine文件中的labelIds.png中的id转换为trainId,并将转换后的文件放置到cityscapes_meta_ path中
2.计算类别权重
3.图像增强
Part 2 构建网络
本文中的网络流程与图3类似,但部分不同。输入图像后,首先经过无fully connected layer, avg pool, layer 4与layer 5的resnet18,再经过4个类似图3中的BottleNeck结构(本文中的BottleNeck为2个BN后的3*3卷积与1个BN后的1*1卷积结果相加),经过ASPP层后upsample输出。
ASPP
Deeplabv3将上述结构融合
·未完待续·
