240927-各种卷积最清晰易懂blender动画展示

news/2024/10/5 3:47:18/

blenderConvGConvDWConv11ConvShuffle_0">240927-一些常用卷积清晰易懂的blender动画展示(Conv、GConv、DWConv、1*1Conv、Shuffle)

在几个月前,写过一篇关于卷积过程中输入图像维度变化的博客240627_关于CNN中图像维度变化问题_图像的尺寸为什么又四个维度-CSDN博客,但是当时也是技术力不足,使用的是纯文字描述,可能对于初学者的帮助确实不大。机缘巧合下学习blender,这次也有能力完善之前这篇博客。

一般来说涉及到的维度变换都是四个维度,当batch size=4,图像尺寸为640*640,RGB三通道时,此时维度就是4×3×640×640。3的意思是RGB三通道,如果你传入的图像是单通道图像,此时维度就是4×1×640×640。

当然有些图你看着是一个黑白图,但是他还是有可能是一张RGB三通道图,具体怎么区分呢。右击图片打开属性,打开详细信息,里面可以看到位深度,位深度为24,则为RGB图,位深度为8,则为单通道图。此处就是一个坑,图像分割任务中,标签往往是单通道图,但是有时从网上找到的数据集看起来是黑白的,但是实际训练就会报错,查看了才发现位深度是24,需要用python代码进行修改,具体跳转240627_图像24位深度(RGB图)转为8位深度(单通道图)-CSDN博客。

当维度是三维时,就是没有batch size这个维度,可以理解为这个维度指的是其中一张图。该文举例均为三维,因为三维是对其中一张图的处理,第四维是几就是几张图片,重复几次而已,无需重复赘述。

本文只展示维度上的推演计算,不展示数值的计算及代码展示。
因csdn上传图片大小限制,只能大刀砍画质和帧率,如不清晰及卡顿请谅解。(60帧压成4帧,1080p压成480p。太惨了)
注:图片没有添加任何水印,如需使用请标明出处。

标准卷积

首先我们以标准卷积为例

卷积输出的计算公式为

h e i g h t o u t = ( h e i g h t i n − h e i g h t k e r n e l + 2 ∗ p a d d i n g ) s t r i d e + 1 height_{out}=\frac{(height_{in}-height_{kernel}+2*padding)}{stride}+1 heightout=stride(heightinheightkernel+2padding)+1

w i d t h o u t = ( w i d t h i n − w i d t h k e r n e l + 2 ∗ p a d d i n g ) s t r i d e + 1 width_{out}=\frac{(width_{in}-width_{kernel}+2*padding)}{stride}+1 widthout=stride(widthinwidthkernel+2padding)+1

此处我们输入1张7*7,8通道的图像(8×7×7),经过3×3卷积(padding=0,stride=1),此时的计算公式为
h e i g h t o u t = w i d t h o u t = ( 7 − 3 + 2 ∗ 0 ) 1 + 1 = 5 height_{out}=width_{out}=\frac{(7-3+2*0)}{1}+1=5 heightout=widthout=1(73+20)+1=5
此处为便于演示,我们的卷积核数和输入图像通道数一致,都是8,所以输出图像维度为(8×5×5),如下动画所示:

在这里插入图片描述
注:图片没有添加任何水印,如需使用请标明出处。

batch_sizeheightwidthin_channelout_channel
Input1778
Kernel3388
Output1558

分组卷积

原论文:AlexNet《ImageNet Classification with Deep Convolutional Neural Networks》

最初是因为GPU算力不足,把卷积分组后放到不同的GPU中并行执行。分组后参数量为原来的1/g(g为分组数)

image-20240927095650056

分组卷积中,卷积核和输入图像都被分为不同的组,其中有相互对应关系,每组卷积核和对应的输入channel进行卷积计算,最后将结果合并组合。

如下图,输入图像被分为两个组,同时也有两组卷积与之对应,第一组卷积负责处理前半部分,第二组卷积负责处理后半部分,最后将结果合并,如下动画所示。

在这里插入图片描述
注:图片没有添加任何水印,如需使用请标明出处。

深度可分离卷积

所谓深度可分离卷积,就是极致的分组卷积+逐点卷积。

原论文:《Xception: Deep Learning with Depthwise Separable Convolutions》

image-20240927113457936

极致的分组卷积即输入的图像有多少个channel,我们就将其分成多少组,比如上面的组卷积中,我们输入的图是8channel的,我们这里就把他分成8个组,分别进行卷积,但这样也会产生一个很严重的问题,就是各组之间信息不流通。如下动画所示。
注:这里没有绘制出在输入图像上的滑动框,是因为分组数太多,会相互遮挡,画出来没有意义,实际是每个维度独立参与卷积运算,不是整个,例如第一层与第一个卷积核进行卷积,第二层与第二个卷积核进行卷积。

在这里插入图片描述
注:图片没有添加任何水印,如需使用请标明出处。

