MoreFusion: Multi-object Reasoning for 6D Pose Estimation from Volumetric Fusion

  • 1.背景信息
  • 2.方法
    • 2.1object-level volumetric fusion
    • 2.2Volumetric Pose prediction
      • 2.2.1occupancy grids作为周边信息
      • 2.2.2位姿预测网络的结构
      • 2.2.3训练位姿预测网络
      • 2.3基于碰撞的位姿优化
      • 2.4 CAD对齐
  • 3.实验
    • 3.1实验设置
    • 3.2位姿预测的评估
    • 3.3位姿优化的评估
  • 读后感

1.背景信息

1.输入RGBD图像
2.与densefuison做性能比较
3.最大的创新点是维护了一个volumetric map,这样可以利用多视角的信息(增加了场景信息),因此对重度遮挡具有优势。用作者的话说就是“using more structured volumetric representation with the geometry information surrounding the target object.”

2.方法


系统可以被分为四个关键阶段:
1.object-level volumetric fusion
用目标实例分割的masks去处理RGB+depth, 再结合上相机位姿的tracking(机械臂直接读取或SLAM),创建一个volumetric map(包括已知的目标和未知的目标)
2. volumetric pose prediction
利用volumetric map中目标周围的信息以及RGBD mask,对每一个目标产生一个初始的位姿估计。
3. collision-based pose refinement
使用物体CAD模型和volumatric map上的occupied space进行碰撞检查,通过梯度下降优化多个目标的位姿。
4.CAD alignment
找到一个可信的位姿估计,将CAD model变换到场景中,去替换掉场景中的这个object。

2.1object-level volumetric fusion

  1. RGBD相机tracking
    对于眼在机械臂手上的系统,通过机械臂读取相机位姿;
    对于手持式的相机,通过SLAM来计算相机位姿。
  2. 目标检测
    用Mask-RCNN对2D RGB图像进行实例分割。
  3. Volumetric mapping of detected objects
    使用octree-based occupancy mapping,OctoMap。通过使用八叉图,可以1) 用于更新已经存在的图 2)用于初始化那些新发现的图

2.2Volumetric Pose prediction

2.2.1occupancy grids作为周边信息

  1. 文章是将场景点云划分成了四部分:目标本身,其他目标,空闲区域,未知区域
  2. 对不同大小的bounding box 使用不同大小的体素,以使得目标具有固定大小的体素维度(比如323232)

2.2.2位姿预测网络的结构


分成四个核心模块:
1.从RGB图像中进行2D特征提取
2.对RGB特征和点云进行逐点编码
3.体素化和3D CNN处理
4.利用2D-3D特征进行逐点位姿预测

1. 从RGB图像中进行2D特征提取
(1)不同于densefusion,这里RGB输入的是masked RGB,而不是cropped RGB,作者说这里会滤掉更多的噪声信息,我认为是有道理的。
(2)对于masked RGB采用了与densefusion中相同的ResNet18去提取color embedding(本文中叫2D features)
2.对RGB特征和点云进行逐点编码
用的是与densefusion中相似的PointNet结构,由多个全链接层对每个点进行编码。
3.体素化和3D CNN处理
(1)通过体素化,可以将point-wise转换成grid-wise
(2)体素grid通过3D CNN提取层级的3D特征,这减少了体素的维度,增加了通道的维度。
因为原始的体素维度是32,通过3D CNN处理之后,产生的新的层级维度分别为16和8.
(3) 作者说本文中最重要的是体素化之前作用2D特征提取, 如果直接用3D CNN作用在高分辨的目标grid上,将是计算复杂的,并且由于受传感器深度信息采集精度的限制,相比于RGB图像来说3D表示会引入更多缺失的点。
4.利用2D-3D特征进行逐点位姿预测
(1)文章中从3D feature grid中利用三线性插值(有些3D feature grid中可能并没有信息,因此需要插值)提取出与2D features对应位置的特征,串联生成逐点特征向量。
(2)利用跟densefusion中相似的结构预测位姿和置信分数。

