deeplab V3 在皮肤检测,表面缺陷检测上的应用。

8 篇文章 0 订阅
1 篇文章 0 订阅

参考:https://blog.csdn.net/Guo_rongxin/article/details/79842895
参考:https://www.jianshu.com/p/952aae926d08
参考:https://zhuanlan.zhihu.com/p/40470298

论文:Rethinking Atrous Convolution for Semantic Image Segmentation

摘要

  本文中,我们再次讨论带孔卷积,一个调整卷积核感受野的强大工具,并且可以控制深度卷积神经网络计算得到特征的分辨率,应用在图像语义分割上。为了处理在多尺度条件下的语义分割难题,我们设计了串行和并行的带孔卷积模块,采用多种不同的孔洞步长来获取多尺度的内容信息。除此之外,我们还提出了多层级空间金字塔式孔洞池化模块,挖掘多尺度卷积特征,以及编码了全局内容信息的图像层特征,提升分割效果。我们还详细阐述了实施细节,并分享了我们训练自己系统的经验。我们提出的“deeplabv3”系统比起我们以前的deeplab版本有了显著的提高,在没有使用全连接条件随机场做后置处理的情况下达到媲美与其他模型在PASCAL VOC 2012图像语义分割的性能。

1、引言

在这项工作中,我们重新研究带孔卷积的应用,在级联模块和空间金字塔池化的框架下,使我们能够有效地扩大filter的视野,以组合多尺度的图片信息。特别是,我们提出的带孔卷积模块中多种孔的步长和批次归一化层,发现在训练中也非常重要。我们的实验按级联或并行排列模块(特别实验了带孔的空间金字塔池化(ASPP)方法[ 11 ])。我们讨论一个重要的现实问题,当应用3×3带孔卷积时孔的步长非常大的时候,因为图像边界的影响就不能捕捉到长跨度的信息,事实上会退化为1×1的卷积,并提出将图像级特征纳入ASPP模块。此外,我们分享了精心设计的一些技术细节和模型的训练经验,包括简单而有效的自助抽样法处理标签稀少和标签精细对象。在最后,我们提出的“DeepLabv3”模型,超越了我们以前的工作[ 10, 11 ],并且在没有使用DenseCRF做最后的处理的情况下在PASCAL VOC 2012的测试集上达到了85.7%的正确率。

2、相关工作

