你们还在做2D的物体检测吗?谷歌已经开始玩转 3D 了
物体检测作为计算机视觉领域最广泛的研究主题之一,虽然2D 物体检测已在工业界得到了比较成熟的应用,然而实现 3D 物体检测目前还困难重重。
一方面是由于现有的3D 数据非常匮乏,另一方面则是因为单个类别下的物体外观和形状本身就非常多样化。
在当前条件下,如何基于现有的 2D 图像数据来做3D 检测呢?
日前,谷歌发布了一个针对日常物体的移动实时 3D 物体检测管道——MediaPipe Objectron。
该管道可以检测2D图像中的物体,然后通过机器学习模型估计物体的姿势和大小,再在谷歌最新开发的3D数据集上对模型进行训练。
其中,MediaPipe 是一个开源跨平台框架,用于构建管道来处理不同模式的感知数据,而Objectron则是在MediaPipe中实现,能够在移动设备中实时计算面向检测物体的3D 边框。
(雷锋网 (公众号:雷锋网) )
单个图像的 3D 物体检测。MediaPipe Objectron在移动设备上实时确定日常对象的位置、方位和大小。
获取现实世界 3D 训练数据
随着依赖于激光雷达等 3D 捕获传感器的自动驾驶汽车研究工作的日益普及,目前已有大量的街道场景 3D 数据,然而针对更细粒度的日常物体的带有真实 3D 标注的数据集极度有限。
为了解决这一问题,谷歌使用移动增强现实会话数据开发了一个新的数据管道。随着ARCore 、ARKit等工具的出现,数亿部智能手机现在具备了AR 功能,能够在 AR会话期间捕捉到额外的信息,包括摄像机姿势、稀疏的3D点云、估计的照明和平面。为了标注真实数据,谷歌还开发了能够与AR会话数据一同使用的新标注工具,让标注者可以快速地给物体标注 3D 边框。
该工具使用分屏视图显示 2D 视频帧,其中左侧放置3D边框,右侧显示3D点云、摄像机位置和检测到的平面视图。标注者以3D 视图来绘制3D 边框,并通过查看其在2D 视频帧中的投影来检验其位置。
针对静态物体,只需要在单个帧中标注物体,然后利用AR 对话数据中真实的摄像机姿势信息将其位置传送到所有帧中,从而提高整个流程的效率。
(雷锋网)
3D物体检测的真实世界数据标注。右图:使用检测到的平面和点云在3D 世界中标注3D边框。左图:标注的3D 边框的投影覆盖在视频帧的顶部,从而使得验证标注变得更简单。
AR 合成数据生成
在提高预测准确性方面,现在常用的一种方法是使用合成数据来补充现实世界的数据。然而这种做法往往会产生质量差、不现实的数据,而在真实渲染的情况下,则需要进行大量的尝试和消耗计算成本。
谷歌提出的新方法,叫做AR 合成数据生成(AR Synthetic Data Generation),将虚拟物体放置到已有 AR 会话数据的场景中,可以利用摄像机姿势、检测到的平面以及估计的照明情况来生成物理世界中可能存在以及照明条件能够与场景匹配的位置。
这种方法可以生成高质量的合成数据,并且渲染的物体不仅顺应场景几何体,还能够无缝匹配适应现实场景。通过结合现实世界的数据和 AR 合成数据,能够提高约10%的准确度。
(雷锋网)
AR合成数据生成的例子。虚拟的白棕色麦片盒被渲染到真实场景中,挨着一本真实的蓝色书。
一个针对3D目标检测的机器学习Pipeline
谷歌建立了一个单级模型,能够从RGB图像中预测物体的姿态和物理大小。具体而言,模型的主干包含基于MobileNetv2构建的编解码器体系结构,并采用多任务学习方法通过检测和回归联合预测目标的形状。形状预测依赖数据标注的质量,如果数据中没有形状的标注,那么此选项可以不选。
对于检测任务,使用标注好的边界框,并用高斯拟合。其中,中心在框的中间,标准差与框的大小成正比。检测的目标就是预测这种概率分布,其概率分布的峰值表示目标的中心位置。
为了获得边界框的最终3D坐标,谷歌利用了一种完善的姿势估计算法(EPnP),这个算法能够在无需了解目标大小的情况下,恢复目标的3D 边界框,只要有了3D边界框,就可以轻松计算目标的姿势和大小。
下图是模型的网络架构和后处理,经验证模型可以轻松的在移动设备上实时运行,例如在Adreno 650移动GPU上为26FPS。
图注:3D目标检测的网络结构和后处理
(雷锋网)
图注:网络样本结果:左边是带有估计边界框的原始2D图像,中间是基于高斯分布的目标检测。右边是预测分割掩码。
在MediaPipe上检测和跟踪
让模型实际应用时,由于针对的是移动设备捕获的每一帧,而这些帧的3D边界框可能是模糊的,所以模型可能会被干扰。为了解决这一问题,谷歌借鉴了其之前2D目标检测的方案,也即使用了之前的检测+跟踪框架。
此方案能够减少模型在每一帧上运行网络的需要,允许重复使用,同时保持pipeline移动设备上的实时更新。此外,还能跨帧保留目标属性,确保预测在时间上一致,从而。减少抖动为了提高移动设备pipeline,每隔几帧只运行一次模型推理。
另外,所采用的预测方法是实时运动跟踪和运动静止跟踪的结合,当做出新预测时候,会将检测结果和跟踪结果合并。为了鼓励研究、开发人员使用谷歌的pipeline建模,其将在MediaPipe Objectron上发布基于设备的实时3D目标检测的pipeline,内容包括端到端的demo移动应用,以及两类训练模型,这两类训练模式是鞋子和椅子。
项目已经开源,下面附上Github地址和博客:
https://github.com/google/mediapipe/blob/master/mediapipe/docs/objectron_mobile_gpu.md
https://ai.googleblog.com/2020/03/real-time-3d-object-detection-on-mobile.html
。