2.2.3训练位姿预测网络

1.训练损失函数
与 densefusion保持一致:
ADD:

ADD-S:

总的loss:

2. 对称位姿损失的局部最小问题
作者说ADD-S在非凸形状目标的位姿估计中会卡在局部最小。
提出用warm-up stage来改善这一问题。
warm-up:先忽略对称性进行优化,再考虑对称性优化。我个人理解,先用普通的优化,大致给个合适的初始位姿,这样就可以跳出ADD-S的局部最小,然后再用对称性优化,使损失函数最小。

2.3基于碰撞的位姿优化

1. 可微的occupancy voxelization
在occupancy grid中每个的体素的值必须是点的函数,这些点是由估计的目标位姿转换过来的。
将点云中的点转化在体素坐标系下表示:

计算点到体素中心的距离:

计算第k个体素的occupancy value:

2. Occupancy voxelization for a target object

用第m个object in the scene 预测得到的旋转矩阵和平移向量,将model变换到估计target上, 然后通过"1.occupancy voxelization"将估计target变换成occupancy grid,表示为gmtargetg_{m}^{target}gmtarget

对于周边的目标,也作用这种体素化。最终生成了gnnontargetg_{n}^{nontarget}gnnontarget

  1. Intersection Loss for Collision Check
    将周边目标的occupancy转换到第m个目标的体素坐标系下:

    这里为什么用max,我还没有想清楚。但大致思想应该是将周边非目标的occupancy grid中最靠近目标的那部分取出来保留。

计算target与target之外的交叉部分损失:
additional impenetrable area:

碰撞惩罚损失:

是将target与非target的部分进行逐元素乘积:对于那些二者碰撞重合的grid,乘积结果值就大,对于那些二者不碰撞重合的grid,二者乘积为0.

交叉损失:
目标target不仅与周边环境进行碰撞,还与传感器采集到的在scene下的目标自身也存在交叉损失,计算如下:

总的损失:

2.4 CAD对齐

对最近N个视角得到的N个位姿估计结果,计算两两成对的loss,共有N(N-1)个loss:

给定一个阈值LtL^{t}Lt, 计算:

When M reaches a threshold, we initialize the object with that agreed pose.

3.实验

3.1实验设置

1.数据集使用的是YCB数据集和作者自己生成的严重遮挡的YCB数据集,因为这篇文章的方法可以很好处理目标遮挡问题,因此作者加大了难度以突出对比优势。
2.使用的度量标准,与densefusion一致,ADD和ADD-S

3.2位姿预测的评估

1.基线模型
将densefusion加入warm-up loss和中心化输入点云,作为基线模型,表示为densefusion*

2.结果
为了公平比较,大家用的都是单视角数据。

为了验证不同level的occupancy信息的作用,做了一系列实验:

discarding the occupancy information from the single-view observation -occ;
full reconstruction of non-target objects +target−;
full reconstruction of background objects +bg.

作者说Morefusion−occMorefusion^{-occ}Morefusionocc已经超过densefusion*, 原因是morefusion使用了3D CNN结构。

3.3位姿优化的评估

Iterative Collision Check(ICC)与ICP进行比较:


可以发现ICC+ICP效果最好,ICC与ICP单独比较的话也是略逊一筹,这里作者没有指明ICC需要消耗多少时间,而我们已经知道ICP耗时非常长,如果ICC与ICP耗时基本差不多,那么ICC基本就没有显露出任何有意义的优势了。如果ICC耗时比较短,应该将其与densefusion的效果进行比较(包括时间上的和效果提升上的)

读后感

1. morefusion一方面可以具有好的场景重建能力(类似于SLAM中的建图),另一方面,可以进行重度遮挡的位姿估计

2. morefusion维护了一个volumatric map,对于已经感知到内容进行多视角优化,对于第一次感知到的内容进行添加相关信息。从而可以更好描述目标物体的3D外貌,有助于在严重遮挡的情况下进行位姿估计。

3. morefusion引入了ICC,具体原理还没有太搞清楚,可能自己需要更多一些的积累再回来重读会有更好的收获。

