OpenMMLab 实战营打卡 - 第 6 课
注:本博客仅用于个人上课随手笔记
计算机视觉之语义分割
一、上课笔记
1.语义分割
语义分割是什么?
任务:将图像按照物理的类别分割,逐像素进行分类
应用:医疗影像,人像分割,自动驾驶,智能遥感
基于先验知识:基本思路:物体内部颜色相近,物体交界处颜色变化,按照颜色分割。
仅仅靠颜色来分割,显然不够,如人每天穿不同衣服。
后面使用CNN,使用滑动窗口分方法,在图像上取一块像素,放到分类模型中获得分类结果。
问题:效率低,大量滑窗是重复的。
最后:对全图卷积,得到的特征图再滑窗。
问题:最后输出的全连接层,要求固定输入大小。
解决方案:全连接层的卷积化。
将全连接层的每个神经元变成一个卷积核,用d个1*1的卷积核去卷积,得到最后的结果。(将卷积层后全连接层改了,并不是最后预测类别的全连接层)
全卷积神经网络FCN
除了全卷积外,这篇论文还有对预测图的升采样(小图变大图)。
让低分辨率图向高分辨率转换,一般采用双线性差值(直接计算),并可以用卷积核去实现
除此外,也可以让这个卷积核变成可学习参数,这就是转置卷积(up/d conv
)
在FCN
网络中,先采用多层卷积进行下采样,最后再上采样(转置卷积),实现端到端的网络。
问题又来了:高层特征多次下采样,空间信息丢失,语义类别增多,但是也由此细节丢失严重。
解决思路:结合低层次和高层次的特征图。要发挥高层次的语义类别信息,也要结合低层次的细粒度空间细节信息。代表作:Unet
。他是逐级融合高低层次特征。也是现在 编码器-解码器架构的由来。
编码器:逐级下采样,获取语义信息 解码器:逐级上采样,恢复细节信息
上下文(图像周围内容)也很重要,普通滑动窗口会丢失这些信息。这就需要卷积神经网络需要有大的感受野,但是其受到限制。由此,PSPnet
就是解决这个问题。
PSPnet
对特征图进行不同尺度的池化,得到不同尺度上下文特征。上下文特征经过通道压缩和空间上采样拼接会原图。
Deeplab系列
1.空洞卷积(膨胀卷积)
下采样会让尺寸图变小,不希望下采样,减少其次数。
方法?去掉池化,去掉stride
>1的层。但这样会需要增大卷积核以维持相同感受野,增大参数量。
使用空洞卷积,在不增加参数的情况下,增大感受野。
下采样+标准卷积=空洞卷积。
所以,deeplabv1
2.条件随机场CRF
模型直接输出的分割图比较粗糙,尤其是在边界初不能产生很好效果。
可以使分割边界从模糊到清晰。使用能量函数来最小化,增加边界信息的惩罚
3.空间金字塔池化
使用多组膨胀卷积叠加来进行感受野的扩大,提取特征。
DeeplabV3+
deeplabv3+
结合了Une
t的跳跃连接思想,最后通过空间金字塔池化的特征图补偿了一部分具有空间高分辨率的特征图。
总结:
2.语义分割评价指标
Acc
:交集/真值
Iou
:交集/并集
dice
:2 * 交集 / (真值+ 预测值),是一种调和平均数。
二、个人心得
1,语法分割做法
2020年以前,语义分割基本做法是:结合低层次和高层次的特征图。要发挥高层次的语义类别信息,也要结合低层次的细粒度空间细节信息。这时候发挥主力军的还是卷积神经网络。这就强调如何优雅的对特征进行融合,如何让多尺度,多层级的信息融合的更好并且能尽量减少融合后一些语义噪声的影响。对融合后的语义信息如何去噪也是一个比较重要的方向。除此以外,上下文的信息也非常重要,一种做法是增大感受野,后面提出了膨胀卷积在不增加参数量的前提下增加感受野。2020年后,VIT的横空出世也使得对上下文建模变得更加容易,效果也更加显著,目前语义分割的有很大部分工作也在结合着Transformer
架构和attention
机制展开。不过值得注意的事图卷积神经网络或许也能在语义分割领域发挥作用,比较有名的模型是MSCG
(多尺度的自构建图神经网络)。但是图神经网络在语义分割领域并未取得像Transformer
的显著效果,或许值得后面去研究。
2.关于语义分割一些想法
在使用膨胀卷积的时候就发现,设置了膨胀倍率和卷积核大小需要满足一定的关系,否则特征图会有一定栅格化效果。比如如果你的膨胀倍率使用了[2,4,6]作为膨胀倍率,你叠加的时候势必会有一部分像素没有参与运算。膨胀卷积扩大了感受野,因此可以取得长距离信息,有利于大目标分析,但是有些长距离信息和当前点是完全不相关的,会影响数据的一致性。而Transformer
能够更好的利用这个点。