深度学习语义分割篇——DeepLabV2原理详解篇

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题

🍊专栏推荐:深度学习网络原理与实战

🍊近期目标:写好专栏的每一篇文章

🍊支持小苏:点赞👍🏼、收藏⭐、留言📩

深度学习语义分割篇——DeepLabV2原理详解篇

写在前面

Hello,大家好,我是小苏👦🏽👦🏽👦🏽

在上一节,我已经为大家介绍了DeepLabV1的原理,还不清楚的赶快点击☞☞☞了解详情。🍍🍍🍍那么这篇就和大家唠唠DeepLabV1的兄弟篇——DeepLabV2。其实呢,你要是清楚DeepLabV1的话,那么DeepLabV2对你来说就是小菜一碟了,改进点是比较少也比较好理解的。话不多说,让我们一起走进DeepLabV2的世界叭~~~🚖🚖🚖

论文链接:DeepLabV2论文🍵🍵🍵

 

语义分割存在的挑战

是不是发现和DeepLabV1博客的结构很像呢,在V2论文的INTRODUCTION中也首先提出了DCNN应用于语义分割的三个挑战,如下图所示:

image-20230712212448984

翻译一下:

  1. 特征分辨率降低
  2. 目标在多尺度上的存在
  3. 由于DCNN的不变性降低了定位精度

熟悉,熟悉,实在是太熟悉了,大家一定会有这样的感受。确实如此,这和DeepLabV1的挑战几乎一致,就多了一个第2点,而且其实在DeepLabV1中也使用到了多尺度的方法,不记得的大家可以点击☞☞☞去瞅一眼。🍖🍖🍖

 

DeepLabV2网络优势

image-20230712213431978

  • 速度更快:借助atrous算法(空洞卷积算法),密集的DCNN在NVidia Titan X GPU上以8帧/秒的速度运行。
  • 准确性更高:我们在几个具有挑战性的数据集上获得了最新的结果,包括PASCAL VOC 2012语义分割基准、PASCAL- context、PASCALPerson-Part和cityscape。
  • 模型结构简单:我们的系统由两个非常完善的模块级联组成,即DCNN和CRF。

我想大家又发现了,这个和DeepLab的表述几乎是一样的。🥗🥗🥗


大家通过上面两个小节我想应该会发现,DeepLabV1和DeepLabV2似乎存在很多相似之处,在后文DeepLabV2的网络结构中我会挑一些重点为大家讲解,其实也没几个,先给大家透个底叭,V2较V1主要做了如下改变:

  • 添加了ASPP多尺度结构
  • 修改了backbone
  • 设计了poly学习率更新策略

后面我也将主要从这三个方面为大家展开叙述~~~🍻🍻🍻


DeepLabV2网络结构

前文提到DeepLabV2较DeepLabV1主要添加了ASPP结构、修改了backbone及设计了poly学习率更新策略,其实呢,论文中还做了一些其它的小改进,这里就不一一阐述了。比如对CRF的二元势函数进行了更新,但是呢,由于我在V1中就没有介绍CRF,所以这里也就不介绍啦,感兴趣的去看看论文叭。🍚🍚🍚

ASPP结构

先来说说这个ASPP的全称叭,即atrous spatial pyramid pooling,翻译过来的话叫空洞空间金字塔池化【蹩脚的翻译,勿喷🤐🤐🤐】。下图为ASPP模块的结构示意图:

从上图可以看到ASPP模块是在输出的特征图上并联了四个分支,每个分支上采用了卷积核大小为3×3、膨胀系数依次为6、12、18、24的空洞卷积,以此实现每个分支具有不同的感受野大小,也就具有了解决目标多尺度问题的能力。🏆🏆🏆

大家还记得在DeepLabV1中提到的LargeFOV结构吗,不记得的话点击☞☞☞去了解下叭。🍄🍄🍄那么在DeepLabV2中就没有使用LargeFOV结构了喔,而是用的ASPP结构。其实通过上图你可能就会发现ASPP就像是在LargeFOV的基础上多并联了几个分支,即增加了多尺度信息,所以有了ASPP就用不着LargeFOV模块啦。🥗🥗🥗当然了,V2的论文中也给出了LargeFOV和ASPP的详细结构,如下图所示:

image-20230714154002948

这个图已经非常清晰的展示了ASPP的结构了,但有一点需要大家注意一下,即上图这两个结构都是基于backbone为VGG16绘制的【DeepLabV2中将backbone换成了resnet】,但是不管采用哪种backbone,ASPP结构的核心思想都是一样的,这里稍微来谈谈以resnet为backbone的ASPP结构是什么样的,如下图所示:

image-20230714155203530

我想大家一对比很容易就看出来了,此时每个分支都少了后面两层结构,这里大家注意一下就好。🍗🍗🍗

最后在给大家展示一下采用了ASPP的效果,如下图所示:

image-20230714160039769

其中,ASPP-S表示并联的四个分支采用的膨胀系数r依次为2、4、8、12;ASPP-L表示并联的四个分支采用的膨胀系数r依次为6、12、18、24;🌼🌼🌼

修改backbone

