关系建模(relationship modeling)在许多视觉任务中显得越来越重要,这也符合人自身的认知习惯:通过物体与周围环境的联系去认知该物体。而图网络具备结构化表示节点关系的能力,似乎天然地适合应用于这类建模任务中。
所以这周调查了图网络在一些视觉任务中的应用,以期获得一点点有关的insight。
Point Cloud Processing
Point Cloud是一个物体的3D数据,每个点的数据包括3D坐标、RGB值等信息,可以理解为是“3D版”的图像数据。
与image classification和image segmentation相对应,Point Cloud领域也有自己的classification和segmentation任务。
但3D的Point Cloud原始数据不像图像数据那样结构化,后者一般会在2D网格上整齐排列,点坐标的分布是离散的,而Point Cloud的点坐标却是连续分布的。早期的方法会将Point Cloud原始数据首先转化到结构化的3D网格中(想象点在立方体中的分布),然而却带来了量化失真(quantization artifacts)和内存消耗巨大等问题。
MIT 2018年的论文Dynamic Graph CNN for Learning on Point Clouds提出用图网络来建模每个点与其邻居点的关系,从而捕捉到Point Cloud的high-level信息。 这个图网络被命名为EdgeConv,意思是对点之间的边进行卷积,其核心部件非常简单,一张图就可以解释得差不多了:
值得注意的是,整个模型建立起的图是稀疏的,每个点只与最近的k个邻居相连,否则带来的计算量将无比庞大。
而文章一个重要的创新点是令图具有动态性,即每次更新完点的特征后都会重新计算每个点的k个最近邻,从而建立新的图。这样的优势是,即便图是稀疏的,每个点也有机会成为其他任意一个点的邻居,可以说,每个点的感知域(receptive field)是整个Point Cloud,而不局限于局部。
文章提供的一些实验示例清楚地体现了动态图的作用。下图可视化了红点到其余点的距离,随着点特征的迭代更新,语义上相似的部件(如桌腿)之间的距离越来越近,说明模型通过动态图逐步学习到了各点的语义特性。
Scene Graph Generation
Scene Graph是一个图像的结构化形式,其中的每个节点表示图上的一个物体,节点之间的边表示物体间的关系。
CVPR 2017的Scene Graph Generation by Iterative Message Passing也应用了图网络的基本思想来处理Scene Graph Generation问题,该文章比较吸引我的一点是,它将图的边也进行了特征表示,并且和节点的特征互相进行信息传递(message passing),经过几轮这样的互动,模型得以学习到图像蕴含的视觉关系。
这个建模方法很接近factor graph的形式,在很多图网络的应用中,边的特征表示总是遭到忽视,而在这样的框架中,图的边和节点具有同等的地位,模型也更能全面地捕捉到关系。
Object Detection
原有的Object Detection模型往往只考虑了物体本身,而忽视了物体与上下文的联系。
例如,原有的模型会把河上的船误认为是车,因为如果仅仅根据物体的外表来识别的话,漂在河上的船确实长得有点像车。
显然,更加智能的Object Detection算法应当将上下文也纳入考量,这样一来,Object Detection就不再只是单纯的识别问题,而有了一些推理的意味,如,根据河水这个环境推理出河上物体是船的可能性更大。
CVPR 2018的Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships一文就采用了上述的思路,提出一种名为Structure Inference Network(SIN)的模型。 该模型利用了两种上下文信息,分别是整个场景的信息和物体间的关系信息,并且应用图网络将这些信息结构化:
在具体的实现上,SIN主要用到了Scene GRU和edge GRU,分别用于聚合场景信息和物体关系信息,然后用来迭代式地更新节点特征。
小结
浅尝辄止地了解了图网络在上述几个视觉任务中的应用后,我的感受是,在当前的计算机视觉领域,视觉理解应当更多地寻求high-level信息,而基于图网络的关系建模则是一种非常重要的工具。