语义分割概述 【OpenMMLab AI实战营 第二期 Day8】

目录

关键词

经典语义分割算法

1. 语义分割的基础

1.1 什么是语义分割

1.2 语义分割的应用

1.3 图像分割任务的不同层次

2. 深度学习时代演进历程

2.1 语义分割的基本思路

2.1.1 按颜色分割

2.1.2 逐像素分类

2.1.3 重复区域优化

2.1.4 全连接卷积化

2.2 深度学习下的语义分割模型

2.2.1 2016 全卷积网络(FCN)

双线性插值

卷积操作替代双线性插值

转置卷积:网络自行学习卷积核

FCN 的流程

基于多层次特征的上采样

基于多层级特征的上采样

2.2.2 2015 UNet

U-Net: Convolutional Networks for Biomedical Image Segmentation(2015)

2.2.3 上下文信息

2.2.4 2016 PSPNet

2.2.5 空洞卷积和 DeepLab 模型

DeepLab在图像分类网络做以下修改:

条件随机场Conditional Random Field,CRF

ASPP 空间金字塔池化 Atrous Spatial Pyramid Pooling

DeepLab v3+

2.2.5 小结

2.3 前沿的语义分割算法

2.3.1 SegFormer

2.3.2 K-Net

2.3.3 MaskFormer

2.3.4 Mask2Former

2.3.5 2023 Segment Anything(SAM)

3. 语义分割模型的评价方法

3.1 基于交并集的评估指标

4. 思考

5. 参考资料


关键词

语义分割,Semantic Segmentation,MMSeg,MMSegmentation,openmmlab,mmlan,滑窗,FCN,UNet,DeepLab,空洞卷积,PSPNet,ASPP,评估,上下文信息,IoU

经典语义分割算法

1. 语义分割的基础

1.1 什么是语义分割

任务: 将图像按照物体的类别分割成不同的区域 等价于: 对每个像素进行分类

1.2 语义分割的应用

  • 无人驾驶:感知汽车周围的环境:车辆、行人等等
  • 人像分割:换背景、扣人像等等
  • 智能遥感:分析地表农作物、水域、道路、农田分布、船舶等等
  • 医疗影像分析:X光、CT等等肿瘤分析

1.3 图像分割任务的不同层次

  • mmdet是实例分割,先做检测
  • 语义分割 : 仅考虑像素的类别 不分割同一类的不同实体

  • 实例分割 : 分割不同的实体 仅考虑前景物体

  • 全景分割 : 背景仅考虑类别 前景需要区分实体

三者的难度越来越高。

2. 深度学习时代演进历程

2.1 语义分割的基本思路

2.1.1 按颜色分割

先验知识:物体内部的颜色相近,边界的颜色变化

通过上面的先验知识就可以按颜色相近的色块进行聚类。

存在问题:可以实现抠图,但是不能得到语义。
1. 先验知识不完全准确
2. 不同物体内部颜色可能相近,物体内也可能包含多个颜色

2.1.2 逐像素分类

由于卷积神经网络的兴起给图像分类注入了新的血液,但之前都没有应用在图像分割领域。因此,最初的应用方式就是这种逐像素的分类,具体步骤如下:

  1. 提取一个卷积窗口图像
  2. 把这个图像输入卷积神经网络中预测一个类别,该类别作为提取的图像的中心点坐标的类别
  3. 返回 1 ,继续滑动窗口进行预测下个像素

优点:可以充分利用起 CNN 模型
缺点:存在大量重复计算的重叠区域

2.1.3 重复区域优化

这一块个人感觉视频中没讲太清楚,所以借用了上一期的内容:

简单地讲,就是两个相邻的滑窗中间的重叠区域卷积后表现为相同的特征,因此这一块是可以被优化地。

在滑窗上计算卷积等价于在原图中计算卷积,因此可以在原图先计算一次卷积,然后复用这个结果。就相当于,先滑窗再卷积变成先卷积再滑窗,这样就少了很多重复计算了。

2.1.4 全连接卷积化

1×1 的卷积核等价于全连接(来源:原来是 VGG 中提出的)。

关键在反向量化那步。

问题:全连接层的输入是固定,但是输入的图像是随即大小的,这样导致特征图大小也是随机的

解决——卷积取代全连接层

兼容任意尺寸的图,没有全连接层,这样每个通道代表了一个类别的概率。

直接应用,FCN(2015)使用卷积神经网络进行语义分割

和卷积进行对比:

升采样:双线性插值和转置卷积

池化,卷积降采样,语义分割需要升采样

2.2 深度学习下的语义分割模型

2.2.1 2016 全卷积网络(FCN)

2015 CVPR Best PaperFully Convolutional Networks for Semantic Segmentation(2015)

