深度学习500问——Chapter09:图像分割(3)

文章目录

9.8 PSPNet

9.9 DeepLab系列

9.9.1 DeepLabv1

9.9.2 DeepLabv2

9.9.3 DeeoLabv3

9.9.4 DeepLabv3+


9.8 PSPNet

场景解析对于无限制的开放词汇和不同场景来说是具有挑战性的。本文使用文中的 pyramid pooling module 实现基于不同区域的上下文集成,提出了PSPNet,实现利用上下文信息的能力来进行场景解析。

作者认为,FCN存在的主要问题是没有采取合适的策略来用全局的信息,本文的做法就是借鉴SPPNet来设计了PSPNet解决这个问题。

很多 State-of-the-art 的场景解析框架都是基于FCN的,基于CNN的方法能够增强动态物体的理解,但是在无限制词汇和不同场景中仍然面临挑战。举个例子,如下图:

FCN认为右侧框中是汽车,但是实际上是船,如果参考上下文的先验知识,就会发现左边是一个船屋,进而推断框中是船。FCN存在的主要问题就是不能利用好全局的场景线索。

对于尤其复杂的场景理解,之前都是采用空间金字塔池化来做的,和之前方法不同(为什么不同,需要参考一下经典的金字塔算法),本文提出了 pyramid scene parsing network(PSPNet)。

本文的主要贡献如下:

(1)提出了PSPNet在基于FCN的框架中集成困难的上下文特征。

(2)通过基于深度监督误差开发了针对ResNet的高效优化策略。

(3)构建了一个用于state-of-the-art的场景解析和语义分割的实践系统(具体是什么?)

通过观察FCN的结果,发现了如下问题:

(1)关系不匹配(Mismatched Relationship)

(2)易混淆的类别(Confusion Categories)

(3)不显眼的类别(Inconspicuous Classes)

总结以上结果发现,以上问题部分或者全部上下文关系和全局信息有关系,因此本文提出了PSPNet,框架如下:

并且就加入额外的深度监督 Loss

9.9 DeepLab系列

9.9.1 DeepLabv1

DeepLab 是结合了深度卷积神经网络(DCNNs)和概率模型图(DenseCRFs)的方法。

在实验中发现了DCNNs做语义分割时精准度不够的问题,根本原因是DCNNs的高级特征的平移不变性,即高层次特征映射,根源于重复的池化和下采样。

针对信号下采样或池化降低分辨率,DeepLab是采用的 atrous(带孔)算法扩展感受野,获取更多的上下文信息。

分类器获取以对象中心的决策是需要空间变换的不变性,这天然地限制了DCNN的定位精度,DeepLab采用完全连接的条件随机场(CRF)提高模型捕获细节的能力。

除空洞卷积和CRFs之外,论文使用的tricks还有 Multi-Scale features。其实就是U-Net 和FPN的思想,在输入图像和前四个最大池化层的输出上附加了两层的MLP,第一层是 128 个 3x3的卷积,第二层是 128个 1x1 卷积。最终输出的特征与主干网络的最后一层特征图融合,特征图增加 5x128=640个通道。

实验表示多尺度有助于提升预测结果,但是效果不如CRF明显。

论文模型基于 VGG16,在 Titan GPU上运行速度达到了 8FPS,全连接CRF平均推断需要 0.5s,在PASCAL VOC-2012达到71.6% IOU accuracy。

9.9.2 DeepLabv2

DeepLabv2 是相对于DeepLabv1基础上的优化。DeepLabv1在三个方向努力解决,但是问题依然存在:特征分辨率的降低、物体存在多尺度,DCNN的平移不变性。

因DCNN连续池化和下采样造成分辨率降低,DeepLabv2在最后几个最大池化层中去除下采样,取而代之的是使用空洞卷积,以更高的采样密度计算特征映射。

物体存在多尺度的问题,DeepLabv1中是用多个MLP结合多尺度特征解决,虽然可以提供系统的性能,但是增加特征计算量和存储空间。

论文受到Spatial Pyramid Pooling(SPP)的启发,提出了一个类似的结构,在给定的输入上以不同采样率的空洞卷积进行采样,相当于以多个比例捕捉图像的上下文,称为ASPP(atrous spatial pyramid pooling)模块。

DCNN的分类不变性影响空间精度。DeepLabv2是采用全连接的CRF在增强模型捕捉细节的能力。

论文模型基于ResNet,在Nvidia Titan X GPU上运行速度达到了 8FPS,全连接 CRF平均推断需要 0.5s,在耗时方面和DeepLabv1无差异,但在PASCAL VOC-2012达到 79.7 nIOU。

9.9.3 DeeoLabv3

好的论文不止说明怎么做,还告诉为什么。DeepLab 延续到 DeepLabv3系列,依然是在空洞卷积做文章,但是探讨不同结构的方向。

