deeplab介绍

article/2025/10/23 22:04:38

■ 论文 | Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

■ 链接 | https://www.paperweekly.site/papers/1676

 

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

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

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

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

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

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

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

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 mIOU。

DeepLabv3

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

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

1. Image Pyramid:将输入图片放缩成不同比例,分别应用在 DCNN 上,将预测结果融合得到最终输出。

2. Encoder-Decoder:利用 Encoder 阶段的多尺度特征,运用到 Decoder 阶段上恢复空间分辨率,代表工作有 FCN、SegNet、PSPNet 等工。

3. Deeper w. Atrous Convolution:在原始模型的顶端增加额外的模块,例如 DenseCRF,捕捉像素间长距离信息。

4. Spatial Pyramid Pooling:空间金字塔池化具有不同采样率和多种视野的卷积核,能够以多尺度捕捉对象。

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

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

DeepLabv3+

DeepLabv3+ 架构

DeepLabv3+ 继续在模型的架构上作文章,为了融合多尺度信息,引入语义分割常用的 encoder-decoder。在 encoder-decoder 架构中,引入可任意控制编码器提取特征的分辨率,通过空洞卷积平衡精度和耗时。

在语义分割任务中采用 Xception 模型,在 ASPP 和解码模块使用 depthwise separable convolution,提高编码器-解码器网络的运行速率和健壮性,在 PASCAL VOC 2012 数据集上取得新的 state-of-art 表现,89.0 mIOU。

Xception 改进

Entry flow 保持不变,但是添加了更多的 Middle flow。所有的 max pooling 被 depthwise separable convolutions 替代。在每个 3x3 depthwise convolution 之外,增加了 batch normalization 和 ReLU。

实验

论文提出的模型在主干网络 ResNet-101 和 Xception均进行验证。两种方式均在 ImageNet 预训练。其中 Xception 预训练过程中,使用 50 个 GPU,每个 GPU batch size=32,分辨率 299x299。Xception 相比 ResNet-101,在 Top-1 和 Top-5 分别提高 0.75% 和 0.29%。

在实验过程中,分别考虑 train OS: The output stride used during training、eval OS: The output stride used during evaluation、Decoder: Employing the proposed decoder structure、MS: Multi-scale inputs during evaluation、 Flip: Adding left-right flipped inputs 等各种情况。

另外使用 depthwise separable convolution,使用 Pretraining on COCO 和 Pretraining on JFT,在这些 tricks 辅助下,PASCAL VOC 2012 test set 达到惊人的 89.0%,取得新的 state-of-the-art 水平。

结论

从 DeepLabv1-v4 系列看,空洞卷积必不可少。从 DeepLabv3 开始去掉 CRFs。

Github 目前还未有公布的 DeepLabv3,但是有网友的复现版本。DeepLabv3+ 更是没有源代码,复现起来估计有些难度。

DeepLabv3 复现:

https://github.com/NanqingD/DeepLabV3-Tensorflow

DeepLabv1-v4 没有用很多 tricks,都是从网络架构中调整,主要是如何结合多尺度信息和空洞卷积。从FCN,ASPP,Encoder-Decoder with Atrous Conv,每一个想法看上去在别的都实现过,但是论文综合起来就是有效。

Deeplabv1,v2 耗时为 8fps,从 Deeplabv3 开始,论文已经不说运行时间的问题,是否模型越来越慢了。

MobileNetV2 已经实现 Deeplabv3,并努力在 MobileNetV2 中复现 DeepLabv3+ 版本。

参考文献

[1] Semantic image segmentation with deep convolutional nets and fully connected CRFs

[2] DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

[3] Rethinking Atrous Convolution for Semantic Image Segmentation

[4] Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation


http://chatgpt.dhexx.cn/article/eFLnRnAc.shtml

相关文章

DeepLab一家

DeepLab是谷歌为了语义分割又做的一系列工作,在多个开源数据集中都取得了不错的成果,DeepLabv1发表于2014年,后于2016、2017、2018分别提出了V2,V3以及V3的版本,在mmsegmentation里面主要集成了V3以及V3的版本&#xf…

深度学习论文精读[13]:Deeplab v3+

Deeplab v3是Deeplab系列最后一个网络结构,也是基于空洞卷积和多尺度系列模型的集大成者。相较于Deeplab v3,v3版本参考了UNet系列网络,对基于空洞卷积的Deeplab网络引入了编解码结构,一定程度上来讲,Deeplab v3是编解…

语义分割网络系列3——DeepLab

DeepLab 1 介绍1.1 背景1.2 Deeplab V1介绍1.3 结构1.4 特点1.4.1 空洞卷积的使用1.4.2 CRF的应用 1.5 DeepLab系列总结 2 代码3 总结参考资料 1 介绍 相比于传统的视觉算法(SIFT或HOG),Deep-CNN以其end-to-end方式获得了很好的效果。这样的成功部分可以归功于Deep…

DeepLabV3网络简析

论文名称:Rethinking Atrous Convolution for Semantic Image Segmentation 论文下载地址:https://arxiv.org/abs/1706.05587 非官方Pytorch实现代码:pytorch_segmentation/deeplab_v3 视频讲解:https://www.bilibili.com/video/…

DeepLab系列(v1,v2,v3,v3+)总结

U-net: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation 语义分割面临的挑战1. DeepLab v1——《Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs》(ICLR 2015,谷歌)2. Deep…

一文理解DeepLab V1到DeepLab V3+(超系统、超详细)

文章目录 预备知识空洞卷积 1、DeepLab V11.1 基于VGG模型1.2 总体架构1.2.1 Fully Connected CRF(条件随机场) 1.3 DeepLab V1模型实验 2、DeepLab V22.1 整体架构2.2 训练策略2.2.1 学习率的调整 3、DeepLab V33.1 cascade形式的DeepLab V33.2 paralle…

