DeepLabv3+

这篇具有很好参考价值的文章主要介绍了DeepLabv3+。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.摘要

本文在进行语义分割任务时将空间金字塔池化(SPP)模块或encoder-decoder结构引入到深度神经网络中。以前的网络通过对输入的feature map使用多种尺度的卷积核或者池化操作以及多种感受野能够编码出多尺度的环境信息。而之后的一些工作中提出的网络通过逐渐恢复空间信息能够捕获更加精细的物体边界。在本文中,将以上两种优势(多尺度特征+恢复空间信息)进行结合。特别地,本文提出的deeplabv3+在deeplabv3的基础上加入了简单却有效的decoder模块去细化分割结果,特别是物体的边界。本文进一步探索了Xception模型并且将深度可分离卷积应用在空洞空间金字塔池化(ASPP)以及decoder模块中,从而构造出了更快和更强的encoder-decoder网络。

二.方法

这部分简单介绍空洞卷积以及深度可分离卷积。然后在探讨本文提出的附加在encoder模块之后的decoder模块之前先来回顾DeepLabv3,Deeplabv3用来当作本文提出模型的encoder模块。

2.1包含空洞卷积的encoder-decoder

DeepLabv3+

 上图为本文提出的deeplabv3+整体模型结构,可以看出整体是基于encoder-decoder架构的,其中用到了空洞卷积和金字塔模块,下面具体介绍各个模块。

空洞卷积:

空洞卷积是一个能够有效控制深度神经网络输出的feature map的分辨率的工具以及能够调整卷积核的感受野从而捕获多尺度信息,空洞卷积是标准卷积的一个扩展。在一个二维卷积中,对于卷积输出的特征上的每个位置以及对应的卷积核,对于输入,空洞卷积的计算如下所示:

DeepLabv3+

上式中为空洞率,表示卷积核在卷积操作的输入上的取样步长;表示卷积核参数的位置,例如卷积核尺寸为3,则;表示卷积核尺寸(论文中公式上没有,在这里为了表示清晰加入)。更直观的空洞卷积如下图所示:

DeepLabv3+

 不难看出,标准卷积就是空洞率为1的空洞卷积。卷积核的感受野随着空洞率的改变随之也会发生改变。

深度可分离卷积:

深度可分离卷积将一个标准卷积拆分为深度卷积+1*1卷积,极大的减少了计算复杂度。特别地,深度卷积独立的为输入feature的每个channel做卷积操作,然后使用1*1的卷积对深度卷积的输出进行channel间进行融合操作,这样就替代了一个标准卷积操作,即融合了空间信息,也融合了不同通道间的信息。在之前的一些工作中,已经能够将空洞卷积融入到深度可分离卷积中,如下图所示:

DeepLabv3+

 上图中(a)就是之前提到的深度卷积,单独的为每个channel进行卷积操作;(b)就是之前提到的1*1卷积用来融合channel间的信息。(a)和(b)就组成了深度可分离卷积。那如果将(a)中的标准卷积操作替换为空洞卷积,如图(c)所示就实现了带有空洞卷积的深度可分离卷积,本文称之为空洞可分离卷积(atrous seperable convolution)。本文应用空洞可分离卷积极大的减少所提出模型的计算复杂度与此同时维持了与原模型相似或者更好的模型效果。

DeepLabv3作为encoder:

Deeplabv3使用了空洞卷积去对深度神经网络输出的任意分辨率的feature进行特征提取。这里使用输出步长(output stride)表示模型输入图像和输出的feature map(在全局池化或全连接层之前)的空间分辨率的比值。对于分类任务,最终feature map的空间分辨率往往是模型输入图像的1/32,因此输出步长为32。对于语义分割任务来说,通过移除网络最后1到2个模块的步长以及相应地使用空洞卷积(例如对最后两个网络模块采用空洞率为2和4的空洞卷积从而实现输出步长为8)从而减小整个模型的输出步长从而达到输出步长为8或16,这样就能够提取到更稠密的特征。此外,deeplabv3增加了带有图像级别特征的空洞空间金字塔模块(ASPP),空间金字塔模块(ASPP)能够通过不同的空洞率获取多尺度卷积特征。本文使用原始deeplabv3的logits模块之前最后输出的feature map作为本文encoder-decoder中encoder部分的输出。需要注意的是,encoder输出的feature map包含256个通道以及丰富的语义信息。除此之外,根据计算能力可以采用空洞卷积在任意分辨率的输入上提取特征。

提出的decoder:

deeplabv3作为encoder输出的features通常输出步长为16,在之前的研究工作中,feature map通过双线性插值上采样16倍来将输出feature map恢复为模型输入尺寸,可以将其看作是一个简单的decoder模块。然而,这种简单的decoder模块可能并不能够很好的恢复物体分割细节。因此本文提出了一个简单但是有效的decoder模块,2.1中deeplabv3+整体结构图中所示,encoder输出的特征首先进行4倍的双线性插值上采样,然后和encoder中backbone中拥有相同尺寸的低级别(浅层)特征(例如Resnet-101的Conv2模块的输出)进行通道维度的拼接,在拼接之前首先对低级别特征进行1*1卷积,目的是为了减小低级别特征的通道数目,因为低级别特征通常含有大量的通道数目(例如256或512),这样底级别特征的重要性可能会超过encoder输出的富有语义信息的特征(在本文模型中只有256个通道)并且使得训练更加困难。在将encoder输出特征和低级别特征拼接之后,对拼接结果进行了几个3*3卷积操作去细化特征,并随后又接了一个4倍的双线性插值上采样。在之后的实验中证明了,当encoder的输出步长为16时可以达到速度和精度的最好的权衡。当encoder的输出步长为8时模型效果略有提升,但也相应增加了额外的计算复杂度代价。

