单目摄像头检测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. 在Visual Studio 中使用git——使用git管理源代码(三)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二)   第三部分:使用git管理源代码 ...

  2. ajax--实现异步请求,接受响应及执行回调

    ajax最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页的内容 ajax指是一种创建交互式网页应用的网页开发技术,其实就是实现前后端交互. 1)ajax是异步javascr ...

  3. SpringCloud(七)Stream消息驱动

    Stream消息驱动 概述 屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型 官网:https://cloud.spring.io/spring-cloud-static/spring-cl ...

  4. ASP去除所有html标签

    ASP去除所有html标签 function nohtml(str) dim re Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pa ...

  5. 解决Metasploit中shell乱码的问题

    我们在kali中用 Metasploit 获取到windows主机的shell后,会出现乱码问题,归根到底,就是windows和linux系统的中文编码不同,所以导致windows系统上的中文在lin ...

  6. [CTF]猪圈密码

    [CTF]猪圈密码 -------------------- 百度百科 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . https://baike.baidu.com ...

  7. web php wrong nginx config

    web php wrong nginx config 目录 web php wrong nginx config 题目描述 解题过程 信息收集 robots.txt hint.php Hack.php ...

  8. 【SpringMVC】数据校验时,抛出javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.util.Date.

    老魏原创,转载请留言. 原因:给Javabean中的字段注解多余或者错误导致. @NotEmpty @Past @DateTimeFormat(pattern="yyyy-MM-dd&quo ...

  9. 多线程-3.sleep() yield() join()

    1.sleep()方法 jdk文档描述:Causes the currently executing thread to sleep (temporarily cease execution) for ...

  10. MySQL binlog_ignore_db 参数最全解析

    前言: 经过前面文章学习,我们知道 binlog 会记录数据库所有执行的 DDL 和 DML 语句(除了数据查询语句select.show等).注意默认情况下会记录所有库的操作,那么如果我们有另类需求 ...