I3D--视频理解必读论文总结

news2024/11/27 4:30:33
  • 论文标题:Quo Vadis, Action Recognition? A New Model and the Kinetics
  • 会议期刊: CVPR 2017
  • Dataset 论文地址:https://arxiv.org/pdf/1705.07750.pdf

文章目录

    • 前言
    • 文章核心
    • 摘要
    • 引入
    • 方法
      • a. 2DConv+LSTM
      • b. 3DConv
      • c d. Two-Strwam
      • Two-Stream 3D-ConvNet 【本文】
    • 实验效果
    • 局限性

前言

在视频理解领域,I3D是一篇不得不读的文章,在他之前,当时人的解决方案大多数是以双流网络为主进行视频分类。在UCF-101和HMDB-51数据集上进行测试对比结果,当I3D提出之后,基本上将UCF-101和HMDB-51数据集刷到顶峰了,同时,使得3DCNN在视频理解领域大放异彩,直到近几年VIT的出现,才有新的方向对视频理解领域进行推进;I3D也提出了一个新的数据集–Kinetics Dataset,之后的方法都需要在这个数据集上进行对比。

文章核心

提出了一个Two-Stream Inflated 3D ConvNet(I3D)网络,也就是一个双流膨胀3D卷积神经网络。开源了一个大规模公开数据集–Kinetics Human Action Video dataset。使用这个大规模数据集科研进行预训练模型在UCF-101和HMDB-51数据集进行迁移学习可以达到更好的效果。

摘要

看一下原文是怎么描述。稍微进行提炼。

  • 当前挑战:当前动作分类数据集(UCF-101 和 HMDB-51)中缺乏视频使得很难识别好的视频架构,因为大多数方法在现有的小规模基准上获得了相似的性能。【两个公开数据集有局限性,无法使模型具有区分度】
  • 本文贡献
    • 数据集贡献: 本文根据新的 Kinetics Human Action Video 数据集重新评估了最先进的架构。 Kinetics 拥有多两个数量级的数据,有 400 个人类动作类和每个类 400 多个clip,并且是从逼真的、具有挑战性的 YouTube 视频中收集的。【更好更大的数据集】
    • 迁移学习:我们分析了当前架构如何处理该数据集的动作分类任务,以及在 Kinetics 预训练后在较小的基准数据集上性能提高了多少。【使得模型更加有区分度,同时使用迁移学习可以从大数据集迁移到小数据集】
    • 新的模型架构:我们还介绍了一种新的基于 2D ConvNet 膨胀的双流膨胀 3D ConvNet(I3D):非常深的图像分类 ConvNets 的过滤器和池核扩展到 3D,使得学习无缝空间成为可能- 从视频中提取时间特征,同时利用成功的 ImageNet 架构设计以及它们的参数。【更好的模型架构,更好的预训练参数进行初始化】
  • 结果:我们表明,在 Kinetics 预训练之后,I3D 模型大大改进了动作分类的最新技术水平,在 HMDB-51 上达到 80.9%,在 UCF-101 上达到 98.0%。

引入

总结提炼原文,不放置原文内容了,原文可参考论文PDF

目前的大背景是大规模数据预训练,到下游任务小规模数据上进行迁移学习这种方式取得了很好的效果。但是在视频领域缺少大规模数据集,因此在视频领域的模型,网络无法设计的太深太复杂【容易过拟合】。
视频理解涉及三维数据和时序性,一般的视频理解的方法主要可以分成三种方式:

  • 卷积网络+时序网络(比如LSTM)
  • 3D网络
  • 双流网络(利用光流数据捕捉时序信息)

这三种方式哪种更好当时尚无定论,直到现在也是没有定论。用2D,3D,还是Transformer模型,现在也是不确定的。

如果想要充分利用预训练模型参数和前人非常完善巧妙的网络架构,就需要用某种方法解决2D到3D的之间Gap。作者针对此问题提出了Inflating和Bootstrapping来解决。

方法

原文没有相关工作,在方法部分,作者直接回顾对比了前面所提到的方法。

在这里插入图片描述

a. 2DConv+LSTM

这种方法是最直接可以想到的方法,利用2D卷积神经网络对所有帧提取特征后,使用LSTM网络对所有特征进行时序性的整合,最后加一个全连接层进行分类。

但是这种方法在实际使用中效果很一般,所以大家也不怎么用。

b. 3DConv

直接将视频帧【三维信息】放入3D卷积神经网络中,最后加一个全连接层进行分类。
这种方式的参数量相对较大,但是相比a更加主流。

c d. Two-Strwam

