CV—经典分割网络总结

CV—经典分割网络总结

一、常见概念

分割领域中的一些术语:

  • 像素级别(pixel-wise):每一张图片由一个个pixel组成的,pixel是图像的基本单位,标注是对每个像素点;
  • 图像级别(image-wise):比如一张图像的标签是狗,也就是狗是整张图片的标注;
  • 块级别(patch-wise):介于像素级别和图像级别之间,每个patch都是由好多个像素组成;
  • patchwise training:对每一个感兴趣的像素,以其为中心点取一个patch,然后输入网络,输出为该像素的标签;

局部信息和全局信息的区别:

局部信息:

浅层网络的特征,物体的几何信息比较丰富,对应的感受野比较小;

目的:有助于分割尺寸比较小的目标,提高分割的精确程度;

全局信息:

深层网络的特征,物体的空间信息比较丰富,对应感受野比较大;

目的:有助于分割尺寸比较大的目标,提高分割的精确程度;


卷积的平移不变性:

结果上:图像中的目标无论被移动到图片中的哪个位置,分类结果都是相同的;

过程上:卷积、池化这些单独的层针对目标移动,是满足平移不变性的,但在神经网络中,卷积和池化组合后,提取特征是会发生改变的,也就是不满足平移不变性;(最重要的原因就是二次采样导致不满足)


编码器解码器的概念:

编码器结构:主要由普通卷积层和下采样层将特征图尺寸缩小,使其成为更低维的表征,目的是为了尽可能的提取低级特征和高级特征,从而提取到空间信息和全局信息精确分割;

解码器结构:主要由普通卷积、上采样层和融合层组成,利用上采样恢复空间维度,融合编码过程中提取到的特征,尽可能减少信息损失的情况下完成同尺寸输入输出,实现端到端的分割任务;


二、FCN

全称:语义分割中的全卷积网络;

论文地址:https://arxiv.org/pdf/1411.4038.pdf

意义:

搭建了一个全卷积网络,输入任意尺寸的图像,经过推理可以得到相同尺寸的输出;

模型主要是将全连接层替换成卷积层,下面看看模型架构图:

在这里插入图片描述

其结构可以分为编码和解码,也就是先通过下采样编码得到特征值,再通过上采样解码得到每个像素的分类结果;


重点概念

一、上采样的方法有哪些?FCN中采用哪种?

常用的方法有两种:

1、插值算法(双线性插值)

这是很重要的一种上采样的算法,特别是在缩放图像中用的很多,还有很多其他的插值算法;

2、反卷积(也是FCN中采用的方法)

在这里插入图片描述

个人理解是通过拓展输入特征图的大小,进行padding来实现将上采样的方式;

反卷积也称为转置卷积,这是根据计算机中的卷积运算来命名的,可以参考下面文章:

https://www.zhihu.com/question/48279880

二、FCN有哪些创新点?

对经典网络的改编:卷积替换全连接,作用是减少计算量并且并限制输入图像尺寸;

对前后特征图的补偿:跳连结构,作用是同时学习深层和浅层的网络信息;

对特征图尺寸的恢复:反卷积,作用是实现上采样,保证分割任务的端到端输出;


三、UNet&FusionNet

论文地址:https://arxiv.org/abs/1505.04597

意义:

使用U型结构的网络结构,在小数据集上实现较好的分割的效果,主要用于医学图像领域;

模型结构图:

在这里插入图片描述

实际上原始输入图像为388x388,经过镜像padding后变为572x572,上采样部分则通过concat连接将浅层信息和深层信息连接到一起;

但UNet存在一个问题,就是网络的深度不够,可以在原始结构基础上进行改进;


重点概念

一、图像padding的作用?UNet中是怎么padding的?

首先需要知道,卷积操作存在两个问题:图像越来越小、图像边界信息丢失且发挥的作用较少;

通常我们的padding就是在图像块周围补0,也就是设置padding等于1时,会在上下左右各补充一行;

padding的作用:

保持边界信息,可以对有差异的图像进行补齐,保证图像输入大小一致;

在UNet中采用镜像padding的方式,也就是将边缘部分进行翻转,实现padding的作用,并且padding的信息为原图中的边缘信息,更有利于模型提取特征;

二、常见的几种padding的类型?

首先在卷积的padding参数中,有三种类型可取:full、same、valid,分别对应下面的个图;

在这里插入图片描述

