本文介绍了一种从运动中无监督地学习物体性质的方法:Self-Supervised Learning via Conditional Motion Propagation [1].
这篇文章来自香港中文大学和南洋理工大学,被CVPR 2019接收。
这篇文章的作者用一种容易理解、接近直觉的方式来分享这篇文章的思路来源,希望能对读者有所启示。
基于运动分析的无监督学习
人为何能具有无监督学习的能力?其中有个很重要的因素是,人能够从运动中学习到:什么是物体、不同物体的性质、运动的规律等等。
婴儿从出生到成长的过程中,无时无刻不在观察着世界的运转。尽管没有系统地学过力学和运动学,TA还是可以轻易地根据一些已经形成常识的法则形成个体的概念,理解不同物体的运动学性质,甚至预测物体的未来运动。
那么这样的常识和法则是什么呢?这很难完整地定义。
也许你会说,一个个体倾向于具有一致的运动大小和方向,但这其实仅仅适用于平动中的刚体。然而现实世界中大多数物体具有高自由度,例如人体,甚至是可变形的,例如水流。
既然无法显式地定义它,那么这种常识,可否能通过神经网络来自动地从大量视频中学习呢?
从运动中学习(learn-from-motion),我们首先需要理解运动是什么。
运动是物体的运动学属性的外在反映。从运动中学习,无非就是透过现象(运动)总结规律(物体属性)。
如图1,对于有监督学习来说,这种规律具有完整的定义和显式的标注,例如实例分割,因此可以直接对内在规律(个体的类别和mask)进行监督。但如前面所说,这类运动学属性常识不仅难定义,而且更难标注,因此我们需要寻求新的学习范式。
图1. 监督学习范式
如图2,一种合理的无监督学习范式是,通过观测到的表象来感知隐式的内在规律,再把这种规律以某种新的表象表达出来。然后对这个新的表象应用一些限制和假设并表示成损失函数来学习。我们将之定义为“感知-表达范式”。
图2. 一种无监督学习范式:感知-表达
对应到从运动中学习这个问题,我们的观测表象和预测表象可以有多种组合:
1)观测:视频;预测:运动
2)观测:运动;预测:图片/视频
3)观测:单张图片;预测:运动
4)观测:单张图片;预测:运动前景分割
对于1),观测表象是视频,其本身就具有运动信息,那么如果最后任务是预测运动的话,其学习到的内在规律仅仅是帧间关联性而已(参考无监督光流学习[2])。
对于2),运动(例如光流)中包含的信息太少,例如一块区域是静止的,我们就无法确定这块区域是什么物体,因此这种方式也难以获得我们需要的信息。
对于3),代表从静态图片中预测运动,这是一个很合适的思路,事实上已经有一些工作在做这个事情[3][4]。不过要注意的是,静态图片中物体的未来运动具有不确定性,例如一辆汽车可能正在前进,也可能在倒车。现有的工作基于编码后的运动能够形成一个多元标准高斯分布的假设来训练。而由于现实世界中物体的结构复杂性和运动不确定性,这个假设其实是很强的,因而导致网络的收敛难度较大。
对于4),也有对应的工作[5]。他们从视频中提取运动前景作为监督,来学习从静态图片中分割出运动前景。这个工作基于的假设是同一个物体上像素的运动具有相似性。然而这个假设仅仅适用于平动的刚体。
人类对运动的想象
我们不妨来反思一下人对运动的想象是个什么过程。
图3. 人对运动的想象
如图3,看到一张静态图像,人会首先判断其中每个物体的属性,例如图片中的舞者是个铰接体,舞者的头是刚体等等。然后我们会想象每一部分运动起来会是什么样子,也就是给一些抽象的指令,例如图片中的舞者右手抬起、低下头等。
最后人能够在脑海中想象出这些物体完整的运动,包括右手绕着肩关节的旋转,头部向下的移动,以及身体其它部位的运动。这个过程可以用一个简单的公式描述:属性+指令=运动。
同样地,这个公式可以适用于各种其它物体,比如汽车、狗、鸟等。从而,我们得到了第5种“感知-表达范式“的输入输出组合。即:
5)观测:单张图片和抽象指令;预测:运动;而“内在规律”即为物体属性。
物体属性是我们希望学到的信息,而运动可以用已有的光流来描述,那么我们只需要有“指令”就可以了。
然而,这个指令是抽象的,对于无监督学习系统来说,它不知道“左手”、“右腿”和“头”是什么概念,自然无法理解这些指令。接下来我们要做的,是用一种最简单的方式来模拟这种指令。
条件运动传播
我们的论文[1]将上述“属性+指令=运动”的想法实现为“条件运动传播”任务。
图4. 条件运动传播
如图4,我们对图像进行编码,期望得到物体属性相关特征,然后从运动场中抽样出稀疏运动代表“指令”(条件),将两者输入到运动解码器中预测出完整运动场。
最理想的情况,抽样点应该恰好涵盖所有的运动自由度,这样的“指令”是在确保完备性的前提下最精简的。然而这个目标是很难达到的。为此,我们设计了一种基于“分水岭”的抽样策略,以期抽样点尽量落在运动物体上,并且足够稀疏。
由于本文主要讨论思想,这篇论文的其它细节可以参考原paper和代码(文末附地址)。
条件运动传播的应用
为了验证条件运动传播无监督学习物体性质的能力,我们在文章中介绍了三种应用。
1)首先是表征学习能力。
我们将条件运动传播网络中的图像编码器提取出来,用来初始化其它高级任务,包括语意分割、实例分割和人体解析。
我们期望用条件运动传播任务初始化的神经网络参数能为这些更高级的任务提供一个较好的初始化。这也是自监督学习领域的标准评价指标。在这些任务上,条件运动传播相比以往自监督学习方法获得了较大提升。
图5. PASCAL VOC 2012语义分割任务中不同初始化方式的性能对比
2)在测试时,条件运动传播可以由用户制定“指令”。
经过可视化分析,我们发现了一些有趣的现象。
图6. 条件运动传播测试时可以由用户制定“指令”
例如在图6第一个例子中,给定舞者一个“抬左脚”的指令(对应脚上的红色箭头),预测出来的运动场中,整个左脚连同小腿绕着膝关节旋转。而给定舞者“身体向前”的指令后,预测出来身体是整体平移。这些观测大致符合人体作为一个铰接体的运动规律。
图6另一个例子中,给定舞者左侧大腿后抬的指令,预测结果中整个左腿能够一起运动;而给定舞者右腿后移的指令,预测结果中脚仍旧还是固定的,因为右脚支撑在地上。这些结果遵循物体的运动学属性,并且反映出了一部分现实世界中的物理规律。
利用这些特性,我们将它应用到了交互式视频生成。
图7. 交互式视频生成。T=0为输入图片,红色箭头为用户的指令(鼠标拖拽),利用条件运动传播,能够根据不同的指令生成合理的运动后的图像。
如图7,我们将原图用预测出来的光流做warping后得到运动后的图像。这样我们可以使用鼠标让一张静态图中的物体动起来,并且它们的运动符合其原有的运动规律(请看文末视频演示)。
3)半自动实例标注。
我们发现条件运动传播能很好地分割出物体的边界,而不受复杂的背景影响。因此我们利用训练好的条件运动传播网络实现了半自动实例标注。
图8. 半自动实例标注
如图8,用户只需指定少量落在目标物体上的positive points和物体外的negative points即可得到物体的mask。由于条件运动传播是无监督的,没有物体类别的限制,因此可以用来标注一些不常见的物体。
到此为止,这些结果都没有用到任何人工的标注。
总结
条件运动传播尚且还是最初级的探索,权当抛砖引玉。是否还有运动分析思路,更好的“观测-规律-预测”组合,更好的无监督学习范式?这些都需要后续的研究者来回答。
论文地址:
http://personal.ie.cuhk.edu.hk/~ccloy/files/cvpr_2019_self.pdf
代码地址:
https://github.com/XiaohangZhan/conditional-motion-propagation
Demo演示:
References:
[1] Xiaohang Zhan, Xingang Pan, Ziwei Liu, Dahua Lin, and Chen Change Loy. Self-Supervised Learning via Conditional Motion Propagation. In CVPR, 2019.
[2] Simon Meister, Junhwa Hur, and Stefan Roth. UnFlow: Unsupervised learning of optical flow with a bidirectional census loss. In AAAI, 2018.
[3] Jacob Walker, Abhinav Gupta, and Martial Hebert. Dense optical flow prediction from a static image. In ICCV, 2015.
[4] Jacob Walker, Carl Doersch, Abhinav Gupta, and Martial Hebert. An uncertain future: Forecasting from static images using variational autoencoders. In ECCV. Springer, 2016.
[5] Deepak Pathak, Ross B Girshick, Piotr Doll´ar, Trevor Darrell, and Bharath Hariharan. Learning features by watching objects move. In CVPR, 2017.