今天课程的主要内容是语义分割与MMSegmentation,那什么是语义分割呢?简单来讲就是将某张具体图像按照物体的类别分割成不同的区域,其实就是对图像中的每个像素进行分类,具体应用有:无人驾驶汽车、人像分割、智能遥感、医疗影像分析等等。
本节课主要内容有语义分割的基本思路、深度学习下的语义分割模型[全卷积网络&空洞卷积与DeepLab模型&上下文信息与PSPNet模型]、分割模型的评估方法和MMSegmentation,那我们马上开始吧!
一、简单介绍
首先我们要明确,语义分割、实例分割和全景分割是三个不同的类别,具体如下图所示:
最开始是按照颜色分割,但该思路可能会因为不同物体颜色相近或者同一物体内包含多种颜色等原因产生较大误差,所以目前常见的思路是逐像素分类,如下图所示:
逐像素分类的有点在于可以充分利用已有的图像分类模型,但滑窗可能存在效率低下,部分重叠区域重复计算卷积的问题,模型规模过大会造成计算量过大。
解决的方法是在原图上计算卷积,
这里引入一个全连接层的卷积化,这样可以解决图像分类中必须要求输入图像固定尺寸的问题。
预测图的升采样
图像分类模型使用降采样层(步长卷积或池化)获得高层次特征,导致全卷积网络输出尺寸小于原图,而分割要求同尺寸输出,这时候就必须用到升采样,一般使用双线性插值和转置卷积[课学习的升采样层]的方法。
①双线性插值
卷积实现双线性插值:
②转置卷积
具体的计算过程:
二、上下文信息
因为在语义分割时,总会产生有歧义的区域,仅仅单看一部分内容很难正确分类清楚,所以这时就要同时看物体周围的内容,即上下文,以便做出更准确的判断。
PSPNet 2016
操作:首先对特征图进行不同尺度的池化,得到不同尺度的上下文特征;接着,上下文特征经过通道压缩和空间上采样之后拼接回原特征图 → 同时包含局部和上下文特征;最后基于融合的特征产生预测图。网络如下所示:
三、空洞卷积与DeepLab系列算法
DeepLab 系列
DeepLab 是语义分割的又一系列工作,DeepLab v1 发表于 2014 年,后于 2016、2017、2018 年提出 v2、v3、v3+ 版本,其主要贡献为:
• 使用空洞卷积解决网络中的下采样问题
• 使用条件随机场 CRF 作为后处理手段,精细化分割图
• 使用多尺度的空洞卷积(ASPP 模块)捕捉上下文信息
①空洞卷积解决下采样问题
图像分类模型中的下采样层使输出尺寸变小, 使用空洞卷积(Dilated Convolution/Atrous Convolution),在不增加参数的情况下增大感受野区。
加入①后的DeepLab模型:
• 去除分类模型中的后半部分的下采样层
• 后续的卷积层改为膨胀卷积,并且逐步增加rate来维持原网络的感受野
②使用条件随机场 CRF 作为后处理手段,精细化分割图
因为模型直接输出的分割图较为粗糙,尤其在物体边界处不能产生很好的分割结果。
DeepLab v1&v2 使用条件随机场 (CRF) 作为后处理手段,结合原图颜色信息和神经网络预测的类别得到精细化分割结果。
CRF 是一种概率模型。DeepLab 使用 CRF 对分割结果进行建模,用能量函数用来表示分割结果优劣,通过最小化能量函数获得更好的分割结果。
能量函数详解:
③使用多尺度的空洞卷积(ASPP 模块)捕捉上下文信息
DeepLab模型使用不同尺度的空洞卷积来获取不同尺度的上下文信息:
如下图所示:
ⅠDeepLab v2 / v3 模型使用 ASPP 捕捉上下文特征;
ⅡEncoder / Decoder 结构(如 UNet) 在上采样过程中融入低层次的特征图,以获得更精细的分割图;
ⅢDeepLab v3+ 将两种思路融合,在原有模型结构上增加了一个简单的 decoder 结构。
DeepLab v3+
语义分割算法总结
四、语义分割模型的评估
精确度、交并比、Dice系数
Dice系数是一种用于评估两个样本相似性的度量函数,其值越大意味着这两个样本越相似,在这里指的就是预测值和真实值的相似性度量。
计算方法[精确度、交并比、Dice系数]: