本文介绍了 Google AI 的一篇 NeurIPS 2018 论文《Discovery of Latent 3D Keypoints via End-to-end Geometric Reasoning》。
论文链接:https://arxiv.org/pdf/1807.03146.pdf
技术分析师个人简介
本文作者 Olli Huang 是澳门科技大学的一名博士研究生,她的研究方向是大规模图像检索 (large-scale image retrieval) 和图像的地理位置估计 (visual-based image geolocalization)。Olli 于 2017 年加入了机器之心的全球团队,并以自由撰稿人的身份,发表了多篇计算机视觉应用的英文技术评论。
这篇被 NeurIPS 2018 接收的文章,有什么看点?
这篇文章的作者之一,Noah Snavely(他的个人主页:http://www.cs.cornell.edu/~snavely/),是计算机视觉领域中很活跃的研究人员。他的主要贡献之一是开发了 SfM(Structure-from-Motion,运动恢复结构)系统 [1],解决了基于图像的场景重建问题。SfM 已经应用在一些其他领域中,比如姿势估计 (pose estimation) 或位置识别 (location recognition) [2]。
Snavely 和他的合作伙伴,在这篇文章中重新讨论了 3D 姿势估计 (3D pose estimation) 的问题,提出了名为「KeypointNet」的全新框架,用于发现针对姿势估计这一特定任务的潜在 3D 关键点 (latent 3D keypoints)。这篇文章的研究项目主页是 keypointnet.github.io (http://keypointnet.github.io/),有兴趣的读者可以点击了解关于更多的技术细节。
这篇被 NeurIPS 2018 接收的文章,有什么优点和不足?
优点
文章的研究问题很有趣,目标是寻找针对特定 3D 物体类型 (比如,飞机) 的最佳关键点。简而言之,无论输入什么姿态的 3D 飞机图像,这个框架都应该能够找到,帮助成功识别物体类型的关键点。本文提出了名为「KeypointNet」的端到端框架,用于 3D 物体类型识别。最有意思的是,本文还展示了使用 KeypointNet 得到的 3D 物体类型识别的部分可视化结果。
不足
这篇文章写得不太容易读懂。在第一次阅读这篇文章时,读者可能会弄不清作者到底是想要解决「3D 关键点检测」的问题还是「物体类型识别」的问题。事实上,作者想要「一石二鸟」,利用一个端到端框架为一个下游视觉任务——物体类型识别——发现潜在的 3D 关键点。
如果你是 NeurIPS 2018 的评审,你认为这篇文章应该被大会接受吗?
这会是个艰难的决定。但就这篇文章而言,我倾向于说 YES!
从贡献的角度上讲,这篇文章展示了一个全新的框架——KeypointNet——在 3D 物体模型的人工合成数据集上,解决「物体类型识别」问题的能力。文章如果能够展示,在大型的真实数据集上获到的更多实验结果(而不仅仅是附录中的 9 个实验结果的话),技术贡献会更大,也更让人信服。
1. 本文的亮点
在给定已知类型的物体图像时(比如,一张飞机的图像),KeypointNet 框架将会无监督发现 3D 关键点(由像素坐标(pixel coordinates)和深度值(depth values)定义)的有序列表,用于最终的物体类型识别任务。这些关键点是特征表征(feature representations)的构建块,在姿势识别,或是多姿态物体识别(pose-aware or pose-invariant object recognition)中非常有效。
与有监督的方法不同,该框架在学习从一张图像到标注关键点(annotated keypoints)列表的映射时,并没有将关键点位置定义为先验,而是针对 3D 姿势估计这一下游任务,对这些关键点进行优化选择。
在训练阶段,当输入同一个物体的两个不同视角图像,以及已知的刚体变化 T (rigid transformation T),目标是输出用于物体姿势识别的最优关键点预测列表,P1 和 P2。利用 P1 和 P2 这两个列表,能够进行从物体的一个视角到另一视角的最佳匹配,如图 1 所示。KeypointNet 提出了能够优化从图到关键点列表映射的目标函数 O(P1,P2),这一目标函数包含了两个必要的组件——多视角一致性(multi-view consistency)和相对姿势估计(relative pose estimation)。
图 1:在训练 (training) 过程中,将同一个物体的两个视角图像作为 KeypointNet 的输入。两个视角之间的刚体变化(R,t)是指导信号 (supervisory signal)。KeypointNet 优化了在两个视角中有一致性,并且能够用于刚体变化恢复的,3D 关键点的有序列表。而在推理 (inference) 过程中,KeypointNet 将从单一输入图像中提取了 3D 关键点,再进行物体类型的识别。
下文将简要介绍一些必要的先决条件和要点,以便读者进一步了解 KeypointNet 框架。
注释
每一个训练 tuple 中都包括一对图像(I,I'),即同一个目标的两个不同视角图像。此外,我们已知它们的相对刚性变换 T。T 用于从 I 到 I' 的 3D 形状转换。T 的矩阵形式如下:
(1) 式中 R 和 t 分别表示 3D 旋转 (rotation) 和转换 (translation)。我们想要学习一个函数 f_θ(I),并通过优化它的目标函数 O(f_θ(I), f_θ(I')),用于完成从一张 2D 图像 I 到一个 3D 关键点列表 P = (p_1,…p_n) 的映射,其中,p_i =(u_i,v_i,z_i)。
1.1 多视角一致性(multi-view consistency)
多视角一致性损失函数(multi-view consistency loss),衡量的是两张图片的关键点之间的差异。使用这一个函数的目的是,确保关键点能够在不同视角下,追踪物体相同的部分。具体而言,第一张图中的 3D 关键点的坐标,应该与第二张图中对应关键点的坐标一致。此外,文章的一个假设是,透视相机模型的全局焦距为 f。如下文所示,作者用 [x,y,z] 标记 3D 坐标(3D coordinates),并用 [u,v] 标记像素坐标(pixel coordinates)。关键点 [u,v,z] 从图像 I 到 I'(反之亦然)的投影是通过下面的投影运算得到的:
式中 u'^表示 u 到第二张图片的投影,而 u^ 代表 u』 到第一张图片的投影。式中,π:R^4→R^4 表示将相机的 3D 坐标 [x,y,z,1]^T 映射到像素位置(并加上深度值)的透视投影运算:
文章还定义了对称多视角损失函数(symmetric multi-view consistency loss),标记为 L_con :
面对同一个物体的不同视角图像,通过确保多视角一致性,足以推断出 2D 关键点位置(和深度值)。但是,单纯依赖一致性并不能保证方法的有效性。比如,关键点通常会指向同一个位置。因此,作者指出了「最优性概念」(a notion of optimality),它会根据特定的下游任务(比如,3D 姿势估计)选择关键点。文章中,作者将「姿势估计」作为下游任务,用于促进关键点的分离,从而避免关键点指向同一个位置。
1.2 相对姿势估计(relative pose estimation)
相对姿势估计损失函数,用于「惩罚」P1 到 P2 的真实旋转 R 与恢复旋转 R^ 之间的角度差距(angular difference)。而如何恢复旋转 R^,也被称为 Orthogonal Procrustes 问题 [3]。
值得注意的是,图像到关键点映射的一个重要特性是,像素级的等效转换(translation equivariance)。例如,如果输入图像向左移动了一个像素,所有关键点的输出位置也应该改变一个单位。KeypointNet 使用空间 softmax 层 (spatial softmax layer),输出一个概率分布 g_i (u,v),用于表示关键点 i 在像素(u,v)处出现的可能性。利用等式(2),可以利用空间分布的期望值(expected values of the spatial distributions),计算出恢复后的像素坐标。
此外,在使用等式(3)计算坐标 z 之前,需要首先预测每个像素的深度值 d_i(u,v)。
KeypointNet 的转换等价性和多视角一致性(上文 1.1 节),使得转换误差得以避免。作者在以下等式中定义了姿势估计目标函数,即 L_pose,用于衡量使用两组关键点得到的最优最小二乘估计 R^,与真实旋转矩阵 R 之间的角距离(angular distance)。
2. 实验
2.1 在人工合成数据集上的实验结果
文章作者提供了 KeypointNet 在汽车、椅子和飞机三个物体类型上取得的关键点预测结果。作者对所有类的每一张图,都选取了 10 个关键点,用于实验结果的展示。
图 2 展示了单一物体多视图情况下,KeypointNet 的关键点预测结果。值得注意的是,有一些视角极具挑战性,例如,椅子的俯视图。但 KeypointNet 展示了它在判断物体方向,以及推测遮挡部分(比如俯视图中的椅腿)的能力。
图 2:单一物体多视角的关键点预测结果。注意,即便物体的某个组成部分被完全遮挡,KeypointNet 也准确预测出了这些关键点。(例如,红色的点追踪了右后方的椅子腿)。更多可视化结果见:http://keypointnet.github.io/
如图 3 所示,KeypointNet 进一步展示了预测遮挡部分的能力。需要指出的是,图 3 中的物体图片并没有用于训练过程中。对于 KeypointNet 来说,预测已知物体类别的全新示例图片(unseen instances),更具挑战性。
图 3:KeypointNet 在 ShapeNet [5] 汽车、飞机和椅子三个类别取得的关键点预测结果。KeypointNet 在面对训练中未曾见过的图片实例时(而这些实例在外观和形状存在各种变化),仍旧能够预测物体被遮挡的部分,例如轮子和椅子腿。
3. 如果你在会场上,你有什么问题想问文章作者?
问题 1
实验中有两个失败的案例(见文章 6.2 节),揭示了当 KeypointNet 无法正确判断物体的方向时(例如无法分辨汽车的正面和尾部)时,便无法预测出最优关键点。我们应当如何解决由于物体方向判断失败,而导致的关键点预测错误这一问题?
问题 2
你们是否准备在更为大型的真实 3D 物体测试集上评估 KeypointNet?将 KeypointNet 扩展到更具挑战性的真实数据集时,会存在哪些困难?
参考文献
[1] Song Cao, and Noah Snavely.「Learning to match images in large-scale collections.」European Conference on Computer Vision. Springer, Berlin, Heidelberg, 2012.
[2] Yunpeng Li, et al.「Worldwide pose estimation using 3d point clouds.」European Conference on Computer Vision. Springer, Berlin, Heidelberg, 2012.
[3] Peter Schonemann. A generalized solution of the orthogonal Procrustes problem. Psychometrika, 1966.
[4] Ross Goroshin, Michael F Mathieu, and Yann LeCun. Learning to linearize under uncertainty. NIPS, 2015.
[5] Angel X. Chang, et al.「ShapeNet: An Information-Rich 3D Model Repository.」arXiv:1512.03012, 2015.
Olli 的机器之心主页:https://www.jiqizhixin.com/users/84204384-374e-4de0-bfc5-79eee677a8ec
Olli 的 LinkedIn 主页:https://www.linkedin.com/in/ollihuang