OpenMMLab实战营第六课 语义分割算法基础
什么是语义分割
任务: 将图像按照物体的类别分割成不同的区域
等价于: 对每个像素进行分类
应用:
无人驾驶汽车 自动驾驶车辆,会将行人,其他车辆,行车道,人行道、交通标志、房屋、草地与树木等等按照类别在图像中分割出来,从而辅助车辆对道路的情况进行识别与认知。
人像分割 实时替换视频的背景 在智慧互娱和智能会议场景中,可以通过这种方法增加交互的多样性
智能遥感 通过智能遥感能够监测不同季节地表水域的变化,从而辅助农业生产,以及旱灾洪灾的预测等等。
语义分割 实例分割 全景分割 仅考虑像素的类别不分割同一类的不同实体 分割不同的实体 仅考虑前景物体 背景仅考虑类别前景需要区分实体 一些以前的思路
按颜色分割
- 先验知识 物体内部颜色相近,物体交界颜色变化
- 问题
- 先验知识不完全准确:不同物体颜色可能相近,物体内也会包含多种颜色
逐像素分类 搞很多滑窗
优势:可以充分利用已有的图像分类模型
问题:效率低下,重叠区域重复计算卷积
现在的方法
全卷积网络 Fully Convolutional Network 2015
复用卷积计算 直接对全图进行卷积 得到特征图
全连接层的卷积化(不在固定特征图大小 原来全连接层多少个神经元 变成多少个卷积核)
预测图的升采样
问题:
图像分类模型使用降采样层(步长卷积或池化)获得高层次特征,导致全卷积网络输出尺寸小于原图,而分割要求同尺寸输出
解决方法:
对预测的分割图升采样,恢复原图分辨率,升采样方案:
1. 双线性插值 Bilinear Interpolation 等效于把特征图零插值
在用一个固定参数卷积核 作用它
- 转置卷积Transposed Convolution:可学习的升采样层
UNet 2015
基于多层级特征的上采样
问题:基于顶层特征预测,再升采样32 倍得到的预测图较为粗糙。
分析:高层特征经过多次降采样,细节丢失严重。
解决思路:结合低层次和高层次特征图。
解决方案FCN:
基于低层次和高层次特征图分别产生类别预测,升采样到原图大小,再平均得到最终结果
PSPNet 2016
图像周围的内容(也称上下文)可以帮助我们做出更准确的判断。
方案:增加感受野更大的网络分支,将上下文信息导入局部预测中
PSPNet 2016
(a) 对特征图进行不同尺度的池化,得到不同尺度的上下文特征
(b) 上下文特征经过通道压缩和空间上采样之后拼接回原特征图→
同时包含局部和上下文特征
(c) 基于融合的特征产生预测图
### DeepLab 系列
DeepLab 是语义分割的又一系列工作,其主要贡献为:
• 使用空洞卷积解决网络中的下采样问题(减少下采样保留空间分辨率)
图像分类模型中的下采样层使输出尺寸变小
- 如果将池化层和卷积中的步长去掉:
- 可以减少下采样的次数;
- 特征图就会变大,需要对应增大卷积核,以维持相同的感受野,但会增加大量参数
- 使用空洞卷积(Dilated Convolution/Atrous Convolution),在不增加参数的情况下增大感受野
- 如果将池化层和卷积中的步长去掉:
使用条件随机场CRF 作为后处理手段,精细化分割图
条件随机场Conditional Random Field, CRF
模型直接输出的分割图较为粗糙,尤其在物体边界处不能产生很好的分割结果。
DeepLab v1&v2 使用条件随机场(CRF) 作为后处理手段,结合原图颜色信息和神经网络预测的类
别得到精细化分割结果。CRF 是一种概率模型。DeepLab 使用CRF 对分割结果进行建模,用能量函数用来表示分割结果优劣,通过最小化能量函数获得更好的分割结果。
\[E(\boldsymbol{x})=\sum_i \theta_i\left(x_i\right)+\sum_{i, j} \theta_{i j}\left(x_i, x_j\right)\]
\[\theta_i\left(x_i\right)=-log P\left(x_i\right)\]
\(x_i\),\(x_j\) 特定像素的预测结果(向量化后只有1维坐标)
x 全部像素的预测结果
\(\theta_i(x_i)\) 单个预测对能量函数的贡献
\(\theta_{i,j}(x_i,x_j)\) 一对预测对能量函数的贡献
使用多尺度的空洞卷积(ASPP 模块)捕捉上下文信息
DeepLab v1 发表于2014 年,后于2016、2017、2018 年提出v2、v3、v3+ 版本。
语义分割算法总结

语义分割模型的评估
基于交并集给出评估指标
图片出处 https://www.jeremyjordan.me/evaluating-image-segmentation-models/
Accuracy =GT∩Pred/GT
IoU =GT∩Pred/GT∪Pred
Dice =2 × GT∩Pred/(GT+Pred)
对每类计算指标再按类别平均