写点什么

RepNet:对视频中的重复周期进行计数

  • 2020-08-19
  • 本文字数:3052 字

    阅读完需:约 10 分钟

RepNet:对视频中的重复周期进行计数

我们将在本文中提出一种能够识别视频中重复周期元素的系统。配合 RepNet 模型,我们将发布一套数据集,对视频中的可计数对象进行基准测试,并将结果以运行在 RepNet 上的 Colab notebook 的形式发布。


重复周期是一种普遍存在的抽象概念,无论是自然周期(例如月相变化、心跳或呼吸的阶段性过程)还是人工设定(例如在生产线或交通方式中发现重复周期)中都对此有所体现。


真正让研究人员们兴奋的是,重复周期不仅具有普遍性,同时也能够帮助人们提取出诸多有价值见解。其中或许隐藏着某些事件多次发生的潜在原因,或许能够帮助我们了解场景中某些缓慢变化的具体影响。有时候,我们还能从重复周期中提取出明确的“动作单元”,即通过不断重复或变化构成复杂行动体系的基本动作单位。例如,如果视频中的某人正在切洋葱,则其表现出的切削等复杂操作,在本质上都由一个个简单的动作重复周期所构成。通过这些基本单元,我们可以在更精细的时间范围内自动分析更多动作元素,而不再需要手动进行繁琐的单元注释。考虑到以上原因,对一般性重复系统的长期观察将帮助我们更深入地理解现实世界中的运作机制。


很多人可能已经听说过RepNet,这是一套能够理解各类重复周期的模型,其识别范围涵盖体育锻炼、工具使用、动物奔跑、鸟类振翅以及各类摆动现象。这一次,我们将使用同一组动作的不同视频素材对这些重复周期进行细粒度解析。为此,我们将在本文中提出一种能够识别视频中重复周期元素的系统。配合 RepNet 模型,我们将发布一套数据集,对视频中的此类可计数对象进行基准测试,并将结果以运行在 RepNet 上的 Colab notebook 的形式发布。

RepNet

RepNet 是一套模型,能够以视频素材为输入识别其中包含的各类周期性动作(包括在训练阶段中从未见过的动作),并将发现的重复周期作为返回结果。以往,我们一直通过直接比较帧内像素强度的方式解决视频动作的重复计数问题,但现实生活中的视频素材往往受到摄像机机位移动、野外物体遮挡、比例尺快速变化以及形态变化等因素的影响,迫使相关模型必须面对大量与核心目标无关的特征噪声。


为此,我们以端到端方式训练机器学习模型,借此直接估算重复周期的持续时长。我们的这套模型由三部分组成:帧编码器、中间表示(名为时间自相似矩阵,具体细节将在后文中阐述)以及周期预测器。


首先,我们的帧编码器利用 ResNet 架构作为每帧模型,借此为视频各帧生成对应的嵌入。之所以选择 ResNet 架构,是因为其已经在众多图像及视频处理任务当中证明了自己的强大实力。在经由基于 ResNet 的编码器之后,视频中的每一帧都会产生一系列对应的嵌入。


接下来,我们将各帧的嵌入与视频中其他帧进行比较,借此计算时间自相似矩阵(TSM),并返回一个可由后续模块轻松分析以计算重复次数的矩阵。如以下动图所示,此过程会在视频帧流中凸显出自相似性,从而实现周期估算。



TSM 处理地球昼夜循环图像的演示


在每一帧当中,我们直接根据 TSM 中的相似性序列使用 Transformers 对重复周期及其具体周期性做出预测(即某一帧是否属于该周期性过程中的组成部分)。在明确了周期之后,我们就可以将周期内所捕捉到的所有帧数除以周期总时长,借此得出每帧计数。通过汇总之后,模型即可预测视频中特定周期的重复次数。



RepNet 模型概述

时间自相似矩阵

以上展示的昼夜循环示例,就是一类具有固定重复周期的典型场景。真实视频中的 TSM 往往能够帮助我们发现世界上种种令人着迷的结构,如以下三个示例所示。


