专栏首页机器之心Google AI提出物体识别新方法:端到端发现同类物体最优3D关键点——NeurIPS 2018提前看

Google AI提出物体识别新方法:端到端发现同类物体最优3D关键点——NeurIPS 2018提前看

机器之心原创

作者:Olli Huang

编辑:Hao

编译:李诗萌

本文介绍了 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

本文为机器之心原创,转载请联系本公众号获得授权。

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用 Python 登录主流网站,我们的数据爬取少不了它

    项目地址:https://github.com/CriseLYJ/awesome-python-login-model

    机器之心
  • 重磅 | 波士顿动力被软银收购,「被丰田收购」传言告破

    机器之心报道 机器之心编辑部 Alphabet(谷歌)想要甩手波士顿动力(Boston Dynamics)的传言已经持续了很长时间,而接手者基本上已经被认为是丰...

    机器之心
  • 你也可以训练超大神经网络!谷歌开源GPipe库

    深度神经网络(DNN)推动了许多机器学习任务的发展,包括语音识别、视觉识别、语言处理。BigGan、Bert、GPT 2.0取得的近期进展表明,DNN模型越大,...

    机器之心
  • Python基础 | 一个被忽视的神器tqdm

    日常工作和学习中,经常需要观察当前任务的执行进度,如果一个执行时间很长的任务,能够有进度条实时的显示当前的任务进度,那么将非常方便。如何快速的实现?

    算法与编程之美
  • Python 如何实时显示进度条?

    日常工作和学习中,经常需要观察当前任务的执行进度,如果一个执行时间很长的任务,能够有进度条实时的显示当前的任务进度,那么将非常方便。如何快速的实现?

    double
  • python3中Crypto的AES和RSA

    RSA加密一般使用RSA/ECB/PKCS1Padding(算法/工作模式/填充方式),AES加密一般使用AES/ECB/PKCS5Padding。但pytho...

    静默加载
  • C++中STL学习笔记——常见算法操作演示

    STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个元素调用指定的函数,stable_sort以你所指定的规则对序列进行稳...

    啤酒单恋小龙虾
  • 工程师如何从技术转型做管理?

    这句话用来形容2019年互联网行业最适合不过了。从18年开始,大大小小的互联网公司开始了不止一轮的裁员,19年网上开始充斥一类文章,专门写互联网公司超过35岁的...

    kunge
  • 如何设计一个简单的网站首页

    网站首页是一个网站的入口网页。对于一个网站的了解往往是通过他的首页。首页的主要作用就是引导互联网用户浏览网站其他部分的内容。网站首页上展现的这部分内容一般被认为...

    算法与编程之美
  • 今日推荐:Background-Matting

    今天要推荐的一个仓库就是这样的,看了视频展示出来的效果,真的想马上就试一试,把曾经想去的地方都替换一遍。

    仇诺伊

扫码关注云+社区

领取腾讯云代金券