文 / Adel Ahmadyan 和 Liangkai Zhang,软件工程师,Google Research
机器学习 (ML) 技术日新月异,目前仅通过图片训练模型,就能在大量计算机视觉任务中取得卓越的准确率。基于这些成功快速发展的 3D 目标理解研究,为增强现实、机器人、自主性和图像检索等更广泛的应用提供动力。例如,我们在今年早些时候发布了一套专为移动设备设计的实时 3D 目标检测模型—— MediaPipe Objectron,该模型在具有完全注解的真实世界 3D 数据集上训练,可以预测目标的 3D 边界框。
然而,与 2D 任务(例如 ImageNet、COCO 和 Open Images)相比,由于大型真实世界数据集的缺少,理解 3D 目标仍然是一项具有挑战性的任务。为了帮助科研界能够在 3D 目标理解领域持续取得研究成果,亟需发布以目标为中心,记录着更多 3D 结构信息的视频数据集,并使之能够匹配多种视觉任务的数据格式(例如视频或摄像头流),帮助对机器学习模型进行训练和基准测试。
近日,我们发布了 Objectron 数据集,这是一个以目标为中心的短视频剪辑合集,包含大量从不同角度拍摄的常见目标。每个视频剪辑都随附 AR 会话元数据,如包括摄像头姿态和稀疏点云。数据还包含每个目标的手动标记 3D 边界框,描述目标的位置、方向和尺寸。数据集包含 1.5 万个带注解的视频剪辑,辅以收集自地理多样化样本的 400 多万个注解图像(覆盖五大洲的 10 个国家/地区)。
Objectron 数据集中的示例视频
3D 目标检测解决方案
除了数据集以外,针对鞋子、椅子、杯子和摄像头这四类目标我们还分享了 3D 目标检测解决方案 并在 MediaPipe 中发布。MediaPipe 是 Google 的开源跨平台定制化 ML 解决方案框架,适用于实时和流媒体,同时支持设备端上手实时的 手部、虹膜 和 身体姿态追踪 等 ML 解决方案。
3D 目标检测解决方案 在移动设备上运行的示例结果
不同于先前发布的 单阶段 Objectron 模型,最新版本采用的是两阶段架构。第一阶段通过 TensorFlow 目标检测 模型查找目标的 2D 裁剪。然后,第二阶段通过图像裁剪预估 3D 边界框,同时为下一帧计算目标的 2D 裁剪,因此目标检测器无需在每一帧都运行。第二阶段 3D 边界框预测器可在 Adreno 650 移动 GPU 上以 83 FPS 的速度运行。
参考示意图:3D 目标检测解决方案
3D 目标检测的评估指标
我们借助真实值注解,使用计算机视觉任务的常用指标 3D 交并比 (Intersection over Union, IoU) 相似度统计,通过衡量边界框与真实值的接近程度,评估 3D 目标检测模型的性能。
我们提出了一种用于通用 3D 检测框计算的精确 3D IoU 值的算法。首先,我们使用 Sutherland-Hodgman 多边形裁剪算法计算两个框的面之间的交点。这类似于计算机图形学中的视锥剔除技术。交集体积由所有裁剪后的多边形的凸包 (Convex hull) 算得。最后,根据两个框的交集体积和并集体积计算 IoU。我们将在发布数据集的同时发布 评估指标源代码。
使用多边形裁剪算法计算 3D 交并比,左侧:对框进行多边形裁剪,计算每个面的交点;右侧:通过计算所有交点(绿色)的凸包来计算交集体积
数据集格式
Objectron 数据集的技术细节,包括使用教程,均可在 数据集页面 上获取。数据集包括自行车、书籍、瓶子、摄像头、谷物盒、椅子、杯子、笔记本电脑和鞋子,并与以下素材资源共同存储在 Google Cloud Storage 的 objectron 存储分区 中:
- 视频序列
- 注解标签(目标的 3D 边界框)
- AR 元数据(如摄像头姿态、点云和平面)
- 经处理的数据集:注解帧的乱序版本,图像的格式为 tf.example,视频的格式为 SequenceExample。
- 基于上述指标运行评估的支持脚本
- 将数据加载到 TensorFlow、PyTorch 和 Jax 并可视化数据集的支持脚本(包括“Hello World”示例)
除数据集外,我们还开源了一个数据流水线,用于在流行的框架,如 TensorFlow、PyTorch 和 Jax 框架中解析数据集。同时提供了示例 Colab Notebook 示例。
我们希望 Objectron 数据集能让科研界突破 3D 目标几何解析的极限。我们也希望促进新的研究和应用的发展,如视点合成、改进 3D 表征和无监督学习。请加入我们的 邮件组 或访问我们的 GitHub 页面,及时了解未来的活动和发展。
致谢
本文所述研究由 Adel Ahmadyan、Liangkai Zhang、Jianing Wei、Artsiom Ablavatski、Mogan Shieh、Ryan Hickman、Buck Bourdon、Alexander Kanaukou、Chuo-Ling Chang、Matthias Grundmann 和 Tom Funkhouser 完成。我们感谢 Aliaksandr Shyrokau、Sviatlana Mialik、Anna Eliseeva 以及注解团队的高质量注解。我们还要感谢 Jonathan Huang 和 Vivek Rathod 提供的 TensorFlow Object Detection API 指导。