什么是语义分割
图像语义分割通俗的来讲就是,将一张图片的每个像素点进行分类,分类到每个语义,即类别。
常用的数据集
对于深度学习来说,数据集至关重要,数据集很大程度影响最后模型的性能。现在在研究方面有几个公开的优秀数据集,大家都在这些公开的数据集上进行实验研究,相互比较来使构建的模型更优。
Pascal VOC 2012:有 20 类目标,这些目标包括人类、机动车类以及其他类,可用于目标类别或背景的分割
Cityscapes:50 个城市的城市场景语义理解数据集
Pascal Context:有 400 多类的室内和室外场景
Stanford Background Dataset:至少有一个前景物体的一组户外场景。
评判指标
对于一个模型来说,需要制定一个评判指标来评判这个模型是否优秀。在语义分割中,常常使用平均IOU来评判模型的性能。
平均IOU是基于每个类别来计算的,即先计算每个类单独的IOU,在把每个类的IOU计算平均,就是平均IOU。
一般大于0.5就比较好了。
语义分割的发展历程
2014 FCN(Fully Convolutional Networks)
2015 SegNet
2015 空洞卷积(Dilated Convolution)
2015 DeepLab
2016 RefineNet
2016 ENet
2017 PSPNet
2017 大内核GCN
FCN
FCN的主要思想是:
1.几乎借鉴AlexNet的网络结构,但是把AlexNet最后几层全连接网络改成了卷积网络,这样就可以适应任意大小的图片。
2.使用了反卷积(上采样)将底层信息放大,采用的是将feature map周围填0,然后卷积回去,卷积过后的feature map会更大。
3.使用了skip结构,融合多层的特征,使结果更准确。
损失函数是在最后一层的 spatial map上的 pixel 的 loss 和,在每一个 pixel 使用 softmax loss 。
mIOU1=62.2
mIOU2=67.2
SegNet
采用encoder-decoder的思想,把图片先encoder为高维的特征,再通过decoder还原为原图的大小,其中上采样部分采用了一种叫做pooling Indices的trick。
在encoder时,网络经过几层卷积层后,需要max pooling层将特征图缩小,此时记录max pooling 最大元素所在的位置,叫做pooling Indices。当decoder时,进行上采样时,用pooling Indices反池化,还原成原图的大小。
mIOU=59.9
Dilated Convolution
使用了空洞卷积,这是一种可用于密集预测的卷积层;
提出在多尺度聚集条件下使用空洞卷积的“背景模块”。
池化操作增大了感受野,有助于实现分类网络。但是池化操作在分割过程中也降低了分辨率。
因此,该论文所提出的空洞卷积层是如此工作的:
mIOU=71.3-75.3
这篇论文还是很需要看的。
DeepLab
使用了空洞卷积;
提出了在空间维度上实现金字塔型的空洞池化atrous spatial pyramid pooling(ASPP);
使用了全连接条件随机场。
空洞卷积在不增加参数数量的情况下增大了感受野,按照上文提到的空洞卷积论文的做法,可以改善分割网络。
我们可以通过将原始图像的多个重新缩放版本传递到CNN网络的并行分支(即图像金字塔)中,或是可使用不同采样率(ASPP)的多个并行空洞卷积层,这两种方法均可实现多尺度处理。
我们也可通过全连接条件随机场实现结构化预测,需将条件随机场的训练和微调单独作为一个后期处理步骤。
mIOU=79.7
RefineNet
使用空洞卷积的方法也存在一定的缺点,它的计算成本比较高,同时由于需处理大量高分辨率特征图谱,会占用大量内存,这个问题阻碍了高分辨率预测的计算研究。
DeepLab得到的预测结果只有原始输入的1/8大小。
所以,这篇论文提出了相应的编码器-解码器结构,其中编码器是ResNet-101模块,解码器为能融合编码器高分辨率特征和先前RefineNet模块低分辨率特征的RefineNet模块。
mIOU=84.2
PSPNet
全局场景分类很重要,由于它提供了分割类别分布的线索。金字塔池化模块使用大内核池化层来捕获这些信息。
和上文提到的空洞卷积论文一样,PSPNet也用空洞卷积来改善Resnet结构,并添加了一个金字塔池化模块。该模块将ResNet的特征图谱连接到并行池化层的上采样输出,其中内核分别覆盖了图像的整个区域、半各区域和小块区域。
在ResNet网络的第四阶段(即输入到金字塔池化模块后),除了主分支的损失之外又新增了附加损失,这种思想在其他研究中也被称为中级监督(intermediate supervision)。
mIOU=82.6-85.4
大内核Large Kernel Matters
这项研究通过全局卷积网络来提高语义分割的效果。
语义分割不仅需要图像分割,而且需要对分割目标进行分类。在分割结构中不能使用全连接层,这项研究发现可以使用大维度内核来替代。
采用大内核结构的另一个原因是,尽管ResNet等多种深层网络具有很大的感受野,有相关研究发现网络倾向于在一个小得多的区域来获取信息,并提出了有效感受野的概念。
大内核结构计算成本高,且具有很多结构参数。因此,k×k卷积可近似成1×k+k×1和k×1+1×k的两种分布组合。这个模块称为全局卷积网络(Global Convolutional Network, GCN)。
接下来谈结构,ResNet(不带空洞卷积)组成了整个结构的编码器部分,同时GCN网络和反卷积层组成了解码器部分。该结构还使用了一种称作边界细化(Boundary Refinement,BR)的简单残差模块。
mIOU=82.2-83.6
Deeplabv3
与在DeepLab v2网络、空洞卷积中一样,这项研究也用空洞卷积/多空卷积来改善ResNet模型。
这篇论文还提出了三种改善ASPP的方法,涉及了像素级特征的连接、加入1×1的卷积层和三个不同比率下3×3的空洞卷积,还在每个并行卷积层之后加入了批量归一化操作。
级联模块实际上是一个残差网络模块,但其中的空洞卷积层是以不同比率构建的。这个模块与空洞卷积论文中提到的背景模块相似,但直接应用到中间特征图谱中,而不是置信图谱。置信图谱是指其通道数与类别数相同的CNN网络顶层特征图谱。
该论文独立评估了这两个所提出的模型,尝试结合将两者结合起来并没有提高实际性能。两者在验证集上的实际性能相近,带有ASPP结构的模型表现略好一些,且没有加入CRF结构。
这两种模型的性能优于DeepLabv2模型的最优值,文章中还提到性能的提高是由于加入了批量归一化层和使用了更优的方法来编码多尺度背景。
mIOU=85.7