DeepLabv3 论文比较了多种捕获多尺度信息的方式:

  1. Image Pyramid:将输入图片放缩成不同比例,分别应用在DCNN上,将预测结果融合得到最终输出。
  2. Encoder-Decoder:利用Decoder 阶段的多尺度特征,运用到Decoder阶段上恢复空间分辨率,代表工作有 FCN、SegNet、PSPNet等工作。
  3. Deeper w.Atrous Convolution:在原始模型的顶端增加额外的模块,例如DenseCRF,捕捉像素间长距离信息。
  4. Spatial Pyramid Pooling:空间金字塔池化具有不同采样率和多种视野的卷积核,能够以多尺度捕捉对象。

DeepLab1-v2都是使用带孔卷积提取密集特征来进行语义分割。但是为了解决分割对象的多尺度问题,DeepLabv3设计采用多比例的带孔卷积级联或并行来捕获多尺度背景。

此外,DeepLabv3将修改之前提出的带孔空间金字塔池化模块,该模块用于探索多尺度卷积特征,将全局背景基于图像层次进行编码获得特征,取得 state-of-art 性能,在PASCAL VOC-2012 达到 86.9 mIOU。

9.9.4 DeepLabv3+

语义分割关注的问题:

  1. 实例对象多尺度的问题。
  2. 因为深度网络存在 stride=2的层,会导致 feature 分辨率下降,从而导致预测精度降低,而造成的边界信息丢失问题。

deeplab v3新设计的 aspp结果解决了问题1,deeplab v3+ 主要目的在于解决问题2。

问题2可以使用空洞卷积替代更多的pooling层来获取分辨率更高的feature。但是feature分辨率更高会极大增加运算量。以deeplab v3使用的 resnet101为例,stride=16将造成后面9层feature变大,后面9层的计算量变为原来的 2*2=4倍大。stride=8则更恐怖,后面78层的计算量都会变大很多。

解决方案:1、编解码器结构;2、Modified Aligned Xception。

在deeplabv3的基础上加入解码器。A是 aspp 结构,其中 8x的上采样可以看作是一个解码器。B是编解码结构,它集合了高层和底层的特征。C就是本文采取的方法。

方法:

(1)Encoder-Decoder with Atrous Convolution

编码器采用 deeplabv3。

解码器部分:先从低层级选一个feature,将低层级的feature 用 1*1的卷积进行通道压缩(原本为256通道,或者512通道),目的在于减少底层级的比重。作者认为编码器得到的feature具有更丰富的信息,所以编码器的feature应该有更高的比重。这样做有利于训练。

再将编码器的输出上采样,使其分辨率与低层级feature一致。举个例子,如果采用 resnet conv2输出的feature,则这里要 *4上采样。将两种feature连接后,再进行一次 3*3 的卷积(细化作用),然后再次上采样就得到了像素级的预测。后面的实验结果表明这种结构载stride=16时既有很高的精度速度又很快。stride=8相对于来说只获得了一点点精度的提升,但增加了很多的计算量。

(2)Modified Aligned Xception

Xception 主要采用了deepwish seperable convolution 来替换原来的卷积层。简单的说就是这种结构能在更少参数更少计算量的情况下学到同样的信息。这边则是考虑将原来的 resnet-101骨架网换成 Xception。

红色部分为修改:

更多层:重复8次改为16次(基于MSRA目标检测的工作)。

将原来简单的pool层改成了 stride为2 的deepwish seperable convolution。

额外的RELU层和归一化操作添加在每个 3 × 3 depthwise convolution之后(原来只在1 * 1卷积之后)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/655234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

长三角智能科技高端盛会—南京人工智能展览会(南京智博会)

南京,作为一座历史悠久的文化名城,早已不仅仅以其深厚的文化底蕴和独特的自然风貌著称于世。而今,这座古老而又年轻的城市,正以其卓越的科技实力和创新精神,成为中国乃至全球科研领域的一颗璀璨明珠。南京不仅是中国三…

5倍收益秘诀:APP广告如何变现?

在这个数字时代,智能手机几乎成了我们生活中不可或缺的一部分。无论是早晨醒来的第一件事,还是睡前的最后一件事,手机都与我们紧密相连。而在这个连接的世界里,APP广告变现成为了一个热门话题,它不仅仅是将每一次点击转…

5.2网安学习第五阶段第二周回顾(个人学习记录使用)

本周重点 ①HIDS的基本应用(suricata) ②Suricata的基本应用 ③Suricata的流量检测 ④Suricata的https流量检测 ⑤利用Elastic整合Suricata日志 ⑥利用Wazuh对Suricata主动响应 本周主要内容 ①HIDS的基本应用(suricata) 1、NIDS 1、定义:网络入侵检测系统…

关于k8s集群的污点和容忍,以及k8s集群的故障排查思路

一 污点(Taint) 和 容忍(Tolerations) (一)污点 在Kubernetes(K8s)中,污点(Taints)是一个重要的概念,用于实现Pod的调度控制。以下是关于污点的详细解释:1.污点定义 污点…

