Dilated Convolution(空洞卷积、膨胀卷积)详解

news/2024/5/15 19:26:34/文章来源:https://blog.csdn.net/qq_47233366/article/details/126617135

 

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

🍊往期回顾:目标检测系列——开山之作RCNN原理详解    目标检测系列——Fast R-CNN原理详解   目标检测系列——Faster R-CNN原理详解

🍊近期目标:拥有10000粉丝
🍊支持小苏:点赞👍🏼、收藏⭐、留言📩

文章目录

  • Dilated Convolution(空洞卷积、膨胀卷积)详解
    • 写在前面
    • 何为空洞卷积✨✨✨
    • 为何要用空洞卷积✨✨✨
    • 空洞卷积存在的缺陷✨✨✨
    • 如何高效利用空洞卷积✨✨✨
    • 小结

 

Dilated Convolution(空洞卷积、膨胀卷积)详解

写在前面

​  首先,来谈谈我是如何一步步接触Dilated Convolution (后文都叫空洞卷积了)的。在一次机缘巧合下,我恰巧瞅到师姐的论文,上面就闪晃晃的写有空洞卷积四个大字,我当时想的是这是什么玩意,听名字有点高大上,于是课下就搜了搜,发现还是挺有意思的,但也一直没有详细的看过,只能说有一个大致的了解,知道这家伙是干什么的。后面是在一门叫学科前言讲座的课程上,听同学提及了这个空洞卷积,讲的非常详细,也谈到了空洞卷积的一些缺陷和解决方法,我记得我当时还问了一些问题,当时觉得这门课程挺累的,但现在回头来看还是很有价值的。最后就是今天较全面的学习了空洞卷积的知识,即将分享给大家。🌼🌼🌼

  这篇文章呢,还是主要参考了霹雳吧啦Wz关于此部分的视频。🌻🌻🌻讲的非常透彻,但是可能由于视频时长等原因,一些点视频中描述的还是不详细的,这里我还是建议大家时间允许的话可以先看看视频,对应视频中有所困惑的地方再来这篇文章找找思路。当然了,如果你想快速的掌握空洞卷积,我认为看这篇文章也足够了。🌷🌷🌷

  准备好了吗,我们这就发车。🚖🚖🚖

 

何为空洞卷积✨✨✨

​  什么是空洞卷积呢,我先不给你说,先来看看我们正常的卷积操作是怎样的,如下图所示:

no_padding_no_strides

​  上图展示了一般卷积的过程,其卷积核大小为3×3,步长s=1。

  看完了熟悉的卷积操作,接着我们来看看何为空洞卷积,如下图所示:

dilation

  上图展示了空洞卷积的过程,其卷积核大小为3×3,步长s=1,r=2。你或许会问了,这个r是什么呢,其实啊,这个r正是普通卷积和空洞卷积的差别所在,我们称之为膨胀因子。当r=1时,表示卷积核各元素之前没有空隙,即相邻两个元素间位置相差1,此时其实就是我们正常的卷积,所以广义上说,普通的卷积是一种特殊的空洞卷积;当r=2时,表示卷积核各元素之前有一个空隙,即相邻两个元素间位置相差2,此时就是我们上图中的卷积核,为方便大家理解,我把上图r=2时的卷积核提取出来,如下图所示:

image-20220826220545773

​   当然了当r=3、r=4都是同样的道理,这里就不过多叙述了。

 

为何要用空洞卷积✨✨✨

​   我们知道了什么是空洞卷积,自然想要问我们为什么要用空洞卷积呢?其实使用空洞卷积最主要的用途就是增大感受野。enmmm,保姆级教学,我先来为大家介绍一下什么是感受野?感受野就是指特征图上的一个像素对应原图多少尺寸的像素,我画一个简单的图来为大家解释一下:

image-20220826224134320

​   上图是一个普通卷积的过程,卷积核大小为3×3,步长s=1。可以发现,所得特征图中一个1×1像素区域(灰绿色)对应了原图中的3×3大小的区域,这就是3×3大小卷积核的感受野。

​   我们再来看,当我们对刚刚得到的特征图(橙色)再经过一次3×3卷积,如下图所示:

image-20220826224904623

​   很显然,此时最后一层特征图中一个1×1像素区域(青蓝色)对应了橙色特征图中的3×3大小的区域,这也是3×3大小卷积核的感受野。

​   那么,现在我将上述两步放在一起,如下图所示:

image-20220826225156520

