在语义分割领域研究论文和实现代码已经有快半年了,对语义分割目前阅读的所有论文做一个总结和回顾
语义分割定义:
对图片中每一个像素点进行像素级别的分类。
1.0经典论文总结
语义分割是图像领域一个重要的分支,而深度学习对图像领域的推动作用毋庸置疑,整篇文章也只是针对所有的深度学习语义分割论文进行总结。
1.1 FCN
2015年,语义分割在深度学习领域的里程碑论文,论文创新式的将图像分类网络转换为全卷积网络,让语义分割达到了端到端训练的效果。该网络结构如下
1.2 Parse-Net
论文的主要创新点是考虑了全局上下文特征,即在网络中使用了一个全局池化层。具体操作如下:(L2Norm是因为作者在文中提出全局池化的特征不能直接concate,所以加入了一个Norm操作)
1.3 U-Net
语义分割中的传奇网络,至今依然在各个领域活跃,之后语义分割的一大部分模型设计都是基于这个结构:(论文中总结了patchwise训练和全图像训练的优缺点,也第一次使用了损失加权来解决类别不平衡)
1.4 Deeplab系列(v1,v2,v3,v3+)
语义分割长盛不衰的模型,一直在改进,这里主要看v3+就行,他们的改进如下:
v1:第一次加入空洞卷积,即在backbone上将最后两个下采样取消,用2,4空洞率的空洞卷积代替,现在已经是常用操作。
v2:(1)设计出ASPP模块的第一个版本,没有全局pool;
v3:(1)设计出ASPP模块完全版本,(2)并复制backbone的最后一个块,并应用多重网格对最后一个块进行设计(指resnet);
v3+:(1)结合skip链接的思路,将4倍下采样的中间层结果,concate到最后特征中,效仿fcn做了一个恢复空间信息的操作。(2)同时改变xception网络(重复middle_flow16次)作为backbone。(3)也实现了深度可分离空洞卷积。
v3+的网络结构如下:
1.5 Non-local
最后一个经典网络并不是专门用于语义分割,Nonlocal是2017年发表的注意力机制应用在图像领域的第一篇论文,也是这篇论文开启了语义分割领域注意力机制的热潮,一直到2020年的今天,很大一部分的顶会论文都是注意力机制。
注意力机制的思想很简单,计算两者之间的一个权值,比如a和b,计算a和b之间的一个关系权重w,然后用wa(b也可以,主要看你想得到什么),然后最终的输出就是(wa + b),而这个权值代表什么,也是由网络的设计者决定,这里简单举个例,w为a和b的相似度,相似度越高,w越大,则wa+b也就越大,基于此,将这个思路扩展到2维上,可以发现,这样的一个操作,可以改变b的分布,如今的绝大多数网络都是如此进行设计。
语义分割网络的设计如今大体上就是对这几类经典网络进行组合。现在的主流是注意力与各种结构的结合,以及注意力机制中各种a和b的选择,这些a和b需要在网络中进行抽取,并不是一个简单的工作。
当然,也有一些另辟蹊径的新网络,比如改变backbone,设计语义分割的专属的特征提取网络,如实时分割的Bisenet。
总结一下这些经典网络的work原因:
(1)deeplab系列的空洞卷积和aspp增大了感受野,但是并没有进行下采样,对于语义分割而言,下采样会严重丢失空间信息。
(2)aspp和unet这种类型的结构,相当于考虑了多尺度,对于图像中相同类别的物体大小有差异以及不同物体大小也有差异的问题进行了一定解决。
(3)Unet的结构以及fcn的skip链接,做了恢复空间信息的操作。
(4)上下文信息的考虑,Nonlocal网络主要是学习了上下文关系,而parsenet和aspp由于感受野较大的关系,也在一定范围内考虑了上下文信息。
可以发现,语义分割主要是空间信息和上下文信息,以及语义信息三种。之后的Bisenet就抽取了上下文信息和语义空间信息进行融合,也就诞生了bisenetv1。