对于AI来说,识别视频里发生了什么已经不是难事,训练它的方法就是用带有标签的视频数据集进行监督学习。
比如我们给AI看带有“棒球”标签的视频,然后它就能知道这是什么运动。但这是远远不够的,我们希望它不仅能知道这是什么运动,还希望它能预测球何时被投出去。
可是要让AI理解视频里每一帧的内容太难了,因为你不可能逐帧对视频做标记,用监督学习的方法是不切实际的。
所以谷歌的研究人员提出了一种时间周期一致性学习(TCC)的自监督学习算法,可以在一段连续过程中,找到每一帧和某个具体动作的对应关系。
目前,谷歌已经开源了TCC的代码,希望让用户能够在自己开发的程序中用上这种最新算法。
TCC原理
当一个人想去倒一杯饮料时,他会去伸手去拿茶壶、酒瓶或水杯。这是一种按特定顺序发生的事件。相同类型的视频都会有类似的时间先后对应关系。
关键帧对于所有倒水视频是相似的,并且存在许多变化因素,例如视点、物体大小,容器形状或倒水速度的差异。
TCC利用周期一致性原则在相同动作的视频中找到这种对应关系,通过对齐视频来学习有用的视觉表征。
首先,训练算法通过单独提取每个帧来产生视频帧的嵌入。然后选择用于TCC学习的两个视频,使用其中一个作为参考视频,用它的帧嵌入来识别来自第二个视频相同动作的最近帧。
随着训练过程的进行,嵌入器对在动作的上下文中产生对每个视频帧的语义理解,改善和降低了周期一致性损失。
在下图中,谷歌展示了使用TCC训练的模型,该模型来自宾夕法尼亚动作数据集中进行深蹲练习的人的视频。
图中左侧的每个点对应于帧嵌入,点的位置随着当前视频帧动作而变化。尽管在姿势、光照、身体等方面存在许多差异,TCC还是能在不提供标注的情况将将两个视频同步起来。
谷歌还将TCC与其它有监督学习算法进行对比。在识别高尔夫挥杆和网球发球这个两个动作时,有监督学习需要50个标记样本才能达到和TCC一样的准确度,而TCC在仅有一个标记样本的情况下就已经有很高准确度了。
实际应用
TCC可以在只有一个标记视频的情况下,将其它同类视频的动作阶段进行分类,并且可以用参考视频一次对齐多个剪辑视频,做到“神同步”。
下面就是TCC将25个棒球投手视频的动作完全同步到一致的例子:
此外,TCC还可以将与一个视频中的任何帧相关联的元数据传输到另一视频中。比如将一个倒水视频中的声音传输到另一个视频中,做到音画同步,听起来毫无违和感。
博客地址:
https://ai.googleblog.com/2019/08/video-understanding-using-temporal.html
源代码地址:
https://github.com/google-research/google-research/tree/master/tcc
“