一、FCN(Fully Convolutional Networks)
之前的深度学习一般使用的CNN用于分类和检测问题上,所以最后提取的特征的尺度是变小的。为了让CNN提取出来的尺度能恢复到原图大小,FCN网络利用上采样和反卷积到原图像大小,然后做像素级的分类。
输入原图,经过网络,得到特征map,然后将特征map上采样回去。再将预测结果和ground truth每个像素一一对应分类,做像素级别分类。也就是说将分割问题变成分类问题,而分类问题正好是深度学习的强项。
接受任意大小的输入,然后得到具有有效推理的相应大小的输出。FCN作为语义分割领域的经典之作,可实现端到端分割。
二、U-Net(编码器—解码器)
U-Net模型是FCN的改进和延伸,它沿用了FCN进行图像语义分割的思想,即利用卷积层、池化层进行特征提取,再利用反卷积层还原图像尺寸。
U-Net包括左边的收缩路径(contracting path)用于捕获上下文和右边的对称扩张路径(symmetric expanding path)用于精确定位,收缩路径包括几个3×3的卷积加RELU激活层再加2×2 max pooling的结构(stride:2) ,下采样的每一步特征通道数都增加一倍。
扩张路径的每一步包括上采样、2×2卷积(减少一半通道数),和相应收缩路径中的剪裁过的特征层的串联以及两个3×3卷积加 RELU。最后一层用了1×1卷积把64个通道映射到想要的类别种类数。
采用了拼接的特征融合方式,将特征在channel维度拼接在一起,形成更厚的特征,连接贯穿整个网络。它具有弹性变形的数据增强,需要很少的注释图像。
三、Deeplabv3p(带孔卷积)
语义分割任务通常会用到空间金字塔模块和编解码模块。前者有利于提取多尺度上下文信息,后者更容易捕获边缘信息。
ASPP:Atrous Spatial Pyramid Pooling,意为空洞空间金字塔池化。对所给定的输入以不同采样率的空洞卷积并行采样,相当于以多个比例捕捉图像的上下文,可以说是基于多尺度场景的上下文是一组稀疏采样的像素。
在网络结构中,通过空洞卷积任意控制Encoder模块特征图的分辨率,并充分考虑的速度和精度。
Deeplabv3p中Encoder架构采用Deeplabv3,Decoder采用一个简单的模块用于恢复目标边界细节,并可使用atrous convolution在指定计算资源下控制特征的分辨率。
四、OCRNet(注意力机制)
像素的标签是像素所属对象的类别,那么利用物体信息增强像素上下文信息,OCRNet可提高语义分割网络的上下文感知能力。
对比基于 ASPP 的多尺度上下文信息与基于 OCR 的物体上下文信息的区别。对选定的红色标记的像素,我们用蓝色来标记其对应的上下文信息。可以看到基于 ASPP 的多尺度上下文信息通常会包含不属于红色像素所属类别的像素,左图中采样到的蓝色标记的像素有一部分落在了人的身体上,还有一部分像素落在了后面的展板上。因此,这样的多尺度信息同时包含了物体信息与背景信息。而基于 OCR 的物体上下文信息的目标是只利用物体信息,即显式地增强物体信息。
OCR 方法提出的物体上下文信息的目的在于显式地增强物体信息,通过计算一组物体的区域特征表达,根据物体区域特征表示与像素特征表示之间的相似度将这些物体区域特征表示传播给每一个像素。