2.2改进Aligned Xception

Xception模型在ImageNet上已经展示了不错的图像分类结果并有着较快的计算速度。最近,MSRA团队对Xception模型做了一些改动(称为Aligned Xception)以及进一步的推动了在目标检测任务上的表现。受这些发现的启发,本文沿着相同的方向去采用Xception模型来进行语义分割任务。特别地,我们在MSRA的修改上做了一些变动,分别为(1)更深的Xception,这个变动借鉴了以前的一些研究工作,但是不同的是,为了更快的计算以及高效的内存运用本文没有修改Xception的输入流网络结构(entry flow network structure);(2)最大池化操作通过使用带有一定步长的深度可分离卷积进行替代,也可以将深度可分离卷积替换为前文所说的空洞可分离卷积去在任意分辨率的输入上提取特征(或者另一种选择就是使用带有空洞率的最大池化操作替换原始的池化操作)。(3)在每一个3*3的深度卷积之后添加额外的batch normalization以及ReLU操作,这与MobileNet的设计类似。修改后的Xception整体结构如下图所示:

DeepLabv3+

三.实验验证

本文利用ImageNet-1k预训练的Resnet-101或上文中修改后的aligned Xception去使用空洞卷积提取稠密特征。

训练时采用了“poly”学习率策略以及初始学习率设置为0.007,图像尺寸为513*513。模型训练时端到端的。

3.1decoder设计选择

定义“DeepLabv3 feature map”作为Deeplabv3最后输出的feature map(例如,features包含ASPP特征以及图像级别的特征),[k*k,f]作为卷积操作,表示卷积核尺寸为k*k,共有f个卷积核(即卷积输出feature map的通道数为f)。

当采用输出步长为16时,基于Resnet-101的DeepLabv3在训练和测试中对logits均采用16倍的双线性插值。这种简单的双线性插值方式可以认为时一种简单的decoder设计,在PASCAL VOC2012验证集上得到了77.21%的精度,比不用这种简单的decoder方式(例如直接将groud truth降采样来保证和网络输出尺寸相同)提升了1.2个百分点。为了提升这种简单的baseline,本文剔提出的“Deeplabv3+”在encoder输出后添加了decoder模块,如前文中DeepLabv3+整体结构图中所示。在decoder模块中,本文想了3个不同的设计方式,(1)1*1卷积减少encoder的低级别特征通道数;(2)3*3卷积被运用去获取更加精准的分割结果;(3)什么encoder的低级别特征应当被应用。

为了验证decoder中的1*1卷积的效果,本文采用Resnet-101网络的Conv2特征作为低级别特征。采用1*1卷积对低级别特征减少通道数,减少为不同通道数目的模型效果如下表所示:

DeepLabv3+

 可以看到,当通道数目降低为32或48时模型效果较好,因此对低级别特征采用[1*1,48]的卷积操作来减少低级别特征通道数目。

之后设计了decoder的3*3卷积结构,不同的设计效果如下表所示:

DeepLabv3+

 本文发现,在拼接Conv2特征和“Deeplabv3 feature map”后,采用2个3*3,卷积核个数为256的卷积操作效果要优于简单的使用1个或3个卷积操作。并发现,将卷积核数目从256变至128或卷积核从3*3变为1*1均会降低模型表现。随后还做测试了同时使用Conv2以及Conv3特征,但发现效果并不明显,因此最终采用了简单而有效的decoder:利用减少通道数的低级别特征(Conv2特征)和“Deeplabv3 feature map”进行拼接,然后进行2个[3*3,256]的卷积操作。

3.2Resnet-101作为backbone网络

当使用Resnet-101作为DeepLabv3+的backbone时,为了比较精度和速度的变化,观察了mIOU以及Multiply-Adds。得益于空洞卷积,模型在训练时能够在不同分辨率下获取特征以及在模型验证时使用单一模型。

Baseline:

DeepLabv3+

 上表中train OS表示训练时的输出步长,eval OS表示验证时的输出步长。Decoder表示是否使用本文提出的decoder模块,MS表示验证时模型使用多尺度输入,Flip表示模型输入时添加左右反转输入。

上表中第一大行(前4小行)展示了采用更小的输出步长(输出步长为8时)获取更稠密特征或者采用多尺度输入以及采用decoder模块、输入图像反转等操作时的模型效果。其中采用图像反转输入模型将模型计算复杂度变为原来的两倍,但是效果提升很小。

添加decoder:

上表中第二大行采用了本文提出的decoder结构,呈现了验证时不同的输出步长(8或16)或采用多尺度输入或图像反转时模型效果。