常见的四种全卷积网络
在这里插入图片描述

  1. 图像金字塔即为对不同的sacle的image进行并行的处理,再融合在一起。相同的模型,共享的权重,适用于多尺度输入。特征响应在小尺寸输入时编码成长跨度的上下文,而大尺寸的输入还保存着小物体的细节。典型的例子有Farabet,它将输入图像通过一个金字塔结构的拉普拉斯算子,将每个尺寸的输入送到深度卷积神经网络中然后将多尺度的特征映射融合起来,利用多尺度输入把结果做到由粗到精,直接改变输入图像大小为特定的几个尺寸然后融合所有尺寸得到的特征。这种模型的主要缺点就是它在更大更深层的深度卷积神经网络中适应的不够好(例如,像[ 32, 91, 86 ]中的网络),受限于有限的GPU内存,这种方法主要应用在推理阶段。
  2. 编码解码方式使用编码和解码的对称结构,利用来自编码器部分的多尺度特征并从解码器部分恢复空间分辨率。这种模型包括两部分:(1)编码部分将特征映射的空间维度逐渐减小因此更长跨度的信息会更容易被捕捉到在更深的编码输出中,(2)解码部分物体的细节和空间维度逐渐被恢复。例如,[ 60 , 64 ]使用反卷积[ 92 ]来学习低分辨率的特征响应的上采样。SegNet在编码阶段为池化做索引然后重复使用,并且学习额外的卷积层来使特征响应更加精细。U-Net则在编码特征到响应的解码操作之间添加了跳跃连接,并且使用了金字塔结构的拉普拉斯算子重新架构网络。更近的例子有,RefineNet [ 54 ]和 [ 70 , 68 , 39 ]已经证明了基于编码解码结构的模型在几种语义分割基准上的有效性。这种模型在目标检测上也有研究。
  3. 上下文模块在原始的网络上级联一些模块,用以捕获更多的信息。为了编码长跨度的上下文信息,这种模型包括级联的额外模块。其中一个有效的方法是加入一个全连接条件随机场(有效的高维滤波算法)到深度卷积神经网络之后。除此之外,[ 96 , 55 , 73 ]提出联合训练条件随机场和深度卷积神经网络部分,[ 59 , 90 ]使用几个额外的卷积层在深度卷积神经网络的结果映射之上(结果映射是深度卷积神经网络最后的特征映射包含的输出通道和预测的种类数量相等)来捕获上下文信息。最近,[ 41 ]提出学习一个普遍又稀疏的高维卷积(双边卷积),[ 82 , 8 ]将高斯条件随机场与深度卷积神经网络相结合来处理语义分割。
  4. 空间金字塔池化使用不同采样率和多种视野的卷积核,以捕捉多尺度对象。这种模型使用空间金字塔池化方法捕获上下文信息在几个层面。ParseNet研究了图像级别的特征包含全局上下文信息。DeepLabv2提出带孔卷积空间金字塔池化方法(ASPP),并行的带孔卷积层用不同的步长捕获多尺度的信息。最近,金字塔型场景分解模型(PSP)在几个栅格尺度下执行空间池化而且在几种语义分割基准上证明有突出的表现。还有其他基于LSTM方法收集全局上下文信息。空间金字塔池化也被应用在目标检测上。

本文中,我们主要探索带孔卷积作为一个上下文模块和一个空间金字塔池化的工具。我们提出的框架是在各种场景中通用的,可以被应用在任何网络当中。具体来说,我们复制了几个最初的ResNet的最后部分然后把它们级联在一起,而且也再次使用了包含几个并行的带孔卷积ASPP模块。注意我们级联的模块被直接应用在特征映射上而不是结果映射。对于提出的模块,我们经验化地发现批次正规化训练非常重要。为了更进一步捕获全局上下文,我们提出增加ASPP带有图像级别的特征,与[58, 95]相似。

带孔卷积:基于带孔卷积的模型已经在语义分割领域被研究很多了。例如,[85]修改孔洞步长对捕获长跨度信息影响的实验。[84]在ResNet的最后2块采用混合孔洞步长,而[18]进一步提议学习可变形的卷积,对输入特征进行采样加上学习到的偏移,产生带孔卷积。为了进一步提高分割模型的准确率,利用图像标注,利用视频动作,结合深度信息。除此之外,带孔卷积被应用到目标检测上。

3、方法

带孔卷积提取精细特征

对输入特征x(二维信号)特征x进行带孔卷积:
y [ i ] = ∑ k x [ i + r k ] w [ k ] y[i]=\sum_kx[i+rk]w[k] y[i]=k∑​x[i+rk]w[k]
其中,i为位置,y为对应位置输出,w为卷积核权重,r为对输入信号进行采样的步长,等价于x和通过在两个连续的filter值之间沿着各空间维度插入r-1个0得到上采样filter进行卷积,标准卷积即为r=1的一种特殊形式。

深入了解带孔卷积

带孔卷积模块串行级联的设计
在这里插入图片描述整个图像的特征可以被集中在最后一个小分辨率的特征图上,如上图(a)所示。然而,连续的striding损害了细节信息,因此采用步长确定的带孔卷积,按照输出步长的要求而设计。这个模型中,实验了级联resnet到第7个模型(额外的模块5、6、7是由模块4复制而来)。