full:从卷积核和image刚开始相交部分就进行卷积,会学习到较多的padding部分信息;

same:最常见的模式,当卷积核中心和image的边角重合时进行卷积,卷积后输出的尺寸和原图尺寸一致(步长为1)

valid:卷积核全部在image中时才进行卷积运算,得到的尺寸相比原始尺寸会小一些;

三、医学图像一般比较大,但模型需要得尺寸比较小,怎么解决呢?

在这里插入图片描述

采用取patch训练的方式,将一张大图分成多张小图放入模型中进行训练,为了不损失边缘信息对分割结果的影响,进行镜像padding,根据裁剪部分向外翻转得到padding后的图像;

拓展:

这种思想实际上在目标检测领域也是适用的;比如说对一些小目标的检测,通过将大图分割成多张小图进行训练,最后再拼接成大图,实现在输入图像中,小目标能够占更大的像素区域;

四、对于类别不平衡问题,有什么解决办法?

最有用的方法就是扩增数据集,增加样本种类较少的数据,使得数据集标签类别数量平衡;

但数据集的扩增往往是成本高,且耗时较长的方法,我们可以在训练中对数据不平衡进行优化;

加权损失:

在UNet中,通过计算像素点离边界的距离,从而得到该像素点的一个权重;在细胞边界附近的像素点给的权重会大一些,离细胞边界比较远的权重会小一些,主要是为了解决两个相同类的细胞边界贴在一起的时候,给予较大权重可以使得分割更准确;

在YOLO系列的检测中,也可能会有类别不均衡的情况,这时候可以增加类别权重来改善类别不平衡的问题;

(当时实际使用后发现,效果并没有很明显)


四、SegNet

论文地址:https://arxiv.org/pdf/1511.00561.pdf

意义:

采用新的上采样方式,重点关注边缘信息,减少了端到端的训练参数,并且这个架构可以用于其他模型中;

该模型主要为了解决FCN中的一些弊端:忽略高分辨率的特征图,会导致边缘信息丢失;

网络结构架构图如下:

在这里插入图片描述


重点概念

一、SegNet中采用的上采样方式是什么?

SegNet中没有采用之前的插值和反卷积进行上采样,而是使用反池化的方式进行上采样;

在这里插入图片描述

反池化:将编码器中的每一个最大池化层的索引都存储起来,用于之后的解码器使用这些存储的索引来对应特征图进行反池化操作,有助于保持高频信息的完整性,但对于低分辨率的特征图来说,也会忽略邻近的信息;


五、DeepLab系列

DeepLab分为几个系列:V1、V2、V3和V3+四个版本,其中最重要在于V2版本,后面两个版本是对V2版本的改善;

V2论文:https://arxiv.org/pdf/1606.00915.pdf

V3论文:https://arxiv.org/pdf/1706.05587.pdf

V3+论文:https://arxiv.org/pdf/1802.02611.pdf

意义:

V2版本:充分利用空洞卷积,可以实现在不增加参数量的情况下有效扩大感受野,合并更多的上下文信息;提出了ASPP模块,增加了网络在多尺度下多类别分割的鲁棒性,能够在多尺度上捕获目标与上下文信息;

V3版本:设计了级联或并行的空洞卷积模块,扩充了ASPP模块,算法模型得到了很大的提高,去除了CRF处理;

V3+版本:添加了一个简单有效的解码器模块,来优化分割结果;

模型结构图:
在这里插入图片描述


重点概念

一、分辨率在分割任务中的重要性?有什么改善方法?

连续的池化或者下采样会导致图像的分辨率大幅下降,从而损失原始信息,并且在上采样中难以恢复,改善的方法有DeepLab中使用的空洞卷积或者是用步长为2的卷积操作代替池化,都是比较有效的;

二、空洞卷积的概念?有什么特点?

参考文章:https://zhuanlan.zhihu.com/p/50369448

空洞卷积本质上是对卷积核做一个中间补0的操作,实现增大卷积核,从而增大感受野的作用,并且这个过程并不增加参数量,从实际看起来就是一个带有空洞的卷积核;

在这里插入图片描述

上图是空洞卷积的一个很好的展示,中间的图的空洞率是2,右边的图的空洞率是4,通过设置不同的空洞率可以实现获取多尺度的信息;

其还有一个特点在于不改变输入图像的尺寸,能够得到更大的感受野,这在分割任务中是很重要的;

