【论文阅读】Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

2024-02-06 10:40

本文主要是介绍【论文阅读】Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【论文阅读】Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

这是一篇2017CVPR的论文,我感觉这篇论文最大的贡献就是提出了kinetics数据集,这个数据集与之前的行为识别数据集相比有质的飞跃。同时文章也提出一种将2D卷积网络扩张成3D卷积网络的思想,使3D卷积网络可以收益于2D卷积网络的发展。感觉以后行为识别越来越玩不起了,面对这么大的数据,想起我那一张破显卡,不禁流下了贫穷的泪水。

论文地址:下载链接
代码地址(pytorch):下载链接

简介

  • 我们知道在ImageNet上预训练的2DCNN对于其他的视觉任务(比如目标检测)是很有帮助的,那么在大的行为识别数据集上预训练的网络在其他视频任务中也可能很有帮助,但是现在没有大的行为识别数据集,怎么办?于是文章首先发布了一个超大的trimmed行为识别数据集kinetics。
  • 提出了大数据集kinetics,文章又把之前的经典方法都在这个数据集上做了实验,并且实验了在kinetics上预训练的模型对于小数据集的结果是否会有提升,实验结果表明使用kinetics预训练的模型能得到更高的准确率。
  • 最后文章提出了一种I3D(Two-Stream Inflated 3D ConvNets)模型,该3DCNN模型是由2DCNN Inception-V1扩张而来,并且可以使用在ImageNet上预训练的参数,实验结果表明这个模型在各个标准数据集上都取得了当时最好的结果。

正文

kinetics数据集

Kinetics数据集包含了400类人体行为,每一类至少有400个视频,这些视频全都来源于YouTube,每个视频时长大约为10s,一共有30多万个视频。视频中的行为可以被分为三类:单一的人体动作、人与人的交互、人与物的交互。这些行为都被分的非常细,有些需要通过时间推理来区分(例如不同类型的游泳),还有一些动作需要通过物体的视觉特征来区分(例如弹奏不同的乐器)。

在kinetics数据集上实验的经典模型

文章复现了经典的模型,如CNN+LSTM的网络、3D卷积网络、基础双流网络,双流卷积融合网络。各种经典网络模型的结构如下图所示:
在这里插入图片描述

  • 上图(a)中为CNN+LSTM的模型结构,其中的2DCNN模型为Inception-V1,CNN最后一层的全局平均池化结果作为LSTM网络的输入,该LSTM网络中包含有batch normalization[1],最后LSTM的输出连接一个全连接层用来分类,该模型在训练的时候使用交叉熵损失函数,损失为所有时刻损失的加和,但是测试的时候只看最后一个时刻的输出的结果。该网络的输入从25FPS的视频中采集的视频段,每隔5帧采集一帧作为输入。训练的时候输入的视频时长为25帧,测试的时候一个视频截取2个视频段,预测结果取平均。
  • 上图(b)中为C3D的模型结构,之前的博文中有详细地介绍链接地址。本文使用的C3D在原来的基础上做了一些改进,在每一个卷积层与全连接层后面加入了batch normalization,同时第一个池化层的时间步长也改为了2。训练时输入的视频段长度为16,测试的时候一个视频分为25段,预测结果为所有视频段的平均。
  • 上图(c)中为基础双流网络[1],本文中的双流网络每一个流中的CNN使用的是Inception-V1。训练的时候appearance流的输入为随机采样的一帧,motion流为10帧堆叠的光流。测试的时候一个视频分为25段,预测结果为所有视频段结果的平均。
  • 上图(d)中为融合双流网络[2],该网络原理上相当于对一个视频分成多段,在每一段上都使用基础双流网络计算结果,最后对所有视频段上双流网络的结果进行卷积融合。双流网络中的CNN也是Inception-V1,卷积融合层的结构为:(3DCNN(3x3x3)-3D池化层(3x3x3)-全连接层),卷积融合层的所有参数使用高斯噪声初始化。训练阶段,网络的输入为5帧RGB视频帧,50帧光流帧,测试阶段,一个视频被分成5段,预测结果为所有视频段结果的平均。

下表中给出了各种经典模型在训练和测试时的输入时间长度。
在这里插入图片描述

Two-Stream Inflated 3D ConvNets 网络结构

首先顾名思义,”Inflated“就说明这是一种将2DCNN扩充为3DCNN的网络,2DCNN网络使用的也是InceptionV1网络,其扩充为3D后的结果如下图所示:
在这里插入图片描述

在将2DCNN扩张成3DCNN时,有以下几点需要考虑:

怎么inflate?