​   那么请问,此时最后一层特征图中一个1×1像素区域(青蓝色)对应原图多少尺寸大小的区域呢?答案是5×5,因为青蓝色像素感受野包含了整个橙色的区域,而整个橙色区域的感受野正是下方5×5区域大小的范围。【这里应该也好理解吧,大家可以自己动手画画理解理解】

​   通过上文叙述,我们知道了感受野是怎么计算的了,下面给出计算感受野的公式,如下:


Fi=(Fi−1−1)×stride+kF_i=(F_{i-1}-1)×stride \ + \ kFi=(Fi11)×stride + k

​   其中,FiF_iFi表示第iii层的感受野,Fi−1F_{i-1}Fi1表示i−1i-1i1层的感受野,srtidesrtidesrtide表示步长,kkk表示卷积核大小。我们可以将公式代入到上面的例子中验算一下是否正确。首先,蓝色、橙色、青蓝色特征图分别表示3层、2层、1层,现我们要计算1层相对于3层的感受野,首先我们要计算出1层对于2层的感受野,即

F2=(F1−1)×1+3=(1−1)×1+3=3F_2=(F_{1}-1)×1 \ + \ 3=(1-1)×1+3=3F2=(F11)×1 + 3=(11)×1+3=3

​   得到了F2F_2F2,我们就可以计算1层相对于3层的感受野,即

F3=(F2−1)×1+3=(3−1)×1+3=5F_3=(F_{2}-1)×1\ + \ 3=(3-1)×1+3=5F3=(F21)×1 + 3=(31)×1+3=5

【注:对于感受野,我觉得很有必要很大家强调一点,即我们所说的感受野都是相对于原图说的,即某层特征图中一个像素尺寸对应原图多少像素尺寸】


​   我想通过上文的解释,大家对感受野的计算已经有所了解了。再回到本节的问题上——为什么要使用空洞卷积。使用空洞卷积一个关键原因就是可以增大感受野,这样在检测、分割任务中就能对大尺寸物体表现出较好的效果。至于空洞卷积为什么可以增大感受野,我觉得也非常好理解啊,如下图所示:

​   上图表示使用3×3的卷积核进行空洞卷积,r=2,很明显,此时灰色特征层的感受野为5×5。其实呢,计算空洞卷积感受野也有公式,我们这样来思考,上图是3×3的卷积核,r=2,这样构成的一个空洞卷积核(乱起的名字哈,不用在意)的尺寸就相当于是5×5大小了,这时候我们感受野的计算就相当于5×5卷积核的感受野了。既然这样,我们能否找到空洞卷积核大小和原始卷积核大小的关系呢?当然可以啦,如下:

k′=k+(k−1)(r−1)k'=k+(k-1)(r-1)k=k+(k1)(r1)

k′k'k表示空洞卷积核大小,kkk表示原始卷积核大小,rrr表示膨胀因子。大家可以试着将这个公式代入进去,验证公式的正确性!!!既然有了k′k'k,我们就可以利用原来计算感受野的公式得到计算空洞卷积感受野的公式了,如下:

Fi=(Fi−1−1)×stride+k′=(Fi−1−1)×stride+k+(k−1)(r−1)F_i=(F_{i-1}-1)×stride \ + \ k'=(F_{i-1}-1)×stride \ + \ k+(k-1)(r-1)Fi=(Fi11)×stride + k=(Fi11)×stride + k+(k1)(r1)

​   这里大家就自己验证了喔,好好琢磨琢磨,后面会用到这个知识点!!!🌴🌴🌴🌴

 

空洞卷积存在的缺陷✨✨✨

​   上文谈及了空洞卷积可以增大感受野,这是空洞卷积本身的优势。那空洞卷积是否有缺陷呢?关于这点大家可以看看这篇论文,该篇论文就主要介绍了空洞卷积存在的缺陷以及解决方案。

​   其实啊,空洞卷积的缺陷主要体现在存在网格效应,我们可以来看一下下图:

image-20220827102952147

​   上图的卷积核大小都是3×3,r=2。第一次空洞卷积后的感受野为5×5,第二次空洞卷积后感受野大小为9×9,第三次空洞卷积后感受野大小为13×13。【这很容易得到,大家套我上文给出的公式即可】

​ 我们可以看到,连续使用三次r=2的空洞卷积会导致中间有很多空格,即很多像素没有利用到,这会导致出现网格效应,我们拿语义分割为例,如下图所示:

image-20220827104153134