149.二叉树:二叉树的前序遍历(力扣)

代码解决 这段代码实现了二叉树的前序遍历,前序遍历的顺序是:访问根节点 -> 递归遍历左子树 -> 递归遍历右子树。以下是详细解释,包括各个部分的注释: // 二叉树节点的定义 struct TreeNode {int val; // 节…

OpenStack创建云主机——超级详细步骤

四、创建云主机 一台云主机成功创建或启动需要依赖OpenStack中的各种虚拟资源,如CPU、内存、硬盘等。如果需要云主机丽娜姐外部网络,还需要网络、路由器等资源。如果需要外部网络访问云主机,那么还需要配置浮动IP。因此,在创建云主…

企业融资新渠道:一文详解动产抵押

在当今瞬息万变的商业环境中,资金是企业发展的血液。面对融资难题,动产抵押作为一种灵活高效的融资方式,越来越受到企业的青睐。本文将为您全面解析动产抵押的概念、流程、优势及注意事项,助力您的企业解锁融资新途径。 什么是动…

怎么看外国的短视频:四川鑫悦里文化传媒有限公司

怎么看外国的短视频:跨文化视角下的观察与思考 随着全球化进程的加速和网络技术的飞速发展,外国短视频逐渐走进了我们的视野。这些来自不同文化背景、语言体系和审美观念的短视频作品,为我们打开了一扇了解世界的窗口。然而,如何…

【vue】封装的天气展示卡片,在线获取天气信息

源码 <template><div class"sen_weather_wrapper"><div class"sen_top_box"><div class"sen_left_box"><div class"sen_top"><div class"sen_city">山东</div><qctc-time cl…

民国漫画杂志《时代漫画》第30期.PDF

时代漫画30.PDF: https://url03.ctfile.com/f/1779803-1248635414-87c8c8?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(九)

本系列课程&#xff0c;将重点讲解Phpsploit-Framework框架软件的基础使用&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 继续接上一篇文章内容&#xff0c;讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 现在&#xff0c;我们…

Flink 通过 paimon 关联维表,内存降为原来的1/4

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

如何破解navicat16

先安装好没破解的navicat16 以管理员身份运行 ‘无限试用Navicat.bat’ 复制这个 点击属性 打开文件所属位置 把复制的文件粘贴进去 直接启动navicat16

常用批处理命令及批处理文件编写技巧

一常用批处理命令 1.查看命令用法&#xff1a;命令 /? //如&#xff1a;cd /? 2.切换盘符目录&#xff1a;cd /d D:\test 或直接输入 d: //进入上次d盘所在的目录 3.切换目录&#xff1a;cd test 4.清屏:cls 5.“arp -a” //它会列出当前设备缓存中的所有…

Golang项目代码组织架构实践

Golang在项目结构上没有强制性规范&#xff0c;虽然这给了开发者很大的自由度&#xff0c;但也需要自己沉淀一套可行的架构。本文介绍了一种项目布局&#xff0c;可以以此为参考设计适合自己的 Golang 项目组织模式。原文: Golang Project Layout Go 有很多强制的或是约定俗成的…

【Mac】Ulysses for Mac(优秀的markdown写作软件) v34.3中文版安装教程

软件介绍 哪款markdown写作软件最好用&#xff1f;小编推荐您使用尤利西斯&#xff1a;Ulysses mac版&#xff01;这是mac上一款优秀的markdown写作工具。Ulysses mac版具备全新的Soulmen写作坏境&#xff0c;采用了革命性的功能增强&#xff0c;结合了最好的部分最小标记&…

60. UE5 RPG 使用场景查询系统(EQS,Environment Query System)实现远程敌人寻找攻击位置

UE的Environment Query System&#xff08;EQS&#xff09;是环境查询系统&#xff0c;它是UE4和UE5中用于AI决策制定过程中的数据采集和处理的一个强大工具。EQS可以收集场景中相关的数据&#xff0c;利用生成器&#xff08;Generator&#xff09;针对用户的测试&#xff08;T…

mysql 按区间统计 3 分钟维度

根据 UNIX_TIMESTAMP 去掉分钟后的的位数 思路如下select UNIX_TIMESTAMP(now()) 当前时间 秒,now() 当前时间,FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) / (3 * 60)) * (3 * 60)) 3分钟为分隔去掉多余位数当前时间 秒 当前时间 3分钟为分隔去掉多余…

【NumPy】全面解析NumPy的where函数:高效条件操作指南

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

哈希冲突的常见解决方法【附C++代码】

在C中&#xff0c;哈希表是一种常用的数据结构&#xff0c;用于实现快速的插入、删除和查找操作。 哈希表的核心在于哈希函数&#xff0c;它将输入的关键字转换为一个数组索引。然而&#xff0c;不同的关键字可能映射到相同的索引&#xff0c;这种情况称为哈希冲突。 有效地解…