深度学习之3D卷积神经网络

news/2025/1/11 23:41:45/

一、概述

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

                                                                                         图一 

 二、原理

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

                                                                                                   图二 

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

图三是3D卷积神经网络的整体架构

                                                                                                    图三 

input—>H1

      神经网络的输入为7张大小为60*40的连续帧,7张帧通过事先设定硬核(hardwired kernels)获得5种不同特征:灰度、x方向梯度、y方向梯度、x方向光流、y方向光流,前面三个通道的信息可以直接对每帧分别操作获取,后面的光流(x,y)则需要利用两帧的信息才能提取,因此H1层的特征maps数量:(7+7+7+6+6=33),特征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

   为了提取更多的图像特征,用三个7*6*3的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的节点数目随标签而定。

三、应用

这里可以将3D卷积神经网络应用在卷积自编码器上,最近看了一篇3D CAE在高光谱图像上应用的文章:LEARNING SENSOR-SPECIFIC FEATURES FOR HYPERSPECTRAL IMAGES VIA 3-DIMENSIONAL CONVOLUTIONAL AUTOENCODER。这篇文章将高光谱图像的波段这一维转化成3D卷积神经网络的时间维,在卷积自编码器中使用3D卷积,得到了很好的效果,下面是其中卷积核和通道的变化表格。

 

参考:

https://blog.csdn.net/qq_25737169/article/details/75072014 

https://blog.csdn.net/AUTO1993/article/details/70948249

https://www.cnblogs.com/Ponys/p/3450177.html


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

相关文章

【一】1D测量 Measuring——meature_pairs()算子

😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有…

【一】1D测量 Measuring——measure_pos()算子

😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有…

基于卡尔曼滤波实现线性目标跟踪

文章目录 前言卡尔曼滤波基本推导运算 实现目标检测卡尔曼预测器ID分配器(跟踪器) 完整代码代码总结 前言 一个需求,在一个稳定的场景当中,实现目标检测计数算法。 任务点: 实现目标检测完成对不同类别的物品进行计数…

用于函数优化的一维 (1D) 测试函数

【翻译自 : One-Dimensional (1D) Test Functions for Function Optimization】 【说明:Jason Brownlee PhD大神的文章个人很喜欢,所以闲暇时间里会做一点翻译和学习实践的工作,这里是相应工作的实践记录,希望能帮到有…

数据结构—链表的相关理论点

链表(linked list)是一种常见的数据结构,用于实现电脑的动态内存分配。链表通过指针相互连接节点(Node),而该节点内保存了数据。 链表通常由头节点(head)和尾节点&#xff0…

vue 单点登录的方法

vue 单点登录的方法 当我们在使用 vue开发项目时,一般都是只有一个用户帐号,如果要实现多个帐号的单点登录,可以使用 Session和 LocalStorage这两个技术。这两个技术在实现单点登录时,都需要有一个用户名和一个密码,而…

【Web服务器集群】基于Nginx搭建LNMP架构

文章目录 一、安装 MySQL 数据库1. 安装Mysql环境依赖包2. 创建运行用户3. 编译安装4. 修改mysql 配置文件5. 更改mysql安装目录和配置文件的属主属组6. 设置路径环境变量7. 初始化数据库8. 添加mysqld系统服务9. 修改mysql 的登录密码10. 授权远程登录 二、编译安装 nginx 服务…

Nginx-Host绕过复现

目录 环境搭建: 第一种处理方式 第二种处理方式 第三种处理方式 原理依据:Nginx与PHP对Host处理方式不同 环境搭建: 1、提前安装完成nginxphpmysql,然后上传文件pwnhub到nginx/html下 2、修改nginx.conf配置文件&#xff1…