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

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

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-CNN对图像转换的平移不变性(invariance),这根本是源于重复的池化和下采样组合层。平移不变性增强了对数据分层抽象的能力,但同时可能会阻碍低级(low-level)视觉任务,例如姿态估计、语义分割等,在这些任务中我们倾向于精确的定位而不是抽象的空间关系。

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

1.1 背景

在这里插入图片描述
在实验中发现DCNNs做语义分割时精准度不够的问题,根本原因是DCNNs的高级特征的平移不变性(即高层次特征映射)。

1.2 Deeplab V1介绍

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

与其他先进模型的主要区别在于DenseCRFs和DCNN的结合。是将每个像素视为CRF节点,利用远程依赖关系,并使用CRF推理直接优化DCNN的损失函数。拓展:Koltun(2011)的工作表明完全连接的CRF在语义分割下非常有效。

在这里插入图片描述

1.3 结构

在这里插入图片描述
1、把最后的全连接层FC6、7、8改造成卷积层
2、pool4的stride由2变为1,则紧接着的conv5_1, conv5_2和conv5_3中hole size为2。接着pool5由2变为1, 则后面的fc6中hole size为4。
3、fc7,8为标准卷积

由于Hole(Atrous convolution)算法让feature map更加dense,所以网络直接用差值升采样就能获得很好的结果,而不用去学习升采样的参数了(FCN中采用了de-convolution)

FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先减小再增大尺寸的过程中,肯定有一些信息损失掉了,那么能不能设计一种新的操作,不通过pooling也能有较大的感受野看到更多的信息呢?答案就是dilated conv/atrous conv

1.4 特点

两个

1.4.1 空洞卷积的使用

DeepLab是采用的atrous(带孔)算法扩展感受野,获取更多的上下文信息

从两个角度考虑空洞卷积:

相当于在标准概念的kernel(卷积核)中,相邻点之间添加(rate - 1)个0,然后使用扩张后的kernel(卷积核)与原图进行卷积。下面的图rate=2,相当于标准的3x3卷积核变为5x5卷积核,每一行中间添加(2-1)个0

也就是说3x3的kernel在rate为2的情况下得到相当于5x5的空洞kernel,但是只有图中的9个点的权重不为0,其余都为0。 可以看到虽然kernel size只有3x3,但是这个卷积的感受野已经增大到了7x7。
在这里插入图片描述

1、dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。采样率为r的空洞卷积插入r−1个零,将k×k的卷积核变为ke=k+(k−1)(r−1)而不增加计算量。下图表示含有空洞卷积和不用空洞卷积的效果。结果就是使用采样率计算更加密集的特征映射。

在这里插入图片描述
2、增大感受野的同时,不增加参数数量
在这里插入图片描述

在这里插入图片描述

1.4.2 CRF的应用

1、DCNN的预测物体的位置是粗略的,没有确切的轮廓。图像输入CNN是一个被逐步抽象的过程,原来的位置信息会随着深度而减少甚至消失.
2、CRFs for accurate localization
CRF:简单来讲就是每个像素点作为节点,像素与像素间的关系作为边,即构成了一个条件随机场。通过二元势函数描述像素点与像素点之间的关系,鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签。
CRF在传统图像处理上主要做平滑处理。就是在决定一个位置的像素值时,会考虑周围邻居的像素值,这样能抹除一些噪音。
但对于CNN来说,short-range CRFs可能会起到反作用,因为我们的目标是恢复局部信息,而不是进一步平滑图像。引入fully connected CRF来考虑全局的信息。

1.5 DeepLab系列总结

在这里插入图片描述

2 代码

3 总结

1、使用空洞卷积,而不是pooling层,在不改变参数量的情况下保留更多的空间信息。
2、CRF
CRF在传统图像处理上主要做平滑处理。就是在决定一个位置的像素值时,会考虑周围邻居的像素值,这样能抹除一些噪音。
但对于CNN来说,short-range CRFs可能会起到反作用,因为我们的目标是恢复局部信息,而不是进一步平滑图像。引入fully connected CRF来考虑全局的信息。

参考资料

https://blog.csdn.net/longxinghaofeng/article/details/85258124
https://www.jianshu.com/p/9184455a4bd3


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

相关文章

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;包括云数据库与…

3.1【微信小程序全栈开发课程】在本地搭建后端开发环境

第二章将前端页面的框架基本搭建好了&#xff0c;第三章&#xff0c;我们来做登录功能&#xff0c;登录功能需要在后端获取到用户信息&#xff0c;返回到前端。所以先来搭建后端开发环境 1、后端开发环境介绍 我们的项目用的是前后端分离开发 前端可以理解为微信端&#xff…

微信小程序如何搭建自己的后台(超详细,超完整)(上线必备)!!!

首先&#xff0c;今天是个特殊的日子&#xff0c;请让我先说上一句&#xff1a;幸运女神在微笑 思路 ①&#xff1a;首先我们需要拥有自己的 AppID &#xff08;有点废话了&#xff09;。 ②&#xff1a;我们需要有一个后台&#xff0c;即服务器。域名&#xff08;需备案&am…

人工智能(搜索策略)

有信息搜索(Informed Search)&#xff1a; 1. 又称为启发式搜索(Heuristic Search) 2. 搜索过程中利用与问题有关的经验信息 3. 引入估计函数(evaluation function)来估计节点位于解路径上的“希望”&#xff0c;函数值越小“希望”越大 4. 搜索过程中按照估价函数的大小对…