呀呀呀,在上一小节已经透露了,DeepLabV2使用的backbone为resnet,这可以说是最常见的一种网络了,是由咱们中国人何恺明大佬提出的,还不清楚的快点击☞☞☞学起来叭。这里为方便读者阅读,贴出resnet的相关参数,如下图:【以resnet101为例】

DeepLabV2在Layer2层之前的结构和resnet101是完全一致的,经过Layer2层后,图像已经下采样了8倍,和V1一样,现在不希望再过度的下采样导致丢失大量信息了,因此在Layer3和Layer4层不再进行下采样,同样采用空洞卷积来弥补不进行下采样减少的感受野,DeepLab的网络结构如下图所示:

image-20230714162842189

                 图片来自B站霹雳吧啦Wz

其中,Layer3、Layer4的详细结构如下:

image-20230714162926694

                 图片来自B站霹雳吧啦Wz

可以看到,在经过Layer4层后,特征图的下采样倍数仍然是8,大小为 28 × 28 × 2048 28×28×2048 28×28×2048。然后就会接入上文提及的ASPP结构,即并联一个膨胀系数分别为6、12、18、24的空洞卷积,注意一下这里的空洞卷积的卷积核个数都为number_class。🍵🍵🍵

设计poly学习率更新策略

在DeepLabV2中,作者设计了poly学习率更新策略,其公式如下:

l r = l r ∗ ( 1 − i t e r m a x _ i t e r ) p o w e r lr=lr*(1-\frac{iter}{max\_iter})^{power} lr=lr(1max_iteriter)power

其中power是一个超参,默认为0.9。 l r lr lr为初始学习率, i t e r iter iter为当前迭代的step数,$m a x _ i t e r 为训练过程中总的迭代步数。 p o l y 策略的 为训练过程中总的迭代步数。poly策略的 为训练过程中总的迭代步数。poly策略的lr$变化曲线大致如下图所示:

image.png
这样的策略会给实验效果带来多大的影响呢,如下表所示:

image-20230714165920525

震惊,有没有,直接提了3个多点,什么时候我也能成为炼丹大师。🍋🍋🍋

 

DeepLabV2实验对比

在V2中,作者在PASCAL VOC 2012语义分割基准数据集、PASCAL- context、PASCALPerson-Part和cityscape四个数据集上做了实验,下面分别展示一下。

PASCAL VOC 2012语义分割基准数据集🔒🔒🔒

image-20230714170928246

image-20230714171109985

PASCAL- context🔒🔒🔒

image-20230714171204847

image-20230714171218952

PASCALPerson-Part🔒🔒🔒

image-20230714171252473

image-20230714171314054

cityscape🔒🔒🔒

image-20230714171334661

image-20230714171353126

 

小结

好啦,DeepLabV2就为大家介绍到这里了,是不是非常简单腻,下一节将为大家带来DeepLabV3的原理和代码了喔,让我们一起加油叭!!!🌱🌱🌱

 

参考链接

DeepLabV2网络简析🍁🍁🍁

DeepLabV2论文🍁🍁🍁

[论文笔记] DeepLabv2🍁🍁🍁

 
 

如若文章对你有所帮助,那就🛴🛴🛴

一键三连 (1).gif

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小狐狸JSON-RPC:wallet_watchAsset(向钱包中新增资产代币)