多网格方法 Multigrid
受到了采用不同大小网格层次结构的多重网格方法的启发,我们提出的模型在block4和block7中采用了不同的空洞率。特别是,我们定义了 M u l t i _ G r i d = ( r 1 , r 2 , r 3 ) Multi\_Grid = ( r1, r2, r3) Multi_Grid=(r1,r2,r3),对于从模块4到模块7每个模块有着独立的单元步长。最终的带孔步长对于卷积层来说与单元步长和对应的步长相乘的值相等。例如,当输出步长为16, M u l t i _ G r i d = ( 1 , 2 , 4 ) Multi\_Grid = (1,2,4) Multi_Grid=(1,2,4),模块4中三个卷积的步长将会分别等于 2 × ( 1 , 2 , 4 ) = ( 2 , 4 , 8 ) 2×( 1,2,4 ) =(2,4,8) 2×(1,2,4)=(2,4,8)。 f i n a l _ a t r o u s _ r a t e = M u l t i G r i d ∗ c o r r e s p o n d i n g r a t e final\_atrous\_rate = Multi Grid * corresponding rate final_atrous_rate=MultiGrid∗correspondingrate.(每个Block有三个卷积层)

带孔空间金字塔池化
空间金字塔池化在用不同尺度重复采样特征提高精确率方面是有效的而且任意的尺度都对分割很有效果,本文在ASSP中加入BN。
在这里插入图片描述随着孔洞步长增加,归一化计算3x3的filter的有效权重,此时特征映射为65x65。当孔洞步长比较小的时候,全部9个filter权重在特征映射上的大部分有效区内都有作用,而当孔洞步长增加时,3x3的filter逐渐退化为一个1x1的filter,因为只有中心的权重是有效的。
在这里插入图片描述
针对此问题,并将全局内容信息整合进模型中,我们采用图像级特征。特别是,我们应用了全局平均池化处理模型的特征映射,将得到的图像级特征输入到一个有256个filter的 1×1 卷积(加入批次归一化)中,然后将特征进行双线性上采样(bilinearly upsample)到特定的空间维度。最后,我们的改进的ASPP由一个 1×1 卷积,和三个 3×3卷积组成,步长为(6,12,18),输出步长为16(所有的filter个数为256,并加入批次归一化),如上图5所示,(b)是图像级的特征。 需要注意的是,当输出步长为8时,步长将加倍。所有分支处理好的特征将会连接在一起通过另一个 1×1 卷积(也有着256个filter,加入批次归一化),最后还有一个 1×1 卷积产生最终的分类。

4、实验

imagenet上预训练,bacbbone为resnet,tensorflow框架,pascal voc 2012语义分割数据集,评价方式为计算平均21类的预测像素的准确率(IOU)。
训练
使用‘poly’学习率策略,初始学习率与 ( 1 − i t e r / m a x _ i t e r ) p o w e r (1-iter/max\_iter)^{power} (1−iter/max_iter)power,power为0.9,裁剪尺寸为513。输出步长为16,批次归一化参数训练得到衰减为0.9997。初始化学习率为0.007,在训练集上训练3万次后固定批次归一参数,使用输出步长为8时,使用小点学习率0.001,在离线pascal voc 2012 trainval又训练3万次。

上采样预测结果:输出步长设置为8时,目标的真实结果被下采样了8倍。我们发现使真实结果保持原来的尺寸非常重要,因此需要上采样我们预测的结果,因为下采样真实结果会除去掉没有反向传播的很好的标注细节。

数据扩张:我们通过随机缩小或者放大输入图片(从0.5倍到2倍)和训练时随机左右反转图片来使数据扩张。

