C3D Learning Spatiotemporal Features with 3D Convolutional Networks

article/2025/10/14 14:01:26

Learning Spatiotemporal Features with 3D Convolutional Networks

Abstract
摘要主要介绍在大规模有监督的视频数据集下训练出了一种简单且高效的三维卷积神经网络的方法来学习时空特征。且此发现具有三重的效果:

1)相比较于二维,三维卷积神经网络更适合于时空特征

2)在三维卷积神经网络中,333卷积内核是效果最好的

3)使用线性分类器学习到的特征,即C3D,在4个不同的基准测试中优于最先进的方法,并且与其它两个基准上的当前最先进的方法相当。

除此之外,特征很紧凑:仅仅使用10维就可在UCF101数据集上达到52.8%的精度,且由于ConvNets的快速推理能力,其也有很高的计算效率。最后,它也很简单且易于训练和使用。

1.Introduction

在这篇文章中,我们的主要贡献有三点:
1)通过实验表明,C3D是很好的特征提取器,不管是在外观或者运动信息上
2)实验表明,333的卷积内核是最好的架构
3)提出的具有简单线性模型的特征优于或接近4个不同任务和6个不同基准的最佳方法(见表1)。 它们也是紧凑和高效的计算
在这里插入图片描述

2.Related Work

这部分主要介绍了其他研究人员在视频处理方面取得的成果、卷积网络和3D卷积在图像以及视频方面的应用、对比之前的方法,介绍一下我们的方法的优点。C3D卷积网络将完整的视频帧作为输入,并不依赖于任何处理,可以轻松地扩展到大数据集。

3.Learning Feartures with 3D ConvNets

3.1 3D convolution and pooling

3D ConvNets 更适合学习时空特征,通过3D卷积和3D池化,可以对时间信息建模,而2D卷积只能在空间上学习特征。3D和2D的区别如下:

在这里插入图片描述

2D卷积网络输入图像会产生图像,输入视频输出的也是图像,3D卷积网络输入视频会输出另外一个视频,保留输入的时间信息。

我们在UCF101上进行实验,寻找最好的网络架构,在大数据库上进行验证。根据2D网络确定卷积核长宽是33的,然后变化temporal depth 寻找最好的卷积核。

Notations:

video clips size: clh*w 其中,c是通道数量,l是帧长度,h是帧高,w是帧宽

3D kernel size: dkk d是核时域深度,k是核空间尺寸

Common network settings:

输入:UCF101的视频片段 视频帧调整大小为128171 为原始视频分辨率的一半,视频分割为不重叠的16帧视频片段,作为网络输入,输入维度为316128171,训练时通过抖动,维度调整为316112*112。

通用的网络包括5个卷积层和5个池化层(一个卷积层后面跟着一个池化层),2个全连接层,1个softmax分类层来预测行为标签,卷积层的滤波器数量依次为:64、128、256、256、256。所有的卷积核的时域深度都是d,改变d来寻找最好的3D架构。池化核尺寸为222(除第一层),第一层为122,步长为1。两个全连接层有2048个输出,使用30个剪辑的迷你批次训练网络,初始的学习率为0.003,每4个epochs学习率除以10,训练16个epochs后停止。

Varying network architectures:

我们主要对如何通过深层网络来聚合时间信息。我们只改变卷积层的内核时间深度d,而保持所有其他常见设置不变如上所述。

实验了两种结构:1)均质时间深度:所有卷积层具有相同的核时间深度
2)变化的时间深度:内核的时间深度随着层的变化而变化。对于齐次设置,我们用4个网络进行实验,它们的核时间深度d分别为1、3、5和7。我们称这些网络为深度-d,其中d是它们的均匀时间深度。
注意,深度-1网络相当于在单独的帧上应用2D卷积。对于变化的时间深度设置,我们实验了两个时间深度增加的网络:3-3-5-5-7和从第一层到第五层分别减少的7-5-5-3-3。我们注意到,所有这些网络在最后的池化层具有相同大小的输出信号,因此它们对于完全连接层具有相同数量的参数。由于不同的核时间深度,它们在卷积层上的参数数是不同的。与全连接层中的数百万个参数相比,这些差异微不足道。例如,任意两个时间深度差为2的网,彼此之间只有17K个参数或少或多。参数数差异最大的是深度-1网和深度-7网,深度-7网多参数51K个,不足每个网络1750万个参数总数的0.3%。这表明网络的学习能力是可比较的,参数数量的差异不应该影响我们的架构搜索结果。

