获取真实的 3D 训练数据 随着依赖于 3D 传感器(如 LIDAR)的自动驾驶行业发展普及,现在已有大量街道场景的 3D 数据,但对于日常生活中拥有更细颗粒度的目标来说,有标注的 3D 数据集就非常有限了。所以,为了解决此问题,谷歌团队使用了 AR 会话(Session)数据开发了一种全新的数据 Pipeline。 此外,随着 ARCore 以及 ARkit 的出现,数亿体量的智能手机拥有了 AR 功能,并且能够通过 AR 会话取获取更多的信息,包括相机姿态、稀疏 3D 点云、光照估计以及平面区域估计。 为了标记真实数据,团队构建了一个全新的标注工具,并且与 AR 会话数据一起使用,该标注工具使标注者得以快速标记目标的 3D 边界框。 该工具使用了分屏视图来显示 2D 的视频帧,同时在其左侧叠加 3D 边界框,并在右侧显示 3D 点云,摄像机方位以及所检测到的水平面。标注器在 3D 视图中绘制 3D 边界框,并通过查看 2D 视频帧中的投影来验证其位置。
左:带标注的 3D 边界框所形成的投影展示在边界框顶部,更易于验证标注;右:通过检测到的目标表面以及稀疏点云数据,可以为不同的相机姿态标注真实世界中的 3D 边界框。 AR 合成数据 之前常用的方法会根据合成数据补充真实数据,以提高预测的准确性。然而这样的做法通常会导致质量低下、不真实的数据,且如果要执行图像的真实感渲染,又需要更多的计算力。 研究者采用了另一种称之为 AR 合成数据(AR Synthetic Data Generation)的方法,只要将对象放到 AR 系统的工作场景中,我们就能利用相机姿态估计、水平面检测、光照估计生成物理上可能存在的位置及场景。这种方法能生成高质量合成数据,并无缝匹配实际背景。通过结合真实数据与 AR 合成数据,研究者能将模型的准确性提高约 10%。
AR 合成数据的生成示例,在蓝色书籍旁边,虚拟的白色盒子可以渲染到真实场景中。 3D 目标检测的流程是什么样的 对于 3D 目标检测,研究者先构建了一个单阶段模型 MobilePose,以预测单张 RGB 图像中某个目标的姿态和物理大小。该模型的主干是一个编码器-解码器架构,其构建在 MobileNet V2 的基础上。研究者应用了多任务学习方法,来从检测与回归的角度联合预测目标的形状,且在预测形状的过程中,其只依赖于标注的分割图像。
MobilePose-Shape 网络在中间层会带有形状预测模块。 在模型的训练中,如果数据没有标注形状,那也是可行的。只不过借助检测边界框,研究者可以预测形状中心与分布。 为了获得边界框的最终 3D 坐标,研究者利用了一种完善的姿态估计算法(EPnP),它可以恢复对象的 3D 边界框,而无需知道对象维度这一先验知识。给定 3D 边界框,我们可以轻松计算对象的姿态和大小。 下图显示了网络架构和后处理过程,该模型轻巧到可以在移动设备上实时运行(在 Adreno 650 mobile GPU 上以 26 FPS 的速度运行)。