一文搞定3D卷积_图解法求卷积是重叠部分的面积吗

一文搞定3D卷积_图解法求卷积是重叠部分的面积吗在讨论卷积核的时候,是不把channel维加进去的核=一个可以滑动的窗口窗口内不同位置数据之间的权值共享3D卷积,卷积核会在3个方向上运动,那么卷积核的运动需要有三个自由度(一小块立方体,在

一文搞定3D卷积

在讨论卷积核的时候,是不把channel维加进去的

核 = 一个可以滑动的窗口

窗口内不同位置数据之间的权值共享

3D卷积,卷积核会在3个方向上运动,那么卷积核的运动需要有三个自由度(一小块立方体,在一个大面包块内3个方向上滑动
2D卷积,卷积核只在2个方向上运动,因此只有两个自由度(一小片纸,在一大张纸内2个方向上滑动
1D卷积,卷积核只在1个方向上运动,因此只有一个自由度(一条滑窗,在一大长线上1个方向上滑动

一个卷积核运算一次 得到一个输出值(先乘法再加法)


接下来考虑,卷积层如何进行计算,即将卷积核作用在多个输入通道上,又得到多个输出通道。

下图展示了CxHxW的输入特征,通过2D卷积层,得到1xHxW的输出特征的过程。

用pytorchAPI描述就是:

torch.nn.Conv2d(in_channels=C, out_channels=1, kernel_size=3, stride=1, padding=0, dilation=1, groups=1, bias=Falese, padding_mode='zeros', device=None, dtype=None)

该卷积层参数量为:输入通道数*输出通道数*kernel_size*kernel*size=C*3*3*1

该2D卷积中的所有kernel都需要在HW维度上做步长为1的滑动。因此,我们将多个输入通道拼接在一起,同时将C个卷积核拼接在一起,滑动一轮,边滑动边做乘法。再做一次加法得到单通道结果(绿色)
在这里插入图片描述
如果输出通道为K,则如下图所示,卷积层参数量为:C*3*3*K
在这里插入图片描述

取某一通道中的3D特征为例,做TxHxW方向上的滑动3D卷积。该3*3*3的3D卷积核,在三个方向上滑动得到的一个THW都更小的3D输出特征。
在这里插入图片描述
而如果考虑多通道,和2D卷积层同理,3D卷积层也对同一输入特征,做并行的乘法和加法运算。
在这里插入图片描述

3D卷积

下图是C3D论文中配图 (b) (c) 都是视频cube作为输入
在这里插入图片描述
视频输入:CxTxWxH 不能用一个立方体表示了;
考虑输入:C个并列的维度为TxWxH的cude(多个蓝色cube同时算)
用一个小方块在cube中3个方向滑动,得到一个厚度为时间步的输出


2D卷积情况下,此文第一张图 橘色块到绿色片的转化,上图为过程演示(https://poloclub.github.io/cnn-explainer/)
在这里插入图片描述

3D卷积情况下,不画图解释了,就是多个“维度相同的cube”先滑动乘法,再加法到同一个cube,以上2d图中的纸片看作一个个切片面包

卷积分解

先说一个 1×1 卷积,不属于卷积分解
如果我们要做5×5卷积,先在之前加一个1×1卷积 用于降维/通道(1×1卷积核个数<输入通道数 即可实现低成本降维/通道)
原本一步操作分成2步操作,有分解那味了

// 假设
input feature maps:28×28  channel:256
1x1 convolutional layer:1x1 channel:16
5x5 convolutional layer:5x5 channel:32
   
// 仅一步32个5x5卷积
卷积核参数量 = 256x5x5x32 = 201800

// 两步:5x5 卷积之前经过了 1x1 卷积
输入的 size 为 28x28x256 经过 1x1 卷积后 size 为 28x28x16 (通道数256降低至16)
再5x5卷积
卷积核参数量 = 256x1x1x16 + 16x5x5x32 = 16896

同理,1×1卷积核个数>输入通道数,即可升维度

Q:是否损失信息?
A:理论模糊(跨通道信息交互啦耦合解耦通道信息啦不损失分辨率啦),实验结果说明并没有损失很多信息,最大好处减少参数量~


空间可分离卷积

1个二维卷积核分解为2个一维卷积核点积

比起卷积,空间可分离卷积要执行的矩阵乘法运算也更少。假设我们现在在 m x m 卷积核、卷积步长=1 、填充=0 的 N x N 图像上做卷积。传统的卷积需要进行 (N-2) x (N-2) x m x m 次乘法运算,而空间可分离卷积只需要进行 N x (N-2) x m + (N-2) x (N-2) x m = (2N-2) x (N-2) x m 次乘法运算

深度(通道)可分离卷积

Depthwise Separable Convolution

2D卷积的 多通道输出,不add,而进行stack
在这里插入图片描述

Pointwise Separable Convolution

上一步stack后的多通道输出,通过一个”1x1x通道数”的卷积核计算,一个核输出一个通道
在这里插入图片描述流程如下:
在这里插入图片描述等同于
在这里插入图片描述
肉眼可见参数量的大大缩小
3x3x3x128 -> 3x3x3 + 1x1x3x128

另一篇解释:https://yinguobing.com/separable-convolution/#fn2


S3D, (2+1)D, P3D

k_t x k x k –> 1x k x k (saptial, depthwise) + k_t x 1 x 1(temporal, pointwise)

CSN

Channel-Separated Convolutional Networks
下图是CSN 论文配图:卷积(chanel合并),组卷积(组内channel合并),depthwise卷积(channel不合并)
在这里插入图片描述

分解channel

CHW为输入:

  • 普通卷积:空间下采样,通道合1
  • channel-wise卷积:空间下采样,通道拼接
  • point-wise卷积,空间不变,通道合1

今天的文章一文搞定3D卷积_图解法求卷积是重叠部分的面积吗分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/74551.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注