常规非常规的卷及操作

news2025/7/16 15:34:08

最近看论文看到深度卷积的内容,然后就想着学习一下,发现论文中说的深度卷积并不是真正的深度卷积,感觉是分组卷积的一种,但是对于论文中得使用方式又有点不理解,就留下了一个问题放在了博客的最后,这里记录一下,方便以后查阅。

常规&非常规的卷及操作

  • 常规卷积
  • 分组卷积
  • 大卷积核替换为多个堆叠的小核
  • Factorized Convolution
  • Depthwise Convolution
  • Pointwise Convolution
  • Depthwise Separable Convolution
  • Separable Convolution
  • 膨胀卷积
  • 转置卷积
  • 问题
  • 参考资料

常规卷积

下图以stride=1,padding=0,kernel_size=3为例,假设输入特征图大小是4x4的(假设输入输出都是单通道),通过卷积后得到的特征图大小为2x2。一般使用卷积的情况中,要么特征图变小(stride > 1),要么保持不变(stride = 1),当然也可以通过四周padding让特征图变大但没有意义。

在这里插入图片描述

常规卷积中,连接的上一层一般具有多个通道(这里假设为n个通道),因此在做卷积时,一个滤波器(filter)必须具有n个卷积核(kernel)来与之对应。一个滤波器完成一次卷积,实际上是多个卷积核与上一层对应通道的特征图进行卷积后,再进行相加,从而输出下一层的一个通道特征图。在下一层中,若需要得到多个通道的特征图(这里假设为m个通道),那么对应的滤波器就需要m个

用通俗的话来概括卷积,他起到的作用就是两个:一个是对上一层的特征图进行尺寸调整,另一个是则是对上一层的特征图数量进行调整,也就是通道数的调整。

在这里插入图片描述

看了上面这张图突然发现跟我最近理解的有点出入,最近都把卷及操作想成了下面“组卷积”图中的左边的样子,也就是前面一列是输入通道,后面一列是这一层卷积的卷积核数量,但是今天研究“深度卷积”,看到了torch.nn.Conv2d的解释中的下面图片的内容,起初还有点不理解权重的第二维是啥,但是现在结合上面的图和下面的图的解释就很明白了。

也就是,卷积层的权重通常被表示为一个四维张量,其形状为 (输出通道数,输入通道数,卷积核高度,卷积核宽度)

在这里插入图片描述

分组卷积

Group Convolution(AlexNet),对输入进行分组,卷积核数量不变,但输入channel数 M M M减少,相当于
M → M G M→\frac{M}{G} MGM

在这里插入图片描述

大卷积核替换为多个堆叠的小核

大卷积核替换为多个堆叠的小核(VGG),比如 5 × 5 5×5 5×5替换为2个 3 × 3 3×3 3×3 7 × 7 7×7 7×7替换为3个 3 × 3 3×3 3×3,保持感受野不变的同时,减少参数量和计算量,相当于把 大数乘积 变成 小数乘积之和
( K × K ) → ( k × k + ⋯ + k × k ) (K×K)→(k×k+⋯+k×k) (K×K)(k×k++k×k)
在这里插入图片描述

Factorized Convolution

Factorized Convolution(Inception V2),二维卷积变为行列分别卷积,先行卷积再列卷积
( K × K ) → ( K × 1 + 1 × K ) (K×K)→(K×1+1×K) (K×K)(K×1+1×K)
在这里插入图片描述

Depthwise Convolution

Depthwise Convolution其实就是分组卷积的分组数跟input_features的channel数一样的时候,然后一个卷积核负责一个通道,一个通道只被一个卷积核卷积(拿分组卷积中的例子来说的话,就是分为12组)。
在这里插入图片描述
Depthwise Convolution完成后的Feature map数量与输入层的通道数相同,无法扩展Feature map。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效的利用不同通道在相同空间位置上的feature信息。因此需要Pointwise Convolution来将这些Feature map进行组合生成新的Feature map。

Pointwise Convolution

Pointwise Convolution中的kernel[K, N, 1, 1], 这里K的大小跟上一层的通道数是一致的,实现了深度方向的加权组合。

在这里插入图片描述

Depthwise Separable Convolution

Depthwise Separable Convolution(MobileNet V1),depthwise +BN ReLU + pointwise + BN ReLU,相当于将channel维单独分解出去,
( K × K × N ) → ( K × K + N ) (K×K×N)→(K×K+N) (K×K×N)(K×K+N)
在这里插入图片描述

Separable Convolution

