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

三维卷积( 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博客

相关文章:

三维卷积( 3D CNN)

三维卷积&#xff08; 3D CNN&#xff09; 1.什么是三维卷积 1.1 三维卷积简介 二维卷积是在单通道的一帧图像上进行滑窗操作&#xff0c;输入是高度H宽度W的二维矩阵。 三维卷积输入多了深度C这个维度&#xff0c;输入是高度H宽度W深度C的三维矩阵。在卷积神经网络中&…...

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

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

分享3个国内使用正版GPT的网站【亲测有效!2025最新】

1. molica 传送入口&#xff1a;https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口&#xff1a;https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口&#xff1a;https://ai-to.cn/url/?ulihaimao...

CSDN Markdown编辑器设置视频居中完美解决方案

表格做中间容器&#xff0c;把视频放在表格里面&#xff0c;利用表格居中语法实现表格内元素居中对齐&#xff0c;从而完美实现视频居中。 【三角符文】jevil战无伤通关 这玩意整了我两个星期&#xff0c;焦头烂额都找不到解决方案。今天偶然想到可以用表格试试&#xff0c;没想…...

Java到底是值传递还是引用传递????

在搞懂这个问题之前, 我们要首先了解什么是值传递, 什么是引用传递? 值传递: 传递的是数据的副本&#xff0c;修改副本不会影响原始数据。引用传递: 传递的是数据的引用&#xff08;地址&#xff09;&#xff0c;修改引用会直接影响原始数据. 也就是说&#xff0c;值传递和引…...

初学stm32 --- 电源监控

目录 STM32 电源监控介绍 上电/掉电复位POR/PDR&#xff08;F1&#xff09; 可编程电压检测器(PVD)&#xff08;F1&#xff09; PVD相关寄存器介绍&#xff08;F1&#xff09; 电源控制寄存器 PWR_CR 电源控制/状态寄存器 PWR_CSR PVD相关HAL库驱动介绍 PVD的使用步骤 …...

Win10本地部署大语言模型ChatGLM2-6B

鸣谢《ChatGLM2-6B&#xff5c;开源本地化语言模型》作者PhiltreX 作者显卡为英伟达4060 安装程序 打开CMD命令行&#xff0c;在D盘新建目录openai.wiki if not exist D:\openai.wiki mkdir D:\openai.wiki 强制切换工作路径为D盘的openai.wiki文件夹。 cd /d D:\openai.wik…...

[ LeetCode 75 ] 1768. 交替合并字符串

题目描述&#xff1a;&#xff08;相关标签&#xff1a;双指针、字符串&#xff09; 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返…...

(三)通过WebGL绘制一个简单的三角形来理解渲染管线

理解 WebGL 绘图原理的关键是了解它的渲染管线。WebGL 渲染管线实际上是由多个阶段组成的&#xff0c;每个阶段都有特定的任务&#xff0c;最终输出的是屏幕上的图像。为了让你能轻松理解这些原理&#xff0c;我将通过一个简单的例子来详细解释。 绘制一个简单的三角形 我们将…...

医学图像分析工具02:3D Slicer || 医学影像可视化与分析工具 支持第三方插件

3D Slicer 是一款功能全面的开源医学影像分析软件&#xff0c;广泛应用于影像处理、三维建模、影像配准和手术规划等领域。它支持多种医学影像格式&#xff08;如 DICOM、NIfTI&#xff09;和丰富的插件扩展&#xff0c;是神经科学、放射学和生物医学研究中不可或缺的工具。 在…...

Ollama VS LocalAI:本地大语言模型的深度对比与选择指南

随着人工智能技术的快速发展&#xff0c;大语言模型逐渐成为多个行业的重要工具。从生成内容到智能问答&#xff0c;大模型展现了强大的应用潜力。然而&#xff0c;云端模型的隐私性、使用成本和网络依赖等问题也促使更多用户关注本地化解决方案。Ollama 和 LocalAI 是近年来备…...

虚表 —— 隐藏行(简单版)

因为隐藏行改变了listview内部行号处理机制&#xff0c;需要处理大量细节&#xff0c;如listview内部用于传递行号的各种消息、通知等、封装的各种读取行号的函数等。 所以在工作量很大&#xff0c;一处纰漏可能导致重大bug的情况下&#xff0c;仅对隐藏行功能进行了简单封装&…...

CAD批量打印可检索的PDF文件

本文虽介绍CAD使用方法&#xff0c;但还是劝告大家尽早放弃使用CAD软件。。。。太TM难用了 当你打开CAD时发现如下一堆图纸&#xff0c;但是不想一个一个打印时。你可以按照下面操作实现自动识别图框实现批量打印。 1.安装批量打印插件 2.安装后打开CAD&#xff0c;输入命令Bp…...

2025.1.7(c++基础知识点)

作业&#xff08;练习&#xff09; 练习&#xff1a;要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩&#xff0c;分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数&#xff0c;并在主程序中完成测试 要求使用new和delete完成 #include &…...

jenkins入门12-- 权限管理

Jenkins的权限管理 由于jenkins默认的权限管理体系不支持用户组或角色的配置&#xff0c;因此需要安装第三发插件来支持角色的配置&#xff0c;我们使用Role-based Authorization Strategy 插件 只有项目读权限 只有某个项目执行权限...

Edge SCDN高效防护与智能加速

当今数字化时代&#xff0c;网络安全和内容分发效率已成为企业业务发展的关键因素。酷盾安全推出了Edge SCDN解决方案&#xff0c;为企业提供全方位的安全防护和高效的内容分发服务。 一、卓越的安全防护能力 1.DDoS攻击的精准防御&#xff1a;Edge SCDN具备强大的DDoS攻击检测…...

Ubuntu22.04配置静态ip

1. 编辑网络配置文件 sudo vim /etc/netplan/00-installer-config.yaml 2.输入下面配置 将静态ip设置为192.168.3.200 &#xff0c;并设置路由器地址192.168.3.1&#xff0c;以及dns地址 223.5.5.5和223.6.6.6 dhcp4: false 表示取消动态分配ip network:ethernets:e…...

[Linux]线程的互斥与同步

目录 一、互斥 1.互斥的概念 2.互斥锁接口 3.线程加锁解锁本质 4.死锁 二、同步 1.同步的概念 2.条件变量 3.条件变量接口 一、互斥 1.互斥的概念 互斥指的是任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&#xff0c;进行临界资源的访问&#xff0c;通…...

Java:缓存:LinkedHashMap实现Lru

文章目录 Lru源码分析 ​​​​​​​​​​​​​​LinkedHashMap维护一个LinkedHashMapEntry<K,V>的双向链表对LinkedHashMap的增删查操作,也会对链表进行相同的操作并改变链表的链接顺序小结使用方法​​​​​​​​​​​​​​应用总结Lru Least Recently Used,…...

【形式篇】年终总结怎么写:PPT如何将内容更好地表现出来

——细节满满&#xff0c;看完立马写出一篇合格的PPT 总述 形式服务于内容&#xff0c;同时合理的形式可以更好地表达和彰显内容 年终总结作为汇报型PPT&#xff0c;内容一定是第一位的&#xff0c;在内容篇(可点击查看)已经很详细地给出了提纲思路&#xff0c;那如何落实到…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...