单目摄像头检测6D姿态

CVPR2019: ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Shape

论文链接:

https://arxiv.org/pdf/1812.02781.pdf

摘要

本文提出了一种端到端单目三维目标检测和度量形状检索的深度学习方法,将二维检测、定位和尺度估计提升到三维空间,提出了一种新的损失公式。三维实例化不需要单独优化这些数量,而是允许正确测量框的度量偏差。实验表明,本文提出的稀疏二维感兴趣区域(RoIs)的10D提升方法在6D姿态和恢复实例的纹理度量几何方面都取得了很好的效果。这进一步通过将恢复的网格直接修复到2D场景上来实现3D合成数据增强。本文在KITTI3D上对其他强单目方法进行了评估,并证明本文的方法在官方测试集的3D姿势度量上是AP的两倍,定义了新的技术状态。

本文提出了一种单目深网络,它可以在三维空间精确估计和形状恢复的情况下提升二维检测,直接优化一种新的三维损失公式。本文发现,最大化三维对齐端到端的6D姿态估计,导致了非常好的结果,因为本文优化的数量正好是本文所寻求的。本文对KITTI3D中的姿态分布以及如何在恢复网格的情况下利用这些信息进行合成数据增强提供了一些有见地的分析。这个反射对改善姿势很有帮助,改进了recall召回率。然而,非最大抑制2和3是对最终结果的主要影响,也应在未来的工作中加以解决。

主要贡献

本文提出了一种端到端单目三维目标检测和度量形状检索的深度学习方法,提出了一种新的端到端单眼三维目标检测方法,即以单个RGB图像为输入,预测目标在3D中的位置和范围。本文的核心思想是通过使用单目深度网络提升预测的感兴趣区域(roi)来回归面向3D的包围盒。主要贡献是:

1.用于单目3D物体检测的端到端多尺度深度网络,包括一个可微的2D到3D RoI提升地图,该地图内部回归了3D盒子实例化所需的所有组件;通过将2D检测、定向和尺度估计提升到3D空间来制定oss。三维实例化不需要单独优化这些数量,而是允许正确测量框的度量偏差。实验表明,本文提出的稀疏二维感兴趣区域(RoIs)的10D提升方法在6D姿态和恢复实例的纹理度量几何方面都取得了很好的效果。这进一步通过将恢复的网格直接修复到2D场景上来实现3D合成数据增强。本文在KITTI3D上对其他强单目方法进行了评估,并证明本文的方法在官方测试集的3D姿势度量上是AP的两倍,定义了新的技术状态。

2.一个损失函数,在度量空间中对齐这些3D框,直接将它们相对于地面真值3D框的误差最小化;

3.扩展本文的模型,以预测度量纹理网格,支持进一步的三维推理,包括三维相干合成数据增强。

概述

算法流程

本文称本文的方法为“ROI-10D”,因为它提升了感兴趣的2D区域3用于预测6个自由度姿势(旋转和平移)、3个自由度空间范围和1个或多个自由度形状的三维。

图2. 算法总览。

本文使用ResNet-FPN架构和单目深度预测网络对输入图像进行二维检测。本文使用预测感兴趣区域(RoI)从ResNet-FPN和深度网络中提取融合的特征图,在回归3D边界框之前进行roalign操作,本文称之为RoI提升

1.从单目2D到6D姿态

选择将旋转编码为4D四元数,将平移编码为投影的二维物体质心以及相关的深度。此外,本文将三维范围描述为在整个数据集上与平均范围的偏差。

图3. 本文的提升F对所有组件进行回归以估计3D框B(蓝色)。从这里开始,本文的损失最小化了指向地面真相B*的点方向距离(红色)。

本文对这些3D锚的2D实例化是稀疏的,可以在整个图像平面上工作。虽然这样的三维锚显式地提供了物体的三维位置,但本文额外的自由度也需要估计深度。

2.三维提升位姿误差估计

仅从单目数据估计姿态时,像素空间中的微小偏差会导致3D中的较大误差,另外,对每一项进行单独的惩罚会导致不稳定的优化,并且容易产生次优的局部极小值。本文建议将问题提升到3D,并使用一个描述完整6D姿势的代理损失。因此,本文不强制同时对所有术语进行同等优化,而是让网络在训练期间决定其重点。

给定一个地面真值3D框B∗:={B∗1,…,B∗8}及其相关的2D检测X,本文运行本文的提升图来检索3D预测F(X)=B。损失本身是度量空间中八个角距离的平均值