通过全连接卷积化,就把原来的图像分类的网络改成用于图像分割的网络,得到一张图片的概率图。

最后输出的图片是某个类别(图中是猫)的概率的热力图,然后再做聚类。

问题:卷积神经网路使用上采样,从热力图还原到原图的感受野如何确定呢?这是一个比较关键的问题:如何把预测的图还原到原来图片特征图?

技术:预测图升采样。恢复为原图的分辨率(小 Featur map --> 大 Feature map)

做法:1. 双线性插值;2. 转置卷积

双线性插值

一阶线性插值可以采用拉格朗日插值,二阶的相当于在基础上多做一次,只不过第二阶的输入是一阶的输出。

卷积操作替代双线性插值

同样地,这种做法可以用卷积替代

优点:这样的卷积是预定义好的,和那些 Sobel 滤波算法类似,不用学习,

这个卷积核就相当于双线性插值

转置卷积:网络自行学习卷积核

如果卷积核是可学习的,那么就成为了转置卷积:

注:转置卷积和卷积在形状上有互逆的关系,在结果上没有。

FCN 的流程

图像分类的区别就是中间升采样的部分,以及计算交叉熵的特征数会比图像分类网络多得多。

基于多层次特征的上采样

问题:基于顶层特征预测,再升采样 32 倍得到的预测图较为粗糙高层次特征语义丰富但是位置信息缺乏,导致还原到原图的时候区分糊成一片。

分析:高层特征经过多次降采样,细节丢失严重深层次的细粒度信息比较贫乏,而语义信息比较丰富;浅层则相反。因此结合深层和浅层的特征来还原语义分割图。

解决思路: 结合低层次和高层次特征图分别产生类别预测,升采样到原图大小,再平均得到最终结果

基于多层级特征的上采样

2.2.2 2015 UNet

U-Net: Convolutional Networks for Biomedical Image Segmentation(2015)

逐级融合高低层次特征

  1. 将输入图像逐级降采样,这个过程中,语义信息开始集中
  2. 通过中心裁剪至相同大小,再在通道维度与逐级升采样恢复细节信息的特征拼接,
  3. 最后输出逐像素分类图

2.2.3 上下文信息

图像周围的内容就是上下文信息,可以帮助模型进行更准确的判断。

滑动窗口丢失上下文信息,并且低效,需要更大范围的信息

所以模型就要有更大的感受野,结合上下文信息。

如何在预测过程中使用上下文信息?

方案:增加感受野更大的网络分支,将上下文信息导入局部预测中

2.2.4 2016 PSPNet

Pyramid Scene Parsing Network(2016)