粗粒度feature maps:

进行了实验模型训练时采用输出步长为32(例如在训练时没有采用空洞卷积)来达到更快的计算速度。在上表中第三大行展示了在训练时采用输出步长为32以及在验证时采用输出步长为8~32,以采用decoder和不采用decoder时的模型效果。

3.3Xception作为backbone网络

DeepLabv3+

 如上表所示为Xception作为backbone时的一些实验效果,与Resnet-101的类似,这里就不细讲了,需要说明的是,可以发现表中多了一些操作,其中SC表示是否采用深度可分离卷积在ASPP以及decoder模块中;COCO表示模型是否在MS-COCO上预训练;JFT表示模型是否在JFT上预训练。

四.实验效果

DeepLabv3+文章来源地址https://www.toymoban.com/news/detail-458687.html

到了这里,关于DeepLabv3+的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像分割实战-系列教程15:deeplabV3+ VOC分割实战3-------网络结构1

    有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 deeplab系列算法概述 deeplabV3+ VOC分割实战1 deeplabV3+ VOC分割实战2 deeplabV3+ VOC分割实战3 deeplabV3+ VOC分割实战4 deeplabV3+ VOC分割实战5 本项目的网络结构在network文件夹中,主要在

    2024年01月19日
    浏览(64)
  • MaskFormer:将语义分割和实例分割作为同一任务进行训练

    目标检测和实例分割是计算机视觉的基本任务,在从自动驾驶到医学成像的无数应用中发挥着关键作用。目标检测的传统方法中通常利用边界框技术进行对象定位,然后利用逐像素分类为这些本地化实例分配类。但是当处理同一类的重叠对象时,或者在每个图像的对象数量不

    2024年02月10日
    浏览(35)
  • 改进 DeepLabV3+

    CFF结构图    10.28更新(解码复习)

    2024年02月13日
    浏览(43)
  • DeepLabv3+

    本文在进行语义分割任务时将空间金字塔池化(SPP)模块或encoder-decoder结构引入到深度神经网络中。以前的网络通过对输入的feature map使用多种尺度的卷积核或者池化操作以及多种感受野能够编码出多尺度的环境信息。而之后的一些工作中提出的网络通过逐渐恢复空间信息能

    2024年02月06日
    浏览(74)
  • Docker 部署深度学习 运行deeplabV3

    本文主要介绍docker发展历史,常用的镜像,容器命令。以及部署深度学习环境,运行deeplabV3 项目。 2010年,美国一家公司dotcloud做一些pass的云计算服务,lxc有关的容器技术,他们讲自己的技术(容器化技术)命名为Docker。 刚诞生的时候,没有引起关注,然后2013年,他们讲D

    2024年01月21日
    浏览(41)
  • DeepLabV3+:ASPP加强特征提取网络的搭建

    目录 ASPP结构介绍 ASPP在代码中的构建 参考资料 ASPP:Atrous Spatial Pyramid Pooling,空洞空间卷积池化金字塔。 简单理解就是个至尊版池化层,其目的与普通的池化层一致,尽可能地去提取特征。 利用主干特征提取网络,会得到一个浅层特征和一个深层特征,这一篇主要以如何对

    2024年02月16日
    浏览(69)
  • DeepLabV3+:Mobilenetv2的改进以及浅层特征和深层特征的融合

    目录 Mobilenetv2的改进 浅层特征和深层特征的融合 完整代码 参考资料 在DeeplabV3当中,一般不会5次下采样,可选的有3次下采样和4次下采样。因为要进行五次下采样的话会损失较多的信息。 在这里mobilenetv2会从之前写好的模块中得到,但注意的是,我们在这里获得的特征是[-

    2024年01月19日
    浏览(56)
  • 语义分割任务中的Transformer

    Transformer 在语义分割中的使用主要有两种方式: patch-based Transoformer query-based Transformer Transformer最初应用于NLP领域,在NLP中称每个单词为token,而在CV中就是将图像切割成不重叠的Patch序列(其实就是token)。Patch-basedTransformer实际上是模仿NLP任务,将语义分割任务视为了一个 S

    2024年02月12日
    浏览(30)
  • 计算机视觉与深度学习-图像分割-视觉识别任务01-语义分割-【北邮鲁鹏】

    给每个像素分配类别标签。 不区分实例,只考虑像素类别。 滑动窗口缺点 重叠区域的特征反复被计算,效率很低。 所以针对该问题提出了新的解决方案–全卷积。 让整个网络只包含卷积层,一次性输出所有像素的类别预测。 全卷积优点 不用将图片分为一个个小区域然后再

    2024年02月07日
    浏览(82)
  • 计算机视觉三大基本任务:分类、检测(定位)、分割(语义和实例)

    刚刚接触计算机视觉时可能会对 不同的任务的区分 以及 网络架构的选择 产生迷惑,因此,在此总结了相关的基础知识。在本文中,我们试图回答两个问题: 不同任务要做的事情是什么,研究范畴是什么? 不同的任务需要选择什么类型的网络? 计算机视觉任务可以分为4大

    2024年02月05日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包