3.2 Exploring kernel temporal depth

在这里插入图片描述

通过实验得出depth-3是最好的,卷积核最好的尺寸是333

3.3 Spatiotemporal feature learning

在这里插入图片描述

3D ConvNets 有8个卷积层,内核尺寸为333;5个池化层,第一个池化核尺寸为122,后面池化核尺寸为222;2个全连接层,每层有4096个输出单元;1个softmax输出层。

Dataset:

Sports-1M 数据集,共有1.1million视频,包括487个种类

Training:

每个视频中提取5个2秒的剪辑,调整大小为128171,训练中通过对剪辑进行时间和空间上的抖动,随机剪裁到16112*112大小,并以50%的概率水平翻转。最小的batch size为30,初始学习率为0.003,每迭代150k除以2,迭代1.9M停止优化。

Sports-1M classification results:
在这里插入图片描述

从scratch开始训练的C3D网络产生84.4%的精度,在I380K预训练模型上进行微调的C3D网络精度为85.5%,两种网络模型精度均超过DeepVideo,但C3D仍比[29]中的方法精度低5.6%。然而,这种方法在120帧的长片段上使用深度图像特征的卷积池化,因此它不能直接与在更短的片段上操作的C3D和DeepVideo相比较。

4.Action recognition

Dataset:
UCF101:13, 320 videos of 101 human action categories.
Classification model:
我们提取C3D特征,并将其输入到一个多类别线性支持向量机中,用于训练模型。实验中采取三种不同的网络:C3D trained on I380K,C3D trained on Sports-1M, and C3D trained on I380K and fine-tuned on Sports-1M.
Baselines:
目前最好的hand-crafted features, namely improved dense trajectories (iDT)等等…
Results:

在这里插入图片描述

简单总结:单项测试结果中等;作者认为有部分网络采取了long clip,因此不具备可比性;联合Imagenet仅有很小的提升;联合iDT结果最佳,C3D相比其他网络有简单的优点
C3D is compact:
为了估计C3D特征的紧凑度,使用PCA将特征映射到低维空间,记录在UCF101数据集上映射特征的分类精度,实验得到了最佳效果,由此认为C3D特征是紧凑的并且容易区分。

在这里插入图片描述

使用t-SNE将特征映射到2维空间,定性的观察得出C3D特征具备较好的泛化能力,C3D语义可分离,每个视频片段可以视为一个点,属于同一个动作的片段有相同的颜色。

在这里插入图片描述

5.Action Similarity Labeling

Dataset:
ASLAN:3, 631 videos,432 action classes.任务是验证给定的视频对是否相同
Features:
将一个视频划分为16帧剪辑且其中8帧是重叠的,提取每个片段C3D特征(pro3,fc7,fc6,pool5),平均每种类型特征得到视频特征,L2标准化
Classification model:
给定一个视频对,我们计算[21]中的12个不同距离。加上4个特征类别,获取48维特征向量
由于48个方向并非一一比较,我们分别将其标准化,得到零均值和单位方差
最终,训练一个线性SVM在48维特征向量上分出视频对相同与否
在这里插入图片描述

6.Scene and Object Recognition

Datasets:
YUPENN:420 videos of 14 scene categories

Maryland:130 videos of 13 scene categories
Classification model:
对于这两个数据集,我们使用相同的特性提取和线性支持向量机进行分类。
我们在所有视频中滑动16帧的窗口来提取C3D特征,选择clip中出现频率最高的label作为clip的ground truth label
如果最高频率的label出现次数少于8帧,则认为是negative label,在训练和测试期间均丢弃
用线性SVM来训练和测试C3D特征并记录物体识别率
Results:
取得了最佳表现,说明C3D泛化能力强

在这里插入图片描述

7.Runtime Analysis

在这里插入图片描述

8.Conclusion

