用于设计 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)不等。它增加了内核大小,而不会增加计算量。这种设计能够从更大的感受野进行极其高效的计算,而不会丢失信息或增加层数。

用例:显示了语义分割中最重要的用法,但在轻量级/移动 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天内回复你们所有人。
相关文章:

用于设计 CNN 的 7 种不同卷积
一 说明 最近对CNN架构的研究包括许多不同的卷积变体,这让我在阅读这些论文时感到困惑。我认为通过一些更流行的卷积变体的精确定义,效果和用例(在计算机视觉和深度学习中)是值得的。这些变体旨在保存参数计数、增强推理并利用目标…...

备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口
早在2021年9月,以太坊创始人Vitalik Buterin就曾提出了EIP-4337(账户抽象)提案,并在去年10月对该提案进一步更新,引发行业的进一步关注。在今年3月,EIP-4337提案正式通过审计,并成为了ERC-4337标…...

合约升级标准 ERC2535 的设计解析和不足
合约升级标准 ERC2535 的设计解析和不足 Safful最近审计了钻石标准的一份实现代码,这一标准是一种新的可升级合约模式。撰写标准是一项值得赞许的事业,但钻石标准及其实现有许多引人担忧的地方。这份代码是过度工程的产物,附带了许多不必要的…...
【Vue】ElementUI实现登录注册
一、搭建项目 二、后台交互 三、CORS跨域 好啦今天到这了,希望能帮到你!!!...

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…...
LeetCode902最大为 N 的数字组合(相关话题:数位DP问题,递归遍历和减枝)
目录 题目描述 方法一递归遍历和减枝 方法二动态规划 数位DP问题拓展 通用方法论引入 <...

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模板-用户留存率计算
在这段实习中,我遇到了用户留存率计算的需求,这里做个总结。 首先来讲下,什么是用户留存? 在互联网行业中,用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户。用户留存一…...

LeakCanary 源码详解(3)
上一篇:LeakCanary源码详解(2) 如果你是直接刷到这篇的,建议还是从1开始看,然后2,然后是这篇3,如果你只关注这篇的重点hprof 文件定位泄漏位置的感兴趣,可以试试直接读这篇ÿ…...
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…...

搞定ESD(一):静电放电测试标准解析
文章目录 一、基本术语与定义1.1 基本定义1.2 重要基本术语 二、静电放电发生器介绍2.1 静电放电发生器的特性:通用规范【GB/T17626.2-2018 标准】2.2 ESD 放电发生器电极规格要求:通用规范【GB/T17626.2-2018 标准】2.3 放电回路电缆的要求:…...
问界M7的诸多优点(自动驾驶走进我们的生活二)
博主一直在问界工厂工作,从未对自己工厂的车如此关注过;但问界系列上市后,经常在茶余饭后看B站视频,发现问界车越来越多不可比拟的优点如下: 一、绿牌 绿牌特权在重庆可以随时过桥,不受限号限制。 二、增…...
[运维|数据库] msql中的 FIND_IN_SET如何转化为pg数据中的ARRAY_POSITION的函数
在 MySQL 中,FIND_IN_SET 函数用于查找一个值是否存在于逗号分隔的字符串列表中。在 PostgreSQL 中,可以使用 string_to_array 函数将逗号分隔的字符串转换为数组,然后使用 ARRAY_POSITION 函数来查找值是否在数组中。 以下是如何将MySQL中的…...
LeetCode 面试题 05.03. 翻转数位
文章目录 一、题目二、Java 题解 一、题目 给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。 示例 1: 输入: num 1775(110111011112) 输出: 8 示例 2: 输入: num 7(01112)…...

Fiddler抓包工具配置+Jmeter基本使用
一、Fiddler抓包工具的配置和使用 在编写网关自动化脚本之前,得先学会如何抓包,这里以Fiddler为例。会抓包的同学可以跳过这一步,当然看看也是没坏处的…… 局域网络配置 将要进行抓包的手机与电脑连入同一局域网,电脑才能够抓到…...

IOTE 2023国际物联网展直击:芯与物发布全新定位芯片,助力多领域智能化发展
IOTE 2023国际物联网展,作为全球物联网领域的盛会,于9月20日在中国深圳拉开帷幕。北斗星通集团应邀参展,旗下专业从事物联网、消费类GNSS芯片研发设计的芯与物公司也随其亮相本届盛会。 展会上,芯与物展示了一系列创新的GNSS定位…...

【软件设计师-从小白到大牛】上午题基础篇:第二章 操作系统
文章目录 前言章节提要一、进程管理1、进程的状态2、前趋图3、进程的同步与互斥4、PV操作6、PV操作与前趋图7、死锁问题进程资源图(补充)真题链接 二、存储管理1、分区存储组织2、页式存储组织3、段式存储组织4、段页式存储组织5、快表6、页面置换算法单…...

【20230921】关于sing-box命令行程序开机自启动运行(Windows、Linux)
1 背景 sing-box是一个命令行程序,官网给出的教程是复制链接到Git Bash(windows)或终端运行(Linux)。每次开机都进行复制运行是一件繁琐的事情。 复制的内容其实就是下次并运行shell脚本,其实系统只需要运…...

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) }...
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_…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...