【译】基于深度学习的语义分割导引
本文翻译自Qure.ai Blog,原文链接A 2017 Guide to Semantic Segmentation with Deep Learning
作者主要从事语义分割及物体检测等研究,因此有兴趣于回顾行业现状。
本文中,作者回顾了语义分割相关文献。大多数语义分割的研究使用自然或现实世界的图像数据集。尽管其结果不能直接用于医疗图像,作者回顾这些文献是因为基于自然图像的研究要远远多于医疗图像的研究。
文章组织顺序如下:作者首先阐释了语义分割问题,给出其所用方法的综述,之后对一些重要论文进行总结。
在之后的文章中,作者将会解释为何医疗图像不同于自然图像,并且在医疗图像数据集上对本文所概述的方法进行测试。
何为语义分割?
语义分割是对图像像素级的理解,也就是对图像中每个像素都分配一个类标签。例如,对于以下图像
除了识别摩托车及其上的人之外,语义分割任务还需要刻画每个物体的边界。因此,与分类不同得是,语义分割需要在模型中进行密集的像素级预测。
语义分割方法的不同之处
在深度学习占领计算机视觉之前,研究人员通常使用基于TexonForest及随机森林的分类器进行语义分割。与图像分类类似,卷积神经网络已经在语义分割问题上取得了巨大的成功。
基于深度学习的语义分割的一个最流行的尝试就是块分类,其中每个像素根据其周围的一块图像被单独地分类。使用块的主要原因是分类网络通常含有全连接层,因此需要固定大小的输入图像。
全连接层与池化层
2014年,伯克利大学Long等人提出的全卷积网络,使得去除全连接层的卷积神经网络在密集预测的问题上变得流行起来。这种方法能够生成任意大小输入图像的语义分割映射,并且比块分类速度更快。之后出现的几乎所有语义分割网络都效仿了该范式。
除全连接层之外,使用CNN进行语义分割的另一个主要问题是池化层。池化层增大了感受野并且可以融合上下文内容,但其丢弃了位置信息。然而语义分割要求像素类别的精确映射,也就是需要保留位置信息。两类架构针对这个问题进行了改进。
解编码器架构与膨胀卷积
第一个是编码器-解码器架构。编码器使用池化层逐渐的减少空间维度,解码器则逐渐恢复物体细节及空间维度。在编码器及解码器之间通常存在短连接以使解码器更好的恢复物体细节。U-NET是该类架构中较为著名的一种。
第二种架构是膨胀卷积或深黑卷积(atrous convolution),这种架构中去除了池化层。
条件随机场(CRF)通常用于提高语义分割的性能。条件随机场是一种根据图像灰度值平滑分割结果的图模型。其基于相同色彩的像素通常具有相同的类标签的观察。条件随机场可以提升1-2%的分割得分。
论文总结
FCN
Fully Convolutional Networks for Semantic Segmentation,Submitted on 14 Nov 2014,Arxiv link
主要特点:
- 推广了端到端卷积神经网络在语义分割问题上的应用
- 使用ImageNet预训练模型进行语义分割
- 使用反卷积层进行上采样
- 引入跳跃连接克服上采样的导致的粗糙结果。
解释:
全卷积神经网络可以视作卷积核在全幅图像上卷积。这与原始分类网络在输入块上重叠分类类似,但其由于共享计算而变得更加高效。尽管对该论文的阐释有多种(overfeat,博客),全卷积神经网络显著提升了VOC2012上的分割效果。
在经过在ImageNet上预训练的网络(如VGG)的全连接层之后,由于CNNs中的池化操作,特征图需要被上采样。与简单的双线性插值不同,反卷积能够学习如何插值。该层也被称为上卷积(upconvolution)、全卷积(full convolution)、转置卷积(transposed convolution)或微步跨越卷积(fractionally-strided convolution )。
然而,上采样(即使使用了反卷积层)由于池化层的信息损失产生的分割特征图较为粗糙。因此,短连接或跳跃连接被引入以产生高分辨率的特征图。
VOC2012基准测试结果
分数 | 注释 | 来源 |
62.2 | – | 排行榜 |
67.2 | 文中未提供更多动量 | 排行榜 |
作者注解:
- FCN的提出意义重大,现在分割网络的性能已有大幅提升。
SegNet
SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation,Submitted on 2 Nov 2015,Arxiv
关键贡献:
- 将最大池化坐标传输给解码器以提升分割分辨率。
解释:
全卷积网络,通过反卷积层及少量短连接产生的分割结果较为粗糙。因此,SegNet中引入较多短连接。但与全连接神经网络中(在解码器)拷贝所有(编码器)特征图不同的是SegNet只拷贝(编码器的)最大池化下标(到解码器中)。这使SegNet的内存占用率更低。
VOC2012数据集测试结果
得分 | 注释 | 来源 |
59.9 | - | 排行榜 |
作者注解:
- FCN和SegNet是第一个编码-解码架构。
- SegNet在VOC2012上的性能并不是足够好。
膨胀卷积
Multi-Scale Context Aggregation by Dilated Convolutions,Submitted on 23 Nov 2015,Arxiv Link
主要贡献:
- 使用膨胀卷积,使用卷积层进行密集预测。
- 提出“上下文模块”,使用膨胀卷积进行多尺度融合。
解释:池化可以提高感受野,从而提升分类性能。但会降低特征图分辨率。因此,作者使用膨胀卷积层,其工作原理如下:
膨胀卷积层可以在不丢失空间维度的情况下,指数级地增加感受野。
预训练模型中的最后两个池化层被移除,后续的卷积层被替换为膨胀卷积。特别地,在池化层3到池化层4的膨胀卷积层的膨胀率为2,池化层4之后膨胀卷积层的膨胀率为4。通过该模块(论文中称为前端模块),可以在不增加参数量的情况下进行密集预测。
一种(文中称为上下文模块)使用前端模块的输出作为输入的模块被单独训练。该模块将不同分膨胀率的膨胀卷积级联在一起从而将多尺度的内容融合,提升前端预测性能。
得分 | 注释 | 来源 |
71.3 | 前端 | 文中结果 |
73.5 | 前端+上下文 | 文中结果 |
74.7 | 前端+上下文+CRF | 文中结果 |
75.3 | 前端+上下文+CRF-RNN | 文中结果 |
作者注解:
- 注意:预测特征图是原图大小的1/8。这是大多数方法的结果,之后插值得到最终的分割结果。
DeepLab(v1&v2)
v1 : Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs,Submitted on 22 Dec 2014,Arxiv Link
v2 : DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs,Submitted on 2 Jun 2016,Arxiv Link
主要贡献:
- 使用膨胀卷积
- 提出膨胀空间金字塔池化(atrous spatial pyramid pooling,ASPP)
- 使用全连接CRF(条件随机场)
解释:
膨胀卷积能够在不增加参数量的情况下提高感受野。网络被修改得与膨胀卷积论文类似。
多尺度处理通过将图像缩放之后传递给多路平行的CNN分支(图像金字塔)或者使用多路不同采样率的膨胀卷积层来实现。
结构化的预测通过全连接CRF实现。CRF在后处理步骤中被单独训练(优化)。
VOC2012基准得分:
得分 | 注释 | 来源 |
79.7 | ResNet-101+膨胀卷积+ASPP+CRF | 排行榜 |
RefineNet
RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation,Submitted on 20 Nov 2016,ArxivLink
主要贡献:
- 带有优良解码块的编码器-解码器架构
- 所有的组件遵照残差连接设计
解释:
使用膨胀卷积的方法没有出现下降趋势。膨胀卷积是计算密集的并且需要占用大量内存,由于其对高分辨率的特征图进行计算。这妨碍了高分辨率预测的计算。与DeepLab类似,使用原始输入1/8的大小进行分割。
因此,文中提出使用编码器解码器架构。编码器部分是Res-101块。解码器包含的RefineNet块将编码器高分辨率特征图与之前RefineNet的低分辨率特征图进行拼接(融合)。
每个RefineNet块包含一个通过对低分辨率特征图上采样,将多种分辨率的特征进行融合的组件及一个使用重复的5x5步幅为1的池化层获取上下文内容。这些组件均使用残差连接设计。
VOC2012基准得分
得分 | 注释 | 来源 |
84.2 | 使用CRF,多尺度输入,COCO预训练 | 排行榜 |
PSPNet
Pyramid Scene Parsing Network,Submitted on 4 Dec 2016,Arxiv Link
主要贡献:
- 提出金字塔池化模块融合上下文
- 使用附加的损失
解释:
全景类别可以提供分割类的空间分布。金字塔池化模块使用大核池化层获取该种信息。
使用膨胀卷积对ResNets进行修改,并在其后添加金字塔池化层。该模块将ResNets使用覆盖整张图像的大核、一半及一小部分核 池化层的上采样特征图进行拼接。
一种辅助损失,被添加到主分支的损失之中,用于ResNets第四阶段之后(即金字塔模块的输入)。该想法也被称为中间监督(intermediate supervision)。
VOC2012基准:
得分 | 注释 | 来源 |
85.4 | MSCOCO预训练,多尺度输入,无CRF | 排行榜 |
82.6 | 非MSCOCO预训练,多尺度输入,无CRF | 论文报告结果 |
大核很重要
Large Kernel Matters – Improve Semantic Segmentation by Global Convolutional Network,Submitted on 8 Mar 2017,Arxiv Link
主要贡献:
提出一种使用超大核卷积的编码-解码架构
解释:
语义分割要求对物体同时进行分割与分类。既然全连接层不能出现在分割架构中,可以使用超大核卷积代替。
使用大核的另一个原因是尽管更深的网络如ResNets有非常大的感受野,研究显示网络趋向于从较小的感受野获取信息。
大核的计算量大并且参数较多,因此,可以将k x k卷积近似为1 x k + k x 1 及k x 1及1 x k卷积之和。文中,该模块被称为全局卷积网络(Global Convolutional Network,GCN)。
架构方面,ResNets(未使用膨胀卷积)为编码器,GCNs及反卷积为解码器。一种名为边缘优化(Boundary Refinement,BR)的简单的残差块同样被使用。
VOC2012基准得分:
得分 | 注释 | 来源 |
82.2 | - | 文章报告结果 |
83.6 | 提升的训练,文中未描述 | 排行榜 |
DeepLab V3
Rethinking Atrous Convolution for Semantic Image Segmentation,Submitted on 17 Jun 2017,Arxiv Link
主要贡献:
- 提升的深黑空间金字塔池化(ASPP)
- 使用级联的深黑卷积模块
解释:
与DeepLabv2及膨胀卷积类似,将ResNets网络修改为使用膨胀卷积实现。提升的ASPP包括图像级特征连接、1x1卷积及3个3x3不同膨胀率的膨胀卷积。在每个平行卷积层之后使用批正则化。
级联模块是一个除去组件卷积层的ResNets 块,使用不同的膨胀率。该模块与膨胀卷积论文中的上下文模块类似但是此处被用于中间特征映射而非信念映射(信念映射是最后的CNN特征图,其通道数与类别数相同)。
两种提出的模块被单独评估,并且将两者结合并不能提升其性能。两者在验证集上性能相近ASPP稍显优势。未使用CRF。
两种模型性能均优于DeepLabv2最佳模型。作者解释道性能的提升来自批正则化及更优的多尺度上下文编码方式。
VOC2012基准得分:
得分 | 注释 | 来源 |
85.7 | 使用ASPP(无级联模块) | 排行榜 |