基础语义分割网络及相关概念笔记与记录

发布于:2022-12-20 ⋅ 阅读:(559) ⋅ 点赞:(0)

目录

转置卷积(反卷积)

Dilated Convolution(空洞卷积)

Gridding effect

DeepLab

1)DeepLab V1

2)DeepLab V2

ASPP方法

3)DeepLab V3

获取多尺度上下文的几种方式

Deeplab V3的两种模型结构


转置卷积(反卷积)

对于转置卷积首先需要明确两个概念1)转置卷积不是卷积的逆运算 2)转置卷积也是卷积

转置卷积所起到的作用是上采样。转置卷积的示意图如下所示

在上图中输入特征图是一个2*2的特征图,但是会在特征图的周围填充一些0元素,并采用3*3的卷积核进行转置卷积,最终得到的输出特征图的尺寸变为4*4

转置卷积的具体步骤为:

(1)在输入特征图像素之间添加S-1行0,S-1列0 (2)在输入特征图的四周添加K-P-1行0,K-P-1列0 (3)在卷积核参数上下左右翻转(4)做正常的卷积运算,填充为0,步距为1

( 其中K是卷积核的尺寸,P是paddding的大小,S是卷积核移动的步距)。输出特征图的高宽计算公式以及实例如下图所示

详细的步骤图解如下所示:

首先进行添0操作,然后再对原有卷积核进行上下左右的翻转,最后通过普通的卷积过程得到输出特征图。

Dilated Convolution(空洞卷积)

空洞卷积主要有以下两个作用,首先它能够增大感受野。其次能够保持原输入特征图的W,H。一般在实际的使用过程中会将padding的值设为1从而使原始输入图像和输出图像的尺寸保持一致。

但是在使用空洞卷积时不能直接将普通卷积替换成空洞卷积然后进行堆叠,如果直接进行堆叠可能会产生gridding  effect问题。

Gridding effect

这个问题就是随着膨胀卷积的不断堆叠,Layer4上的像素它并没有利用到在其范围内所有的像素值,而是只利用到了其中一部分,这样会导致丢失一些细节信息 

DeepLab

1)DeepLab V1

语义分割问题中存在的问题是下采样过程中会导致图像的分辨率降低以及空间不敏感问题(即对图像中的某些像素进行平移操作以后按道理来说分割的结果应该不同,可是因为这种不敏感性导致评平移过后的分割结果仍然不变

在本篇论文中采用了空洞卷积以及Fully-Connected CRF来解决(但在DeepLab V3中就舍弃了CRF这种方法)

网络的优势在于速度更快,准确率更高,模型结构简单,主要由DCNNS和CRFs。

LargeFov模块可以降低模型的参数提升网络的训练速度,网络的模型结构如下图所示。其主体框架采用的是VGG16,其主要的区别在于其最大池化核的步长和Padding发生了变化。

MSC(Multi-scale)融合了多个尺度的数据,其包含了原图尺度的数据以及前4个最大池化的输出数据,其示意图如下:

这个网络的主分支是没有发生变化的,横向的第一个卷积的步距是不一样的但最终的目的都是为了与最后的输出保持一致。总的来说除了主分支的输出外还增加了5个分支的输出,并将这些个输出做一个Add操作吗,相加以后再通过一个8倍上采样将图像还原为原来的尺寸大小。

2)DeepLab V2

相比较于Deeplab V1这个网络的不同之处在于更换了Backbone即网络的主体框架由VGG16更换成了ResNet,此外V2版本的网络引入了一个新的结构叫做ASPP模块。

ASPP方法

ASPP方法的结构图如下:

在上图中输入特征图所指的是经过Backbone处理后所得到的图像,并且会并联上4个分支,并且针对于每个分支都会采用不同的膨胀因子来进行卷积(卷积核的大小是3*3的),将这4个分支进行融合就使得DeepLab V2具有一个解决多尺度的能力。

具体来说,网络结构如下图所示,首先通过一个卷积层,然后再通过一个池化层,然后再通过一系列的残差结构,经过一系列的残差结构后,再通过一个平均池化以及一个全连接层得到最终的一个输出。下图中的Layer1,Layer2等对应的就是一系列残差架构,为了防止图像的分辨率过低,因此在Layer3和Layer4中就不再进行下采样了,其步长均设置为1.

在Layer 4的输出层上再接一个ASPP结构,即对输入的特征层并行的通过4个膨胀卷积层,其膨胀系数分别为6,12,18,24.再将这个分支上的输出进行Add相加,最后再对其上采样恢复到原始大小的图像尺寸。

3)DeepLab V3

相比于DeepLab V2,V3具有了以下几个不同点,首先是引入了Multi-grid结构,改进了ASPP结构,移除了CRFs后处理。

获取多尺度上下文的几种方式

在神经网络中,获取多尺度上下文的方法如下图有以下四种方式

第一种方法如图中(a)所示将图片缩放到不同的尺度,然后分别输入到网络结构中去,然后进行一个正向传播,最后将多尺度的图像进行一个融合得到最终的输出

第二种方法是图(b)所示的编码器-解码器结构,通过跳跃连接将低级别的空间信息和高级别的语义信息连接起来,类似于于U-Net网络结构那样。

第三种方法正如图(c)的方法。像DeepLab V1那样将Backbone中的分类网络中的最后几个下采样的步距设置为1,然后再引入膨胀卷积来增大感受野。

第四种方法如图(d)所示,也就是在DeepLab中所提到的ASPP结构。

Deeplab V3的两种模型结构

1:级联的模型结构

在级联模型中,Block1到Block4都是其主干残差网络结构,此外还增加了Block5到Block 7。其内部结构与之前是相同的只不过其膨胀因子不同。

2:ASPP的模型

在ASPP模块中通过5个分支进行多尺度的融合。DeepLab V3中的ASPP是有别于V2版本中的ASPP的,在V3中 首先有一个1*1的分支以及3个3*3的膨胀卷积层,其膨胀因子有所不同,此外还有一个全局池化的分支。

两个版本的ASPP对比图如下所示:

 LR-ASPP

这个网路是一个轻量级的语义分割网络

其网络结构如下图所示:

首先在网络中不会向先前一样下采样到32倍了。在MobileNet V3的输出头上连接有两个分支,首先第一个分支就是通过一个简单的1*1卷积,BN,RELU。而在下面的第二个分支中主要是通过一个全局平均池化,然后再通过一个1*1卷积层,再通过一个sigmod激活函数得到一个长度为128的向量,然后直接与上面这个特征层进行相乘即可。将所得的结果通过双线性插值进行一个两倍上采样,然后再通过一个1*1的卷积层。然后再将backbone中下采样8倍的特征层引入,再对其使用一个1*1卷积层。再将两个特征层进行相加,最后再通过8倍上采样还原回原始的图像大小。


网站公告

今日签到

点亮在社区的每一天
去签到