3.向心回归与中心提升

提升多个工作强调了估计单目数据,特别是大视场的异中心姿态的重要性。图4描述了这种差异,其中相对于相机的相对对象平移改变了观察到的视点。因此,本文遵循同样的原则,因为roi失去了全局上下文。因此,在F内的回归过程中,旋转q被认为是非中心的,然后用推断的平移进行校正,以构建以中心为目标的3D盒。

图4。中心(上)和非中心(下)姿势的比较。当中心的姿势在转换时会对摄影机进行视点更改时,以自我为中心的姿势总是显示相同的视图,与对象的位置无关。

4.物体形状学习与检索

光滑形状空间的学习:光滑形状空间的学习

在实验过程中,本文发现形状空间在远离平均值的情况下是快速不连续的,从而导致网格退化。利用主成分分析(PCA)方法生成合适的形状需要根据其标准差对每个维度进行评估,为了避免这个繁琐的过程,本文训练了一个由编码器E和解码器D组成的三维卷积自动编码器,并对输出TSDF施加不同的约束。

5.合成三维数据增强

本文不使用强大的手动或地图优先级来放置场景中的合成对象。取而代之的是,本文采用非中心姿势来移动三维物体而不改变视点。本文在3D中应用一些旋转摄动来产生新的不可见姿势并减少过度拟合。图6展示了一个综合生成的训练样本。红色边界框显示原始的地面真值注释,而绿色边界框则显示综合添加的汽车及其采样的6D姿势。

主要结果

如表1和表3所示,由于严格的3D-NMS,本文的方法在2D中的性能较差,但在鸟瞰图和3D AP中,本文是最强的。这突出了适当的数据分析以抵消过度拟合的重要方面。在官方测试中,本文得到的3D AP大约是本文最近的单眼竞争对手的两倍。

表1. KITTI3D验证[3]和官方KITTI3D测试集的3D检测性能。本文报告了鸟瞰图和3D IoU的AP,每个指标的官方IoU阈值为0.7。注意,本文只评估了在线测试集上的合成ROI-10D版本。

表3 从[3]中分离出列车/验证的不同加权策略和输入模式。本文的AP涉及二维检测、鸟瞰挑战和三维IoU。除了官方的IoU阈值0.7,本文对比了0.5的软阈值。

上图与初始值无关,本文可以观察到本文的损失总是平稳地收敛到全局最优。本文还从公式3中显示了每个雅可比分量的大小,并且可以看出,损耗强烈集中在深度上,同时对旋转和二维质心位置的重要性稳步增加

上图给定2droix的控制性升降损失实验。上图:在相机和鸟瞰图的优化过程中可视化F(X)。底部:每个提升组件的梯度大小,在所有运行中平均。本文参考完整动画的补充。

通过检查2D AP中的下降,本文意识到本文的增强设计是无遮挡的,以避免与环境不现实的交叉。反过来,这导致了强遮挡实例的弱表示和另一个引入的偏差。本文在图2中还显示了一些定性结果。

上图测试(左)和验证(右)集上的定性结果。值得注意的是,本文只是在训练集训练,以确保本文从来没有看到过这些图像。对于验证样本,本文还用红色描绘了地面真实姿势。

