扩展卷积详解 - 组卷积, 深度可分离卷积, 空洞卷积-程序员宅基地

技术标签: 深度学习  组卷积  空洞卷积  深度可分离卷积  

在标准卷积的基础上介绍组卷积, 深度可分离卷积, 空洞卷积.

零. Standard Convolution - 标准卷积

标准卷积运算是这样地:

在这里插入图片描述

对于输入特征为 C ∗ H ∗ W C*H*W CHW, 卷积核大小为 K ∗ K K*K KK, 共 N 个卷积核. 则:

  • 对于输出特征图上的每一个点, 都是在输入特征图的所有通道上执行 add 操作得到.
  • 输出特征图的通道数为 N N N.
  • 每个卷积核的尺寸为 C ∗ K ∗ K C*K*K CKK.
  • N 个卷积核的总参数量为 N ∗ C ∗ K ∗ K N*C*K*K NCKK.

输入特征图与输出特征图的连接方式如下图所示:

在这里插入图片描述

一. Group Convolution - 组卷积

最早出现分组卷积的是 AlexNet. 分组卷积, 顾名思义就是将原始卷积中的输入特征按照通道进行分组, 每个组卷积只对同组通道内的特征图执行卷积运算.

在这里插入图片描述

给定, 输入特征图为: C × H × W C×H×W C×H×W, 卷积核大小为 K × K K×K K×K, 卷积核共有 N 个. 我们按照通道数分为 g 个组, 一般来讲, g 应该可以被 N 整除. 则:

  • 每个组的特征通道数量为 C g \frac{C}{g} gC.
  • 每个组的卷积核尺寸为 N / g × C / g × K × K N/g×C/g×K×K N/g×C/g×K×K.
  • 每个组得到的输出特征图为 N / g × H × W N/g × H × W N/g×H×W.
  • 拼接 g 个组的输出特征图, 得到和标准卷积尺度一样的输出特征图, 即 N × H × W N×H×W N×H×W.

特点:

1. 分组卷积可以减小卷积参数的个数, 总参数量为 g ∗ ( N × C × K × K g 2 ) = N × C × K × K g g*(\frac{N×C×K×K}{g^2}) = \frac{N×C×K×K}{g} g(g2N×C×K×K)=gN×C×K×K.

2. 分组卷积可以看成是 structured sparse, 对上图所示的, N / g × C / g × K × K N/g×C/g×K×K N/g×C/g×K×K 卷积核可以看作 N / g × ( C − C / g ) × K × K N/g×(C-C/g)×K×K N/g×(CC/g)×K×K 这部分卷积核的值为 0, 有时甚至可以在减少参数量的同时获得更好的效果 (起到类似正则化的作用) .

二. Depth Separable Convolution - 深度可分离卷积

深度可分离卷积是在 mobileNet 和 Xception 中都有涉及的一个操作.

在分组卷积中, 我们考虑一种特殊情况, 如果输入特征图的尺寸等于输出特征图的尺寸 (H × W 不变) , 如果我们把输入特征图的通道数 C1 分成 C1个组, 也就是每个组都只有 1 个通道, 那么我们用 1 × 1 × K × K 的卷积核来对每组进行卷积, 同时拼接 C1 个组的结果, 得到输出特征图的通道仍为 C1 × H × W, 这其实就是深度可分离卷积.

对于可分离卷积, 我认为其可以分为两种形式, 一种是空间可分离卷积, 顾名思义, 空间可分离就是将一个大的卷积核变成两个小的卷积核, 也就是在 inception 系列中出现的把 3 × 3卷积分成对称的 1×3 与 3×1 的操作, 另一种就是深度可分离卷积, 深度可分离卷积也可分为两部分, 深度卷积+逐点卷积, 深度卷积就是在每个通道上执行卷积, 但是不整合所有对应通道上的结果 (没有通道级别对应的 add 操作) ; 逐点卷积其实就是 1x1 3D 卷积, 对所有通道进行融合.

在这里插入图片描述

图 (a) 代表标准卷积. 假设输入特征图尺寸为 M ∗ H ∗ W M*H*W MHW, 卷积核尺寸为 M ∗ D k ∗ D k M*D_{k}*D_{k} MDkDk , 共 N N N 个卷积核, 输出特征图尺寸为 N ∗ H ∗ W N*H*W NHW, 标准卷积层的参数量为: N ∗ M ∗ D k ∗ D k N*M*D_{k}*D_{k} NMDkDk.