在这个工作我们试图解决这一问题的学习视频时空特性使用c3d网训练的大规模视频数据集。我们进行了系统的研究,以找到最好的时间内核长度为c3d网。我们发现C3D可以同时模型外观和运动信息和优于2 d事先特性在各种视频分析的任务。我们证明了C3D特性与一个线性分类器可以超过或接近当前的最佳方法在不同的视频分析的基准。最后但并非最不重要,提出C3D特性是有效的,紧凑,简单易用。

实验部分

4.行为识别

数据集:我们在UCF101数据集[38]上评估C3D特征。数据集由13320个视频组成,包含101个人类动作类别。我们使用该数据集提供的三个分割设置。

分类模型:提取C3D特征并将其输入多类线性支持向量机进行训练。我们使用3种不同的网络对C3D描述符进行了实验:C3D训练在I380K上,C3D训练在Sports-1M上,C3D训练在I380K上和微调的Sports-1M上。在多个网络的设置中,我们将这些网的l2标准化的C3D描述符连接起来。

基线:我们将C3D特征与一些基线进行比较:当前最好的手工制作特征,即改进的稠密轨迹(iDT)[44]和流行使用的深度图像特征,即Imagenet[16],使用Caffe s Imagenet预训练模型。对于iDT,我们使用每个iDT特征通道的码本大小为5000的袋形表示,这些特征通道是轨迹、HOG、HOF、MBHx和MBHy。我们分别使用L1-norm对每个通道的直方图进行归一化,并将这些归一化的直方图串联起来,形成一个视频的25K的特征向量。对于Imagenet基线,类似于C3D,我们提取每帧Imagenet fc6特征,平均这些帧特征来制作视频描述符。多类线性支持向量机也用于这两个基线的公平比较。

结果:表3给出了C3D的动作识别精度,并与两种基线和当前的最佳方法进行了比较。上半部分显示了两个基线的结果。中间部分展示了只使用RGB帧作为输入的方法。下面的部分使用所有可能的特征组合(如光流,iDT)报告所有当前的最佳方法。
在这里插入图片描述

C3D微调网在前面描述的三种C3D网中表现最好。然而,这三种蚊帐之间的性能差距很小(1%)。从现在起,除非另有说明,我们将微调后的网络称为C3D。使用一个只有4,096个维度的网络C3D的准确率为82.3%。3网C3D将精度提高到85.2%,尺寸增加到12288。C3D与iDT联合时,准确率进一步提高到90.4%,与Imagenet联合时,仅提高了0.6%。
这说明C3D可以很好地捕捉到外观和运动信息,因此与基于外观特征的深度特征Imagenet结合是没有好处的。另一方面,C3D与iDT的结合是有益的,因为它们之间具有很强的互补性。事实上,iDT是基于光流跟踪和低水平梯度直方图的手工制作的特征,而C3D捕捉高层次的抽象/语义信息

与iDT和Imagenet基线相比,使用3网的C3D准确率达到了85.2%,分别提高了9%和16.4%。在唯一的RGB输入设置上,与基于cnn的方法相比,我们的C3D在[36]中的深度网络和[18]空间流网络的性能分别高出19.8%和12.6%。在[36]中,深度网络[18]和空间流网络都使用了AlexNet架构。而在[18]中,网络的微调来自于他们在Sports-1M上的预训练模型,而在[36]中,空间流网络的微调来自于Imagenet的预训练模型。
在这里插入图片描述
在这里插入图片描述

5.动作相似标记

数据集:ASLAN数据集由来自432个动作类的3631个视频组成。
任务是预测给定的一对视频是否属于相同或不同的动作。
我们使用指定的10倍交叉验证和数据集提供的分割。这个问题与动作识别不同,因为任务的重点是预测动作相似性,而不是实际的动作标签。这个任务非常具有挑战性,因为测试集包含了以前从未见过的动作的视频

特征:我们把视频分成16帧,8帧重叠的片段。我们提取C3D特征:prob, fc7, fc6, pool5为每个剪辑。视频的特征是通过对每种类型的特征分别求片段特征的平均值,然后进行L2归一化来计算的