为了解决这个问题,需要使用1x1逐点卷积将深度卷积的输出按通道投影到一个新的特征图上。如下动画所示。

1x1ConvLowQuality
注:图片没有添加任何水印,如需使用请标明出处。
下面这个动画就是整个深度可分离卷积的动画。

在这里插入图片描述
注:图片没有添加任何水印,如需使用请标明出处。

逐点分组卷积

原论文:《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》

大量的1*1卷积会产生大量的计算量,计算成本昂贵,所以shufflenet提出了逐点分组卷积

所谓逐点分组卷积,就是在上述深度可分离卷积的基础上,再把深度卷积的结果进行分组,然后进行逐点卷积,可以对照上述深度可分离卷积动画查看。这里就没必要再单独做一个动画了。

channel shuffle

原论文:《ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices》

ShuffleNet除了提出逐点分组卷积之外,还提出了channel shuffle操作

image-20240922191932997

上图中a图代表了常规的分组卷积,可以看到每一组各自为战,相互之间没有战术交流(信息交流),最终输出的特征仅由一部分输出通道的特征计算得出,这种操作阻碍了信息的流通。我们就想,能不能把每一组的信息打乱,分散在不同组中,图b就是这样的设计思想。将每组的特征分散到不同的组后,在进行下一组卷积,但具体该如何实现呢,图c就是一种实现思路,这就是通道混洗。具体实现方法如下图所示:

image-20240923061711699

同样,这里也为大家做了动画展示:

shuffle

Reference:

【图解AI:动图】各种类型的卷积,你认全了吗?_卷积运算过程示意图-CSDN博客

[一文看尽学习>深度学习中的20种卷积(附源码整理和论文解读) - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/381839221#:~:text=引言. 卷积,是卷积)

详述Deep Learning中的各种卷积(一) - 知乎 (zhihu.com)

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices)

Network In Network)

Xception: Deep Learning with Depthwise Separable Convolutions)

ImageNet classification with deep convolutional neural networks (acm.org)
Net classification with deep convolutional neural networks (acm.org)](https://dl.acm.org/doi/pdf/10.1145/3065386)


http://www.ppmy.cn/news/1533886.html

相关文章

C# 解决Excel边框样式无法复制问题及实现格式刷功能

目录 问题现象 范例运行环境 解决方案 剪贴板加特殊粘贴 自定义样式 直接赋值 完美方案 小结 问题现象 在运行数据表数据导出到 EXCEL 数据输出时遇到了一个问题&#xff0c;开发者设计了单行细线下边框的输出模板&#xff0c;如下图设计&#xff1a; 其中 <%syst…

【大数据】在线分析、近线分析与离线分析

文章目录 1. 在线分析&#xff08;Online Analytics&#xff09;定义特点应用场景技术栈 2. 近线分析&#xff08;Nearline Analytics&#xff09;定义特点应用场景技术栈 3. 离线分析&#xff08;Offline Analytics&#xff09;定义特点应用场景技术栈 总结 在线分析&#xff…

如何给一张图像判断失真类型?

判断失真类型 类型 类型 模糊失真&#xff1a; 表现&#xff1a;图像细节不清晰&#xff0c;边缘模糊&#xff0c;整体看起来像是被一层薄雾笼罩。 原因&#xff1a;可能是由对焦不准确、相机抖动、快门速度过慢或景深过浅等原因造成。 判断方法&#xff1a;观察图像中的细节是…

探索机器学习中的特征选择技术

在机器学习和数据科学领域&#xff0c;特征选择是一个关键步骤&#xff0c;它不仅有助于提高模型的性能&#xff0c;还能帮助我们更好地理解数据。本文将深入探讨特征选择的重要性、常见方法以及如何在实际项目中应用这些技术。 一、特征选择的重要性 降低维度&#xff1a;减…

Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进

作者&#xff1a;席翁 Nacos 社区刚刚迎来了 Star 突破 30000 的里程碑&#xff0c;从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助&#xff01; Nacos /nɑ:kəʊs/是 Dynamic Naming and Configuration Service 的首字母简称&#xff0c;定位于一个更易于构建云原…

【动态规划-最长公共子序列(LCS)】力扣583. 两个字符串的删除操作

给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 “sea”, word2 “eat” 输出: 2 解释: 第一步将 “sea” 变为 “ea” &#xff0c;第二步将 "e…

[网络]抓包工具介绍 tcpdump

一、tcpdump tcpdump是一款基于命令行的网络抓包工具&#xff0c;可以捕获并分析传输到和从网络接口流入和流出的数据包。 1.1 安装 tcpdump 通常已经预装在大多数 Linux 发行版中。如果没有安装&#xff0c;可以使用包管理器 进行安装。例如 Ubuntu&#xff0c;可以使用以下…

详解CSS中的伪元素

4.3 伪元素 可以把样式应用到文档树中根本不存在的元素上。 ::first-line 文本中的第一行 ::first-letter 文本中的第一个字母 ::after 元素之后添加 ::before 元素之前 代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8&q…