图 (b) 就是深度卷积, 把输入特征图上的每一个通道单独执行卷积操作, 也就是用 M M M 1 ∗ D k ∗ D k 1*D_{k}*D_{k} 1DkDk 的卷积核对输入特征图上的每一个通道执行卷积操作, 最终得到的输出特征图的尺寸仍然为 M ∗ H ∗ W M*H*W MHW, 参数数量为 M ∗ D k ∗ D k M*D_{k}*D_{k} MDkDk.

图 为逐点卷积, 也就是常规的 1 × 1 1×1 1×1 卷积操作, 输入特征图为 M ∗ H ∗ W M*H*W MHW, 卷积核的尺寸为 M ∗ 1 ∗ 1 M*1*1 M11 , 共 N N N 个卷积核, 输出特征图尺寸为 N ∗ H ∗ W N*H*W NHW. 参数数量为 N ∗ M N*M NM.

那么图 (b) 与图 的操作结合之后就是深度可分离卷积. 深度可分离卷积的作用就是降参, 我们来对比一下标准卷积与深度可分离卷积的参数个数:

( M ∗ D k ∗ D k + N ∗ M ) N ∗ M ∗ D k ∗ D k = 1 N + 1 D k 2 \frac{ (M*D_{k}*D_{k}+N*M)}{N*M*D_{k}*D_{k}}=\frac{1}{N}+\frac{1}{D_{k}^{2}} NMDkDk(MDkDk+NM)=N1+Dk21

如果我们用 3 ∗ 3 3*3 33 的卷积, 那么相当于我们大约可以减少 10 倍的参数计算量.

深度可分离卷积与标准卷积相比, MobileNet1 在 ImageNet 上降低了约 1% 的精度.

三. Dilated Convoluton - 扩张卷积

扩张卷积又名空洞卷积 (atrous convolutions), 通过向卷积层引入了一个称为 "扩张率 (dilation rate) " 的参数, 该参数定义了卷积核处理数据时各值的间距.

直观地感受一下空洞卷积的计算方式:

在这里插入图片描述

其公式表示为:

y [ i ] = ∑ k = 0 K − 1 x [ i + r ∗ k ] ⋅ w [ k ] y[i] = \sum_{k = 0}^{K-1}x[i+r*k] \cdot w[k] y[i]=k=0K1x[i+rk]w[k]

其中,

  • y y y 表示输出特征图.
  • w w w 表示卷积核的权重值.
  • K K K 表示卷积核的大小.
  • x x x 表示输入特征图.

换句话说, 与标准卷积相比, 扩张卷积多了一个超参数 (扩张率), 其指定了 kernel 各点之间的间隔的点数. 因此, 标准卷积的扩张率为 1.

四. 参考

[1]. 理解分组卷积与深度可分离卷积
[2]. Group Convolution组卷积
[3]. 如何理解空洞卷积 (dilated convolution)?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gzj2013/article/details/113970919

智能推荐

github配置sshkey_github 项目配置key-程序员宅基地

文章浏览阅读452次。$ ssh-keygen -t rsa -C "github账号"$ cd ~/.sshcat id_rsa 复制内容 黏贴到gethub中_github 项目配置key

微信js 已经填写JS接口安全域名了,仍然报invalid url domain_已配置了安全域名 仍然提示 url域名不在安全域名列表中-程序员宅基地

文章浏览阅读2.3w次。首先说明这就是一个坑。配好了js安全域名,调试时仍然报invalid url domain,查看官方文档说是域名绑定不成功。谷歌之后才发现很多人也遇到这个问题。下面给出解决方案:如果调用js的域名是二级域名,而在JS接口安全域名里面没有配置该二级域名,那么可以直接配置成主域名。比如二级域名是weixin.test.com,那么JS接口安全域名可以配置成test.com._已配置了安全域名 仍然提示 url域名不在安全域名列表中

nacos配置mysql数据源启动出现No DataSource set的问题_error creating bean with name 'memorymonitor' defi-程序员宅基地

文章浏览阅读3.5w次,点赞22次,收藏26次。org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/usr/local/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-2.0.1.jar!/com/alibaba/nacos/config/server/monitor/_error creating bean with name 'memorymonitor' defined in url

shell脚本批量移动文件_shell移动前100个文件-程序员宅基地

文章浏览阅读9.8k次。今天在整理文件包的时候,由于冗余文件太多,大概有3660多个,但我实际需要的只有43个,怎么通过批量操作把这43个文件找出来呢?天呢,一个个的挑出来忒难为人了,索性还是使用脚本吧,自己动手,丰衣足食。明确目标首先,你应该知道你需要哪些文件吧,把他们整合到一个文件中,这里命名txt:binutils-2*x86_64*glibc-2*x86_64*glibc-devel-2*x86_64*准备材料_shell移动前100个文件