分类模型:我们遵循[21]中使用的相同设置。给定一对视频,我们计算[21]提供的12个不同的距离。通过4类特征,我们得到每个视频对的48维(12×4 = 48)特征向量。由于这48个距离彼此不具有可比性,我们对它们进行独立的归一化处理,使得每个维度的均值和单位方差均为零。最后,训练线性支持向量机对这些48-dim特征向量的视频对进行相同或不同的分类。除了与当前的方法进行比较外,我们还使用基于深度图像的功能将C3D与强基线进行了比较。基线具有与我们的C3D相同的设置,我们使用Imagenet功能替换C3D特征。

结果:我们报告了C3D的结果,并与表4中最先进的方法进行了比较。虽然目前大多数方法使用多种手工制作的特征,强大的编码方法(VLAD, Fisher向量),和复杂的学习模型,我们的方法使用简单的平均C3D特征的视频和线性支持向量机。C3D在准确性上比最先进的[45]方法高出9.6%,在ROC曲线下面积(area under ROC curve, AUC)上高出11.1%。Imagenet基线表现相当好,仅比最先进的方法[45]低1.2%,但由于缺乏运动建模,比C3D差10.8%。图7为C3D与现有方法和人类表现对比的ROC曲线。
C3D已经取得了显著的进步,从目前最先进的方法到人类性能的一半(98.9%)

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


http://chatgpt.dhexx.cn/article/pDZf5i8X.shtml

相关文章

C3D网络笔记

