Contents
本文写的比较简单,属于入门入门入门级别,仅当作个人学习笔记和回忆时使用,更多细节和内容请参考论文和网络资料。
在计算机视觉领域,有一个方向是语义分割,一般是针对图像进行像素级分类,具体而言,就是语义图像分割会将每个像素都标注上其对应的类别。与实例分割(mask rcnn)不同,实例分割常常与目标检测系统相结合,用于检测和分割场景中同一对象的多个实例。
用卷积神经网络分类(全卷积网络FCN),与普通CNN网络不通的是,FCN的分类层是卷积层,普通网络为全连接层。方法介绍如下: 最近的语义分割架构一般都用卷积神经网络(CNN)为每个像素分配一个初始类别标签。卷积层可以有效地捕捉图像中的局部特征,并以层级的方式将许多这样的模块嵌套在一起,这样 CNN 就可以试着提取更大的结构了。通过一系列卷积捕捉图像的复杂特征,CNN 可以将一张图的内容编码为紧凑表征。 但为了将单独的像素映射给标签,我们需要将标准 CNN 编码器扩展为编码器-解码器架构。在这个架构中,编码器使用卷积层和池化层将特征图尺寸缩小,使其成为更低维的表征。解码器接收到这一表征,用通过转置卷积执行上采样而「恢复」空间维度,这样每一个转置卷积都能扩展特征图尺寸。在某些情况下,编码器的中间步骤可用于调优解码器。最终,解码器生成一个表示原始图像标签的数组。
encoder
本质其实就是一连串的卷积网络。该网络主要由卷基层,池化层和BatchNormalization层组成。卷基层负责获取图像局域特征,池化层对图像进行下采样并且将尺度不变特征传送到下一层,而BN主要对训练图像的分布归一化,加速学习。
概括地说,encoder对图像的低级局域像素值进行归类与分析,从而获得高阶语义信息(“汽车”, “马路”,“行人”),Decoder收集这些语义信息,并将同一物体对应到相应的像素点上,每个物体都用不同的颜色表示。
Encoder已经获取了所有的物体信息与大致的位置信息,那么下一步就需要将这些物体对应到具体的像素点上了。这一系列工作是由Decoder完成。Decoder对缩小后的特征图像进行上采样,然后对上采样后的图像进行卷积处理,目的是完善物体的几何形状,弥补Encoder当中池化层将物体缩小造成的细节损失。
Encoder和Decoder中都存在卷积层。他们在算法上一模一样,但是在作用上有一点不同。
三种模型FCN-32S, FCN-16S,FCN-8S
全卷积神经网络(FCN
)的主要贡献在于,因为没有全连接层(fc
),网络可适应任意尺寸输入,增大数据尺寸的反卷积(deconv
)层,能够输出精细的结果,结合不同深度层结果的跳级(skip
)结构,可确保鲁棒性和精确性。
SegNet和FCN思路十分相似,只是Encoder,Decoder(Upsampling)使用的技术不一致。SegNet的上采样Upsampling(反向池化),通过Pooling Indices
方式来保存池化点的来源信息,在Encoder的池化层处理中,会记录每一个池化后的1×1特征点来源于之前的2×2的哪个区域,在这个信息在论文中被称为Pooling Indices。Pooling Indices在Decoder中使用,SegNet是一个对称网络,那么在Decoder中需要对特征图进行上采样的时候,我们就可以利用它对应的池化层的Pooling Indices来确定某个1×1特征点应该放到上采样后的2×2区域中的哪个位置,这样解决了特征点随机分配任意位置(或者固定)带来的层层误差。过程如下图所示:
此外SegNet的编码器部分使用的是VGG16的前13层卷积网络,每个编码器层都对应一个解码器层,最终解码器的输出被送入soft-max分类器以独立的为每个像素产生类概率。
SegNet网络结构
Unet
在生物医学图像处理中是非常著名的解决方案,它在全卷积层上构建模型,对其做了修改使得它能够在少量的训练图像数据上运行,得到了更加精确的分割。网络结构如下图所示:
U-Net网络结构
U-net架构(最低分辨率为32×32像素的示例)。
每个蓝色框对应一个多通道feature map
。通道数量在框的顶部。框的左下角是x-y大小。白色框表示复制过来的feature map。箭头表示不同的操作。
2019年最新基于深度学习的语义分割技术讲解(含论文+指标+应用+经验) U-net 论文笔记 语义分割论文-DeepLab系列