wallet_watchAsset 请求用户在 MetaMask 中添加新的资产。返回一个布尔值,是否已成功添加。 var res await window.ethereum.request({ "method": "wallet_watchAsset","params": {"type": "ERC20","opti…

盘点库存怎么做账

库存的盘点是企业中非常重要的一步,也是仓管经常要做的工作,盘点通俗点说就是点一下实物与账面上的数据是否一至,来判断我们平时的货物管理是否与账面上的业务往来符合,盘点库存怎么做账? 按目前的情况来看&#xff0c…

【数据结构】Java中Map和Set详解(含二叉搜索树和哈希表)

目录 Map和Set详解 1.二叉搜索树 2.Map常见方法 3.Set常见方法 4.哈希表 Map和Set详解 Map:一种键值对结构,hashMap中键和值均可以为空,hashTable中则不可以存放null值 Set:一种集合,不能存放重复元素&#xff0c…

SpringBoot使用Jedis步骤

基础连接方式 引入依赖 <!-- Jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>创建Jedis对象&#xff0c;建立连接 操作字符串 方法名与Rdeis命令一致 操作Hash类型 释放资源 测…

【小米SU7实测发布】Python与人工智能的结合

小米在2023年底正式发布小米SU7,成为继华为之后第二个推出成品的的科技企业。不过此时小米需要做的不仅是打造一款产品力够高的车型,更是要以后发者的身份更快速地追上头部智驾车企。从昨天的发布会中可以发现,小米SU7采用双Orin-X芯片以及27个感知硬件组合,这套硬件组合在…

FFmpeg拉取RTSP流并定时生成10秒短视频

生成效果: 视频时长为10秒 生成格式为FLV 输出日志: 完整实现代码如下: 需要在Mac和终端先安装FFmpeg brew install ffmpeg CMake文件配置: cmake_minimum_required(VERSION 3.27) project(ffmpeg_open_stream) set(CMAKE_CXX_STANDARD 17)#头文件包目录 include_director…

ETL工具-nifi干货系列 第五讲 处理器GenerateFlowFile

1、今天我们一起来学习处理器GenerateFlowFile。这个处理器创建带有随机数据或自定义内容的 FlowFiles。GenerateFlowFile 对于负载测试、配置和模拟非常有用。从工具栏拖动处理器到画布&#xff0c;然后选择GenerateFlowFile即可。 2、点击add按钮或者双击 GenerateFlowFile可…

【蓝桥杯省赛真题34】python积木搭建 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

python积木搭建 第十三届蓝桥杯青少年组python比赛省赛真题 一、题目要求 &#xff08;注&#xff1a;input&#xff08;&#xff09;输入函数的括号中不允许添加任何信息&#xff09; 1、编程实现 小蓝和小青在玩积木搭建游戏&#xff0c;具体玩法如下: 小蓝报一个数字N&…

vue多语言包i18n

1.安装 如果是vue2直接安装8.2.1版本&#xff0c;否则会出现版本不匹配的错误 npm install vue-i18n8.2.1 --save2.文件编辑 在src目录下创建文件 en.js export const h {system: "Background management system",loginOut:"LoginOut",LayoutSet:Layout …

用搜索引擎收集信息-常用方式

1&#xff0c;site csdn.net &#xff08;下图表示只在csdn网站里搜索java&#xff09; 2&#xff0c;filetype:pdf &#xff08;表示只检索某pdf文件类型&#xff09; 表示在浏览器里面查找有关java的pdf文件 3&#xff0c;intitle:花花 &#xff08;表示搜索网页标题里面有花…

qtxlsx 学习

简介&#xff1a; QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件&#xff0c;可以在Qt5支持的任何平台上使用。 QXlsx和QAxObject 比较 QAxObject使用需要系统中安装了offie或wps&#xff0c;这种方法不推荐使用&#xff1b; 因为如果安装了wps&#xff0c;可…

4.Python数据分析—数据分析入门知识图谱索引(知识体系下篇)

4.Python数据分析—数据分析入门知识图谱&索引-知识体系下篇 一个人简介二机器学习基础2.1 监督学习与无监督学习2.1.1 监督学习&#xff1a;2.1.2 无监督学习&#xff1a; 2.2 特征工程2.3 常用机器学习算法概述2.3.1 监督学习算法&#xff1a;2.3.2 无监督学习算法&#…

Phoenix伪分布安装

引言 Phoenix是构建在HBase上的一个SQL层&#xff0c;能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表&#xff0c;插入数据和对HBase数据进行查询。Phoenix完全使用Java编写&#xff0c;作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫…

【保姆级讲解如何构建Python虚拟环境】

&#x1f525;博主&#xff1a;程序员不想YY啊&#x1f525; &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f4ab; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f308;希望本文对您有所裨益&#xff0c;如有…

SAP 前台处理:CO主数据之成本要素组创建-<KAH1>

一、背景 本章是成本要素主数据创建的续章&#xff0c;后续会用到成本费用的分摊分配&#xff0c;费用的统计中。 也是成本控制篇的内容之一 成本控制分主数据篇和业务篇&#xff1a; 主数据篇主要内容&#xff1a; 成本要素、成本中心、订单、作业类型、统计指标、工作中…

微服务(基础篇-006-Docker)

Docker是一个开源的应用容器引擎&#xff0c;它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何Linux机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间没有任何接口&#xff08;类似 iPhone 的 app&…

【一】TensorFlow神经网络模型构建之神经元函数及优化方法

TensorFlow神经网络模型构建主要涉及如下几块&#xff1a;神经元函数、卷积函数、池化函数、分类函数、优化方法。下面分别对这几块进行展开说明&#xff1a; 神经元函数及优化方法 神经网络之所以能解决非线性问题&#xff08;如语音、图像识别等&#xff09;&#xff0c;本…

互联网公司裁员现象调查:探寻背后原因与应对策略

近年来&#xff0c;随着互联网行业的快速发展&#xff0c;裁员现象日益引起广泛关注。本文通过对互联网公司裁员现象的调查&#xff0c;分析背后原因&#xff0c;探讨应对策略&#xff0c;以期为互联网企业和求职者提供参考。 近年来&#xff0c;我国互联网行业历经高速发展&am…

Uibot6.0 (RPA财务机器人师资培训第4天 )批量开票机器人案例实战

类似于小北之前发布的一篇博客&#xff08;不能说很像&#xff0c;只能说是一模一样&#xff09; Uibot (RPA设计软件&#xff09;财务会计Web应用自动化(批量开票机器人&#xff09;-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/136782171?spm1001.2014.3001.…

软考中级——软件设计师真题中的一些知识总结

2023年5月考过了软考中级——软件设计师&#xff0c;一次通过&#xff0c;两科成绩分别是入下。 做上午真题的时候积累了一些易错题&#xff0c;分享一下~~ 2014年5月 1、木马程序&#xff1a;是一种寻找计算机后门&#xff0c;伺机窃取被控计算机中的密码和重要文件等&#…