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

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.xdnf.cn/news/1548535.html

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

相关文章

猫鱼分干(模拟---拆分步骤)

算法分析: 注意:总是更新遍历方向上的元素(eg. 左 i-1 和 i :更新i)区分水平和分配量从左向右:只要右侧水平大于左侧,即右侧等于左侧值加一从右向左:若左侧水平大于右侧&#xf…

一次实践:给自己的手机摄像头进行相机标定

文章目录 1. 问题引入2. 准备工作2.1 标定场2.2 相机拍摄 3. 基本原理3.1 成像原理3.2 畸变校正 4. 标定解算4.1 代码实现4.2 详细解析4.2.1 解算实现4.2.2 提取点位 4.3 解算结果 5. 问题补充 1. 问题引入 不得不说,现在的计算机视觉技术已经发展到足够成熟的阶段…

c++day08

思维导图 栈 #include <iostream>using namespace std;template <typename T> class Stack { private:static const size_t MAX 100; // 定义固定容量T data[MAX]; // 存储栈元素的数组size_t len; // 当前栈的大小public:…

浅谈电气火灾监控系统在变电所的应用

摘要&#xff1a;阐述电气火灾监控系统在变电所的应用&#xff0c;电气火灾监控系统的管理措施&#xff0c;包括运行标准、运行模式、运行原则、警报阈值、监控显示。安科瑞叶西平1870*6160015 关键词:监控系统&#xff1b;警报阀值&#xff1b;运行模式&#xff1b;医院&…

高效免费!PDF秒变Word,在线免费转换工具推荐!!!

#创作灵感# 工作中&#xff0c;总是需要将pdf文件转换成word文件&#xff0c;便于后期编辑、处理、使用&#xff0c;但是又没有wps会员&#xff0c;虽然去淘宝买&#xff0c;一天也就8毛钱左右&#xff0c;但是转换文件的工作几乎每天都需要做&#xff0c;长此以往&#xff0c;…

7.字符串 Strings

作业系统链接 字符串文字可以使用单引号、双引号或三引号来定义&#xff0c;其中三引号特别适用于多行字符串。转义序列如\n&#xff08;换行&#xff09;和\t&#xff08;制表符&#xff09;在字符串中起到特殊作用。字符串方法如replace()、strip()、lower()和upper()提供了丰…

外国名人面孔识别系统源码分享

外国名人面孔识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

艺术作品风格识别系统源码分享

艺术作品风格识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

Java数据结构--List介绍

前言&#xff1a; 数据结构可以说是一门思想&#xff0c;当我们在对数据处理、储存的时候需要用到。 前面我用C语言写过数据结构的相关内容&#xff0c;在Java阶段的数据结构思想是一样的&#xff0c;就是有些地方实现的方式是有区别的。 因此在Java阶段前期的数据结构&#xf…

Python的包管理工具pip安装

Python的包管理工具pip安装 一、安装步骤1.检查 pip是否已安装2.安装 pip方法一&#xff1a;通过 ​ensurepip​ 模块安装(推荐)方法二&#xff1a;通过 ​get-pip.py​ 脚本安装&#xff08;经常应为网络域名问题连接不上&#xff09; 3.验证pip安装4.创建别名5.更新pip 二、常…

找不到msvcr100.dll怎么解决?总结6个有效的解决方法

在使用计算机的过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcr100.dll丢失”。这个问题可能会让我们感到困惑和无助&#xff0c;但是不用担心&#xff0c;本文将为大家介绍六种实用的解决方法&#xff0c;帮助你轻松解决这个问题。 一&#xff…

Lenovo SR850服务器亮黄灯维修和升级CPU扩展模块

佛山市三水区某高校1台Lenovo Thinksystem SR850服务器黄灯故障到现场检修 和 升级3号和4号CPU。加强服务器的计算性能&#xff1b; 故障情况是该学校it管理员这一天看到这台SR850服务器前面板亮了一个黄灯&#xff0c;但是目前系统运行正常&#xff0c;出于安全考虑&#xff0…

【如何学习操作系统】——学会学习的艺术

&#x1f41f;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢编程&#x1fab4; &#x1f421;&#x1f419;个人主页&#x1f947;&#xff1a;Aic山鱼 &#x1f420;WeChat&#xff1a;z7010cyy &#x1f988;系列专栏&#xff1a;&#x1f3de;️ 前端-JS基础专栏✨前…

[数据结构] 二叉树题目(一)

目录 一.翻转二叉树 1.1 题目 1.2 示例 1.3 分析 1.4 解决 ​编辑 二. 相同的树 2.1 题目 2.2 示例 2.3 分析 2.4 解决 三. 对称二叉树 3.1 题目 3.2 示例 3.3 分析 3.4 解决 一.翻转二叉树. - 力扣&#xff08;LeetCode&#xff09; 1.1 题目 1.2 示例 1.3 分…

python的 __name__和__doc__属性

__name__属性 __name__属性 用于判断当前模块是不是程序入口&#xff0c;如果当前程序正在使用&#xff0c;__name__的值为__main__。 在编写程序时&#xff0c;通常需要给每个模块添加条件语句&#xff0c;用于单独测试该模块的功能。 每个模块都有一个名称&#xff0c;当一…

大屏走马灯与echarts图表柱状图饼图开发小结

一、使用ant-design-vue的走马灯(a-carousel)注意事项 <!-- 左边的轮播图片 --><a-carousel :after-change"handleCarouselChange" autoplay class"carousel" :transition"transitionName"><div v-for"(item, index) in it…

每日论文4——09TCAS1分数锁相环的动态电流匹配电荷泵和门偏置线性化技术

《Dynamic Current-Matching Charge Pump and Gated-Offset Linearization Technique for Delta-Sigma Fractional- PLLs》09TCAS1 本文CP的结构比较简洁&#xff0c;没有使用OPA&#xff0c;所以相比起来减小了功耗和面积&#xff0c;但是目测起来匹配效果是不如用OPA的CP的。…

MySQL—索引机制详解

索引介绍 基本介绍 MySQL 官方定义索引为一种帮助数据库高效获取数据的结构&#xff0c;其本质是排好序的快速查找数据结构。数据库除了存储表中的数据&#xff0c;还维护一些额外的满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式指向实际的数据&#xff0c;…

2024年在线音频剪辑工具推荐。这4个你都知道哪些?

音频剪辑在很多的场景中都会使用到&#xff0c;比如个人制作音乐混剪&#xff0c;制作视频配乐&#xff0c;剪辑会议、讲座等记录&#xff0c;播客制作等等。对于一些媒体创作者是一种必备的技能。但其实音频剪辑并不难&#xff0c;如果掌握了一些剪辑工具的话。所以&#xff0…

计算机毕业设计 基于Python的热门微博数据可视化分析系统的设计与实现 Python+Django+Vue 可视化大屏 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…