理解3D CNN及3D卷积

前言

这篇博客主要详细介绍3D CNN框架结构的计算过程,我们都知道3D CNN 在视频分类,动作识别等领域发挥着巨大的优势,前两个星期看了这篇文章:3D Convolutional Neural Networks for Human Action Recognition,打算用这个框架应用于动态表情识别,当时对这篇文章的3 D CNN各层maps的计算不怎么清楚,所以自己另外对3D CNN结构层数maps等等重新计算了一下,下面是主要的计算过程。下面的主要图片和计算过程就来自于这篇论文。感兴趣的可以去阅读原始论文。

2D CNN与3DCNN的区别

采用2D CNN对视频进行操作的方式,一般都是对视频的每一帧图像分别利用CNN来进行识别,这种方式的识别没有考虑到时间维度的帧间运动信息。下面是传统的2DCNN对图像进行采用2D卷积核进行卷积操作:在这里插入图片描述
使用3D CNN能更好的捕获视频中的时间和空间的特征信息,以下是3D CNN对图像序列(视频)采用3D卷积核进行卷积操作:
在这里插入图片描述上面进行卷积操作的时间维度为3,即对连续的三帧图像进行卷积操作,上面的 3D卷积是通过堆叠多个连续的帧组成一个立方体,然后在立方体中运用3D卷积核。在这个结构中,卷积层中每一个特征map都会与上一层中多个邻近的连续帧相连,因此捕捉运动信息。例如上面左图,一个卷积map的某一位置的值是通过卷积上一层的三个连续的帧的同一个位置的局部感受野得到的。

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

论文中使用的3D CNN架构

在这里插入图片描述输入层(input): 连续的(7帧)大小为60*40的视频帧图像作为输入。.
硬线层(hardwired,H1): 每帧提取5个通道信息(灰度gray,横坐标梯度(gradient-x),纵坐标梯度(gradient-y),x光流(optflow-x),y光流(optflow-y))。前面三个通道的信息可以直接对每帧分别操作获取,后面的光流(x,y)则需要利用两帧的信息才能提取,因此

H1层的特征maps数量:(7+7+7+6+6=33),特征maps的大小依然是60* 40;

卷积层(convolution C2): 以硬线层的输出作为该层的输入,对输入5个通道信息分别使用大小为7* 7 * 3的3D卷积核进行卷积操作(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

降采样层(sub-sampling S3): 在该层采用max pooling操作,降采样之后的特征maps数量保持不变,因此S3层的特征maps数量为:23 *2

特征maps的大小为:((54 / 2) * (34 /2)=27 *17

卷积层(convolution C4): 对两组特征maps分别采用7 6 3的卷积核进行操作,同样为了增加特征maps的数量,文中采用了三种不同的卷积核分别对两组特征map进行卷积操作。这里的特征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

降采样层(sub-sampling S5): 对每个特征maps采用3 3的核进行降采样操作,此时每个maps的大小:7* 4

在这个阶段,每个通道的特征maps已经很小,通道maps数量分布情况如下:

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

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

卷积层(convolution C6): 此时对每个特征maps采用7* 4的2D卷积核进行卷积操作,此时每个特征maps的大小为:1*1,至于数量为128是咋来的,就不咋清楚了,估计是经验值。

对于CNNs,有一个通用的设计规则就是:在后面的层(离输出层近的)特征map的个数应该增加,这样就可以从低级的特征maps组合产生更多类型的特征。

通过多层的卷积和降采样,每连续7帧图像就可以获得128维的特征向量。输出层的单元数与视频动作数是相同的,输出层的每个单元与这128维的特征向量采用全连接。在后面一般采用线性分类器对128维的特征向量进行分类,实现行为识别,3DCNN模型中所有可训练的参数都是随机初始化的,然后通过在线BP算法进行训练。

下面是整个过程中3DCNN各通道数量变化情况以及特征maps大小变化情况:
在这里插入图片描述

原文链接:3D CNN框架结构各层计算

### 回答1: 三维卷积神经网络(3D-CNN)是一种深度学习模型,其在时间维度上添加了数据处理,可以用于视频分类、行为识别、医学影像分析等任务。Matlab是一种流行的科学计软件,也可以用来实现3D-CNN。 为了实现3D-CNN,首先需要构建一个包括卷积层、池化层、全连接层和softmax层的深度神经网络模型。然后,使用Matlab中的Convolution3D函数进行卷积操作,Pool函数进行池化操作,FC层进行全连接操作,并进行反向传播法进行优化。同时,可以采用matlab预处理和数据增强方式来提高模型的性能和鲁棒性。 在实现3D-CNN时,由于它涉及到的数据量较大,需要利用GPU进行计,这样可以提高模型的运行速度和效率。建议在实现3D-CNN时使用Matlab深度学习工具箱或其他深度学习库,这样可以获得更好的支持和功能。 总的来说,实现3D-CNN的过程需要掌握深度学习的知识和Matlab编程能力,同时还需要对数据预处理、数据增强、模型优化等方面进行综合考虑和实践。成功实现一个高效的3D-CNN模型将会为我们带来很多有益的应用场景。 ### 回答2: 3D-CNN是三维卷积神经网络的缩写,它在处理与时间序列相关的数据时的表现优于传统的CNN网络。基于Matlab的3D-CNN实现需要进行以下几个步骤: 首先,收集3D卷积神经网络所需要的大量数据,包括输入数据集和输出数据集。输入数据集通常是由有关时间序列的3D图像和视频组成的,如果涉及到深度学习,还会有一些相应的标注数据。输出数据集则是将3D卷积网络应用于输入数据集后得到的结果。 然后,需要设计3D-CNN网络的结构。在设计过程中,需要确定网络层数、每层的卷积核大小、滤波器个数,以及使用哪些激活函数等。在确定网络结构时,可以使用Matlab的深度学习工具箱,该工具箱提供了一系列的函数和类来构建网络。 接下来,进行数据预处理。在这个步骤中,需要对输入数据集进行归一化和裁剪等操作,以便在训练网络时获得更好的结果。 进行网络训练。使用Matlab的深度学习工具箱提供的卷积神经网络训练函数进行网络训练。在训练期间,可以利用验证集和测试集对网络的性能进行评估,检测训练出的网络是否有效。 最后,利用训练好的3D-CNN网络进行预测。将测试数据集输入网络中,得到相应的预测结果。网络输出的结果可以被用于各种有关时间序列的任务,例如视频分类、动作识别等。 综上所述,基于Matlab的3D-CNN实现需要进行数据收集,设计网络结构,进行数据预处理,进行网络训练和预测等步骤。有了这些步骤的基本理解,可以在Matlab中设计和实现具有高精度的3D卷积神经网络。 ### 回答3: 3D-CNN是一种卷积神经网络,其可以处理三维数据(如视频或医学图像等),包含了三个维度的信息。Matlab是一种高级编程语言,其可以实现3D-CNN模型,并且在实现过程中有许多优势。 首先,Matlab对于处理图像和视频有独特的分析和处理功能,因此可以方便地加载和处理三维数据,并用于训练模型。 其次,在Matlab中,有许多已经开发好的深度学习框架,如Deep Learning Toolbox和Neural Network Toolbox等,这些工具可以帮助用户快速搭建和训练3D-CNN模型。 另外,由于Matlab语言优雅简洁,易于学习和编写,因此用户可以很快地理解和实现3D-CNN模型,并在实际应用中进行优化和改进。 总之,使用Matlab实现3D-CNN模型,可以得到高效、准确的结果,并且在实现过程中可以享受到Matlab一系列优秀的加速优化和图像处理工具的支持。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值