将视频放入成两个分支-空间流和时间流,一个分支学习场景信息,输入RGB一帧;另一个分支学习物体的运动信息,输入多帧(10帧)光流信息【抽取好的时序信息表示】,两个分支网络都是2D网络.
c. 得到logit信息;最后通过平均加权得到Action分类,这种方式是一个Later fusion【因为是在logit层面融合】。
d. 【CVPR2016】前面使用的是简单的平均加权得到最终结果,没有利用时序信息,因此可以在还未得到logit结果时,对两个分支的特征使用3Dconv的结构进行融合,获取一些时序信息,更有利于分类。这种方式就是Early fusion。【前面用2D网络,后面融合使用3D网络】

这种双流网络了方式的效果不错,也是主流方法。

Two-Stream 3D-ConvNet 【本文】

在有足够多的数据情况下,3D比2D卷积网络效果更好,并且利用光流信息可以提取更好的运动信息。因此本文结合了3DCNN和双流网络,将双流网络中的2D网络换成3D网络。
说回网络提到的两个贡献点,Inflating和Bootstrapping解决2D到3D的Gap;

  • Inflating 2D ConvNets into 3D,目前有很多成功的网络架构,可以直接将其2D卷积改为3D卷积,2Dpooling改为3Dpooling,这种过程就称为Inflating。好处是可以直接保留最佳最优秀的网络架构设计。
  • Bootstrapping 3D filters from 2D Filters,从预先训练的ImageNet模型中引导参数来初始化I3D:作者将图像重复复制到视频序列中将图像转换为(boring)视频。然后,在ImageNet上对3D模型进行隐式预训练,满足我们所谓的无聊视频固定点((boring)视频上的池化激活应与原始单个图像输入上的池化激活相同),这可以实现通过在时间维度上重复2D滤波器的权重N次,并且通过除以N来重新缩放它们,这确保了卷积滤波器响应是相同的。

对于2D网络上预训练的参数,如何迁移到3D网络,将某一帧复制多次成为类似video时,通过3DCNN输出也是和2DCNN一致的。如果2D的滤波器为N*N的,那么3D的则为N*N*N的。具体做法是沿着时间维度重复2D滤波器权重N次,并且通过除以N进行归一化。

在这里插入图片描述
作者发现,MaxPooling在时间维度尽量不要下采样,因此前面几个stride是1*2*2。

在文章提到的基础网络是基于Inception v1,是当时效果最好的网络,不过后面很快就发现Resnet效果更好,因此后面的I3D网络,人们大多数指的是以Resnet为基础的网络。

实验效果

在这里插入图片描述
可以看到模型大小还是比较小的。测试时间都是一样的,因为都是将连续的视频直接输入,都是10s的视频。一般都是一秒有25帧,看一下Temporal Footprint这一,第一行是每隔5帧选一帧,输入25帧因此是5s时间得到输入;后面都是取连续帧。第2行是选取连续的16帧,因此为16/25为0.64;第三行是10/25为0.4;第四行为50/25;最后一行是64/25。

在这里插入图片描述可以看到通过双流网络进行判别都比单独判别更好,同时,使用加载ImageNet参数的效果更好。

在这里插入图片描述
通过Kinetics预训练,再迁移到另外两个数据集上测试,可以看到效果有很大的提升,同时整体微调的方式比之训练了最后一层略好。并且加载Imagenet预训练参数也是一个很好的增益。

局限性

最后说一下局限性,目前研究者发现:
Kinetics数据集有Special heavy的问题,也就是说从视频中抽一帧,单纯进行分类效果也不错,无需太多上下文的信息,模型对时序建模能力的要求并不高。不过总体来说,I3D使得3DConv在视频理解领域的得到重视,在后续跟进的研究中,3DConv网络大放异彩。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言学习分享(第七次)------操作符

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 操作符详解 1. 前言🚩2…

Ajax,前后端分离开发,前端工程化,Element,Vue路由,打包部署

Ajax介绍 Axios <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

为什么我掌握了大量软测知识,却还是找不到工作?

很多朋友都在疑惑&#xff0c;为什么随着对于软件测试了解的加深&#xff0c;不断掌握更多测试知识与技巧&#xff0c;找工作貌似越来越难了&#xff1f; 不免让人联想到最近偶然间看到一句话&#xff1a;“软件测试是整个 IT 行业中最差的岗位”。 打工人的问题出在哪&#xf…

使用Jmeter应该如何进行http接口性能测试?

在进行网页或应用程序后台接口开发时&#xff0c;一般要及时测试开发的接口能否正确接收和返回数据&#xff0c;对于单次测试&#xff0c;Postman插件是个不错的Http请求模拟工具。 但是Postman只能模拟单客户端的单次请求&#xff0c;而对于模拟多用户并发等性能测试&#xff…

11.1网络编程——

多线程 一、基础知识概念相关API二、任务创建一个简单的本地客户端创建一个简单的本地服务器三、总结四、问题一、基础知识 概念 网络编程中客户端和服务器指的是进程,而不是常提到的机器或者主机。注意三个概念:请求、响应、事务。 网络编程中客户端-服务器事务是指客户端和…

刷题day65:分割等和子集