​   可以看到,在分割结果中存在很多很多的不连续的小网格区域,这就是网格效应,也是空洞卷积带来的副作用。

​   我们再来看看本小节的第一张图,你可以发现,小网格上颜色的深度是不一致的。其实啊,颜色的深度表示该像素利用了原始特征图上像素的次数。是不是不好理解呢,这里我详细的说一下。【这一部分推荐视频中也没有介绍的很清楚,下面几张图片都来自视频】

​   首先我们来看一下,经过第一次3×3的卷积,每个像素都只利用了原图上的一个像素,这很好理解,如下图:

image-20220827105119123

​   接下来,经过第二次空洞卷积,得到的结果如下:

image-20220827105359169

​   这次看着复杂多了,但其实你要明白了某个数字是怎么得到的,其它的都很简单了。我们来看上图最中间红色的9怎么得到的,如下图所示:

image-20220827105921173

​   右图中的一个像素是由左图的9个像素得到,而左图9个像素都只对应原图上了一个像素,故右图红色点上数字为9。我们再以左上角的一个像素为例,如下:

image-20220827110322298

​   上面右图中左上角的一个像素对应左图中9个像素,而这9个像素只有包含一个红色像素,故左上角的数字为1。介绍了这两个例子后,大家可以尝试其它的数值。🍜🍜🍜

​   最后,经过第3次空洞卷积后,得到下图:

image-20220827110748582

​   这里我就不带大家看了,通过上文的讲解,相信大家能自己解决了。🥂🥂🥂

 

如何高效利用空洞卷积✨✨✨

​   既然空洞卷积存在着网格效应,那有什么方法可以解决这个问题吗。开门见山,论文中巧妙的使用了不同膨胀因子的空洞卷积,这样就能有效解决空洞卷积网格效应的问题,如下图所示:

image-20220827113243464

​   是不是发现没有网格了呢,而且感受野大小也是一样的。这里在来看看使用这种方式在语义分割中的效果,如下图:

image-20220827113521393

​   大家应该能很直观的感受到使用不同r的空洞卷积的效果要更好。🌿🌿🌿

 

小结

​   关于空洞卷积的知识就为大家介绍到这里了,如若你还有不了解的地方,可以评论区咨询,希望我们一起进步。🌼🌼🌼

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

咻咻咻咻~~duang~~点个赞呗

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

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

相关文章

linux常用的通配符与正则表达式

我们在很多地方都会用到通配符和正则表达式来实现我们的日常操作,提高我们的工作效率。但是很多新伙伴,往往容易将他们弄混。 首先我们需要知道通配符和正则表达式的使用场景: 通配符也叫文件名替换,它主要是作用于匹配文件名,常用命令是ls、find、cp、mv; 正则表达式主要…

视觉SLAM十四讲学习笔记--第七讲视觉里程计学习笔记总结(1)

专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和Ei…

Springboot人体健康检测微信小程序毕业设计-附源码012142

摘 要 本文设计了一种基于微信小程序的人体健康检测小程序,主要为人们提供了方便的各项健康检测服务,包括健康数据编辑、健康科普、健康讨论、注册登录功能等,用户能够方便快捷地查看健康科普知识、进行健康数据信息的上传等。人体健康检测微…

(附源码)ssm医药销售管理系统 毕业设计 042322

SSM医药销售管理系统 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采SSM技术和mysql数据库来完成对系统的…

[JavaEE系列] Thread类的基本用法

文章目录线程创建第一类: 继承 Thread 类继承 Thread 类, 重写 run 方法使用匿名内部类, 继承 Thread 类, 重写 run 方法第二类: 实现 Runnable 接口实现 Runnable 接口, 重写 run 方法使用匿名内部类, 实现 Runnable 接口, 重写 run 方法第三类: 使用 lambda 表达式启动线程比…

java基于springboot+vue的在线求助系统

随着时代的发展,越来越多的人需要帮助,尤其是对一些孤寡老人和婴幼儿,儿童来说因为身体机能的缺陷等因素,更是希望得到更多的人的帮助。更让需要帮助的能够在线求助,为了让想要帮助别人的人能够在线看到别人的需求&…

17.EC实战 开发板开发环境搭建、程序烧录及运行代码过程

文章目录 前言EC源代码下载并搭建编译环境固件烧录程序的执行前言 去年的博文 基于ITE12.4代码的编译环境搭建 ,本文将在此基础上进行实战练习,基于我们之前做的EC开发板,EC芯片使用的是ITE8987,本教程将实现开发板开发环境搭建、程序烧录及运行代码过程。 首先介绍一下开…

