三维卷积( 3D CNN)

三维卷积( 3D CNN)

1.什么是三维卷积

1.1 三维卷积简介

二维卷积是在单通道的一帧图像上进行滑窗操作,输入是高度H宽度W的二维矩阵。

三维卷积输入多了深度C这个维度,输入是高度H宽度W深度C的三维矩阵。在卷积神经网络中,网络每层的宽度是由每一层特征图图的通道数绝决定的。多通道卷积看起来和三维卷积有一样的深度,但两者之间是有本质的区别的。

下面就是 3D 卷积,其过滤器深度小于输入层深度(核大小<通道大小)。因此,3D 过滤器可以在所有**三个方向(图像的高度、宽度、通道)**上移动。在每个位置,逐元素的乘法和加法都会提供一个数值。因为过滤器是滑过一个 3D 空间,所以输出数值也按 3D 空间排布。也就是说输出是一个 3D 数据。

https://i-blog.csdnimg.cn/blog_migrate/7d1a499a0a3c3a43c7677e57c85e1890.png

1.2 三维卷积的工作原理

​ 首先我们看一下3D CNN是如何对时间维度进行操作的,如下图所示,我们将时间维度看成是第三维,这里是对连续的四帧图像进行卷积操作,**3D卷积是通过堆叠多个连续的帧组成一个立方体,然后在立方体中运用3D卷积核。**在这个结构中,卷积层中每一个特征map都会与上一层中多个邻近的连续帧相连,因此捕捉运动信息。

img

注:3D卷积核只能从cube(立方)中提取一种类型的特征,因为在整个cube中卷积核的权值都是一样的,也就是共享权值,都是同一个卷积核(图中同一个颜色的连接线表示相同的权值)。我们可以采用多种卷积核,以提取多种特征 。

2.三维卷积核多通道卷积的区别

2.1单通道卷积

img

​ 输入是灰色图片,输入通道数是1,卷积核有3个,做三次卷积操作,生成3个特征图,输出通道数为3。

​ 单通道特征图的计算为:

img

2.2 多通道卷积

首先先看一下多通道卷积,如下图所示 ,这里多通道的卷积不同通道上的卷积核参数是不相同的。

1个多通道卷积:

img

4个多通道卷积:

在这里插入图片描述

具体计算过程:

img

图是对一个3通道的图片做卷积操作,卷积核的大小为 3 × 3 ,卷积核的数目为3,此时过滤器指的就是这三个卷积核的集合,维度是 3 × 3 × 3 ,前面的 3 × 3 指的是卷积核的高度(H)和宽度(W),后面的那个 3 指的是卷积核的数目(通道数)。

​ 上面的操作是对三个通道分别做卷积操作,然后将卷积的结果相加,最后输出一个特征图。

​ 即: 一个过滤器(3维|多通道)就对应一个特征图。

2.3 三维卷积和多通道卷积之间的区别

1)结构不一样:三维卷积核的大小为k*k*d,三维特征图的深度为L,一般d<L,由于卷积核本身是三维的(如下图所示),在三维的特征图上进行卷积时权重是共享的,输出时一个三维的特征图,所以和上面的多通道的卷积结构是不一样的。

三维卷积

三维卷积示意

多通道卷积:

多通道卷积

多通道卷积的卷积核的第三个维度是通道数,所以看起来类似三维。

2)参数不一样:三维卷积核多通道卷积本质上是不同的,一次多通道卷积的数量为kxkxL(待卷积的三维特征图的深度为L),一次三维卷积的参数量为kxkxd,如果载考虑三维卷积的通道数C,则需要的参数数量为kxkxdxC.所以三维卷积和二维卷积的参数比为dxC/L,这样三维卷积的数量级会增加一个级别。

3)结果不一样:三维卷积后的channel取决于三维卷积核,而多通道卷积后的channel取决于卷积核的个数。

2.4 总结