流程: 多尺度融合+上采样

  • 利用池化,特征有更大的感受野(小特征图对应大感受野;大特征图对应小感受野

  • 对特征图进行池化,得到不同尺度的上下文特征

  • 上下文特征经过通道压缩和空间上采样之后拼接回原特征图→同时包含局部和上下文特征

  • 基于融合的特征产生预测图

2.2.5 空洞卷积和 DeepLab 模型

DeepLab 系列进一步把多尺度融合的思路发扬光大,并引入了空洞卷积增加卷积的感受野

  1. Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs(DeepLabv1)(2014)

  2. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs(DeepLabv2)(2016)

  3. Rethinking Atrous Convolution for Semantic Image Segmentation(DeepLabv3)(2017)

  4. Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation(DeepLabv3+)(2018)

其主要贡献为:

  • 使用空洞卷积解决网络中的下采样问题

  • 使用条件随机场 CRF 作为后处理手段,精细化分割图

  • 使用多尺度的空洞卷积(ASPP 模块)捕上下文信息

空洞卷积解决下采样问题

问题:图像分类模型中的下采样层使输出尺寸变小

如果将池化层和卷积中的步长去掉

  • 可以减少下采样的次数;

  • 特征图就会变大,需要对应增大卷积核,以维持相同的感受野,但会增加大量参数

解决方案:

使用空洞卷积(Dilated Convolution/Atrous Convolution),在不增加参数的情况下增大感受野

空洞卷积=下采样+标准卷积

使用空洞卷积可以得到相同分辨率的特征图,且无需额外插值操作

DeepLab在图像分类网络做以下修改:

  • 去除后半部分的下采样
  • 后续的卷积采用膨胀卷积,逐步增加膨胀率维持原来的感受野

条件随机场Conditional Random Field,CRF

一种后处理,使得语义边界分割精确:结合原图颜色信息,对输出的特征进行边界精准化

问题:模型直接输出的分割图较为粗糙,尤其在物体边界处不能产生很好的分割结果

DeepLab v1&v2 使用条件随机场 (CRF) 作为后处理手段,

结合原图颜色信息和神经网络预测的类别得到精细化分割结果

具体的做法就是在边界处加一个惩罚(物体内部尽量不要变,边界处颜色尽量要变,可以看出也有本文开头提到逐颜色预测的那个先验的味道):

总的思路就是鼓励在颜色变化处认为类别是不一样的。

能量函数,可以看做一种损失函数

ASPP 空间金字塔池化 Atrous Spatial Pyramid Pooling

PSPNet 使用不同尺度的池化来获取不同尺度的上下文信息

DeepLab v2&v3 使用不同尺度的空洞卷积达到类似的效果

更大膨胀率的空洞卷积--->>>更大的感受野--->>>更多的上下文特征

DeepLab v3+

  • DeepLab v2 / v3 模型使用 ASPP 捕捉上下文特征

  • Encoder / Decoder 结构(如 UNet) 在上采样过程中融入低层次的特征图,以获得更精细的分割图

DeepLab v3+ 将两种思路融合,在原有模型结构上增加了一个简单的 decoder 结构

  • Encoder 通过ASPP 产生多尺度的高层语义信息

  • Decoder 主要融合低层特征产生精细的分割结果

2.2.5 小结

2.3 前沿的语义分割算法

相关论文:

2.3.1 SegFormer

Transformer block + 多尺度融合

2.3.2 K-Net

统一语义分割、实力分割、全景分割模型

2.3.3 MaskFormer

作者提出实例级别的分类就足够了,并不用逐像素分类

2.3.4 Mask2Former

在 Transformer 块中用到了交叉注意力机制,作者这边说是 mask attention

2.3.5 2023 Segment Anything(SAM)

这是一种视觉大模型,任意一张图片都可以分割,并且这种分割是带语义的。

3. 语义分割模型的评价方法

3.1 基于交并集的评估指标

Accuracy = 交集面积 / 真实面积
IoU = 交集 / 并集
Dice = 2 x 交集 / GT + Pred

所有的平均值 mAcc  mIoU  mDice

并集的计算: GT + Pred - 交集

在机器学习分类项目中,我们一般:

用precision来评估某类别分类的准确性; 用accuracy来评估总体分类的准确性。

recall与precision区别:

(1)recall,召回率又名查全率,与漏报率有关,(漏报率,FN,即错误的预测为负样本,换句话说,将实际为正的样本预测为负),详情参照混淆矩阵,如下。

预测为正样本(positive,P)

预测为负样本(negative,N)

实际为正样本 (True, T)

TP

FN

实际为负样本 (False, F)

FP

TN

其中,T指预测正确(预测为正样本,实际也为正样本的情况),F指预测错误。

recall=TP/(TP+FN),可理解为,实际为正的样本中,预测正确的样本的比例。

应用于,医生预测病人癌症的情况,病人更关注的是是否漏报,漏报会导致病被忽略,延误治疗。 通过记忆漏报率,可清晰理解recall的概念。

(2)precision,精准率又名查准率,与误报率有关,(误报率,FP,即错误的预测为正样本,换句话说,将实际为负的样本预测为正)。

precision=TP/(TP+FP),可理解为,在预测为正的样本集合中,预测正确的样本的比例。

应用于,以一个不太合适的例子来说, 在诈骗活动中,相对诈骗团伙来说,是希望在预测为正(即为实施诈骗的对象)的样本中,实际真的是被忽悠就会被骗成功的样本。即诈骗人员更关注的是误报率,失误越少,诈骗成功率越高。

note:

另外,对准确率accuracy来说,样本预测分类正确的比例,accuracy=(TP+TN)/(P+N)

[MMSeg] 语义分割中的mDice,mIoU,mFscore评价标准 - 知乎 (zhihu.com)

原文链接:

机器学习评价标准,precision与recall通俗理解 CSDN博客

4. 思考

个人觉得语义分割是最底层的任务,因为它已经是深入到对像素的分类,有个小疑惑,

  1. 不知道类似矢量图那种图片有没有办法做分割?
  2. 分割的图片如果不是RGB的可以做吗?
  3. 其他颜色空间的图片是否有支持的模型?

5. 参考资料

本文主要参考了【7班】语义分割与MMSegmentation 理论课笔记-CSDN社区

其他参考资料

【7班】-OpenMMLab-实战营第二期-MMSeqmentation-CSDN社区

【七班】OpenMMLab AI实战营第八课——MMSegmentation-CSDN社区

语义分割基础&MMseg OpenMMLab 实战营打卡6 - 知乎 (zhihu.com)

[MMSeg] 语义分割中的mDice,mIoU,mFscore评价标准 - 知乎 (zhihu.com)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值