拍手跳以固定的周期重复着近乎完美的周期性动作;相比之下,弹力球的运动周期则随着反复弹跳的能量损失而逐渐归零。最后则是搅拌混凝土的工人,但视频中的重复周期显然并不完整。这三种行为在 TSM 当中有着明确的区别,想正确对其做出计数,必然要求模型能够注意到场景中的种种细微变化。



拍手跳(时间周期恒定)、弹力球(时间周期逐渐归零)、搅拌混凝土(视频中呈现的重复周期并不完整)。


在 RepNet 中选择 TSM 作为中间层的一大优势,在于 transformers 的后续处理将在自相似空间(而非特征空间)内进行。以此为基础,模型能够将学习到的相似度推广到更多训练数据集内未出现过的场景中。例如,只要以相似的速度进行重复动作,那么跳高与游泳这两种不同运动所产生的 TSM 都是相似的。如此一来,我们训练出的模型将拥有更强大的用例兼容能力。

数据

要对上述模型进行训练,一种可行的方法是收集大量重复动作的视频并整理为数据集,而后人为重复计数以完成素材标记。但这种做法将带来两大核心挑战:首先,涉及过多人为操作,需要由研究人员查看视频内容以识别包含重复动作的部分。第二,研究人员还需要为每段视频添加重复动作的发生次数。虽然注释人员可以直接跳过某些帧(例如用于区分视频段落的插入帧),但整个过程仍然枯燥且痛苦。


为了克服这一挑战,我们引入了一种合成数据生成过程。该过程能够使用不包含重复动作的视频来产生具有重复周期的新素材。为了实现这个目标,该过程会随机选择一段视频并对其进行任意次数重复,具体视原始视频上下文而定。



我们的合成数据生成管道,而且生成包含任意重复段落的视频素材。


虽然这样的过程足以生成包含重复周期的自然视频,但其内容对于深度学习方法看来还是太过简单了。深度学习完全可以通过识别完全一致的重复周期来“作弊”,这并不能代表其真正掌握了重复周期的识别能力。为此,我们还得对视频内容做出修改,即模拟视频拍摄中以 2D 轨迹平滑移动的摄像机机位。



图左:利用随机视频生成 的合成重复视频示例。图右:经过摄像机运动增强处理后的视频示例,此示例的识别难度更高,因此能够更好地帮助模型掌握识别真实重复视频的能力。

评估

合成重复视频的生成工作已经完成,但接下来还需要保证由此训练出的模型能够被推广到真实重复周期视频当中。为了评估训练模型在真实视频上的性能,我们从 Kinetics 数据集中收集到约 9000 段视频并将其整理为新的数据集。这些视频涵盖多种动作类型,同时结合大量不同场景,各场景来自 YouTube 中的多样性数据。我们为这些视频添加注释,并在视频中进行重复动作计数。为了帮助更多参与者加入研究,我们发布了该数据集的计数注释,即 Countix。

实际应用

这种具有普适性的计数模型能够在多种应用场景当中发挥作用。将 RepNet 作为单一模型,我们可以对各类复杂的场景进行重复计数:



RepNet 可以计算多种场景下的重复动作,例如切洋葱(图左)、地球的昼夜变化(图中)甚至是运动中的猎豹(图右)。


即使从未在训练数据集中见到过类似的内容,RepNet 仍能够通过超声波心动图视频当中估算心跳速率:



预测心率:45 bpm(左)与 75 bpm(右)。真实心率分别为 46 – 50 bpm 以及 78 – 79 bpm。RepNet 对于不同设备上测得的心率,都做出了精度出众的准确预测。


RepNet 还可用于监控各类重复动作的速度变化。通过下图,可以看到这种速度变化完全能够在质量或流程控制领域发挥重要作用。



在此视频中,我们看到 RepNet 对激光显微镜下观察到的加速细胞振荡活动进行计数。RepNet 在之前的训练数据集内从未见过这样的内容。



左:俯卧蹬地运动。右:通过主成分分析之后,RepNet 嵌入中的一维投影,其中准确体现为人们在锻炼过程中的速度变化趋势。

发布