Django简介(基本操作命令|目录结构|小白三板斧)

文章目录一、Django框架简介二、Django基本操作命令三、命令行与Pycharm操作的区别四、Django目录结构五、Django小白必会三板斧一、Django框架简介 1.版本问题1.X:同步 现在都不使用了同步速度慢2.X:同步 现在基本都使用同步速度慢3.X:异步…

zookeeper核心源码分析

zookeeper server单机启动流程 (1) 加载zookeeper配置文件zoo.cfg(2) 创建Jetty Admin Server监听(监听zk server)(3) 创建ServerCnxnFactory(默认是NIO,可以配置为Netty)(4) ServerCnxnFactory启动(5) 第一次启动zk …

smile——Java机器学习引擎

资源 https://haifengl.github.io/ https://github.com/haifengl/smile 介绍 Smile(统计机器智能和学习引擎)是一个基于Java和Scala的快速、全面的机器学习、NLP、线性代数、图形、插值和可视化系统。 凭借先进的数据结构和算法,Smile提供了最先进的性能。Smile有很好的文档…

22-08-30 西安JUC(03) Callable接口、阻塞队列4套方法、ThreadPool线程池

Callable接口 1、为什么使用Callable接口 Thread和Runnable 都有的缺点:启动子线程的线程 不能获取子线程的执行结果,也不能捕获子线程的异常 从java5开始,提供了Callable接口,是Runable接口的增强版。用Call()方法作为线程的执…

【Go-Lua】Golang嵌入Lua代码——gopher-lua

Lua代码嵌入Golang Go版本:1.19 首先是Go语言直接调用Lua程序,并打印,把环境跑通 package mainimport lua "github.com/yuin/gopher-lua"func main() {L : lua.NewState()defer L.Close()// goerr : L.DoString(print("go g…

WebRTC系列-SDP之setLocalDescription(2)

文章目录 1. setLocalDescription整体流程总结2.几个channel的含义3. 音频流水线的建立3.1 signal线程流程3.2 work线程流程在上一章从源码的角度分析了WebRTC的setLocalDescription的代码调用流程及相关函数,这一章从一张图总结其核心函数调用;同时多上篇遗留的多个channal关…

第03章 SpringBoot 配置详解

序言 1.内容介绍 ​ 本章介绍了配置文件的作用、语法结构以及基于多种方式进行配置文件的配置实现,同时对于SpringBoot如何集成logback日志框架进行日志的写入进行了详细的实战演示。 2.知识目标 掌握系统配置文件的结构掌握系统配置文件、自定义配置文件的作用…

神经网络相关性系数r公式,神经网络预测数据

MATLAB神经网络训练图中R是什么 谷歌人工智能写作项目:神经网络伪原创 相关系数r的计算公式是什么? 相关系数介于区间[-1,1]好文案。当相关系数为-1,表示完全负相关,表明两项资产的收益率变化方向和变化幅度容完全相…

QML初学者教程

QML初学者教程 使用 QML、Qt 5、JavaScript 和 C 在 windows、mac 和 linux 上进行跨平台 GUI 应用程序开发 课程英文名:qml-for-beginners 此视频教程共5.0小时,中英双语字幕,画质清晰无水印,源码附件全 下载地址 百度网盘地…

Windows与网络基础-3-虚拟机安装Kali Linux

目录 一、虚拟机软件和ios镜像文件 二、Kali Linux安装 2.1 文件—>新建虚拟机 2.2 选择典型安装 2.3 选择稍后安装 2.4 选择操作系统类型和版本 2.5 虚拟机命名和安装路径选择 2.6 选择磁盘大小 2.7 自定义硬件配置 三、进入系统,安装带图形化界面 四…

毕业那年的大学生创新立项

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

面试题-谈谈你对JVM的理解

首先问一个问题,jvm、jdk、jre三者的区别?再去谈其他的 JVM(Java Virtual Machine):虚拟机 ,源文件.java在虚拟机中通过编译器编译成字节码文件.class,是整个java实现跨平台的最核心的部分 操作…

什么是快应用?与原生APP相比优势在哪里

目前,头部互联网企业以及手机厂商两大阵营,正打得不可开交。腾讯、阿里、百度、今日头条等头部互联网企业,齐齐发力小程序,借助于开发者的力量,来强大自身的服务能力,提高超级平台的粘性,深挖存…