C3D网络 论文链接 论文翻译 该论文发现: 1、3D ConvNets比2D ConvNets更适用于时空特征的学习; 2、对于3D ConvNet而言,在所有层使用333的小卷积核效果最好; 3、我们通过简单的线性分类器学到的特征名为C3D(Convolutional 3D…

《Action Recognition》-Learning Spatiotemporal Features with 3D Convolutional Networks(C3D)

《Action Recognition》-Learning Spatiotemporal Features with 3D Convolutional Networks(C3D) 目录 《Action Recognition》-Learning Spatiotemporal Features with 3D Convolutional Networks(C3D)ContributionsFrameworkResultConclusion Contributions We experimenta…

使用C3D的一些问题(2)

使用C3D的resume功能时,报错RuntimeError: expected device cpu but got device cuda:0 报错位置在optimizer.step()。原因是optimizer加载参数时,tensor默认在CPU上,故需将所有的tensor都放到GPU上。 解决方案: 在这一段代码后面加入 for st…

3D卷积入门 | 多论文笔记 | R2D C3D P3D MCx R(2+1)D

文章转自微信公众号:【机器学习炼丹术】。有问题或者需要加入粉丝交流群可以私信作者~ 文章目录 0 前言1 R2D2 C3D2.1 R3D 3 P3D4 MCx5 R(21)D 【前前沿】:某一次和粉丝交流的时候,收获一句话: 人点亮技能书,不是一次…

基于pytorch实现的视频分类——C3D模型论文复现

最近在学习视频分类任务,想要跑通一个更换数据集用到自己的课题上。 看到了这篇文章及代码 论文链接:http://vlg.cs.dartmouth.edu/c3d/c3d_video.pdf 代码链接:https://github.com/jfzhang95/pytorch-video-recognition 贴一下学习这个代…

我的一些视觉工具(1)之动作预测--逐行详解C3D代码(Pytorch)

该博客主要参考这个工程提供的代码 我们在他们代码的基础之上进行魔改 当然了,既然要魔改人家的数据,肯定要先把人家的思路看明白。 对于3D神经网络来讲,好多小伙伴最关心的肯定还是数据的喂入方法和数据集的格式喽。 下第一个部分就是详细第…

C3D-network论文笔记

前几天一直在看Faster-Rcnn源码和YOLOv3(C语言)源码,感觉时间浪费了不少,但是一个都没有看懂,总结出一句话就是:这TM写的是个啥?我为啥一个都看不懂,原理理解是一回事,看…

c3d代码

##c3d代码 原文链接:https://blog.csdn.net/ZJRN1027/article/details/80199248 cross_entropy_mean tf.reduce_mean( tf.nn.sparse_softmax_cross_entropy_with_logits(labelslabels,logitslogit) ) tf.summary.scalar( name_scope ‘_cross_entropy’, cross_en…

【C3D代码运行步骤】

1. 克隆或者下载项目 方法一:在github上直接下载项目:项目地址 方法二:使用git克隆(推荐),相关内容参考Git的安装及github远程仓库ssh连接 git clone https://github.com/Niki173/C3D.git https://github.com/jfzhan…

行为识别C3D代码(pytorch)实现过程及常见错误

行为识别C3D代码(pytorch)实现过程及常见错误 1.C3D网络代码 C3D(pytorch)实现代码链接: C3D代码 2.C3D代码复现过程 (1)环境版本要求 pytorch:3.5及以上 opencv:3.4.2(我是这样…

C3D的视频分类

很久之前做了C3D的视频分类,现在详细把整个项目的细节描述一下。 首先介绍一下C3D:对于一段视频来说,它是连续的帧图像叠加起来的,所以可以考虑在生成通道图像的时候,把多帧图像叠加的特性讨论进去。 一个视频段输入&…

C3D源码解读(基于3D卷积的动作识别)

UCF数据集下载地址:https://www.crcv.ucf.edu/data/UCF101.php 1.推理效果与项目配置 执行inference.py,需要指定3个参数,第一个是标签文件地址,存储了各个标签的含义,第二个是权重文件地址,第三个是要进行推理的视频…

C3D代码总结(Pytorch)

C3D代码总结(Pytorch) github:https://github.com/Niki173/C3D 介绍数据介绍文件介绍具体操作流程运行结果 介绍: 本次C3D模型用的是pytorch框架,我们在UCF101和HMDB51数据集上训练这些模型,本次实验以U…

C3D论文笔记

论文链接:http://vlg.cs.dartmouth.edu/c3d/c3d_video.pdf 代码链接:https://github.com/jfzhang95/pytorch-video-recognition 1. C3D是什么? C3D,全称Convolutional 3D,即3D卷积。3D卷积方法是把视频划分成很多固定…

C3D网络介绍

1. 模型简介 C3D模型广泛用于3D视觉任务。C3D网络的构造类似于常见的2D卷积网,主要区别在于C3D使用像卷积3D这样的3D操作,而2D卷积网则是通常的2D架构。要了解有关C3D网络的更多信息,您可以阅读原始论文学习3D卷积网络的时空特征。 3D卷积图…

视频分析模型(行为识别):C3D

C3D 文章目录 C3D1. 简介1.1 背景1.2 C3D特点1.3 视频描述符1.4 C3D的结果 2. 架构2.1 工作流程2.2 网络结构2.3 3D卷积和池化2.4 kernel 的时间深度 3. 可视化3.1 特征图3.2 特征嵌入 4. 应用场景4.1 动作识别4.2 动作相似度标注4.3 场景和目标识别4.4 运行时间分析 1. 简介 …

C3D论文精读

论文地址:https://vlg.cs.dartmouth.edu/c3d/c3d_video.pdf Abstract 作者的研究结果有三个方面: 1)与二维相比,三维卷积网更适合时空特征学习;2)所有层具有333的小卷积核的同构架构是3D卷积网的最佳架构之一;3)学习到的特征&am…

基于C3D网络的视频分析与动作识别

卷积神经网络(CNN)被广泛应用于计算机视觉中,包括分类、检测、分割等任务。这些任务一般都是针对图像进行的,使用的是二维卷积(即卷积核的维度为二维)。而对于基于视频分析的问题,2D convolutio…

《QDebug 2022年12月》

一、Qt Widgets 问题交流 二、Qt Quick 问题交流 1、在 C 中关联 QQuickWindow 的 closing 信号提示 "使用了未定义类型QQuickCloseEvent" 因为 closing 信号中的参数类型是 private 模块中定义的,但是通过第二句提示我们知道找到了完整定义才能使用 Q_…

4.4 案例8 用qDebug()输出信息

本案例对应的源代码目录:src/chapter04/ks04_04。 在开发C/S(Client/Server,客户端/服务端)模式的软件时,服务端程序(有时也称作服务)经常运行在两种模式下。 (1)终端模…