许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  Tensorflow 2.0 视频分类(四) C3D 3D convolutional Networks

Tensorflow 2.0 视频分类(四) C3D 3D convolutional Networks

阅读数 6
点赞 0
article_banner

论文学习

摘要

开篇明义,三点结论:

  1. 3D 卷积网络比2D卷积更适合提取时空特征;
  2. 3x3x3的卷积核是最好的filter结构;
  3. C3D与线性分类器的组合有在UCF101数据集上很好的分类效果

介绍

视频分类在动作识别、非常规动作识别、活动理解、视频内容描述等领域;视频描述器的四个特点:通用、有竞争力、高效、简洁;卷积网络并不适用于处理视频数据,因此提出 C3D.
不同数据集上的表现:
在这里插入图片描述
除Sport 1M上,其他数据比之前最好的都要好。
优秀!

相关研究

传统机器视觉领域的SIFTs(spatio-temporal interest points)、SIFT-3D、HOG3D算法。对大规模数据集合表现intractable;
前人在3D卷积网络上的研究对比,突出点提出适用于大规模视频数据集合,具有3D卷积、3Dpooling提取时间信息的深度网络。

网络结构

图一对比了3D卷积的机构特点。对于多帧的视频输入,传统2d卷积核的深度于视频的帧数相同,输出只有一层输出,因此丢失了时域信息(b);相反,3D卷积核的深度d小于输入画面的帧数L,因此一个卷积核操作以后可以得到多特征层,因而保留了时域信息(c).
在这里插入图片描述
可以参看最后一张图中的数据维度,一般的conv2d的输入数据维度为(batch, w, h, channels), 卷积核和stride都是二维参数,即在(w, h)维度上进行操作;
对于conv3d为(batch, frames, w, h, channels),卷积核和stride都是三维参数,即在(frames, w, h)维度上进行操作。

超参设置

对于UCF101的视频数据输入,压缩成3x16x128x171的格式

卷积核深度

卷积核的深度d的确定:相同深度(1,3,5,7);不同深度(逐步加深3-3-5-5-7,逐步减小7-5-5-3-3)
对比结果如下:
在这里插入图片描述
明显采用相同卷积核深度3的网络性能最好。

C3D网络

通过上面的对该笔提出了C3D网络的基本框架。
3x3x3的卷积核大小,1 x 1 x 1stride
2x2x2的pooling层, 2 x 2 x 2stride
整体结构:
在这里插入图片描述

sport-1M数据集上表现

在这里插入图片描述
结果上看比文献29的预测准确度低,但作者说这主要是受到输入画面帧数较多的影响。

网络可视化

在这里插入图片描述
对conv5b特征层进行可视化,可以发现C3D网络相比2D网络对运动物体更加敏感。

动作识别分类

UCF101数据集的动作识别结果
在这里插入图片描述
网络的一些组合和比较,比如C3D (3 nets) 表示三组C3D的fc6同时并联,与SVM结合后能提高预测精度(这里三组C3D训练差别没有太看明白)

网络compactness(紧密度?)

通过提取不同算法的全连接层提取的体征,适用PCA算法降维到10后,对比算法的准确度,进而比较compactness性能。
在这里插入图片描述
相同的fc6特征层,使用t-SNE算法降维到2维可视化空间。
在这里插入图片描述
可见C3D对不同类型的视频在2维空间中有很好的分离

ASLAN动作识别数据集表现

在这里插入图片描述
在这里插入图片描述

场景识别

YUPENN(420 videos of 14 scene categories)和Maryland(130 videos of 13 scene categories)数据集。
在这里插入图片描述
同样优秀!

耗时比较

在这里插入图片描述
一样的优秀!

附录

卷积神经网络 ,可视化的展示
在这里插入图片描述
在这里插入图片描述

参考

Learning Spatiotemporal Features with 3D Convolutional Networks

下载 资源

http://vlg.cs.dartmouth.edu/c3d/

代码实操

C3D网络构建

import  tensorflow as tf
from    tensorflow import keras
from    tensorflow.keras import layers, models, Input
from    tensorflow.keras.models import Model
from 	tensorflow.keras.layers import Conv3D, MaxPooling3D, Dense, Flatten, Dropout, ZeroPadding3D


def C3Dnet(nb_classes, input_shape):
    input_tensor = Input(shape=input_shape)
    # 1st block
    x = Conv3D(64, [3,3,3], activation='relu', padding='same', strides=(1,1,1), name='conv1')(input_tensor)
    x = MaxPooling3D(pool_size=(1,2,2), strides=(1,2,
python
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空