首页 > 其他分享 >详尽 | Deeplabv3+结构理解

详尽 | Deeplabv3+结构理解

时间:2024-08-19 14:52:50浏览次数:14  
标签:Dilated 卷积 理解 rate 详尽 特征 空洞 Deeplabv3 SPP

https://arxiv.org/pdf/1802.02611.pdf

https://link.springer.com/chapter/10.1007/978-3-319-10578-9_23

目录

Deeplabv3+

Encoder部分

Decoder部分

补充摘要

SPP 空间金字塔池化层模块

Dilated/Atrous Conv 空洞卷积


Deeplabv3+

deeplab-v3+是语义分割网络,组合采用空洞卷积空间金字塔池模块和编码器-解码器结构。

Encoder部分

输入经过backbone骨干网络(图中深度卷积神经网络DCNN Atrous Conv的部分)得到两个输出:一个是low-level feature低级特征,其直接提供给Decoder,这是个output=4x的输出;另一个是high-level feature高级特征,其经过ASPP空间金字塔池模块,这是个output=16x的输出。

  • input stride为进行卷积时候设置的stride值
  • output stride为矩阵经多次卷积池化操作后尺寸缩小的值

high-level feature高级特征经过ASPP空洞卷积空间金字塔池模块的5个不同操作得到5个输出,其中1个1×1卷积,3个不同rate的dilated conv空洞卷积,1个ImagePooling全局平均池化。这5个输出经过concatenate连接层和1×1卷积层得到output stride=16x的输出。

  • ASPP是在SPP的基础上加入Dilated/Atrous Convolution空洞卷积实现的
  • 相比conv,Dilated conv多了一个 hyper-parameter:dilation rate
  • dilation rate指kernel的间隔数,正常conv的dilatation rate为1

  • SPP即空间金字塔池,解决CNN输入图像大小必须固定的问题
  • CNN的第一个全连接层要求固定的输入大小,例如VGG模型要求输入大小224*224
  • SPP能够使得输入图像高宽比和大小任意,有效解决多目标分割等问题。
  • 这里ImagePooling对特征进行全局平均池化之后再上采样到原来大小
  • 卷积可以局部提取特征,ImagePooling可以全局提取特征,这样就得到了多尺度特征
  • 特征通过concatenate层叠加,而不是add层直接相加

Decoder部分

上面的Encoder部分为Decoder部分提供了两个输入

low-level featur低级特征经过1x1卷积调整维度(output stride=4x)low-level feature调整到48 channels时效果最好;

high-level featur高级特征上采样4倍,使得output stride从16x变为4x,再将两个4x特征通过concatenate层连接。

再连接一个或多个的3×3卷积(接2个out_channels=256的3x3卷积,输出效果较好),再上采样4倍得到Dense Prediction密集预测,即预测图像中的每个像素,语义分割。

这里Deeplabv3+的Decoder部分的上采样模块均通过双线性插值实现

补充摘要

SPP 空间金字塔池化层模块

input image输入层,可以为任意大小。输入后进行卷积运算,到最后一个卷积层输出得到该层的feature maps特征映射,其大小也是任意的。

Spatial Pyramid Pooling layer SPP层。以最左侧16X256-d为例,16表示将从前面卷积得到的特征映射分成16份,256表示channel通道数,即SPP对每一层都分成16份,进行池化操作,一般进行max pooling最大池化。中间右侧同理,即将特征映射分别分成4X256和1X256。

通过SPP层,特征映射被转化成16X256+4X256+1X256=21X256的矩阵,在送入全连接时可扩展成一维矩阵1X10752,所以第一个全连接层的参数设置为10752,有效解决输入数据大小的问题。

注意分法可自由调整,不一定等分

Dilated/Atrous Conv 空洞卷积

Dilated / Atrous Convolution / Convolution with hole,中文为空洞卷积(也有称为膨胀卷积),

  • 其是在标准的 convolution map 里注入空洞,以此增加 reception field感受野。
  • 相比常规conv,Dilated conv多了一个超参数dilation rate,指kernel的间隔数
  • 可以认为常规 convolution 的 dilatation rate 为 1

通过图示可以很好理解

以下是3*3 kernal and 1 dilation rate的常规卷积

3*3 kernal 的常规卷积

以下是3*3 kernal and 2 dilation rate的空洞卷积

3*3 kernal and 2 dilation rate的空洞卷积

 与其他卷积对比