文章中使用的方法是直接将尺寸为 N × N N\times N N×N 的2D卷积核扩充为尺寸为 N × N × N N\times N\times N N×N×N 的3D卷积核。

如何使用ImageNet预训练的参数?

因为该3D网络是由2D网络扩充而来,所以如何才能将2D网络ImageNet预训练的参数应用于3D网络呢?文章认为如果将一张图片沿着时间复制,可以得到一段”boring video“,即”boring video“每个时刻的视频帧都是这张图片。所以3D卷积核在这段”boring video“上的响应应该和2D卷积核在这张图片上的响应是数值相同的。所以3D卷积核使用ImageNet预训练参数的方法是对2D卷积核的参数沿着时间复制,最后除以3D卷积核的时间维度的大小即可。

扩充全部3D卷积核的时间维度等于空间维度合适吗?

将所有的 N × N N\times N N×N 2D核扩充为 N × N × N N\times N\times N N×N×N 3D核可能并不合适,因为时间维度的最优值可能受到帧率等的影响,所以文章通过实验确定了最优的3D核时间维度的尺寸。

如何进一步提升I3D的性能?

为了进一步提升网络的性能,文章在网络中加入了光流的输入,RGB视频和堆叠的光流分别输入到3D卷积网络中得到输出结果,最终的结果为这两个流的结果的融合。

所以最终的I3D网络的结构如下图所示:
在这里插入图片描述
其输入输出的视频时间长度如下图:
在这里插入图片描述

实验细节

训练阶段:除了C3D网络,所有的网络都使用了Imagenet预训练的Inception-v1,Inception-v1网络也做了一些改进,在每一个卷积层后边都添加了batch normalization 和relu。优化方法为动量SGD,动量设为0.9,3D网络使用64个GPU而其他网络使用32个GPU并行训练(土豪!!),模型在ucf101,hmdb51,minikinetics和kinetics数据集上大约分别训练了35k,110k,5k,5k步。同时使用了空间随机裁剪,水平翻转等数据增强的方法。如果视频的时长比要求的输入长度还要短,则对视频进行循环。

测试阶段:输入的视频帧直接裁剪成224x224,整个视频的结果是各个视频段的平均,同时也使用了水平翻转的数据增强的方法,增强的数据的结果与原始结果的平均作为最终的结果。

实验结果

模型在各数据集上的结果

所有模型在ucf101,hmdb51,mini-kinetics数据集上的实验结果如下表所示:
在这里插入图片描述
从表中可以看出

  1. 在非常小的数据集(如hmdb-51)上I3D也是取得了非常好的效果,文章认为这是因为I3D使用了Imagenet预训练的结果。
  2. 不考虑hmdb51,所有的模型在mini-kinetics数据集上的结果都很低,说明该数据集还是有一定的挑战性的。
  3. 有意思的是在所有的数据集上模型的表现性能顺序大致相同,看来除了数据,好的模型也是关键。
  4. C3D在大数据集上表现更好,看来3DCNN是真的”data hungry“。
  5. 其他数据集光流的准确率都高于RGB,但是mini-kinetics不是,因为该数据集中包含有大量的相机运动,所以光流的质量不行。
kinetics预训练的参数是否更优?

为了验证使用kinetics预训练的参数是否更优,文章设计了3种实验:

  1. 直接在数据集上训练,不使用预训练参数
  2. 使用mini-kinetics预训练的参数,仅训练最后的全连接层
  3. 使用mini-kinetics预训练的参数,微调网络的全部参数

其实验结果如下表所示:
在这里插入图片描述
可以看到所有的方法基本都会受益于mini-kinetics的预训练,只是不同的方法提升的效果不同。

I3D的实验结果

I3D最终的实验结果如下表所示,可以看到有了kinetics的预训练,其结果是相当的nice。
在这里插入图片描述

探索性实验

文章对I3D的第一层卷积核进行了可视化,如下图所示:
在这里插入图片描述
上图中,列表示时间,第一行为光流输入的卷积核,第二行为RGB输入的卷积核,第三行是ImageNet预训练的Inception-V1的卷积核,可以看到光流核和原始2D核相似,所以从光流提取运动信息就是直接提取光流的空间信息。RGB核与原始2D核相差很大,因为其要同时提取时间运动信息。

[1] Simonyan, Karen, and Andrew Zisserman. “Two-stream convolutional networks for action recognition in videos.” In Advances in neural information processing systems, pp. 568-576. 2014.
[2] Feichtenhofer, Christoph, Axel Pinz, and Andrew Zisserman. “Convolutional two-stream network fusion for video action recognition.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1933-1941. 2016.

这篇关于【论文阅读】Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684053

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)