管中窥“视频”,“理解”一斑 —— 视频理解概览
©PaperWeekly 原创 · 作者|Lingyun Zeng
学校|北京航空航天大学
研究方向|计算机视觉
本文通过对视频理解/分类(Video Understanding/Classification)的基础和经典论文进行梳理,帮助把握整体发展走向。
背景
随着通信技术的发展,目前已进入全民视频&音频时代,各种短视频、中视频应用崛起,占据了大部分生活时间;深度学习视觉技术的研究焦点,也从单纯的图片向视频、多模态领域倾斜。
视频理解基础
2.1 3D卷积
3D 卷积和 2D 卷积的区别:3D 卷积核多了一层深度的维度,用以提取时间序列信息(包含光流变化等)
2D 卷积核 shape:(channels,k_height,k_width)
3D 卷积核 shape:(channels,k_depth,k_height,k_width) ,与 2D 卷积核的本质区别在于是否在 depth 维度进行滑动(可以把 2D 卷积看作 3D 卷积的特殊形式)
2.2 模型评价标准
视频分类 metric:和图片分类类似,使用 top1,top5 accuracy 评价。
2.3 常用数据集
2.4 经典模型
2.4.1 DT及iDT算法(手工提特征,非深度学习方法)
● DT算法
流程:密集采样特征点,特征点轨迹跟踪,轨迹特征提取。
1. 密集采样特征点:使用网格划分的方法,在二维图像上进行特征点采样。同时设置阈值,去除缺乏变化区域的采样点(缺乏变化区域的特征点后续难以在时间序列上进行跟踪,e.g. 白色墙壁中心的点)。
2. 特征点轨迹跟踪:通过计算特征点运动方向,得到轨迹向量。特征点运动方向计算公式:,其中 , 和 代表光流方向,M 为中值滤波。即运动方向是以特征点领域内光流中值确定的。
3. 轨迹特征提取:对每帧图像中特征点领域进一步进行网络划分,提取 HOG, HOF, MBH 特征,并对特征归一化后进行编码。
4. 使用 SVM 对编码后的视频特征进行分类。
● iDT算法
在 DT 算法上进行改进:光流图像优化,特征归一化方式改进,特征编码方式改进(目前一些深度学习方法 ensamble iDT 后会有提升)。
1. 光流图像优化:由于相机运动,背景也存在很多轨迹信息,会对前景的特征采样造成影响。因此 iDT 专门去除了背景上的特征点。(通过估计相机运动,来消除背景区域的光流);
2. 特征归一化方式改进:使用 L1 正则后再开方,提升约0.5%。(DT 算法使用 L2 范式进行归一化);
3. 特征编码方式改进:使用 Fisher Vector 方式编码(DT 算法使用 Bag of Features)。
1.4.2 P3D模型
论文标题:
Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks
论文来源:
ICCV 2017
论文链接:
https://arxiv.org/abs/1711.10305
代码链接:
https://github.com/ZhaofanQiu/pseudo-3d-residual-networks
提出了 3 种 3d 残差卷积块,将 3x3x3 的 3D conv 解耦成 1x3x3 的空间卷积(即“S”)以及3x3x1的时间卷积(即“T”),便于减少计算量和使用预训练模型。
1.4.3 R(2+1)D模型
论文标题:
A Closer Look at Spatiotemporal Convolutions for Action Recognition
论文来源:
CVPR 2018
论文链接:
https://arxiv.org/abs/1711.11248
代码链接:
https://github.com/facebookresearch/VMZ
证明了在残差网络结构中,3D 卷积优于 2D 卷积(对于动作识别任务而言);证明了分解 3D conv 为 spatial conv 和 temporal conv 能显著提升准确率。
R2D:4 维张量 reshape 成 3 维张量处理;
MCx:认为动作建模在浅层更必要;
rMCx:认为动作建模在深层更必要;
R3D:在所有层都使用 3D conv 进行动作建模;
R(2+1)D:3D conv 解耦为 2D conv 和 1D conv。
好处:(a) 解耦后增加 relu 层,增加了非线性操作,提升网络表达能力 (b)解耦之后更容易优化,loss 更低。
视频理解-经典论文梳理
3.1 ICCV 2015
论文标题:
Unsupervised Learning of Visual Representations using Videos
所属领域:
无监督学习(利用视频数据,ICCV 2015)
论文链接:
https://xiaolonw.github.io/papers/unsupervised_video
代码链接:
https://github.com/xiaolonw/caffe-video_triplet
Background
大量视觉任务使用监督学习或者半监督的方法来提取特征,并且大部分基于 image。
Motivation
1. 目前无监督学习无法赶超监督学习, 瓶颈在哪里?
2. 人类视觉是从动态的感知信息而不是静态图片中获取信息的,CNN 能否也从对动态感知(即视频数据)的学习中得到提升?
Method
提出了 siamese network,三个子网络共享权重,和 AlexNet 结构类似,在 pool5 后面接了 4096 和 1024 维的全连接层,即每个视频 patch 最终被映射为 1024 维的向量。
Input:pair of patches(size:227x227,从视频帧中提取)
Output:3 个 1024 维向量
Loss Function:正则化项 +cos 距离项
其中,W:权重 weight,:track 的起始两个 patch,:从其他 video 中随机选取的 patch(用来 triplet),:两个 patch 的 cos 距离,M:两个距离的 gap 超参,设置为 0.5。
Details
1. 提取感兴趣的 patch(即包含我们想要的 motion 的部分),并跟踪这些patches,以此来创建 train instances。
● 提取 patch:采用 two-step approach:
(1)获取 SURF 特征点,然后使用 IDT [1] 中单应性估计方法获取每个 SURF 特征点的轨迹。
说明:之所以使用这个方法,是因为 youtube 视频包含很多相机移动的噪声。IDT 这一步专门去除了相机运动信息。
(2)获取了 SURF 点的轨迹后,将移动幅度大于 0.5 像素的点归类为 “moving” 。
(3)帧过滤:过滤掉(a)包含 moving 类的 SURF 点低于 25%(可能这些是噪声点) 和(b)包含 moving 类的 SURF 点高于 75% 的帧(可能都是相机的运动)。
(4)用 227x227 的 bbox 做 sliding window,提取包含最多 moving 点的 bbox 作为该帧的 patch。
● tracking:
使用 KDF tracker [2] 对前面获得的 patch 进行跟踪,track 的第一帧和最后一帧会作为 pair of patches 进行训练。
2. 如何选择 negative 样本
(1)先随机选择:对每个 pair of patches,在同一个 batch 中随机选择 K 个 patch 作为 negative patch,得到 K 个 triplet。每个 epoch 都进行 shuffle,确保每 个pair of patches 都能和不同的 negative patch 组合。
(2)训练大概 10 个 epoch 后,进行 hard negative mining。对每个 pair of patches,将它们和同一个 batch 中其他的 patches 过网络前向计算,根据 loss (下图 loss)的大小进行排序,选取 loss 最大的前 K 个(此处 K=4)patch 作为 negative patch。使用这 K 个 patches 进行后续的训练。
3. 如何将这个网络应用到监督学习的任务
(1)方法一:直接将 triplet network 作为预训练网络,修改输出层适应不同任务。
(2)方法二:迭代式训练。先用 triplet 做预训练,再将 finetuned network 拿来跑 triplet,最后再对应的任务上做 finetune。
4. 训练设置
Dataset: Youtube, 100K videos。提取出 8million 的 patches,后续做 finetune 实验分别使用 1.5M / 5M / 8M 的数据;Batchsize:100 ;初始 LR rate:0.001。
Results
1. 直接使用 VOC 训练,mAP 44.0%;ensemble 3 个模型后,mAP 47.3%(+3.3)。
2. 无监督方法的预训练模型 +VOC finetune, mAP 46.2%;增加无监督训练数据后,mAP 47.0%(+0.8)以及 47.5%(+1.3),证明无监督模型对特征提取有益。
3. 在 VOC 上 retrieval rate 40%(ImageNet 预训练模型:62%,但是它已经学习过 semantics 了)。
可视化结果:使用 VOC 2012 val 做 query,然后从训练数据中找 cos 距离最近的 5 张图。
3.2 ECCV 2016
论文标题:
TSN-Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
所属领域:
动作/行为识别(基于视频,ECCV 2016)
论文链接:
https://arxiv.org/abs/1608.00859
代码链接:
https://github.com/ZJCV/TSN
Background
基于图片的动作识别已经取得了良好效果,但基于视频的研究并没有太大突破。作者认为主要瓶颈在于以下三个方面:
1. 长时间段的视频结构包含了丰富的动态行为信息,但目前的主流研究方法,在实际应用中,受限于计算资源的限制,只能基于短时间段的序列,会丢失一些长时间段中的信息。 大部分在这个方面进行的研究,基于密集的时间间隔采样:会带来巨大的计算开销,在实际应用场景中不适合。
2. 好的网络模型需要大量的训练数据,目前(论文发表时)只有 UCF101, HMDB51 数据集,数据量和类别种类都不够。
3. 视频的动作分类模型还没有深层网络(相比于图像分类模型来说),训练深层网络容易造成过拟合。
Motivation
1. 设计一种高效的,适用于长时间段视频的模型;
2. 在有限的训练数据下实现卷积网络的学习。
Methods
设计了一种 two-stream architecture 的模型,主要创新点在于对完整视频段进行分割,再对分割段的预测结果进行整合,从而实现了利用少量帧信息即可获取完整视频信息的目的,在满足资源限制的条件下实现对完整视频段特征的学习。
损失函数:
将每个 Video 划分为 K 个 segments,然后从每个 segment 里随机挑选帧组成 snippet,对这些 snippet 分类,聚合分类结果作为视频的分类结果。
Experiment
视频的光流特征使用 OpenCV TVL1 optical flow algorithm 进行提取。
1. 对输入模式和训练策略进行实验,结论:
(1)使用 Cross modality 和 partial BN with dropout 的方案可以提升精度;
(2)融合光流、wrap 光流、RGB 输入的结果精度最高,92.3%(加 RGB difference 会掉点,如果对计算资源有严格要求的时候可以考虑使用) 。
2. 聚合函数探索,结论:average 最好。
3. 在 UCF101 上精度 94.2%,HMDB51 69.4%。
3.3 ICCV 2019
论文标题:
SlowFast Networks for Video Recognition
所属领域:
视频识别(FAIR,ICCV 2019)
论文链接:
https://arxiv.org/abs/1812.03982
代码链接:
https://github.com/facebookresearch/SlowFast
Background
目前视频识别的工作可以分为 3 个方向:利用 3D conv 等来整合时间序列上的信息;使用光流特征来进行学习;two-stream 的网络结构。
Motivation
1. 受启发于生物学结论:人眼对于快慢动作信息有两套不同的 path 进行处理,fast path 聚焦快速动作信息,忽略颜色纹理信息,slow path 聚焦颜色纹理,忽略动作。
2. 常见的 two-stream 结构需要手工提取光流信息,能否设计一种 end-to-end 的网络结构?
Methods
设计了一种 end-to-end 的视频分类网络,包含 Slow 和 Fast 两条学习路径,Slow path 的数据是低帧率的,主要学习空间纹理、颜色信息;Fast Path 是高帧率的,负责学习时间维度上的动作信息。最后对两路学习结果进行 fuse。
设置 Fast Path 有更高的时间帧率,更小的通道数:
Experiment
Fast path 有助于提升精度 , 可以达到 SOTA。
3.4 CSN, CVPR
论文标题:
Video Classification with Channel-Separated Convolutional Networks
所属领域:
视频分类(FAIR,CVPR 2019)
论文链接:
https://arxiv.org/abs/1904.02811
代码链接:
https://github.com/facebookresearch/VMZ
Contributions
探究了 3D group conv 的作用,包括“是否能降低计算开销”,“主要影响因素”,“trade-off 方案” 。
Conclusions
1. 3D group conv 可以有效降低计算开销。
2. 3D channel-separated conv 有正则化效果,能够提升测试准确率。
Methods
irCSN 和 ipCSN
提出两种 3D 组卷积结构(ip 和 ir):
(a)resnet 3D conv
(b)ip block(Interaction-preserved channel-separated bottleneck block)
使用一个 1x1x1 卷积和一个 3x3x3 depth wise 卷积替换原来的一个 3x3x3 卷积,由于新增了一个 1x1x1 卷积,因而保留了 channels 之间的连接信息,所以称为 Interaction-preserved。
(c)ir block(Interaction-reduced channel-separated bottleneck block)
使用一个 3x3x3 depth wise 卷积替换原来的一个 3x3x3 卷积,由于此处已经丢失了部分连接信息,因而称为 Interaction-reduced。
Experiments
1. 在 50 和 101 layer 的实验中,可以超过原始 resnet 结构:69.4 -> 70.8,70.6->71.8。
2. ip-CSN 和 resnet 在 kinetics 上 training error 的对比:ip-CSN 有更高的 train error,但是有更低的 test error,证明 ip 结构可以提供正则化效果,防止过拟合。
3. 在 kinetics 上可以达到 sota:
简单过了一遍,总体来说分为两大阵营:
以 SlowFast 为首的 3D conv 结构(i3D, P3D, R(2+1)D, SlowFast等);
以 TSM 为首的 2D conv 结构(TSM,TSN,TIN)等;
基本也是 trade-off 问题了,3D conv 精度更高,2D conv 速度更快。相信也会像目标检测一样,忽然有个逆天结构出来改变赛场模式吧(比如 Transformer?)
更多阅读
#投 稿 通 道#
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
???? 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
???? 投稿邮箱:
• 投稿邮箱:hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
????
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。
管中窥“视频”,“理解”一斑 —— 视频理解概览相关推荐
- 对于2019全国高速公路视频联网工作实施方案的理解:视频上云网关与省级视频云平台
为加快推进"可视.可测.可控.可服务"的高速公路运行监测体系建设,不断提升服务能力和监管水平,更好地满足人民群众高品质雏形需求,在2019年11月交通运输部印发了<全国高速公 ...
- 音视频基础知识——素材理解
素材 素材是媒体内容生产中一切生产资料的集合,包括不限于视频.音频.图片.字幕等形式. 素材通过统一的协议把原始的数据有序组织起来,便于编辑与管理.比如一般的素材是由一个物理文件及其各类属性构成,在对 ...
- 经典视频编解码框架理解
(本人原创,欢迎转载,但希望附上原文链接,谢谢) 前言 经典的视频编解码标准有H.264和HEVC,这两种标准的编码框架(见图1)大致相同,只是其中某几个模块的技术得到了一定的发展,目前在研究的H.2 ...
- Java中关于进程和线程的理解
进程:进程是操作系统的基础结构,是一次程序的执行,是一个程序及其数据在处理机上顺序执行所发生的的活动,是程序在数据集合上运行的过程,它是操作系统进行资源调度和分配的一个 独 立 ...
- html video 加广告,视频加入广告,如何在视频中插入一段广告视频,视频加广告的方法...
经常在网上看视频的朋友们都知道,特别是有时候在视频软件上面看到一个特别感兴趣的视频内容的时候,播到一半竟然有一则插播的广告!但是我们在看之前并不知道会有这么一段广告的植入,所以只好等它广告播完了再继续 ...
- HIveSQL面试题52:近一个月发布的视频中热度最高的top3视频【抖音面试题,不得不去吐槽的一个题目】
目录 0 问题描述 1 数据准备 2 问题分析 3 小结 0 问题描述 现有用户-视频互动表tb_user_video_log id uid video_id start_time end_time ...
- lsdyna如何设置set中的node_list_如何在Matlab GUI中播放带声音的视频?
各位同学好,各位知乎的小伙伴们大家好.今天,我要给大家分享的内容是:"如何在Matlab GUI中播放带声音的视频?" 这个问题有点奇怪,什么叫做带声音的视频?视频一般不都是带声音 ...
- 微课在初中计算机教学中的运用,微课视频应用在初中信息技术教学中的几点体会论文...
微课视频应用在初中信息技术教学中的几点体会论文 摘 要: 从微课视频内容的特殊性看,与其他学科相比,在信息技术课堂上运用微课视频进行教学具有无法比拟的重要功效.本文主要立足于当今的时代背景,运用理论与 ...
- 上传和优化Magento 2中的产品图像和视频
2019独角兽企业重金招聘Python工程师标准>>> 首先,了解如何上传以及优化Magento 2中产品的图像和视频是至关重要的.大多数Magento 2网站都有各种各样的产品以及 ...
最新文章
- Browser Security-超文本标记语言(HTML)
- 【网络结构】小议如何跳出魔改网络结构的火坑
- 马士兵 redis 百度网盘_西甲周六攻略:巴萨 马竞 塞维利亚出战
- highcharts 24小时显示数据,显示00:00格式的数据
- maven 多模块项目
- [转]Delphi 12种大小写转换的方法
- OpenStack Hacker养成指南
- php在线加密lua,AES 256 Lua + PHP
- stagefright_StageFright:Android操作系统中最易受攻击的错误
- Visio Professional 2019 激活方法详解
- 全球及中国汽车系统基础芯片(SBC)行业需求现状与发展战略规划研究报告2022年版
- 读书会招募 | 一起来读《蛤蟆先生去看心理医生》吧
- 对焦(调焦),变焦区别
- 2018-2019 起风了,唯有努力生存
- python 爬虫 金山词霸每日一句 优美的文段中英文爬取自编
- linux全局搜索文件
- 在 macOS 中如何使用 XPC 实现跨进程通讯?
- java qq邮箱服务器端口_java qq 邮箱发送错误以及端口号
- 易经卦象基本类别与其类象运用思路
- CRM2011分布式安装:产品密钥与安装的Microsoft Dynamics CRM版本不兼容
热门文章
- iOS 崩溃日志在线符号化实践
- python哪个代码是正确的字典_Python - 字典(dict) 详解 及 代码
- jsonp react 获取返回值_谈谈对 React 新旧生命周期的理解
- android 如何做记住密码
- Spring+SpringMVC +MyBatis整合配置文件案例66666
- C# 进程优先级和线程优先级的方法
- 用于读、写、删除、比较Session中的用户信息的类库。
- 布丁消除html,布丁压缩怎么彻底卸载
- 使用read_html爬取网页表哥,Python笔记:用read_html()爬取table形式表格的网络数据...
- 里bl2和bl3为什么分开_分手挽回:为什么不建议过早同居