深入带孔卷积
采用output_stride=8在以更多内存使用的代价下有更好的性能
表1显示采用output_stride=8在以更多内存使用的代价下有更好的性能
在这里插入图片描述表2resnet50与resnet101对比
在这里插入图片描述
多网格:我们在ResNet-101上对几个级联的添加模块应用多网格方法,如表3所示。单元步长,Multi_Grid = ( r1, r2, r3)被应用在所有添加的模块当中。正如表中所示,我们观察到使用多网格方法普遍比原来要好,单纯地加倍单元步长没有效果,同样使用多网格方法随着网络变深,效果也更好。我们最好的模型是7层( r1, r2, r3)=(1,2,1)。 在这里插入图片描述
在验证集上测试推广的策略:开始模型是在输出步长为16的基础上训练的,之后我们推断,用输出步长为8可以得到更多的特征映射的细节。如表4所示,当输出步长为8时,我们用之前表现最好的级联结构,7层( r1, r2, r3)=(1,2,1),准确率比步长为16时提高了1.39%。加入缩小放大输入图片和左右翻转图片的操作之后,准确率进一步提高(放大比例有{0.5, 0.75, 1.0, 1.25, 1.5, 1.75})。特别地,我们将多个尺度和翻转图像计算出的平均值作为最终的计算结果。

带孔空间金字塔池化
使用调整好的批次归一化参数和图像尺度的特征。
在这里插入图片描述
ASPP:在表5中,我们实验了在第4模块包含多网格操作和图像级别特征的ASPP模型。首先我们固定ASPP =(6,12,18)(即在三个并行的3×3 带孔卷积分支规定步长分别为(6,12,18)),改变多网格的值。Multi_Grid = ( 1,2,1)的结果比Multi_Grid = ( 1,1,1)要好,不过这种步长下最好的Multi_Grid = ( 1,2,4)。如果再加一个并行的步长为24的带孔卷积层来获取更大范围的上下文信息,准确率会稍微降低到0.12%。另一方面,在ASPP模型上加入图像级别的特征是有效的,最终准确率达到了77.21%。
在这里插入图片描述
在验证集上测试推广的策略:相似的,我们将模型的输出步长改为8。如表6所示,准确率增加了1.3%,加入缩小放大输入图片和左右翻转图片的操作之后,准确率进一步提高了0.94%和0.32%,ASPP最好的模型准确率为79.77%,比级联带孔卷积模型的最优值更高,因此选择ASPP作为我们最终的模型。

和DeepLabv2对比:v3的级联模型和ASPP模型在PASCAL VOC 2012的验证集上表现都要比v2好,提升主要来自增加了调好的批次归一化参数和更好地编码多尺度上下文信息。

测试集上的结果和有效的自助抽样法:我们注意到PASCAL VOC 2012数据集提供的标注信息比增加的数据集要更有质量,特别是自行车这一类。因此我们在测试集上测试之前先在PASCAL VOC 2012的训练集和验证集上进一步微调我们的模型。我们的模型是在输出步长为8的情况下训练的(因此标注细节得以保留),批次归一化参数固定。除此之外,与[85,70]的pixel
hard example mining方法不同,我们用自助抽样法处理不好训练的图片。特别是,我们在训练集中复制了一些图片,包含的类别不好训练(自行车,椅子,桌子,盆栽和沙发)。如图7所示,自助抽样法对分割自行车很有效。最后,DeepLabv3在没有用全连接条件随机场预处理的情况下达到了85.7%的准确率,见图7。

在JFT-300M上预训练模型:收到[79]最近工作的启发,我们进一步使用了已经在ImageNet和JFT-300M数据集上预训练的ResNet-101模型,结果在PASCAL VOC 2012的测试集上达到了86.9%的准确率。
在这里插入图片描述

总结

我们的DeepLabv3模型使用了有着上采样filter的带孔卷积,来使特征映像更精确、捕获长跨度的上下文信息。特别是为了编码多尺度的信息,我们提出了级联模块使孔洞步长加倍,我们的带孔空间金字塔池化模型增大了图像级别的特征,探索filters的多个采样率和感受野。我们的实验结果表明DeepLabv3相较于之前的DeepLab模型有了极大的提高,达到媲美与其他模型在PASCAL VOC 2012图像语义分割的性能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值