空洞卷积的部分理解的还不够深,可以参考那篇文章再进行理解,后续通过实践也会不断加深理解;

三、ASPP的概念?

首先要介绍一下SPP的概念:

在最早的CNN中,对输入图像的尺寸是有限制的,这是由于其网络结构中有全连接层的存在,所以最后一层卷积层输出的特征图是由固定尺寸要求的;在SPP之前的做法是将图像进行裁剪缩放,这样子也就会导致损失部分信息或者变形;

SPP则是金字塔池化,本质就是将任意尺寸的特征图用三个尺寸的金字塔层分别池化,将池化后的结果拼接到固定长度的特征向量,送入全连接层进行后续操作;

在这里插入图片描述

ASPP则称为空洞金字塔,是结合了上面两种概念实现的;

四、V3版本中的改进点?语义分割中常见的特征提取框架有哪些?

1、图像金字塔:从输入图像做改变,将不同尺寸的图像分别送入网络进行特征提取,后期再融合;

2、编解码结构:编码器部分利用下采样进行特征提取,解码器部分利用上采样还原特征图尺寸;

3、深度网络对比空洞卷积:经典网络是通过下采样提取特征,空洞卷积是利用不同的采样率;

4、空间金字塔结构:除了ASPP以外,像SPPNet、PSPNet也使用了该思想;

在这里插入图片描述

在V3中,又对ASPP结构进行了进一步的优化,也就是分为了串行和并行的结构;

五、总结一下DeepLab每一个版本的改进点?

V1版本:修改VGG网络作为特征提取网络,将空洞卷积替换池化层,尝试解决分辨率过低以及多尺度特征问题,并且用CRF做后处理;

V2版本:设计ASPP模块,发挥空洞卷积的性能,尝试用ResNet作为主干网络,还是用CRF做后处理;

V3版本:以ResNet为主干网络,设计一种串行和并行的网络,取消CRF后处理;

V3+版本:以ResNet或Xception作为主干网络,结合编解码结构设计一种新的模型结构,用V3作为编码器;


六、GCN

论文地址:https://arxiv.org/pdf/1609.02907.pdf

意义:

再次思考大卷积核的优点,将大卷积核用于分割领域,提高分割的效果;

模型结构:

在这里插入图片描述

从图中可以看出,GCN模块实际上就是用了不对称卷积减少了大卷积核计算量大的问题,从而增加在分割任务中对每个像素点分类的关联性;

K也就是实验参数,卷积核取多大合适,论文中尝试取到15,GCN基本满足了全局卷积,并且有较好的效果;


重点概念

一、大小卷积核的优缺点?

大卷积核:

  • 优点:感受野范围大,像一开始的卷积网络都使用了较大的卷积核;
  • 缺点:参数量多,计算量大,这也是慢慢淘汰的原因;

小卷积核:

  • 优点:参数少,计算量小,大卷积核可以用多个小卷积核替代,等于增加多个非线性层,增加模型判别能力;
  • 缺点:感受野不足,深度堆叠容易出现不可控的因素;

二、卷积核的几种形式汇总?

1、空洞卷积:作用是让更小的卷积核看到更大范围的区域,也就是小卷积核有大的感受野;Pooling的下采样操作导致的信息丢失是不可逆的,不利于像素级任务,采用空洞卷积代替pooling更加适用于分割任务;

2、非对称卷积:对标准卷积进行拆分,比如3x3卷积拆分成一个1x3和3x1的卷积,感受野不变,但减少了计算量;

3、组卷积和深度可分离卷积:这个是在轻量化模型中提出的,并且有效的减少了计算量;

4、分组卷积通道随机分组:在ShuffleNet中出现,加强轻量化网络的随机性;

5、增加宽度的卷积:在Inception结构中出现,在一层中使用多种尺寸的卷积核;

6、对通道间的特征加权:这个是基于注意力机制改进的,在SENet中引入了注意力机制的模块;

7、可变性卷积:根据感兴趣目标设计出对应的卷积核形状,不一定是矩形;

三、对语义分割任务的深入理解?

首先看一下GCN论文中提到的这个图:

在这里插入图片描述

A图:包含全连接层或全局池化层,对于分类任务来说,模型必须具有不变性的,也就是对目标的旋转、平移和缩放不敏感,所以可以看出其中一个点的2感受野是比较大的,所以应该采用大卷积核;