​ 3D CNN主要运用在视频分类、动作识别等领域,它是在2D CNN的基础上改变而来。由于2D CNN不能很好的捕获时序上的信息,因此我们采用3D CNN,这样就能将视频中时序信息进行很好的利用。首先我们介绍一下2D CNN与3D CNN的区别。如下图所示,a)和b)分别为2D卷积用于单通道图像和多通道图像的情况(此处多通道图像可以指同一张图片的3个颜色通道,也指多张堆叠在一起的图片,即一小段视频),对于一个滤波器,输出为一张二维的特征图,多通道的信息被完全压缩了。而c)中的3D卷积的输出仍然为3D的特征图。也就是说采用2D CNN对视频进行操作的方式,一般都是对视频的每一帧图像分别利用CNN来进行识别,这种方式的识别没有考虑到时间维度的帧间运动信息,而使用3D CNN能更好的捕获视频中的时间和空间的特征信息。

img

3.三维卷积的应用

三维卷积因为是三维的,所以它对具有3维的数据进行处理,比如视频(宽、高、时间|多帧的二维图片),点云(一些三维点的集合),常见的应用有视频、点云的分类、分割。

3.1视频的分类

虽然视频本质上是连续帧的二维图像,但是如果将一段视频切片当做一个整体,将其数据升级到三维,三维卷积神经网络在视频方面应用最广泛的就是进行视频分类。与二维神经网络相同,三维神经网络也包括输入层,卷积层,池化层,全连接层,损失函数层等网络层。下面相似介绍图中的三维神经网络的工作原理:

img

input—>H1:

神经网络的输入为7张大小为6040的连续帧,7张帧通过事先设定硬核(hardwired kernels)获得5种不同特征:灰度、x方向梯度、y方向梯度、x方向光流、y方向光流,前面三个通道的信息可以直接对每帧分别操作获取,后面的光流(x,y)则需要利用两帧的信息才能提取,因此H1层的特征maps数量:(7+7+7+6+6=33)[解释:7个灰度(输入是7个),7个x方向梯度,7个y方向梯度,6个x方向光流(因为是两帧作差得到的,所以7个,相互两个作差就是6个),6个y方向光流],特征maps的大小依然是60 40。

H1—>C2

​ 用两个7*7*3的3D卷积核对5个channels分别进行卷积,获得两个系列,每个系列5个channels(7* 7表示空间维度,3表示时间维度,也就是每次操作3帧图像),同时,为了增加特征maps的个数,在这一层采用了两种不同的3D卷积核,因此C2层的特征maps数量为:(((7-3)+1)* 3+((6-3)+1)* 2)* 2=23* 2。这里右乘的2表示两种卷积核。特征maps的大小为:((60-7)+1)* ((40-7)+1)=54 * 34。然后为卷积结果加上偏置套一个tanh函数进行输出。(典型神经网。)

C2—>S3

2x2池化,下采样。下采样之后的特征maps数量保持不变,因此S3层的特征maps数量为:23 *2。特征maps的大小为:((54 / 2) * (34 /2)=27 *17

S3—>C4

为了提取更多的图像特征,用三个763的3D卷积核分别对各个系列各个channels进行卷积,获得6个系列,每个系列依旧5个channels的大量maps。

我们知道,从输入的7帧图像获得了5个通道的信息,因此结合总图S3的上面一组特征maps的数量为((7-3)+1) * 3+((6-3)+1) * 2=23,可以获得各个通道在S3层的数量分布:

前面的乘3表示gray通道maps数量= gradient-x通道maps数量= gradient-y通道maps数量=(7-3)+1)=5;

后面的乘2表示optflow-x通道maps数量=optflow-y通道maps数量=(6-3)+1=4;

假设对总图S3的上面一组特征maps采用一种7 6 3的3D卷积核进行卷积就可以获得:

((5-3)+1)* 3+((4-3)+1)* 2=9+4=13;

三种不同的3D卷积核就可获得13* 3个特征maps,同理对总图S3的下面一组特征maps采用三种不同的卷积核进行卷积操作也可以获得13*3个特征maps,