微信小程序+SpringBoot接入后台服务,接口数据来自后端

文章底部有个人公众号:小兔教你学编程。主要目的是方便阅读。主要分享一些前后端初中级知识、开发实战案例、问题解决等知识。 前言 前两天开发了一个微信小程序项目,只不过接口数据是自己设置的假数据。然后我就想将这些假数据替换掉。这些数据来自接口…

Python3 - 三天学会微信小程序(Python后端研习)

文章目录 一、day01微信小程序1. 问题2. 环境的搭建2.1 Python环境2.2 小程序环境2.2.1 申请一个微信公众平台2.2.2 保存自己的appid2.2.3 下载开发者工具2.2.4 创建项目 3. 开发小程序3.1 全局配置3.2 组件3.2.1 text3.2.2 view3.2.3 image 3.3 样式3.3.1 4. flex布局5. 实战 …

微信小程序快速搭建

1 1. 申请账号 申请账号 1. 进入小程序注册页根据指引填写信息和提交相应的资料,完成账号申请。 说明: 如果跳转后页面出现错误,请刷新访问。 2. 使用申请的微信公众平台账号登录小程序后台,单击开发 > 开发设置,…

【微信小程序】前端+后端 :第一篇(基于javaweb 案例)

博主:👍不许代码码上红 欢迎:🐋点赞、收藏、关注、评论。 文章目录 一、创建javaweb(idea)二、servlet代码三、配置tomcat四、微信小程序端4.1、创建一个新的页面pages4.2、demo2.js4.3、demo2.wxml 五、运…

怎样创建微信小程序?创建小程序难不难?

小程序现在为众多的企业商家提供了营销上的巨大帮助,小程序也已经成为了这些企业商家的标配,即使是初创的企业商家都会先去了解怎样创建微信小程序,创建小程序难不难等问题,那么下面就给大家分享怎样创建微信小程序,创…

uniapp和springboot微信小程序开发实战:后端架构搭建之创建springboot项目

文章目录 使用STS创建boot项目引入项目依赖配置相关信息配置tomcat配置redis配置mysql数据库6.启动服务验证搭建环境使用STS创建boot项目 打开STS,新建Spring Starter Project项目,出现如下所示界面,根据提示填写图片上需要填写的内容。 引入项目依赖 <!-- redis -->…

微信小程序商城搭建小程序服装购物商城+后台

&#x1f345;文末获取联系&#x1f345; 目录 一、项目介绍 5.2.1 小程序端总体框架 二、项目相关截图 三、源码获取 一、项目介绍 计算机毕业设计微信小程序毕设项目之微信小程序服装商城后台管理系统_哔哩哔哩_bilibili计算机毕业设计微信小程序毕设项目之微信小程序服…

微信小程序搭建怎么做?流程是怎么样?【小程序搭建】

随着微信的日益普及&#xff0c;小程序成为了企业必备的营销工具。而在这个过程中&#xff0c;企业也需要搭建一个自己的小程序来进行推广和销售产品或服务。那么微信小程序搭建怎么做呢&#xff1f; 流程一&#xff1a;小程序账号的注册 注册小程序账号有两种方式&#xff1…

基于Python Django框架后端的微信小程序开发

刚做完一个股票信息服务类的微信小程序&#xff08;小程序名字“博股论基”&#xff0c;大家有兴趣可以搜一下&#xff09;&#xff0c;也有一些心得&#xff0c;在这里记录一下开发过程&#xff0c;算是个开发笔记&#xff0c;同时也希望能给需要的同学一些帮助。 ----------…

非常曲折的新手小白微信小程序springboot后端部署阿里云ESC服务器经历

最近因为参加了大学生“互联网”大赛&#xff0c;需要搭建微信小程序&#xff0c;但发现小程序云开发环境居然收费了&#xff01;于是转战springboot完成后端搭建&#xff0c;再用阿里云送的7个月学生免费服务器部署代码&#xff08;高校计划 - 免费学生云服务器&#xff09; 领…

微信小程序登录注册--python搭建后端

这个程序不连数据库&#xff0c;所以一旦python程序重启前面的注册就没用了 这个程序不连数据库&#xff0c;所以一旦python程序重启前面的注册就没用了 这个程序不连数据库&#xff0c;所以一旦python程序重启前面的注册就没用了 这里无脑简单介绍一下这个low到爆炸的小程序…

微信小程序入门04-后端脚手架搭建

我们上一篇已经介绍了权限系统的库表搭建&#xff0c;光有表还是不够的&#xff0c;我们还需要有一个后台系统和数据库进行交互。搭建后台的时候既需要选择使用什么语言&#xff0c;也需要选择框架。 框架分为前端框架和后端框架。在第一篇微信开发者工具搭建的时候我们其实前…

基于node搭建前端服务器,nodejs做微信小程序后端

利用小程序进行云开发必须安装node.js吗 任何一种后台开发语言都是可以的&#xff0c;只要它能够接收到小程序发出的请求&#xff0c;并且能够按照小程序指定的格式&#xff08;通常就是json&#xff09;返回数据给小程序就行。 但是&#xff0c;小程序官方专门为和php制作了…

微信小程序后台服务怎么搭建

小程序是目前最大的流量风口&#xff0c;与APP不同的是小程序的便捷&#xff0c;也就是小程序的核心竞争力与理念&#xff0c;不过小程序和APP的相同点都是属于应用&#xff0c;因此需要后台服务的支持&#xff0c;微信小程序的后台搭建常用到腾讯云&#xff0c;包括云数据库与…