B图:从定位的角度看,也就是检测任务中,模型应该对于变换是敏感的,也就是对目标所在位置具备敏感性;

C图:GCN使用得模型,去掉全连接和全局池化,采用较大得卷积核;

分割任务其实可以看成一个逐像素分类的任务,包含分类和定位两个挑战,一个好的分割模型应该同时处理好上面两个任务;但实际上这两个任务是有一定矛盾性的,一个需要用大的卷积核来将像素和特征图关联得更密切,增强处理不同变换得能力;但在检测任务中,模型应该对目标的变换是敏感的,也就是对物体的像素位置具有敏感信息;

四、GCN的优点是什么?

GCN通过再特征映射中引入了密集连接,有助于应对大量的变换,从而提高了分割的分类能力,总结几点如下:

1、位于大目标的像素可以从GCN中得到更多的好处,因为此时的任务比较接近纯粹的分类任务;

2、对于对象的边界像素,主要是受定位效果的影响,所以采用了BF模块(小卷积核)提高边界区域的精度;


七、DFN

论文地址:https://arxiv.org/pdf/1804.09337.pdf

意义:

提出了平滑网络和边界网络两个部分,平滑网络用于解决类内不一致,通过引入注意力机制和全局平均池化选择更具代表性的特征;边界网络通过深度语义边界监督更好的区分双边特征;

网络结构:

在这里插入图片描述

类内不一直和类间不一致如下图所示:

在这里插入图片描述

创新点:该模型的创新点在于从宏观角度看语义分割任务,以往的文章都是从微观角度(每个像素点)进行分类,这样会容易造成类内或类间不一致,该模型将一致的语义标签分配给事物的类别,而不是每个像素点;因此需要模型对每类项像素作为一个整体进行判别;


重点概念

一、注意力机制的作用以及常见用法?

注意力机制的作用:可以帮助模型为输入图像的各个部分分配不同的权重,提取更关键、更重要的信息,使模型能够做出更准确的判断,同时不会给模型的计算和存储带来更多的消耗;

主要的两种形式为:空间域和通道域;

在分割领域中,第一次引用注意力机制的论文:https://arxiv.org/pdf/1809.02983.pdf

主要看下面图,也就是两种不同形式的注意力机制使用:

在这里插入图片描述

基于空间域:上图绿色模块,本质上就是将原始特征图分解成三个矩阵,其中两个矩阵利用卷积的性质得到一个空间权重信息的特征图,随后再与另一个矩阵相乘并reshape,得到和原始特征图一样大小并包含了空间权重的特征图;

基于通道域:上图蓝色模块,本质上就是将原始特征图reshape到CxN,然后将其转置和其进行矩阵相乘,得到通道信息的特征图CxC,之后再与原始特征图CxN相乘,得到结果再与原图相加,输出包含空间信息的特征图;

二、基于编解码结构的直接融合效果并不佳,有什么改进点?

在ExFuse这个论文中提出了改进方法:https://arxiv.org/pdf/1804.03821.pdf

模型改进图:

在这里插入图片描述

从图中的上部分可以看出,原始的高级特征和低级特征之间是存在差异性的,因此融合的效果并不好,改进点为在低层特征中引入语义信息,在高层特征中引入细节信息使得融合效果更佳;

三、Border模块和Smooth模块的作用?

Border模块:利用多监督,使得网络学习到特征具有很强的类间不一致性;具体实现是从低阶网络获得边界信息,从高阶网络获得语义信息再融合,高阶语义信息具有优化低阶边缘信息的作用;

Smooth模块也是采用将高阶信息还原到低阶信息的作用,具体实现比较简单,不作说明了;


八、总结

至此,经典分割算法就学习完毕了,下面是一些简单总结:

  • FCN:语义分割端到端训练的开端;
  • U-Net:医学分割算法中的龙头;
  • SegNet&DeconvNet:对称的编解码结构;
  • DeepLab系列:从V1到V3+,算法越来越完善,效果越来越好;
  • GCN:从另一角度思考,重新使用大卷积核;
  • DFN:从另一角度思考,宏观角度看待语义分割;

实际上分割的很多思想是借鉴了分类和检测的,分割任务本质也是对像素点的检测和分类;所以其中很多思想是值得去学习和思考的,针对场景和数据集的不同,模型的选型和设计也需要做出改变;

本次介绍的仅仅为经典的分割,其实时性能并不算好,后续会总结实时分割网络!

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值