Separable Convolution(Xception),pointwise + depthwise + BN ReLU,也相当于将channel维分解出去,但前后顺序不同(但因为是连续堆叠,其实跟基本Depthwise Separable Convolution等价),同时移除了两者间的ReLU
( K × K × M ) → ( M + K × K ) (K×K×M)→(M+K×K) (K×K×M)(M+K×K)
但实际在实现时还是depthwise + pointwise + ReLU

在这里插入图片描述

膨胀卷积

膨胀卷积在标准卷积的基础上,增加一些空洞,使得在卷积时能够包括更大的感受野。

在这里插入图片描述

转置卷积

转置卷积主要作用就是起到上采样的作用。但转置卷积不是卷积的逆运算(一般卷积操作是不可逆的),它只能恢复到原来的大小(shape)数值与原来不同。转置卷积的运算步骤可以归为以下几步:

  • 在输入特征图元素间填充s-1行、列0(其中s表示转置卷积的步距)
  • 在输入特征图四周填充k-p-1行、列0(其中k表示转置卷积的kernel_size大小,p为转置卷积的padding,注意这里的padding和卷积操作中有些不同)
  • 将卷积核参数上下、左右翻转
  • 做正常卷积运算(填充0,步距1)

下面假设输入的特征图大小为2x2(假设输入输出都为单通道),通过转置卷积后得到4x4大小的特征图。这里使用的转置卷积核大小为k=3,stride=1,padding=0的情况(忽略偏执bias)。

  • 首先在元素间填充s-1=0行、列0(等于0不用填充)
  • 然后在特征图四周填充k-p-1=2行、列0
  • 接着对卷积核参数进行上下、左右翻转
  • 最后做正常卷积(填充0,步距1)

在这里插入图片描述
下图展示了转置卷积中不同s和p的情况:

s=1, p=0, k=3s=2, p=0, k=3s=2, p=1, k=3
在这里插入图片描述在这里插入图片描述在这里插入图片描述

问题

如果Group Convolution中,输入通道为8,输出通道为32,组数与输入通道数相等,则Group Convolution中权重的尺寸为(32,1,kernel_H,kernel_L)那么32个卷积核中哪四个是一组的?

我猜测是前四个一组然后依次类推,但是没有找到确实的证据证明这一点,去看pytorch的源代码也没有找到相关的内容,如果有大佬知道,还请在评论区留言,谢谢。

有个需要注意的点就是,当给卷积层的“groups”赋值之后,对于卷积的层的输出通道就有了要求,它要求输出通道数必须是groups的整数倍,在pytorch的源代码中是这样写的:

在这里插入图片描述
所以说,我的猜测还是有可能的!

参考资料

从卷积拆分和分组的角度看CNN模型的演化

关于深度可分离卷积的理解

DW卷积、PW卷积、转置卷积、膨胀卷积(空洞卷积)、可变形卷积一次看个够

转置卷积(Transposed Convolution)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯刷题】坑爹的负进制转换

【蓝桥杯刷题】——坑爹的负进制转换😎😎😎 目录 💡前言🌞: 💛坑爹的负进制转换题目💛 💪 解题思路的分享💪 😊题目源码的分享&#x1f6…

Windows环境下Elasticsearch的下载与安装

一、elasticsearch下载地址1、官网:https://www.elastic.co/cn/即刻体验Elasticsearch2、直接解压3、进入bin目录双击.bat文件直接启动4、报错:error downloading geoip database [GeoLite2-City.mmdb],elasticsearch.yml中增加:i…

FTP建议使用教程——以Xftp7为例

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和…

Jmeter+Ant+Jenkins接口自动化测试平台搭建

平台简介一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。Jmeter支持接口的测试,Ant支持自动构建,而Jenkins支持持续集成,所以三者组合在一起可以构成一个功能完善的接口自动化测…

九.虚拟内存VM

1.寻址2.虚拟页VM将虚拟内存分割为称为虚拟页的大小固定的块1247是缓存的、36是未缓存的、05是未分配的下图为缺页及处理后页表将虚拟页映射到物理页页表是一个页表条目(PTE)的数组多个虚拟页面可以映射到同一个物理共享页面内存映射:将一组连续的虚拟页映射到一个文…

蓝牙耳机哪个品牌好一点?佩戴最舒服的蓝牙耳机排行

近年来,蓝牙耳机市场呈爆发式增长,越来越优秀的产品出现在大众视野。那么蓝牙耳机哪个品牌好一点?下面,我来给大家推荐几款佩戴最舒服的蓝牙耳机,一起来看看吧。 一、南卡小音舱蓝牙耳机 参考价:246 蓝牙…

