用于设计 CNN 的 7 种不同卷积
一 说明
最近对CNN架构的研究包括许多不同的卷积变体,这让我在阅读这些论文时感到困惑。我认为通过一些更流行的卷积变体的精确定义,效果和用例(在计算机视觉和深度学习中)是值得的。这些变体旨在保存参数计数、增强推理并利用目标问题的某些特定特征。
这些变体中的大多数都简单易懂,因此我专注于了解每种方法的优点和用例。这些知识有望帮助您了解最新CNN架构背后的直觉,并帮助您设计自己的网络。
二 卷 积
让我们简要概述一下卷积的基本形式。根据PapersWithCode中的描述,
卷积是一种矩阵运算,由一个内核组成,一个小的权重矩阵,它滑过输入数据,执行逐元素乘法与它所在的输入部分,然后将结果相加到输出中。
此类操作对于处理图像是有利的,因为:
- 它们的参数效率非常高,因为图像的不同位置共享相同的权重,因此参数的数量与图像大小不成比例。
- 卷积基本上是翻译不变的。也就是说,输出不受图像中常见的小翻译和大翻译的影响,这与 MLP 不同,MLP 通常会给出非常不同的 1 像素翻译结果。
卷积的输出形状和复杂性可以使用以下参数进行配置:
- 内核大小:内核的维度,通常使用内核大小 (3×3)。
- 填充:如何填充图像的边缘以保持卷积后的图像大小。例如,上面的演示使用 1 个像素的填充。描述像素数和填充这些像素的规则。
- 步幅:扫描图像时内核的步长。通常设置为 1 以保持数据形状,设置为 2 表示对其进行缩减采样。上面的演示使用步幅为 2。
来源:伊莱·本德尔斯基
通过组合通过不同内核卷积的每个通道的结果来预测每个输出通道。因此,需要C_in形状为K×K的内核来计算一个输出通道。其中 K 表示内核大小和C_in,C_out分别表示输入和输出通道的数量。
# 参数:K×K×C_in×C_out
计算:H×W×C_in×C_out×K×K(在步幅=1的情况下)
用例:这种卷积层几乎用于计算机视觉的每个子任务。其中包括监督任务,如图像和视频分类、对象检测、分割和合成任务,如图像生成、图像超分辨率、图像到图像传输。还有一些视觉之外的应用,例如用于序列建模的 1D 卷积和 3D 相关应用。
三 逐点卷积(1x1卷积)
逐点卷积是具有 1×1 个内核的卷积层的另一个词。它们也表示为通道或投影层上的卷积。到底为什么有人会使用它?有两种主要用例:
- 用于更改输入的维度(即多个通道)。
- 一些网络(如 Inception)连接从不同内核计算的特征,这会导致通道过多,因此应用逐点卷积来管理通道数。
- 当使用逐点卷积压缩特征时,计算密集型模块(如挤压和激励)等自注意力模块更可行。
- 当将两个内积与元素总和或乘积组合时,我们有时需要匹配通道数。
该操作可以看作是沿输入特征图的深度计算多个加权和。它可以有效地总结它们。
2. 它以微不足道的成本创建通道依赖关系。通过与缺乏这种依赖性的深度卷积相结合,可以特别利用这一点。
# 参数:C_in×C_out
计算:高××C_in×C_out
四 转置卷积(反卷积/逆卷积)
反卷积显式计算卷积层的数学逆。虽然它广泛用于类视觉或信号处理,但它在深度学习中并不重要,因为可以通过梯度下降来学习操作的参数。
左:步幅=1,右:步幅=2
转置卷积是一种使用卷积对图像大小进行上采样的更简单方法。该操作与步幅为 1(左)时的经典卷积没有什么不同。对于 n>1 的步幅,输出形状将扩展 n 倍。这是通过在像素之间填充 0 以创建所需大小的扩展图像并对扩展图像执行卷积来完成的。
虽然转置卷积不会隐式计算卷积的逆运算,但对于深度学习来说并不重要,因为所需的滤波器(可能是逆滤波器)总是可以通过梯度下降来学习。它充分实现了增加数据空间大小的功能。
重要提示:虽然它们经常被混淆,但转置卷积不是反卷积/逆卷积。
# 参数:K×K×C_in×C_out)
用例:转置卷积用于需要上采样的网络架构。一些示例是用于语义分割、自动编码器或图像合成和生成网络的编码器-解码器样式网络中的用法。转置卷积的一个问题是棋盘伪影,这可能会给图像生成/合成带来问题。该主题超出了本文的范围,值得拥有自己的主题。有关更多信息,请参阅谷歌大脑的这篇文章。
来源:
- https://en.wikipedia.org/wiki/Deconvolution
- https://medium.com/@marsxiang/convolutions-transposed-and-deconvolution-6430c358a5b6
- https://naokishibuya.medium.com/up-sampling-with-transposed-convolution-9ae4f2df52d0
四 扩张卷积(Atrous convolution)
感受野是模型可以参考的原始图像的范围,用于对该步骤的一个像素进行推理。例如,具有一个 3×3 卷积的模型的输出可以考虑来自相对于每个像素的空间位置的 3 像素感受野的信息,而具有两个 3×3 卷积的模型具有相对于该位置的 5 像素的感受野。
增加核大小是增加感受野的一种方法,但计算量也很快增加。对图像进行下采样还具有增加感受野的效果,因为例如 3××3 特征图中的 8 卷积覆盖了更多的图像。三个 8×3 卷积足以考虑整个图像,以便在 3×8 特征空间中进行推理。
在较低空间维度上计算特征对于图像分类来说大多是可以的,但它会导致具有高分辨率输出的任务(尤其是语义分割)的大量信息丢失。
扩张卷积是一种卷积,其中内核的像素间隔(用 0 填充)。间距也被视为一个超参数,其值通常从上面演示中的 2 到大空间(如 DeepLab 模型中的 24)不等。它增加了内核大小,而不会增加计算量。这种设计能够从更大的感受野进行极其高效的计算,而不会丢失信息或增加层数。
![](https://img-blog.csdnimg.cn/img_convert/c0f1450616722639b3cd0cc7bc35a8c8.png)
用例:显示了语义分割中最重要的用法,但在轻量级/移动 CNN 架构中也考虑了其他任务。
提议于:通过扩张卷积进行多尺度上下文聚合
五 空间可分离卷积(Separable Convolution)
一些 3×3 矩阵可以表示为两个向量的矩阵乘法。由于 3×3 核也是一个常见矩阵,因此可以将其拆分为一个 3×1 和一个 1×3 核,但执行相同的操作。
Source: Chi-Feng Wang
具体来说,空间可分卷积将原始卷积替换为上图所述的两个阶段。这样,每个内核的参数数和操作数从 9(3×3) 减少到 6。然而,众所周知,并非所有 3×3 核都可以分离,因此空间可分离卷积可能会限制模型的能力。
# 参数:(K+K)×C_in×C_out
计算: H×W×C_in×C_out×(K+K)
用例:由于参数计数要小得多,因此有时将空间可分离卷积用于模型压缩和轻量级架构。
源:
- https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728
- [Deep Learning] 딥러닝에서 사용되는 다양한 Convolution 기법들 — Enough is not enough
六 深度卷积
不是卷积和组合每个通道的结果,而是在每个通道上独立执行深度卷积,并将结果堆叠。我们可以直观地看到,这只有在输入和输出通道的数量一致时才有效。
深度卷积具有很高的参数和计算效率,因为参数的数量和计算复杂度都除以输出通道的数量,输出通道的数量通常范围高达 1024。但是,速度优势与操作数量的减少不成正比,因为深度卷积不像现代硬件上的传统卷积那样优化。
# 参数:K×K×C_in
计算:H×W×C_in×K×K
用例:深度卷积是构建更复杂的变体和卷积块的关键组件,这些变体和卷积块具有参数和计算效率。
七 深度可分离卷积
深度卷积,然后是逐点卷积。由于深度卷积在通道之间没有连接,因此我们使用逐点卷积将它们连接起来。Xception的作者发现将非线性放在深度卷积之后很有用。整个过程如下图所示。
空间可分卷积将经典卷积中的 x 轴和 y 轴分开。在这种情况下,深度可分离卷积可以被视为分离通道维度。
与普通的深度卷积相比,计算复杂性略有增加,尽管仍然比传统卷积小得多。然而,与普通的深度卷积不同,它在许多经验实验中有效地模仿了常规卷积,并广泛用于现代CNN架构。
# 参数:(K×K+C_out)×C_in
计算: H×W×C_in×(K×K+C_out)
用例:Xception,MobileNet V1 / V2,EfficientNet V1(MnasNet)/ V2等等...
您可以在以下第 2 部分找到深度可分卷积的复杂历史:Xception:使用深度可分卷积进行深度学习
在这篇文章中,我们回顾了在某些情况下被提议取代传统卷积层的卷积变体列表。这些块各有优缺点,用于解决不同的问题。在后续的文章中,我们将回顾卷积设计,这些设计将进一步增强我们创建CNN架构的工具箱。
请在评论中告诉我有关建议或问题的信息。我会尽量在最多2天内回复你们所有人。
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/2e2966494ce5deb4d3ec90a6821a123e.png)
用于设计 CNN 的 7 种不同卷积
一 说明 最近对CNN架构的研究包括许多不同的卷积变体,这让我在阅读这些论文时感到困惑。我认为通过一些更流行的卷积变体的精确定义,效果和用例(在计算机视觉和深度学习中)是值得的。这些变体旨在保存参数计数、增强推理并利用目标…...
![](https://img-blog.csdnimg.cn/img_convert/c9d6d98de7a2ef9db9e1f2944ea908de.png)
备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口
早在2021年9月,以太坊创始人Vitalik Buterin就曾提出了EIP-4337(账户抽象)提案,并在去年10月对该提案进一步更新,引发行业的进一步关注。在今年3月,EIP-4337提案正式通过审计,并成为了ERC-4337标…...
![](https://img-blog.csdnimg.cn/img_convert/5d26b83e505fc35a95baddb9807fa2a7.jpeg)
合约升级标准 ERC2535 的设计解析和不足
合约升级标准 ERC2535 的设计解析和不足 Safful最近审计了钻石标准的一份实现代码,这一标准是一种新的可升级合约模式。撰写标准是一项值得赞许的事业,但钻石标准及其实现有许多引人担忧的地方。这份代码是过度工程的产物,附带了许多不必要的…...
![](https://www.ngui.cc/images/no-images.jpg)
【Vue】ElementUI实现登录注册
一、搭建项目 二、后台交互 三、CORS跨域 好啦今天到这了,希望能帮到你!!!...
![](https://img-blog.csdnimg.cn/1096ec1facca4376888fc42c0f9c275b.png)
linux 安装 wordpress
文章目录 linux 安装 wordpress1. wordpress 简介2. wordpress功能和特点3. 部署要求4. 环境搭建4.1 部署 nginx4.1.1 新增配置文件 4.2 部署 PHP74.2.1 查看当前版本4.2.2 YUM 安装 PHP74.2.3 查看 PHP 版本4.2.4 启动PHP-FPM4.2.5 修改配置文件4.2.6 重启服务 4.3 部署 mysql…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode902最大为 N 的数字组合(相关话题:数位DP问题,递归遍历和减枝)
目录 题目描述 方法一递归遍历和减枝 方法二动态规划 数位DP问题拓展 通用方法论引入 <...
![](https://img-blog.csdnimg.cn/46e00e172dc545a6a3ca41248ed27c02.png#pic_center)
USB总线-Linux内核USB3.0主机控制器驱动框架分析(十二)
1.概述 如下图所示,Linux内核中USB主机体系结构由五部分组成,分别为Application Software、USB Class Driver、USB Core(USB Driver)、USB Host Controller Driver、USB Host Controller。应用程序处于用户空间,通过系统调用访问Class Drive…...
SQL模板-用户留存率计算
在这段实习中,我遇到了用户留存率计算的需求,这里做个总结。 首先来讲下,什么是用户留存? 在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户。用户留存一…...
![](https://img-blog.csdnimg.cn/2b3e166f2a8b46b3b8d14cfdbc982752.png)
LeakCanary 源码详解(3)
上一篇:LeakCanary源码详解(2) 如果你是直接刷到这篇的,建议还是从1开始看,然后2,然后是这篇3,如果你只关注这篇的重点hprof 文件定位泄漏位置的感兴趣,可以试试直接读这篇ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
springboot使用SSE
1、pom文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 2、前端代码 <!DOCTYPE html> <html lang"en"> <head><meta ch…...
![](https://img-blog.csdnimg.cn/1825aa35998e493481a49597be750f45.png#pic_center)
搞定ESD(一):静电放电测试标准解析
文章目录 一、基本术语与定义1.1 基本定义1.2 重要基本术语 二、静电放电发生器介绍2.1 静电放电发生器的特性:通用规范【GB/T17626.2-2018 标准】2.2 ESD 放电发生器电极规格要求:通用规范【GB/T17626.2-2018 标准】2.3 放电回路电缆的要求:…...
![](https://www.ngui.cc/images/no-images.jpg)
问界M7的诸多优点(自动驾驶走进我们的生活二)
博主一直在问界工厂工作,从未对自己工厂的车如此关注过;但问界系列上市后,经常在茶余饭后看B站视频,发现问界车越来越多不可比拟的优点如下: 一、绿牌 绿牌特权在重庆可以随时过桥,不受限号限制。 二、增…...
![](https://www.ngui.cc/images/no-images.jpg)
[运维|数据库] msql中的 FIND_IN_SET如何转化为pg数据中的ARRAY_POSITION的函数
在 MySQL 中,FIND_IN_SET 函数用于查找一个值是否存在于逗号分隔的字符串列表中。在 PostgreSQL 中,可以使用 string_to_array 函数将逗号分隔的字符串转换为数组,然后使用 ARRAY_POSITION 函数来查找值是否在数组中。 以下是如何将MySQL中的…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode 面试题 05.03. 翻转数位
文章目录 一、题目二、Java 题解 一、题目 给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。 示例 1: 输入: num 1775(110111011112) 输出: 8 示例 2: 输入: num 7(01112)…...
![](https://img-blog.csdnimg.cn/492d7612ecf9402ca45f3dad0b4d69e3.png#pic_center)
Fiddler抓包工具配置+Jmeter基本使用
一、Fiddler抓包工具的配置和使用 在编写网关自动化脚本之前,得先学会如何抓包,这里以Fiddler为例。会抓包的同学可以跳过这一步,当然看看也是没坏处的…… 局域网络配置 将要进行抓包的手机与电脑连入同一局域网,电脑才能够抓到…...
![](https://img-blog.csdnimg.cn/d9b53f90f3f4415ba9ade305823c28ca.png#pic_center)
IOTE 2023国际物联网展直击:芯与物发布全新定位芯片,助力多领域智能化发展
IOTE 2023国际物联网展,作为全球物联网领域的盛会,于9月20日在中国深圳拉开帷幕。北斗星通集团应邀参展,旗下专业从事物联网、消费类GNSS芯片研发设计的芯与物公司也随其亮相本届盛会。 展会上,芯与物展示了一系列创新的GNSS定位…...
![](https://img-blog.csdnimg.cn/c8dce2e76fac469e91d42bfe21f4e191.png#pic_center)
【软件设计师-从小白到大牛】上午题基础篇:第二章 操作系统
文章目录 前言章节提要一、进程管理1、进程的状态2、前趋图3、进程的同步与互斥4、PV操作6、PV操作与前趋图7、死锁问题进程资源图(补充)真题链接 二、存储管理1、分区存储组织2、页式存储组织3、段式存储组织4、段页式存储组织5、快表6、页面置换算法单…...
![](https://img-blog.csdnimg.cn/5f61b20f5da949749b51897d611ac04a.png)
【20230921】关于sing-box命令行程序开机自启动运行(Windows、Linux)
1 背景 sing-box是一个命令行程序,官网给出的教程是复制链接到Git Bash(windows)或终端运行(Linux)。每次开机都进行复制运行是一件繁琐的事情。 复制的内容其实就是下次并运行shell脚本,其实系统只需要运…...
![](https://img-blog.csdnimg.cn/cdc5499a8af044c2bc6240576b00e7a2.png)
LeetCode 75-02:字符串的最大公因子
前置知识:使用欧几里得算法求出最大公约数 func gcdOfStrings(str1 string, str2 string) string {if str1str2 ! str2str1 {return ""}return str1[:gcd(len(str1), len(str2))] }func gcd(a, b int)int{if b 0{return a}return gcd(b, a%b) }...
![](https://www.ngui.cc/images/no-images.jpg)
k8s1.19使用ceph14
一、静态 pv (rbd)方式 1、所有k8s节点安装依赖组件 注意:安装ceph-common软件包推荐使用软件包源与Ceph集群源相同,软件版本一致。 cat > /etc/yum.repos.d/ceph.repo << EOF [ceph] name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_…...
![](https://img-blog.csdnimg.cn/0b84606ea5294de39e0101a98b2a876e.png)
Leetcode 50. Pow(x, n)
文章目录 题目代码(9.19 首刷看解析) 题目 Leetcode 50. Pow(x, n) 代码(9.19 首刷看解析) 快速幂 class Solution { public:double myPow(double x, int n) {if(n 0)return 1;if(n 1)return x;if(n INT_MIN) { // 避免-n整…...
![](https://www.ngui.cc/images/no-images.jpg)
hive分区表的元数据信息numRows显示为0
创建分区表 CREATE TABLE `dept_partition`(`deptno` int, `dname` string, `loc` string) PARTITIONED BY (...
![](https://img-blog.csdnimg.cn/e24490d519d743be8e351cf21743c930.png)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C++)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C) Baumer工业相机Baumer工业相机的图像剪切(ROI)功能的技术背景CameraExplorer如何使用图像剪切(ROI)功…...
![](https://img-blog.csdnimg.cn/45531fc971244b1f89eadf8477040852.png)
【云原生】聊聊为什么需要docker以及其基础架构
为什么需要docker 在没有docker之前,我们开发、测试、生产其实是根据不同的服务器进行配置的,很可能因为软件配置不同而导致的生产事故,那么如果能较好的解决软件和配置等封装成一个可运行的软件,无需关注配置,那么是…...
![](https://img-blog.csdnimg.cn/c12207c390eb4fdf8cac2b6e45b174e1.png)
“高级前端开发技术探索路由的使用及Node安装使用“
目录 引言1. Vue路由的使用2. VueNode.js的安装使用总结 引言 在当今互联网时代,前端开发技术日新月异,不断涌现出各种新的框架和工具。作为一名前端开发者,我们需要不断学习和探索新的技术,以提升自己的开发能力。本文将深入探讨…...
![](https://img-blog.csdnimg.cn/0064f1f47ab64ed1a2f762e8616ad53e.png)
LeetCode 494.目标和 (动态规划 + 性能优化)二维数组 压缩成 一维数组
494. 目标和 - 力扣(LeetCode) 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2…...
![](https://img-blog.csdnimg.cn/img_convert/3fadcfd14189c6dc2182b96b0926997f.png)
[36c3 2019]includer
[36c3 2019]includer 题目描述:Just sitting here and waiting for PHP 8.0 (lolphp). 首先来了解一下临时文件包含之PHP - compress.zlib:// 在 php-src 里可以找到和 compress.zlib:// 有关的代码 | code 注意到 STREAM_WILL_CAST,涉及到 cast 经常…...
![](https://www.ngui.cc/images/no-images.jpg)
Python150题day10
④continue练习 从列表 Ist [1,3,5,2,7,9,10] 中输出所有的奇数,代码如下 lst [1, 3, 5, 2, 7, 9, 10] for item in lst: if item % 2 0: continue print(item) 在上述代码中,当遇到偶数时,continue 语句会跳过当前迭代&…...
![](https://www.ngui.cc/images/no-images.jpg)
Autosar工具-Davinci Developer
文章目录 前言一、Davinci Developer简介二、导航栏File(主要是用于保存、打开工程等操作)HomeProject(主要用于导入、导出arxml文件)Graphic(主要在SWC设计时使用,包含对图形界面下的设计工具)Window(主要就是对我们的Dev界面外形修改用的,使得界面更加方便我们使用(比如隐…...
![](https://img-blog.csdnimg.cn/8fc9c306206240b5aa152d95e23b98d6.png)
js中的数据结构:栈,队列,链表,字典哈希表,树
栈:先进后出 队列:先进先出 链表: 单链表: 双链表: 环形链表:最后一个数据的next指针不是指向null,指向的是任意之间的一个数据,形成一个环 数组和链表的区别: 字典和哈…...
![](/images/no-images.jpg)
网页上做网会员网站备案怎么写/品牌营销咨询公司
今天想用ajax和cookie做个自动登录,结果出现很多错误,特在此记录下 一开始我没用cookie是这样的 <input id"log-name" type"text" name"username" placeholder"请输入用户名" οnfοcus"this.placeho…...
![](https://img-blog.csdnimg.cn/img_convert/5e9aabbf4535aee52434078a5469af03.png#pic_center)
企业外贸营销型网站/营销页面
文章目录2、 输入控件(一)2.1 纯键盘2.1.1 QLineEdit2.1.1.1 描述2.1.1.2 控件创建2.1.1.3 输出模式2.1.1.4 提示字符串2.1.1.5 清空按钮2.1.1.6 添加操作行为2.1.1.7 自动补全2.1.1.8 输入限制2.1.1.8.1 语法2.1.1.8.2 掩码验证2.1.1.9 案例:…...
![](/images/no-images.jpg)
网络团队/电脑优化是什么意思
有一些网友看了前两天的《Linux下应该知道的技巧》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。况且,AWK是贝尔实验室1977年…...
![](/images/no-images.jpg)
上海的网站建设公司/广州seo优化外包服务
[1,2,3].map(String) > [‘1’,‘2’,‘3’] [‘1’,‘2’,‘3’].map(Number) // [1,2,3] 0.toString() 数字传字符串 ‘0’ Number(n5)字符串转数字...
![](http://dl2.iteye.com/upload/attachment/0104/3686/e0543973-cf52-3eed-a4b8-5793ac773e71-thumb.png)
公司做网站一定要钱吗/seo推广网址
1、word表格分页保留标题行 备注:鼠标必须选中或者放在第一行,然后再点击“布局” ——》“重复标题行”。 2、word表格放在页面任意位置,可以随意拖拽 图片中已经标记出来是放在纸张的最下面,即下图中说的相对于页面,…...
![](/images/no-images.jpg)
永久免费的cad软件/广州营销seo
设计模式的定义 设计模式(Design Pattern)是一套面向对象的代码设计经验总结。 设计模式是一种思想,也是一种技术。 一种设计模式就是一种解决实际问题的方案。 每一种设计模式虽然有既定的结构图和基本程序代码,但是应该不局限于…...