因此C4层的特征maps数量:13* 3* 2=13* 6

C4层的特征maps的大小为:((27-7)+1)* ((17-6)+1)=21*12

然后加偏置套tanh。

C4—>S5

3X3池化,下采样。此时每个maps的大小:7* 4。通道maps数量分布情况如下:

gray通道maps数量= gradient-x通道maps数量= gradient-y通道maps数量=3

optflow-x通道maps数量=optflow-y通道maps数量=2;

S5—>C6

进行了两次3D卷积之后,时间上的维数已经被压缩得无法再次进行3D卷积(两个光流channels只有两个maps)。此时对各个maps用7*42D卷积核进行卷积,加偏置套tanh(烦死了!),获得C6层。C6层维度已经相当小,flatten为一列有128个节点的神经网络层。

C6—>output

经典神经网络模型两层之间全链接,output的节点数目随标签而定。

参考资料:

深度学习笔记----三维卷积及其应用(3DCNN,PointNet,3D U-Net)-CSDN博客

卷积神经网络中二维卷积核与三维卷积核有什么区别?-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503482.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黄仁勋演讲总结(2种显卡,1个开源大模型,1个数据采集平台)

研发算力显卡RTX50系列&#xff0c;PC端显卡GB10&#xff0c;开源大模型Cosmos&#xff08;用于机器人和自动驾驶&#xff09;&#xff0c; Isaac GR00T&#xff08;人形机器人的数据采集平台&#xff09;。 新一代 RTX 50 系列显卡 RTX 50 系列 GPU&#xff0c;相对之前系列&a…

阿尔法linux开发板ping不通百度

我使用的阿尔法linux板子&#xff0c;发现按照《03【正点原子】I.MX6U网络环境TFTP&NFS搭建手册V1.3.2》一套操作下来&#xff0c;还是没办法实现板子上网。 我总结了下面方法&#xff0c;我如何实现联网和互ping通&#xff0c;大致总结下三步 一、pc端的wifi网络&#xf…

使用图像过滤器在 C# 中执行边缘检测、平滑、浮雕等

图像过滤器可让您对图像中的像素执行操作。这是一个相当大的示例,因此您可能需要花一些时间浏览代码。 在一种图像滤镜中,您有一个称为滤镜内核的值数组。对于图像中的每个像素,您将内核置于该像素的中心。然后将内核下的每个像素的值乘以相应的内核值。将它们相加,除以“…

数值分析速成复习笔记

请确保你有10hour的有效学习时间&#xff0c;保你拿90 证明部分 编程部分

如何快速上手一个鸿蒙工程

作为一名鸿蒙程序猿&#xff0c;当你换了一家公司&#xff0c;或者被交接了一个已有的业务。前辈在找你之前十分钟写了一个他都看不懂的交接文档&#xff0c;然后把一个鸿蒙工程交接给你了&#xff0c;说以后就是你负责了。之后几天你的状态大概就是下边这样的&#xff0c;一堆…

asammdf python库解析MF4文件(一)cut and filter

目录 cutfilter asammdf 是一个功能强大的 Python 库&#xff0c;专门用于处理汽车行业常用的 MDF&#xff08;Measured Data Format&#xff09;文件 这篇文章主要介绍mdf库的cut和filter函数 cut cut函数主要用于裁剪数据&#xff0c;比如你的MF4文件是一个100s的数据&…

性能测试01|性能测试理论

目录 一、性能测试概述 二、性能测试的分类 1、基准测试 2、负载测试 3、稳定性测试 4、压力测试 5、并发测试 三、性能测试的指标 1、响应时间 2、并发用户数 3、吞吐量 4、点击数 5、错误率 6、资源利用率 四、性能测试流程 1、性能需求分析 2、性能测试计划…

基于SpringBoot的斯诺克球馆预约购票管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【JavaWeb】2. 通用基础代码