一文带你彻底探究webgis坐标系知识(地理坐标系投影坐标系)

首先讲讲经纬度坐标系的起源与发展。其实目的很简单就是为了用数字化的方式来表示我们的地球和世界。 真正意义上与webgis相关的坐标系我们还得先来说说wgs84坐标系。这是老美1984年提出的一套坐标系。故命名为84坐标系。84坐标系是目前应用范围比较广的坐标系,但他并不是最早…

Elasticsearch:理解 Master,Elections,Quorum 及 脑裂

集群中的每个节点都可以分配多个角色:master、data、ingest、ml(机器学习)等。 我们在当前讨论中感兴趣的角色之一是 master 角色。 在 Elasticsearch 的配置中,我们可以配置一个节点为 master 节点。master 角色的分配表明该节点…

人机协同“全能秘书”丨 AI+金融“降本增效”全靠它!

近年来,我国金融科技蓬勃发展,以人工智能为主要代表的创新技术,为各大金融企业提供了更智能化的金融服务模式,科技与金融业务的深度融合,为金融行业注入新的发展动力。相比较传统人工客服,智能客服以算法为…

函数模板(template关键字的应用)

注释:本文主要介绍了函数模板的由来以及用法,还有关键字template。 我们感到时间的延续像一条我们无法逆行的小溪。 ——柏格森 文章目录一、语言的定式二、函数模板2.1 函数模板格式2.2 模板函数的实例化2.2.1隐式实例化/显式实例化2.3 模板参数的匹配…

SQL注入——floor报错注入

目录 一,涉及到的函数 rand() floor() concat_ws() as别名,group by分组 count() 报错原理 一,涉及到的函数 rand()函数:随机返回0~1间的小数 floor()函数:小数向…

C/C++开发,无可避免的多线程(篇六).线程池封装类

一、线程池概念 线程池是一种多线程处理方式,它包含一个线程工作队列和一个任务队列。当有任务需要处理时,线程池会从线程工作队列中取出一个空闲线程来处理任务,如果线程工作队列中没有空闲线程,则任务会被放入任务队列中等待处理…

M1、M2芯片Mac安装虚拟机

目录前言一、安装二、网络设置三、连接SSH客户端前言 一直想着给M1 Mac上安装虚拟机,奈何PD收费,找的破解也不稳定,安装上镜像就起不来。 注:挂长久的分享莫名其妙被封,需要安装包请私信我。 一、安装 虚拟机选择&a…

一次惨痛教训让我写了个Windows定期备份文件脚本

目录前言正文前言 说实话在写这篇文章的时候,咸鱼不禁又想起了那件男默女泪的往事 我喜欢做笔记,我觉得好记性不如烂笔头,所以在我的学习生涯以及职业生涯阶段,我用过四款笔记应用——Onenote、语雀、印象笔记、Typora 其中我个…

Nacos配置中心,分组配置参考,以及python、go、bash客户端连接获取

Nacos使用说明 nacos官方网站 https://nacos.io/zh-cn/docs/v2/what-is-nacos.html 1、基本配置说明 nacosIP地址:http://xxxxx:8848/nacos/ 服务管理端登录账号:nacos XXX Java最小配置,其他客户端可参考,配置可对应到第三章…

【动态规划】

动态规划1引言题目509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯小结53. 最大子数组和结语引言 蓝桥杯快开始了啊&#xff0c;自从报名后还没认真学过算法有(>﹏<)′&#xff0c;临时抱一下佛脚&#xff0c;一起学学算法。 题目 509. 斐波那契数 斐波那契数 &am…

你来看看这几行代码到底创建了几个字符串?

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

Java中对象的finalization机制

本篇文章我们详细介绍Java中对象的finalization机制&#xff0c;以及怎么使用finalize()方法&#xff0c;将即将被回收的对象&#xff0c;拉回来。1、finalization机制Java语言提供了对象终止&#xff08;finalization&#xff09;机制来允许开发人员提供对象被销毁之前的自定义…

Spring的Async注解线程池扩展方案

目录- [Spring的Async注解线程池扩展方案]- [目录]- [1. 扩展目的]- [2. 扩展实现]- [2.1 扩展Async注解的执行拦截器AnnotationAsyncExecutionInterceptor]- [2.2 扩展Async注解的Spring代理顾问AsyncAnnotationAdvisor]- [2.3 扩展Async注解的 Spring Bean 后置处理器AsyncAn…

Linux安装及管理应用和账号和权限管理 讲解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…