MMSegmetation是OpenMMLab算法体系中的图像分割算法库,可以用来解决无人驾驶、遥感、医疗等领域的语义分割问题。
基本知识
什么是语义分割?
把图像中的每一个像素做分类,即将图像按照物体的类别分割成不同的区域。有多少个像素就分出多少个类别。
比如说自动驾驶,我们要分出行人、其他车辆、行车道、人行道、交通标志、房屋、草地、数目等,从而辅助车辆对道路的情况进行识别与认知。
还比如视频时替换背景、分析地表农作物的产量、识别脑部肿瘤异物的位置等。
语义分割vs实例分割vs全景分割
- 语义分割:仅考虑像素的类别,不分割同一类的不同实体
- 实例分割:分割不同的实体,仅考虑前景物体
- 全景分割:背景仅考虑类别,前景需要区分实体
基本思路
按照颜色分割,但是不同物体颜色可能相近,物体内也会包含多种颜色。
逐像素分类:(滑窗)可以充分利用已有的图像分类模型,但效率低下,重叠区域重复计算卷积。
复用卷积计算:用卷积替代全连接层。
预测图的升采样
问题:图像分类模型使用降采样层(步长卷积或池化)获得高层次特征,导致全卷积网络输出尺寸小于原图,而分割要求同尺寸输出。
解决办法:对预测的分割图升采样,恢复原图分辨率。
升采样方案:
-
双线性插值
-
转置卷积:可学习的升采样层。
深度学习下的语义分割模型
全卷积网络
空洞卷积与DeepLab模型
DeepLab是语义分割的又一系列工作,其主要贡献为:
- 使用空洞卷积解决网络中的下采样问题
- 使用条件随机场CRF作为后处理手段,精细化分割图
- 使用多尺度的空洞卷积(ASPP模块)捕捉上下文信息
DeepLab v1发表于2014年,后于2016、2017、2018年提出v2、v3、v3+版本。
空洞卷积解决下采样问题,图像分类模型中的下采样层使输出尺寸变小。
如果将池化层和卷积中的步长去掉: - 可以减少下采样的次数
- 特征图就会变大,需要对应增大卷积核,以维持相同的感受野,但会增加大量参数
- 使用空洞卷积,在不增加参数的情况下增大感受野
DeepLab模型
DeepLab在图像分类网络的基础上做了修改:
- 去除分类模型中的后半部分的下采样层
- 后续的卷积层改为膨胀卷积,并且逐步增加rate来维持原网络的感受野
条件随机场
作为后处理手段,结合原图颜色信息和神经网络预测的类别得到精细化分割结果。
上下文信息与PSPNet模型
PSPNet使用不同尺度的池化来获取不同尺度的上下文信息。
总结
语义分割前沿算法
- SegFormer
- K-Net
- MaskFomer
- Mask2Former
- Segment Anything(SAM)
分割模型的评估方法
比较预测与真值
基于交并集的评估指标
实践MMSegmentation
- Kaggle小鼠肾小球组织病理切片 图像分割
- Kaggle迪拜卫星遥感图像分割
- 基于MMSegmentation的钢轨裂纹分割提取