9.2.2 DeepLab系列模型中每一代的创新是什么?是为了解决什么问题?

2024-06-18 16:04

本文主要是介绍9.2.2 DeepLab系列模型中每一代的创新是什么?是为了解决什么问题?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

9.2.2 DeepLab系列模型中每一代的创新是什么?是为了解决什么问题?

前情回顾:9.2.1 简述图像分割中经常用到的编码器-解码器网络结构的设计理念。

DeepLab是Google 团队提出的一系列图像分割算法

DeepLab v1在2014年被提出,并在PASCAL VOC2012数据集上取得了图像分割任务第二名的成绩。

Google 团队之后还陆续推出了DeepLab v2和DeepLab v3。

DeepLab 系列已经成为图像分割领域不可不知的经典算法。

DeepLab v1

DeepLab v1算法主要有两个创新点,分别是

  1. 空洞卷积(Atrous Covolution)和
  2. 全连接条件随机场(fully connected CRF)

具体算法流程如图9.5所示。

  • 空洞卷积

空洞卷积是为了解决编码过程中信号不断被下采样、细节信息丢失的问题

问题:由于卷积层提取的特征具有平移不变性,这就限制了定位精度。

  • 全连接条件随机场

解决:所以DeepLab v1引入了全连接条件随机场提高模型捕获局部结构信息的能力

具体来说,将每一个像素作为条件随机场的一个节点,像素与像素间的关系作为边,来构造基于全图的条件随机场。参考文献[29]采用基于全图的条件随机场而非短程条件随机场(short-range CRF),主要是为了避免使用短程条件随机场带来的平滑效果。

正是如此,与其他先进模型对比,DeepLab v1的预测结果拥有更好的边缘细节。

DeepLab v2

相较于DeepLab vl,DeepLab v2的不同之处是

  1. 提出了空洞空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)[30]
  2. 并将 DeepLab v1 使用的VGG 网络替换成了更深的ResNet 网络

ASPP 可用于解决不同检测目标大小差异的问题:通过在给定的特征层上使用不同扩张率的空洞卷积,ASPP可以有效地进行重采样,如图9.6所示。模型最后将ASPP各个空洞卷积分支采样后的结果融合到一起,得到最终的分割结果。

DeepLab v3

DeepLab v3 在ASPP部分做了进一步改动。

  1. 首先,DeepLab v3加入了批归一化(BN)层

  2. 其次,将ASPP中尺寸为3x3、空洞大小为24的卷积(图9.6中最右边的卷积)替换为一个普通的1x1卷积,以保留滤波器中间部分的有效权重。

​ 这么做的原因是研究者通过实验发现,随着空洞卷积扩张率的增大,滤波器中有效权重的个数在减小。

  1. 为了克服长距离下有效权重减少的问题,DeepLab v3 在空洞空间金字塔的最后增加了全局平均池化以便更好地捕捉全图信息。

  2. 此外,DeepLab v3去掉了CRF

  3. 并通过将ResNet的Block4复制3次后级联在原有网络的最后一层来增加网络的深度。网络深度的增加是为了捕获更高层的语义信息。

改进之后的ASPP部分如图9.7所示[31]。
在这里插入图片描述

DeepLab v3+

  1. DeepLab v3+[32]在DeepLab v3的基础上,增加了一个简单的解码器模块,用来修复物体边缘信息
  2. 同时DeepLab v3+还将深度可分卷积(Depthwise Separable Convolution)应用到空洞空间金字塔和解码器模块上,以得到更快、更强大的语义分割模型。

总结与扩展

相比语义分割和实例分割,全景分割从2018年才开始兴起,虽然目前相关的研究还不是特别多,但已经可以观察到越来越多的机构将研究重心从语义分割、实例分割转移到全景分割上。可以预测,全景分割将会成为图像分割领域的下一个热点。

参考文献:
[29] CHEN L-C, PAPANDREOU G, KOKKINOS I, et al. Semantic image segmentation with deep convolutional nets and fully connected CRFs[J].arXiv preprint arXiv: 1412.7062,2014.
[30] CHEN L-C, PAPANDREOU G, KOKKINOS I,et al. DeepLab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017: 834-848.
[31] CHEN L-C, PAPANDREOU G, SCHROFF F, et al. Rethinking atrous convolution for semantic image segmentation[J]. arXiv: 1706.05587,2017.
[32] CHEN L-C, ZHU Y, PAPANDREOU G, et al. Encoder-decoder with atrous separable convolution for semantic image segmentation[C]//Proceedings of the European Conference on Computer Vision, 2018: 801-818.

这篇关于9.2.2 DeepLab系列模型中每一代的创新是什么?是为了解决什么问题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072461

相关文章

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

关于Nginx跨域问题及解决方案(CORS)

《关于Nginx跨域问题及解决方案(CORS)》文章主要介绍了跨域资源共享(CORS)机制及其在现代Web开发中的重要性,通过Nginx,可以简单地解决跨域问题,适合新手学习和应用,文章详细讲解了CO... 目录一、概述二、什么是 CORS?三、常见的跨域场景四、Nginx 如何解决 CORS 问题?五、基

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作