题意描述&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 思路&#xff1a; 使用01背包&#xff0c; 背包的体积为sum / 2背包要放入的商品&#xff08;集合里的元素&#xff09;…

linux数据校验

文件 一般对于文件的校验使用md5&#xff0c;centos7系统有自带的md5校验工具md5sum&#xff0c;可以用来校验两个文件是否一致 可以对比一下md5值是否一致来校验文件是否一致 目录 1 若是在主机上使用网络磁盘挂载备份的可以使用diff工具对比两个目录是否一致 diff -r /op…

Nginx使用教程

目录 一、Nginx介绍二、下载和安装三、Nginx命令1.查看版本2.检查配置文件正确性3.启动和停止4.重新加载配置文件 四、配置文件结构五、Nginx具体应用1.部署静态资源2.反向代理3.负载均衡 一、Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件( IMAP/POP3)代…

少儿编程 中国电子学会图形化编程等级考试Scratch编程二级真题解析(选择题)2023年3月

2023年3月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、小猫的程序如图所示,积木块的颜色与球的颜色一致。点击绿旗执行程序后,下列说法正确的是 A、小猫一直在左右移动,嘴里一直说着“抓到了”。 B、小猫会碰到球,然后停止。 C、小猫一直在左右…

《LKD3粗读笔记》(13)虚拟文件系统

《LKD3粗读笔记》(13)虚拟文件系统 虚拟文件系统&#xff0c;简称VFS&#xff0c;是内核的子系统&#xff0c;为用户空间程序提供了文件系统相关的接口。系统中所有文件系统不但依赖VFS共存&#xff0c;而且也依靠VFS系统协同工作。通过虚拟文件系统&#xff0c;程序可以利用标…

文本三剑客正则表达式2

文章目录 文本三剑客&正则表达式21 sed2 sed命令的常用选项3 sed命令的操作符4 打印4.1 按照行号寻址打印4.1.1 只打印第二行4.1.2 只显示行号4.1.3 显示行号及内容4.1.4 只打印最后一行 4.2 进行行号范围区间的打印4.2.1 打印1-3行4.2.2 打印第二行到最后一行4.2.3 打印2-…

操作符续(整型提升与算术转换)

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C知识系统分享》专栏&#xff0c;笔者用重金(时间和精力)打造&#xff0c;基础知识一网打尽&#xff0c…

MySQL深入浅出: order by if()与order by in()之条件排序

目录 1&#xff1a;原表数据 2&#xff1a;order by if&#xff08;&#xff09; 3&#xff1a;order by in&#xff08;&#xff09; 4&#xff1a;社区地址 1&#xff1a;原表数据 2&#xff1a;order by if&#xff08;&#xff09; SELECT * FROM people ORDER BY IF(…

mysql数据库的表的增删查改

目录 表的增删查改 6.1&#xff1a;增加 6.2&#xff1a;查找 6.3&#xff1a;更新 6.4&#xff1a;删除 6.5&#xff1a; 插入查询结果 6.6&#xff1a;聚合函数 6.7&#xff1a;group by分组 关键字的先后顺序&#xff1a;from > on> join > where > gro…

C语言实现三子棋小游戏

目录 游戏介绍 游戏菜单的创建&#xff08;menu&#xff09; 游戏核心功能实现 棋盘的初始化&#xff08;InitBoard&#xff09; 棋盘的展现&#xff08;printfboard&#xff09; 玩家下棋&#xff08;playerBoard&#xff09; 电脑下棋&#xff08;computerBoard&#…

探究C++构造函数及其优化

目录 一、 类的六个默认成员函数1.1 框架图1.2 具体介绍&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;析构函数&#xff08;3&#xff09;拷贝构造函数&#xff08;4&#xff09;赋值运算符重载函数 归纳我们不写&#xff0c;编译器默认生成了什么&#xff1a; …

2023宁波市赛 天一永安杯赛前模拟题部分wp

Web pop 进hint.php 伪协议读index.php <?php class Tiger{public $string;protected $var;// 恶意参数public function __construct($var){$this->var $var;}public function __toString(){return $this->string;}public function boss($value){// 0eval($valu…

自动化测试作为软件测试的一种技术手段,时常被大家讨论

自动化测试作为软件测试的一种技术手段&#xff0c;时常被大家讨论。本人在自动化技术方面有过略有小成&#xff0c;今天聊一聊关于自动化的一些误区&#xff0c;以帮助新手能正确的了解和认识自动化一些概念。 测试的行为本质是什么&#xff1f; 为什么先从这个概念开始谈起&…

OpenGL之创建窗口

目录 什么是OpenGL&#xff1f; 核心模式与立即渲染模式 立即渲染模式 (Immediate mode) 核心模式(Core-profile) 状态机 对象 创建窗口 配置环境 什么是OpenGL&#xff1f; 一般它被认为是一个API(Application Programming Interface, 应用程序编程接口)&#xff0c;…