写点什么

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:002319
用户头像
李冬梅 加V:busulishang4668

发布了 965 篇内容, 共 561.8 次阅读, 收获喜欢 1119 次。

关注

评论

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

【LeetCode】 H 指数 IIJava题解

Albert

算法 LeetCode 7月日更

理解Linux 终端、终端模拟器和伪终端

mazhen

Linux Shell SSH Linux Kenel

阿里P7大牛手把手教你!卧薪尝胆70天内推入职阿里

欢喜学安卓

android 程序员 面试 移动开发

亚马逊云科技和 Verizon 利用专有 MEC 解决方案扩大 5G 合作

亚马逊云科技 (Amazon Web Services)

互联网产品经理之需求的一生

路边水果摊

产品经理

英特尔中国研究院宋继强:AI技术已成为推动数字化转型的超级力量|WAIC 2021

E科讯

工商银行:应用多k8s集群管理及容灾实践

华为云开发者联盟

容器 多云 工商银行 k8s集群 Karmada

云图说|ASM灰度发布,让服务发布变得更敏捷、更安全

华为云开发者联盟

灰度发布 application 云图说 应用服务网格服务 Service Mesh (ASM)

鸿蒙轻内核源码分析:掌握信号量使用差异

华为云开发者联盟

鸿蒙 数据结构 信号量 结构体 OpenHarmony

FIL币最新价格怎么样?FIL币最新消息是什么?

直击技术最前沿 | Amazon S3增加新的存档访问层

亚马逊云科技 (Amazon Web Services)

架构实战营模块8作业

eoeoeo

架构实战营

数牍科技亮相上海 AI 基金“AI 驱动企业转型” 应用场景战略合作仪式,隐私计算拓展AI应用疆域

由浅入深C A S

程序猿阿星

CAS 自旋锁

Eureka可用性解读

赵镇

Eureka

10万QPS,K6、Gatling和FunTester对比测试

FunTester

性能测试 接口测试 测试框架 压力测试 测试开发

阿里P9看了都说牛B!阿里巴巴史上最牛的分布式核心原理深度解析全彩手册

Java架构追梦

Java 阿里巴巴 架构 面试 分布式核心原理解析

夏令营|第五届埃文网络安全技能训练营火热报名中

郑州埃文科技

全美第四大无线运营商 DISH 和亚马逊云科技开展战略合作

亚马逊云科技 (Amazon Web Services)

Go 学习笔记之 函数

架构精进之路

Go 语言 7月日更

从装大象中我们学会了什么设计模式

skow

Java 面试 后端 设计模式

玩转Spring Boot Actuator集成,基操,勿六

白亦杨

Java

我写什么,你们决定

喵叔

铂金10:能工巧匠-ThreadLocal如何为线程打造私有数据空间

MetaThoughts

Java 后端 多线程 并发

阿里P7亲自讲解!Android大厂面试真题解析大全

欢喜学安卓

android 程序员 面试 移动开发

全面解读自动驾驶数据存储关键

焱融科技

人工智能 自动驾驶 云计算 高性能 文件存储

详解 nebula 2.0 性能测试和 nebula-importer 数据导入调优

NebulaGraph

数据库 开源 图数据库

程序员的自我修养-用科学的方法提高交付质量

刘绍

程序员 软件工程 软件质量 TDD 单元测试

细说.NET 缓存

喵叔

7月日更

台达DOP-100系列触摸屏(LUA程序编写用户管理应用)

林建

lua 台达 触摸屏 用户管理 DOP-100

Mtail导致Nginx报警延迟

BUG侦探

运维 监控 日志

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