当前位置: 首页 > article >正文

关于几种卷积

  • 1*1卷积

  • 分组卷积&深度可分离卷积

  • 空洞卷积、膨胀卷积

  • 转置卷积

https://zhuanlan.zhihu.com/p/80041030

https://yinguobing.com/separable-convolution/#fn2

1×1的卷积可以理解为对通道进行加权,对于一个通道来说,每个像素点加权是一样的;而对于一个普通的卷积来说,一个通道上,每个像素点的权重是不一样的;1×1的卷积,对于单个通道上像素点加权是一样的;有几个卷积核就有几个输出特征图;

分组卷积 group convolution;是对输入通道进行分组;输出通道并不是由所有的输入通道共同作用的;会有一种情况,比如输入通道是4,输出通道是2,输出通道的第一个通道只跟输入通道的第1、3个通道有关;输出通道的第二个通道只跟输入通道的第2、4个通道有关;如果输入通道有这样的关系时,我们可以采用分组卷积,设置组数group=2,这时有几个组就会有几个输出通道;这种情况是我们对每个组进行一次卷积,如果我们对每个组进行多次卷积,那么卷积核的个数就会增加了;这样也有一个问题,就是输入特征图的通道之间没有交互,所以这种情况下,在后面的卷积过程中,会有通道之间的随机混合或者用1×1的卷积;poinwise convolution;

深度可分离卷积,是特殊的分组卷积,有几个输入通道,就分成几个组,输入通道之间完全相互独立,deepwise convolution;这种情况下,后面通常会跟着 pointwise  convolution;

空洞卷积 或者 膨胀卷积,对应着Conv2d中的,dilation,默认的api设置是1,在参数量不变的情况下,增加了感受野;指的是索引之间相差多少;指的是两次卷积的索引之间 相差的距离就是dilation-1行 或者 列;输出特征图在计算大小的时候,input_h不变,kernel_h=kernel_h + (dilaiton-1)*(kernel_h-1),对应的计算输出特征图的shape;

关于感受野:

- 2个3×3的卷积核 相当于 1个5×5卷积核感受野

①减少了参数量 ②增加了非线性变换

转置卷积:首先普通卷积的三张理解

  1. 取出区域,逐元素相乘,然后torch.sum函数

  2. 把每次取出的input region拉直,形成矩阵

    5×5的input feature,3×3的kernel,输出3×3的特征图,对着取到input region有9个,我们把9个region拉直成行向量,9个行向量,与 kernel拉成的列向量 进行矩阵相乘,得到输出的列向量,把输出的列向量,reshape成输出特征图的尺寸,完成卷积

  3. 对于kernel每次移动的位置,把kernel填充成跟输入特征图一样的大小,把kernel同样拉直,拼接,按行拼接,input拉成列向量,同样的原理,再reshape 得到输出

那什么是转置卷积呢?转置卷积就是把 得到的 kernel阵拼成的行向量 9×25,转置成25×9,再和输出特征图拉成的列向量 9×1 进行相乘,得到25×1的列向量,这样是不是很神奇,如果再reshape一下,不就变成了 输入特征图的尺寸 5×5

这就是转置卷积,上采样,还原尺寸,注意是还原尺寸,而不会还原具体的数值;所谓转置就是因为我们把拉成行向量的kernel阵,进行了转置。

以下是几张图,帮助理解:

普通卷积:

deepwise convolution

​1×1卷积 pointwise convolution


http://www.kler.cn/a/384406.html

相关文章:

  • 如何正确进行activemq服务搭建及性能调优?
  • 分布式——BASE理论
  • 怎么将byte转换为String?
  • SpringBoot项目集成ONLYOFFICE
  • Mac解决 zsh: command not found: ll
  • Tomcat(4) Tomcat支持哪些版本的Java?
  • 场馆场地预定预约源码全开源uniapp+搭建教程
  • 全面解析Flutter中的Stream用法及实际应用
  • ssm070基于SSM框架的校园代购服务订单管理系统的设计与实现+vue(论文+源码)_kaic
  • 开源数据库 - mysql - innodb源码阅读 - 线程启动
  • 【Hive sql 面试题】现有用户登录记录表,请查询出用户连续三天登录的所有数据记录(难)
  • css background-image背景图片轮播
  • linux常用指令整理
  • ReactPress:重塑内容管理的未来
  • 【论文阅读】火星语义分割的半监督学习
  • 【一站式学会Kotlin】第二十六 Kotlin枚举类和封闭类
  • AI Prompt如何帮你提升论文中的逻辑推理部分?
  • SpringBoot框架下的资产管理智能化
  • 前端将后端返回的文件下载到本地
  • EDM邮件营销策略:提升转化率的关键步骤!
  • 深度学习:transformer编码器详解
  • 算法学习--回溯算法
  • 如何为 Redis 设置密码
  • 数据结构---二叉树(顺序结构),堆(上)
  • 大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
  • Qt多边形填充/不填充绘制