单目摄像头检测6D姿态的更多相关文章

  1. 教你如何认识人脸识别开发套件中的双目摄像、3D结构光摄像头、单目摄像头的区别及详细讲解

    深圳市宁远电子提供的人脸识别模组可支持双目摄像头和3D结构光摄像头,在客户咨询中经常有被问到双目的为什么会比单目的成本高,区别在哪里,他们的适用于哪些场景呢?在此,深圳市宁远电子技术工程师就为大家详细 ...

  2. 【雕爷学编程】MicroPython动手做(06)——零基础学MaixPy之单目摄像头

    配套 OV2640摄像头:200W像素通用24P摄像头具有200万像素(1632x1232像素),其体积小.工作电压低,提供单片UXGA摄像和影像处理器的所有功能.通过SCCB总线控制,可以输出整帧. ...

  3. Jetson AGX Xavier ROS下调用USB单目摄像头

    Jetson AGX Xavier安装的ROS是Melodic版本的,所以部署的时候用到的包都是Melodic的. 1. 查看USB摄像头 摄像头连接Xavier设备,调用命令查看. ls /dev/ ...

  4. ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程

    要编译ORB_SLAM2的ROS例程首先需要安装ROS,以及在ROS下安装usb_cam驱动并调用,最后搭建ORB_SLAM2. 1.ROS的安装 我的电脑安装的是ubuntu16.04系统,所以我安 ...

  5. 单目、双目和RGB-D视觉SLAM初始化比较

    无论单目.双目还是RGB-D,首先是将从摄像头或者数据集中读入的图像封装成Frame类型对象: 首先都需要将彩色图像处理成灰度图像,继而将图片封装成帧. (1) 单目 mCurrentFrame = ...

  6. ORB-SLAM (四)tracking单目初始化

    单目初始化以及通过三角化恢复出地图点 单目的初始化有专门的初始化器,只有连续的两帧特征点均>100个才能够成功构建初始化器. ); 若成功获取满足特征点匹配条件的连续两帧,并行计算分解基础矩阵和 ...

  7. Semantic Monocular SLAM for Highly Dynamic Environments面向高动态环境的语义单目SLAM

    一.摘要 当前单目SLAM系统能够实时稳定地在静态环境中运行,但是由于缺乏明显的动态异常处理能力,在动态场景变化与运动中往往会失败.作者为解决高度动态环境中的问题,提出一种语义单目SLAM架构,结合基 ...

  8. 机器视觉学习笔记(5)——基于OpenCV的单目摄像机标定

    本文CameraCalibrator类源代码来自于OpenCV2 计算机视觉编程手册(Robert Laganiere 著 张静 译) 强烈建议阅读机器视觉学习笔记(4)--单目摄像机标定参数说明之后 ...

  9. ORBSLAM2单目初始化过程

    ORBSLAM2单目初始化过程 转自博客:https://blog.csdn.net/zhubaohua_bupt/article/details/78560966 ORB单目模式的初始化过程可以分为 ...

随机推荐

  1. 【Spring】Spring中Bean的生命周期

    Spring中Bean的生命周期依赖于Spring的容器,大致可分为以下4个阶段: 1.Bean的初始化阶段 2.Bean属性赋值的阶段,获取上下文关联 3.Bean初始化的阶段 4.Bean销毁的阶 ...

  2. hdu3117 斐波那契前后4位

    题意:       求斐波那契的前后4位,n <= 10^8. 思路:       至于前四位,和hdu1568的求法一样:       http://blog.csdn.net/u013761 ...

  3. Windows核心编程 第五章 作业(上)

    第5章 作 业 通常,必须将一组进程当作单个实体来处理.例如,当让 Microsoft Developer Studio为你创建一个应用程序项目时,它会生成 C l . e x e,C l . e x ...

  4. 解决客户端Redis中文乱码问题

    启动客户端的时候添加 --raw 选项即可 wangyulong@code-local:~$ redis-cli 127.0.0.1:6379> set key1 '上海' OK 127.0.0 ...

  5. Python协程与JavaScript协程的对比

    前言 以前没怎么接触前端对JavaScript 的异步操作不了解,现在有了点了解一查,发现 python 和 JavaScript 的协程发展史简直就是一毛一样! 这里大致做下横向对比和总结,便于对这 ...

  6. VBO、VAO和EBO

    Vertex Buffer Object 对于经历过fixed pipeline的我来讲,VBO的出现对于渲染性能提升让人记忆深刻.完了,暴露年龄了~ //immediate mode glBegin ...

  7. 偷梁换柱:使用mock.patch辅助python单元测试

    最近在搞软工项目的后端测试,重新复习了一下python的mock.patch,并用它简化了对一些复杂逻辑的测试,在此记录 问题描述 本组的项目比较特殊,设计对教务网站的模拟登陆与信息爬取,同时不少接口 ...

  8. slickgrid ( nsunleo-slickgrid ) 8 区域选择与复制粘贴

    区域选择 区域选择是通过插件CellRangeSelector实现的,默认不支持跨冻结列进行选择,修正了选择,支持跨冻结列,代码如下,通过判断选择的起点和终点所落在的冻结范围进行计算,如从左往右进行复 ...

  9. 数据流分析软件SQLFlow的高阶模式Job任务介绍

    SQLFlow是一个可视化的在线处理SQL对象依赖关系的工具,只需要上传你的SQL脚本,它可以自动分析SQL里的数据对象,包括database.schema.table.view.column.pro ...

  10. java基础——创建对象与内部分布

    类与对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述和定义,但是不能代表某一个具体的事物 动物.植物.手机.电脑... Person类,Pet类,Car类,这些类都是用来描述和定义某一类具 ...