以下内容来源&#xff1a;编程导航。 无论在任何后端项目中&#xff0c;都可以复用的代码。 1、自定义异常 自定义错误码&#xff0c;对错误进行收敛&#xff0c;便于前端统一处理。 &#x1f4a1; 这里有 2 个小技巧&#xff1a; 自定义错误码时&#xff0c;建议跟主流的错…

获取IP地区

包 https://packagist.org/packages/geoip2/geoip2#v3.1.0 用composer加载包 composer require geoip2/geoip2 mmdb下载 https://github.com/P3TERX/GeoLite.mmdb?tabreadme-ov-file

企业国外传输大文件到国内该怎么做?

在全球化的商业环境中&#xff0c;企业跨国传输大文件已成为日常运营的重要组成部分。无论是项目合作、数据分析还是文件备份&#xff0c;高效且安全的文件传输对于企业的竞争力和业务连续性至关重要。 企业跨国传输文件的需求重要性 首先&#xff0c;跨国传输大文件能够显著提…

HTML+CSS+JS制作中华传统文化主题网站(内附源码,含5个页面)

一、作品介绍 HTMLCSSJS制作一个中华传统文化主题网站&#xff0c;包含首页、文化艺术页、传统工艺页、文化遗产页、关于我们页等5个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。 二、页面结构 1. 顶部导航区 包含网站 Logo、主导航菜单&#xff…

stm32week3

stm32学习 二.外设 8.TIM输出比较 OC(output compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系&#xff0c;来对输出电平进行置1、置0、翻转操作&#xff0c;用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 高级定时器的…

学习threejs,导入assimp assimp2json格式的模型

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.AssimpJSONLoader as…

Webstorm整合Tabnine AI 编码工具

1、打开 WebStorm 设置 Windows/Linux: File -> Settings Mac: WebStorm -> Preferences 2、安装插件 选择 Plugins 点击 Marketplace 搜索 "Tabnine" 点击 Install 重启 WebStorm 如果第一种方式在插件中搜索不到Tabnine的话 则通过第二中方式安装 1、访问Tab…

Tableau数据可视化与仪表盘搭建-数据可视化原理

目录 内容 做个小实验 数据如何变成图表 1 2 维度和度量定义 3 度量映射图形&#xff0c;维度负责区分 1 可映射的数据类型 2 可视化字典 3 使用Tableau将数据变成图表(Tableau可视化原理) 1 2 拖拽 3 具体操作 4 总结 内容 点击左下角的工作表 tableau可以自动…

ansible-api分析(Inventory)

一. 简述&#xff1a; 通过ansible 实现系统初始化功能&#xff0c; 为和平台嵌入&#xff0c; 需要通过ansible的api进行功能实现。 准确来说&#xff0c;ansible并没有纯粹的外部接入api功能&#xff0c; 只是官方提供了原生类&#xff0c;用于继承接入&#xff0c;从而实现a…

[Linux]Mysql9.0.1服务端脱机安装配置教程(redhat)

前言 本教程适用于在yum源不可用的LInux主机上安装Mysql的场景。 以redhat系主机做操作示例&#xff0c;debian系主机可参照步骤&#xff0c;将对应的rpm -ivh命令换成dpkg -i。 1. 官网下载安装包 https://dev.mysql.com/downloads/mysql/ 1.1 版本分类 MySQL Enterprise…

【JAVA】Java开发小游戏 - 简单的2D平台跳跃游戏 基本的2D平台跳跃游戏框架,适合初学者学习和理解Java游戏开发的基础概念

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

HTTP/HTTPS ②-Cookie || Session || HTTP报头

这里是Themberfue 上篇文章介绍了HTTP报头的首行信息 本篇我们将更进一步讲解HTTP报头键值对的含义~~~ ❤️❤️❤️❤️ 报头Header ✨再上一篇的学习中&#xff0c;我们了解了HTTP的报头主要是通过键值对的结构存储和表达信息的&#xff1b;我们已经了解了首行的HTTP方法和UR…