分组卷积和空洞卷积总结
参考链接:分组卷积(Group conv)与深度可分离卷积(Depthwise separable conv) - 知乎
【深度学习】空洞卷积(Atrous Convolution)_行者无疆兮的博客-CSDN博客_空洞卷积
一、分组卷积
1.卷积核参数计算量:
k1*k2*c1*c2 (k1,k2为卷积核大小,c1为inchannels,c2为outchannels)
正常卷积计算:首先卷积核的深度肯定和输入一样为C1,卷积过程是对应输入卷一次(加权求和)得一个值,最终一个卷积核卷出一层的特征图,此时的参数量(为什么不考虑输入的参数量呢,因为网络更新是更新的卷积核啊)为h1*w1*c1,这是一个卷积的参数,对应输出的通道为c2,需要c2个卷积核,因此总参数量为:h1*w1*c1*c2。
2.分组卷积的概念和参数量计算
①概念:分组卷积,即ResNeXt,是受到Inception和AlexNet的启发。Inception的论文中提到,对于卷积来说,卷积核可以看做一个三维的滤波器:通道维+空间维,常规的卷积操作其实就是实现通道相关性和空间相关性的联合映射。Inception 模块的背后存在这样的一种假设:卷积层通道间的相关性和空间相关性是可以退耦合的,将它们分开映射,能达到更好的效果.具体来说,经过不同卷积路径得到的特征图之间的耦合性较低,关注的主要特征不同,可以得到互为补充的特征图,以更完整的表示图像。
②参数计算:如图设分为g个组,g要能被c1,c2整除,因为卷多少分之一输入,生成的特征图个数也为原本的多少分之一。那么,卷积核深度为c1/g,同时负责卷积输入的c1/g个通道,同时卷积核个数也为c2/g。因为卷积后的特征图的数量(channel)为c2/g,计算量为:k1*k2*c1/g * c2/g。一共分了g个组,总参数量为:k1*k2*c1/g c2/g g = k1*k1*c1*c2/g ,比正常的卷积要少了g分之一的参数量。
③代码实现:
import torch
import torch.nn as nn
...
model = nn.Conv2d(in_channels = in_channel, out_channels = out_channel,
kernel_size = kernel_size, stride = stride, padding = 1, dilation = dilation, group = group_num)
3.深度可分离卷积的概率和参数量计算
①概念:是分组卷积的一个极端情况,将组数设置为输入通道数,即每一个输入通道都由一个专门的卷积核负责卷积。但是要经过两个操作,分别是:depth_wise和point_wise卷积,depth_wise和分组卷积一样得到了c1深度的特征图,然后再通过1*1*c2的卷积核调整通道数。(思考:convnext的实现中没有pointwise的原因:输入和输出通道数相同,因此无需调整,那如果c2能够整除c1呢,不能直接在第一阶段生成c2/c1个特征图吗,然后在组合起来??)
②参数量计算:depth_wise阶段,卷积核的大小是k1 * k2 * 1,分别卷积输入中的一个通道,得到特征图一张, 使用了c1个卷积核,最终特征图为c1个,这里计算量为:k1*k2*1*c1 ,然后就是point_wise, 卷积核大小1*1
*c1 ,一共c2个,计算量为:1*1*c1*c2,总计算量:k1*k2*c1 + c1*c2
③代码:
import torch
import torch.nn as nn
...
model = nn.Sequential(nn.Conv2d(in_channels = in_channel, out_channels = in_channel,
kernel_size = kernel_size, stride = stride, padding = 1, dilation = dilation, group = in_channel),nn.Conv2d(in_channels = in_channel, out_channels = out_channel kernel_size = 1, padding = 0))
二、空洞卷积(膨胀卷积)
1.概念
空洞卷积是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野,让原本3x3的卷积核,在相同参数量和计算量下拥有5x5或者更大的感受野,从而无需下采样。向卷积层引入了一个称为“扩张率(dilationrate)”的新参数,该参数定义了卷积核处理数据时各值的间距。
2.优点
在不增加参数的情况下,增加了图像的感受野;缺点:局部信息丢失:由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果
分组卷积和空洞卷积总结相关推荐
- 卷积、转置卷积、可分离卷积、分组卷积、空洞卷积的理解
文章目录 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 转置卷积 深度可分离卷积 分组卷积 空洞卷积 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 这里主要是汇总一些本人觉得比较好的文 ...
- 膨胀卷积(空洞卷积 dilated convolution)
学习的B站大佬的视频大部分图片来自于课中,文章结尾有大佬视频链接,以及阅读<深度学习之pytorch物体检测实战>,刚开始学习可能有些错误,希望大佬指正 1.空洞卷积了解 空洞卷积最初是为 ...
- 卷积、空洞卷积、反卷积与空洞反卷积的计算公式(全)
前言: 经常使用的卷积有卷积.空洞卷积.反卷积与空洞反卷积的,下面总结了他们的计算公式. 一.卷积计算公式 卷积神将网络的计算公式为: N=(W-F+2P)/S+1 其中 N:输出大小 W:输入大小 ...
- 【扩张卷积or空洞卷积】如何理解Dilated Convolutions(空洞卷积)
文章来源:https://blog.csdn.net/alxe_made/article/details/88594550 1. 扩张卷积的提出 Multi-Scale Context Aggrega ...
- 卷积,反卷积,空洞卷积
卷积神经网络中卷积核的作用在于特征的抽取,越是大的卷积核尺寸就意味着更大的感受野,当然随之而来的是更多的参数.早在1998年,LeCun大神发布的LetNet-5模型中就会出,图像空域内具有局部相关性 ...
- 关于深度可分离卷积、空洞卷积、分组卷积的理解笔记
深度可分离卷积(Depthwise separable convolution) 深度可分离卷积由逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolu ...
- 卷积,特征图,转置卷积和空洞卷积的计算细节
六月 北京 | 高性能计算之GPU CUDA培训 6月22-24日三天密集式学习 快速带你入门阅读全文> 正文共2029个字,13张图,预计阅读时间13分钟. 最近在做姿态估计的项目,在定制和 ...
- 语义分割|学习记录(4)膨胀卷积(空洞卷积 )
文章目录 前言 一.膨胀卷积 二.gridding effect 三.使用多个膨胀卷积的时候,怎样设置膨胀系数? 四.膨胀系数设置建议 五.是否应用HDC设计准则的分割效果对比 六.总结 参考资料 前 ...
- DW卷积、PW卷积、转置卷积、膨胀卷积(空洞卷积)、可变形卷积一次看个够
Depthwise Separable Convolution也就是深度可分离卷积,应该见过吧,它其实是由depthwise卷积和pointwise卷积组合而成,同样可以用来提取图像特征,但是它的计算 ...
- 深度可分离卷积、空洞卷积、反卷积、感受野计算、上采样
文章目录 输出特征图尺寸的计算 Depthwise卷积和Pointwise运算成本比较低 空洞卷积 反卷积 上采样 输出特征图尺寸的计算 Depthwise卷积和Pointwise运算成本比较低 如何 ...
最新文章
- C++核心编程(四)--文件操作
- mac mysql的安装
- Zabbix3.X---Zabbix _Agent主动模式的监控(Active)
- 没有日志,只有MDF文件如何恢复数据库(转)[
- python里保存图片_python保存图片报错?
- for-forEach-stream.forEach三种遍历方法
- Vista上远程管理Hyper-V服务器
- SIGGRAPH 2021丨OPPO与南大提出双流网络:仅输入单张图片,就能“看”出物体材质...
- NFT交易平台Mintable首个提案通过 收入将按比例分配给MINT代币持有者
- Hello 博客园! ---致我人生中的第一篇随笔
- 影视】100种说爱你的方式~
- R语言——RStudio下载R包时总是下载不成功?解决方案
- Value-Decomposition Networks For Cooperative Multi-Agent Learning(VDN)
- UCOS操作系统——中断和时间管理(七)
- 百度离线地图-Vue
- 1. 测度论-概率空间的基本概念
- 鬼谷八荒宗门亲密度怎么提升
- 工业相机基本参数以及选型参考
- 【STM32单片机】打砖块游戏设计
- 将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网