3D CNN框架结构各层详细计算过程

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

采用2D CNN对视频进行操作的方式,一般都是对视频的每一帧图像分别利用CNN来进行识别,这种方式的识别没有考虑到时间维度的帧间运动信息。下面是传统的2DCNN对图像进行采用2D卷积核进行卷积操作:

使用3D CNN能更好的捕获视频中的时间和空间的特征信息,以下是3D CNN对图像序列(视频)采用3D卷积核进行卷积操作:

上面进行卷积操作的时间维度为3,即对连续的三帧图像进行卷积操作,上面的  3D卷积是通过堆叠多个连续的帧组成一个立方体,然后在立方体中运用3D卷积核。在这个结构中,卷积层中每一个特征map都会与上一层中多个邻近的连续帧相连,因此捕捉运动信息。例如上面左图,一个卷积map的某一位置的值是通过卷积上一层的三个连续的帧的同一个位置的局部感受野得到的。

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

3D CNN架构

输入层(input):连续的大小为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框架结构各层计算

    最近也在看和视频有关的处理问题,对3D-CNN的各层结构不是很清楚,这里找到一篇讲解较为清晰的文章,特此转载过来 转自:http://blog.csdn.net/auto1993/article/de ...

  2. 理解3D CNN及3D卷积

    前言 这篇博客主要详细介绍3D CNN框架结构的计算过程,我们都知道3D CNN 在视频分类,动作识别等领域发挥着巨大的优势,前两个星期看了这篇文章:3D Convolutional Neural N ...

  3. 理解CNN卷积层与池化层计算

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 概述 深度学习中CNN网络是核心,对CNN网络来说卷积层与池化层的 ...

  4. 卷积神经网络、比较MLPS和CNNS、滤波器、CNN各层的作用、在Pytorch可视化CNN

    1.33.卷积神经网络 1.33.1.卷积 和 神经网络 1.33.1.1.比较MLPS和CNNS 1.33.1.2.计算机如何看图像? 1.33.1.3.建立自己的滤波器 1.33.2.完整的卷积神 ...

  5. DeepMedic —— 一种经典的医学图像分割的3D CNN框架

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/JYZhang_CVML/article ...

  6. Image segmentation of nasopharyngeal carcinoma using 3D CNN with long-range skip connection and mult

    Image segmentation of nasopharyngeal carcinoma using 3D CNN with long-range skip connection and mult ...

  7. 论文翻译-Three Stream 3D CNN with SE Block for Micro- Expression Recognition

    用于微表情识别的三流3D CNN SEnet:Squeeze-and-Excitation Networks 论文地址:链接:https://pan.baidu.com/s/1VQxxIKb51N4D ...

  8. 1D CNN+2D CNN+3D CNN

    1D CNN+2D CNN+3D CNN 3D CNN过程详解 区别 1维卷积,核沿1个方向移动.一维CNN的输入和输出数据是2维的.主要用于时间序列数据. 2维卷积,核沿2个方向移动.二维CNN的输 ...

  9. 本周AI热点回顾:「时空版」Transformer训练速度远超3D CNN;拒绝内卷的AI狼火了!不想抓羊只想躺!...

    ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍点击左上方蓝字关注我们 01 「时空版」Transformer训练速度远超3D CNN,提速3倍! Facebook AI推出了全新的视频理解架构TimeSform ...

最新文章

  1. Java HashSet和HashMap源码剖析
  2. 如何区分localhost、127.0.0.1和0.0.0.0等ip地址
  3. python 字典类型问题_[ python ] 字典类型的一些注意问题
  4. 利用STM32F103单片机输出SPWM波
  5. Hibernate ——二级缓存
  6. socket接口多线程数据传输
  7. 计算机telnet命令大全,telnet 命令使用方法详解,telnet命令怎么用
  8. 2019年SpringBoot视频教程【全网免费】每周更新
  9. sm4 前后端 加密_sm4加密
  10. Flowable Modeler
  11. 忆阻器交叉开关阵列中的长短期记忆(LSTM)神经网络
  12. 「翻译」Vue3 相比 Vue2 都有哪些优化?
  13. 【案例分析】地产集团公司BI项目建设方案
  14. U盘启动盘维护工具 晨枫MaxDOS+WinPE+GHOST常用版本
  15. UVA之11549 - Calculator Conundrum
  16. python读取Excel指定范围并转为数组
  17. 让IE浏览器支持HTML5标准的方法(转)
  18. OpenStack 运维 - 部署Nova组件 [T版]
  19. 如果今天是星期二,那么100天后是星期几?
  20. 入门企业级 PHP 协程框架 Hyperf

热门文章

  1. 基础编程题之因数分解
  2. 3-1:HTTP协议之应用层协议了解
  3. Ubuntu 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
  4. Redis持久化RDB
  5. Python_爬虫_案例汇总:
  6. Oracle所有分析函数转
  7. 被新基建点名的大数据,有哪些书最值得读?
  8. 在计算机网络中为了保证正确传输,计算机网络试卷B
  9. hive 配置mysql_Hive的mysql安装配置
  10. python学生管理系统2.0-python3.6+django2.0开发一套学员管理系统