写点什么

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

2020 年 8 月 19 日

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 年 8 月 19 日 08:00442
用户头像

发布了 262 篇内容, 共 70.1 次阅读, 收获喜欢 316 次。

关注

评论

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

十年资深架构师分享:如果这么做还收不到一线互联网大厂面试,请来找我。

Java架构师迁哥

apipost如何设置断言

测试人生路

接口测试

当Nginx遇上Tomcat集群,又是一场负载均衡的爱恨情仇

小Q

nginx tomcat 学习 架构 面试

三部门联合发言不得虚报直播销售额业绩:双十一何以刺激了用户的购买欲

石头IT视角

阿里P8整理出SQL笔记:收获不止SOL优化抓住SQL的本质

马士兵老师

MySQL 阿里 sql查询 SQL优化 SQL光标

当代程序员必备技能(算法)之:递归详解

Java架构师迁哥

与第三方系统打通的N种进阶方式

棒锤🐮

架构

奈学教育荣获“中关村高新技术企业”认证

奈学教育

奈学教育

科技助力餐饮,普渡送餐机器人在餐博会上被众人围观!

DT极客

《分布式Java应用基础与实践》.pdf

田维常

分布式 电子书

携oneAPI Gold版本和服务器GPU 英特尔领先业界进入XPU时代

intel001

第八周作业

Geek_4c1353

极客大学架构师训练营

CloudQuery v1.2.1 版本发布

CloudQuery社区

数据库 开发者 运维 工具 开发工具

奈学教育荣获“中关村高新技术企业”认证

古月木易

教育 IT

我终于拥有自己的独立博客了。

彭宏豪95

GitHub 写作 博客 IT

从应用开发角度认识K8S

LorraineLiu

云原生 容器技术 k8s入门

对比一下,你的简历是不是也写成了这样,能拿高薪才怪了

小Q

Java 学习 架构 面试 简历

实时音视频面视必备:快速掌握11个视频技术相关的基础概念

JackJiang

即时通讯 视频 实时音视频

【涂鸦物联网足迹】涂鸦云平台接口列表—万能红外遥控器

IoT云工坊

人工智能 云计算 物联网 API 红外遥控器

薇娅和李佳琦带货百亿奇迹背后是这些技术团队的努力

阿里云视频云

快速了解阿里微服务热门开源分布式事务框架——Seata

比伯

Java 架构 微服务 seata

深入解析 Flink 的算子链机制

Apache Flink

flink 流计算

堪称完美!11月华为首发Spring响应式微服务,三管齐下

小Q

Java spring 学习 架构 面试

堪称完美!11月华为官方首发Spring响应式微服务,Spring+SpringBoot+SpringCloud三管齐下

Java架构追梦

Java 架构 微服务 springboot SpringCloud

详解快速开发平台与工作流通用组件的设计规范

Marilyn

敏捷开发 企业应用

聚焦高交会:感受“区块链+”科技创新浪潮

WX13823153201

Linux一切皆文件,如果你没做到这一步,那这就是句话而已

小Q

Java Linux 学习 架构 面试

JVM真香系列:堆内存详解

田维常

Java JVM 堆栈 虚拟机

双十一背后的技术

anyRTC开发者

大数据 AI 音视频 WebRTC RTC

【活动回顾】Flutter实时音视频应用场景实践

ZEGO即构

flutter RTC

腾讯云直播全解析,双11怎么买才不亏?

腾讯云视频云

腾讯云 阿里云 云直播 直播 视频

飞猪Flutter技术演进及业务改造的实践与思考

飞猪Flutter技术演进及业务改造的实践与思考

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