我们已经面向社区发布 Countix 注释结果,希望帮助更多研究人员处理重复计数问题。我们还发布了适用于 RepNet 的 Colab notebook。以此为基础,大家可以在自己的视频上运行 RepNet,甚至使用网络摄像头来检测视频中的周期性活动,并自动计算视频中的重复次数。


原文链接:


https://ai.googleblog.com/2020/06/repnet-counting-repetitions-in-videos.html


2020-08-19 08:003015
用户头像
李冬梅 加V:busulishang4668

发布了 1231 篇内容, 共 848.9 次阅读, 收获喜欢 1323 次。

关注

评论

发布
暂无评论
发现更多内容

MTU带来的问题

BUG侦探

网络技术 网络运维 GRE 隧道

4面拿华为offer的水平,面试阿里居然一面就被吊打?

Java架构师迁哥

字节跳动三面拿offer:网络+IO+redis+JVM+GC+红黑树+数据结构

Java架构师迁哥

预言机 - 区块链的触角

趣链科技

区块链 智能合约 预言机

【FlinkSQL】Flink SQL CREATE 语法

Alex🐒

flink 翻译 FlinkSQL flink1.13

签约落地!百度、山东共建人工智能数据标注产业基地

百度大脑

人工智能 百度智能云

对话吴军:人工智能如何推动金融行业的数字化转型

索信达控股

人工智能 大数据 金融科技 数字化转型 金融

面试大厂必备六大核心技能Spring+Nginx+Redis+kafka+JVM+高并发

Java架构师迁哥

每日互动CTO谈数据中台(下):从演进、经验到规划

个推

从 Alpha 到 Beta,这次是 New mPaaS

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS

北京人工智能产业联盟成立,百度CTO王海峰出任联盟理事长

百度大脑

人工智能

👋 Agora Flat 开源教室 Web 版上线啦~

千竹

开源 音视频 在线教育 互动白板 互动课堂

2021年最新阿里、腾讯、华为、京东300+道高级面试题,掌握80%进大厂

Java架构师迁哥

【FlinkSQL】Flink Table & SQL 数据类型

Alex🐒

flink 翻译 FlinkSQL flink1.13

《原则》(十)

Changing Lin

6月日更

【有奖活动】体验全局搜索,和小Mi老师一起机器学习!

Geek_6cdeb6

人工智能 机器学习 深度学习 mindspore

阿里最新发布的 Spring Cloud ALiBaBa 全解第三版,一睹庐山真面目!

Java 程序员 架构 微服务

一款超牛的 Linux 终端复用神器(附安装、使用教程)

学神来啦

Linux 学习 运维 安全

require() 方法详解

编程三昧

nodejs modules 模块 require

【FlinkSQL】Flink SQL Query 语法(一)

Alex🐒

flink 翻译 FlinkSQL flink1.13

JAVA中的浮点数与二进制

加百利

Java 后端 二进制 6月日更

教你三种jQuery框架实现元素显示及隐藏动画方式

华为云开发者联盟

jquery 动画 元素 JQuery框架 网页

爱奇艺于首届MediaAIAC与首届高新视频创新应用大赛斩获三项权威大奖,技术实践领跑行业创新

爱奇艺技术产品团队

【FlinkSQL】Flink Table & SQL 时间属性

Alex🐒

flink 翻译 FlinkSQL flink1.13

智慧工厂|全方位监控管理,可视化让生产变的透明

一只数据鲸鱼

数据可视化 工业互联网 智慧农业 智慧工厂 纺织企业

Python——字符串查找/替换/分割

在即

6月日更

揭秘视频千倍压缩背后的技术原理之预测技术

拍乐云Pano

一周信创舆情观察(5.31~6.6)

统小信uos

react源码解析10.commit阶段

全栈潇晨

react源码

从零开始学习3D可视化之场景层级(1)

ThingJS数字孪生引擎

大前端 物联网 可视化 3D可视化 数字孪生

微服务架构中的两款流量防卫兵

悟空聊架构

sentinel 高并发 Hystrix 6月日更 流量防控

RepNet:对视频中的重复周期进行计数_AI&大模型_Google AI_InfoQ精选文章