4. occupancy map 个人理解应该就是体素地图。

2020.09.29重读 原2020.08.04读 MoreFusion相关推荐

  1. 【HDOJ 2020.09.29】一些语法水题ByVJ

    By VJ 小抄c版v2 A //上次不是做过了 #include<stdio.h> int main(){char a, b, c, t;while(scanf("%c%c%c ...

  2. 2020/09/29 鼠标移入 显示二维码或图片 移出隐藏

    要模仿的效果 代码 -js -css -js函数 -最终效果 代码块 js let showImg = function (e) {// console.log("show")e. ...

  3. 前仿真和后仿真的区别,按键消抖设计思想、PLL使用、ODDR2的原语使用 --2020/10/29工作总结

    2020/10/29工作总结 前仿真和后仿真的区别 前仿真 综合后仿真 后仿真 synthesize和implement.generate bitstream 参考链接 按键消抖设计思想 PLL使用 ...

  4. RDKit | 基于RDKit(≥2020.09.1)的相似图绘制新方法

    导入库 from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem.Draw import SimilarityMaps fr ...

  5. 【不忘初心】Win10_20H2_2009_19042.572_X64_六合一_[纯净精简版](2020.10.29)

    母版来自MSDN  WIN10_20H2.19042.508,集成补到19041.572,20H2相比1909 2004版本要稳定很多,精简起来也比较顺手,相对来说体积比之前的要小一些,精简方法基本上 ...

  6. 2020.10.29腾讯QQ音乐社招前端电话一面总结

    2020.10.29腾讯QQ音乐社招前端电话一面总结 面试官晚上19:16打过来的,聊了44分钟,到八点准时结束.无论过没过,都记录一下面试过程吧,是问了几个大问题,在几个大问题的基础上根据你的回答, ...

  7. 时间格式转换 Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间)

    留个记录,回头直接拿着用 // Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间) 转 年月日时分秒 function timeD(time) {     let d ...

  8. leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树

    leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...

  9. 多益网络校招前端面经(2020.09.24)

    多益网络校招前端面经(2020.09.24) 面试平台 QQ视频通话 时长 大约半小时 过程 自我介绍 项目问题:项目中遇到的问题以及解决方式:在团队开发过程中个成员合作方式,遇到问题的解决方式 cs ...

最新文章

  1. 【Java】时间复杂度 与 空间复杂度
  2. 软件测试基础知识——适合初学者
  3. OpenGL动感模糊
  4. Hibernate查询缓存全面分析
  5. Hbase PageFilter 取出数量不准确问题
  6. windows 临界区
  7. Pytorch采坑记录:DDP加载之前的checkpoint后loss上升(metric下降)
  8. 乘法器之四( 乘加器(Sum of multiplication))
  9. 伏安特性曲线实验报告_【鼎阳硬件智库原创 | 测试测量】动手测量电解电容器的阻抗频率特性...
  10. 关于AIR 应用程序沙箱
  11. 《Microsoft SQL Server 2008 Internals》读书笔记--目录索引
  12. 用户故事与敏捷方法-阅读总结
  13. 京东商城java笔试_京东java笔试
  14. ICE 3.7.4 实现客户服务端hello world
  15. 逻辑地址和物理地址的相互转换
  16. (高小德用车)高仿滴滴/快的应用源码
  17. 积分商城消费系统定制
  18. 【FPGA学习笔记】SignalTap II软件的使用
  19. java实现输入日期
  20. dubbo 自定义异常

热门文章

  1. Java_运动员和教练案例代码实现
  2. 洛谷-P1885-Moo-普及--分治
  3. 吴恩达机器学习中BP神经网络算法公式的详细推导
  4. speedoffice和office的区别
  5. 6级听力词汇与习语3
  6. How to debug LLVM by VS2019 on Windows
  7. CRLF和LF的区别
  8. 一文详解高性能数据库:读写分离
  9. Java面向对象编程(求长方体体积)
  10. 那些年,用过的Linux网络工具