标签:Dilated,卷积,理解,rate,详尽,特征,空洞,Deeplabv3,SPP
From: https://blog.csdn.net/weixin_73404807/article/details/141257117

相关文章

  • 深入理解指针!!!由浅入深!!1
    1.内存与地址1.1内存计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,而内存空间是如何高效的管理的呢?其实是把内存划分成为一个个的内存单元,每个内存单元的大小取1个字节。每个内存单元也都一个编号,有了这个内存单元的编号,CPU......
  • 全面盘点:大模型常用评测基准大全,全网最详尽版本,CSDN独家福利随文附赠!
    基于评测维度,考虑到各评测集关注的评测维度,可以将其划分为通用评测基准和具体评测基准。文章目录通用评测基准SuperCLUEC-EvalOpenLLMLeaderboardChatbotArenaGLUE具体评测基准MMLU(MassiveMultitaskLanguageUnderstanding)AGIEvalGSM8KMT-benchPromptBench总结C......
  • 深入理解Kerberos:现代网络身份验证的基石
    在当今的分布式计算环境中,网络安全已成为企业和组织最为关注的问题之一。为了确保用户在网络上的身份真实性并保护敏感数据,采用安全且有效的身份验证机制至关重要。而Kerberos,作为一种经典且广泛应用的网络身份验证协议,正是解决这一问题的核心工具之一。一、什么是Kerberos......
  • torch.stack 堆叠函数帮助理解多维数组
    概论在PyTorch中,torch.stack函数用于在指定的维度上将一组张量堆叠起来。这个操作会在指定维度上创建一个新的维度,并将输入张量在该维度上进行堆叠。假设有两个形状相同的张量a和b,它们的形状都是(2,3,4),那么在不同的dim参数下使用torch.stack会产生不同的结果。以......
  • 深入理解 `@DateTimeFormat` 和 `@JsonFormat` 注解
    前言在Java应用程序中,处理日期和时间是一个常见的需求。无论是从数据库读取还是通过API接收数据,正确的日期和时间格式都是确保应用正确运作的关键因素。本文将深入探讨两个常用的注解——@DateTimeFormat和@JsonFormat——以及它们如何帮助我们在Spring和使用Jackson库的应......
  • 线程的理解与创建
    线程定义‌线程是‌操作系统能够进行运算调度的最小单位,它是‌进程中可独立执行的子任务。线程是操作系统中用于并发执行任务的基本单元,每个进程可以包含一个或多个线程。这些线程在进程中并发执行,允许同时处理多个任务,从而提高系统的整体性能和响应速度。线程与进程的区别......
  • 深入理解JVM运行时数据区(内存布局 )5大部分 | 异常讨论
    前言:    JVM运行时数据区(内存布局)是Java程序执行时用于存储各种数据的内存区域。这些区域在JVM启动时被创建,并在JVM关闭时销毁。它们的布局和管理方式对Java程序的性能和稳定性有着重要影响。  一、由以下5大部分组成1.Heap堆区(线程共享)概念:堆是JVM中最大......
  • 深入理解 Spring 三级缓存:解决单例 Bean 循环依赖的利器
    目录一、什么是循环依赖?二、关于传说中的三级缓存1.基本概念:2.三级缓存是哪三级? 3.【举个例子】那三级缓存是怎么解决上述代码例子中的A、B互相依赖呢?详细过程:(理解用)简约版:(理解后看这个就行)三、关于三级缓存的适用范围适用的循环依赖范围:不适用的循环依赖范围:四、......
  • 二分查找不理解?一篇弄懂!--基础二分查找算法详细解释(带简单例题的详细解法)
    本文参考:灵茶山艾府分享丨【题单】二分算法(二分答案/最小化最大值/最大化最小值/第K小)-力扣(LeetCode)二分查找红蓝染色法_哔哩哔哩_bilibili本文主要详细讲解基础的二分算法中的查找,包括原理和模板,并用leetcode和洛谷的一些例题来进行实际题目讲解,如果觉得有帮助或者写......
  • 【漫谈C语言和嵌入式005】深入理解RAM与ROM:嵌入式系统存储器的核心
            在嵌入式系统设计中,存储器的选择与管理至关重要。存储器直接影响系统的性能、功耗和功能实现。在众多存储器类型中,RAM(随机存取存储器)和ROM(只读存储器)是最基本也是最重要的两类。理解它们的特点、区别和应用场景,对于设计高效、可靠的嵌入式系统至关重要。1.RA......