当前位置: 代码迷 >> 综合 >> 视频特征提取:C3D/Learning Spatiotemporal Features with 3D Convolutional Networks
  详细解决方案

视频特征提取:C3D/Learning Spatiotemporal Features with 3D Convolutional Networks

热度:75   发布时间:2023-12-17 04:46:56.0

总结

3D conv在之前并没有广为盛行于视频处理领域。作者认为,相比会丢失时间信息的2D conv,3D conv非常适合时空特征学习(即针对视频),下图是2D conv和3D conv的区别。
在这里插入图片描述

作者使用基于3x3x3的3D conv的带有全连接层的深度卷积神经网络对视频进行特征提取,同时验证了3x3x3的3D conv性能相对其他大小的3D conv更优秀。

并且,训练好的C3D可以作为优秀的特征提取器,能够提取输入视频的特征,用作在其他任务上。

作者认为,一个优秀的视频描述符应该有四个指标:

  • 通用性(generic)
  • 紧凑型(compact)
  • 高效率(efficient)
  • 易实施(simple)

作者认为本文C3D网络提取的特征能够达到以上四个指标,拥有良好的性能。

Methods

由于没有3D conv方面的先验知识,作者借用了3x3 conv在2D conv上的成功的先验知识,首先就选择3x3x3卷积进行实验。
NOTE THAT:视频用c*l*h*w表示,c为通道,l为帧长度(时序),hw为帧尺寸大小;3D conv’s kernel 用d*k*k表示,d为kernel时间长度(时序),k为尺寸大小。
在这里插入图片描述

网络结构:

  • input:paper中说使用3x16x128x171的不重叠帧作为输入,即16张尺寸为171x128的3维RGB图像作为输入。然后将尺寸随机裁剪为112x112。
  • structure:五个卷积层+五个最大池化层(2x2x2,第一层除外),均为3D,且有padding。加两个全连接层和一个用作分类的softmax层。第一层池化为1x2x2,即时序上并没有进行池化,目的是为了不过早地合并时间信号。全连接层输出4096个神经元。训练是在数据集Sports-1M上进行。
    在这里插入图片描述

作者在数据集UCF101上实验,对比不同d的3D 卷积性能,显示d=3时性能最高。
在这里插入图片描述


特征提取器:
将视频分为16帧(实际上正常视频一秒就经常25或者30帧了,所以完整的视频特征提取,应该是N多个16帧的片段),两个连续片段中有8帧的重叠,然后进入C3D网络,最后从FC6中得到输出并且进行平均,形成1x4096的视频描述符(其实就是特征向量),然后对其进行L2归一化
在这里插入图片描述

作者代码(caffe):https://github.com/facebookarchive/C3D
pytorch版本代码:https://github.com/DavideA/c3d-pytorch

  相关解决方案