oracle数据库partition,ORACLE数据库中PARTITION的用法-程序员宅基地

文章浏览阅读1.2k次。Oracle9i通过引入列表分区(List Partition),使得当前共有4种分区数据的方法,具体列出如下:      第一种 范围分区   1 对表进行单列的范围分区:   这使最为常用也是最简单的方法,具体例子如下:   create table emp   (empno number(4),   ename varchar2(30),   sal number)   partition ..._oracle partition用法

备份恢复15—— RMAN维护 + 相关的视图_rman session-程序员宅基地

文章浏览阅读2.1k次。原文转自:http://blog.csdn.net/tianlesoftware/article/details/5728097这篇资料主要讲到了如下内容:1. Rman 的维护2. 恢复目录的维护3. 备份恢复目录4. RMAN 存储脚本5. 删除数据库 一. RMAN 的维护1.1 交叉效验RM_rman session

随便推点

分享一个基于mindoc二次开发的开源markdown图书网站BookStack类似gitbook和看云的功能_mindoc 二次开发-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏3次。安装依赖插件依赖的字体和 Chrome 安装//依赖的字体和Chrome安装yum install -y ttf-wqy-zenhei fonts-wqy-microhei chromium安装 puppeteer//安装puppeteeryum install -y nodejs-legacy npm//设置npm加速//阿里云npm config set registry https://registry.npm.taobao.org --globalnpm config_mindoc 二次开发

易基因 | 项目文章 | oxBS-seq揭示了宫颈癌发生过程中的表观遗传特征变化_橘逾准为枳表观遗传-程序员宅基地

文章浏览阅读614次。古人云:“橘生淮南则为橘,生于淮北则为枳”“龙生九子,子子不同”,说明即使基因相同,但非DNA序列的变化也会导致遗传性状的改变,这就是表观遗传修饰在“起作用”。随着测序成本的不断降低以及测序技术的更新迭代,对表观遗传学研究逐步深入,表观组学在科学研究尤其是临床研究中发挥着越来越重要的作用。今天给大家分享的就是一篇使用oxBS-seq技术对复杂疾病预后相关的潜在表观遗传标志物研究,该研究成果刚刚发表在Clinical & Translational Medicine期刊上。首先,先了解下oxB_橘逾准为枳表观遗传

记一道字节跳动的算法面试题_字节跳动核心算法-程序员宅基地

文章浏览阅读3.1k次,点赞5次,收藏11次。前几天有个朋友去面试字节跳动,面试官问了他一道链表相关的算法题,不过他一时之间没做出来,就来问了我一下,感觉这道题还不错,拿来讲一讲。题目这其实是一道变形的链表反转题,大致描述如下给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一组的不需要逆序。(不能使用队列或者栈作为辅助)例如:链表:1->..._字节跳动核心算法

POP3 SMTP协议基本命令_pop3命令 rcpt-程序员宅基地

文章浏览阅读1.2k次。POP3邮件接收telnet mail.tp-corp.com 110USER test01PASS test01STAT 查看邮箱状态LIST 邮件列表TOP 254 0 查看指定邮件的邮件头RETR 254 获取指定邮件 DELE 254 删除第254封邮件 SMPT发送邮件telnet mail.tp-corp.com 25HELO mail.tp-corp.comEHLO mail.tp-corp.comauth login用户名 dGVzdD_pop3命令 rcpt

Android ApiDemos示例解析(69):Graphics->PathEffects_android apidemos 分析-程序员宅基地

文章浏览阅读4.8k次。android.graphics.Path允许使用线段,二次曲线,三次曲线构成路径(类似SVG),Canvas缺省绘制Path时为单色细实线,但在例Drawable->ShapeDrawable 的固定链接" href="http://www.imobilebbs.com/wordpress/?p=1486" rel="bookmark">Android ApiDemos示例解析(65):Grap_android apidemos 分析

嵌入式系统开发 (陈卓)目录_嵌入式开发章节目录-程序员宅基地

文章浏览阅读829次。目录第1部分 嵌入式开发必备基础第1章 软件开发基础 11.1 嵌入式环境下的C语言使用技巧 11.1.1 重要的位(bit)操作 11.1.2 正确使用数据指针 21.1.3 函数等价于指令的集合 31.1.4 操作有限的存储空间 41.1.5 理解栈空间(Stack)和堆空间(Heap) 51.1.6 关键词const的使用 61.1.7 关键词vola_嵌入式开发章节目录

推荐文章

热门文章

相关标签