本文链接:https://blog.csdn.net/suian0424/article/details/93319577
组会被分到讲这篇论文,从来没接触过姿态估计相关的东西,本来还有点抵触。但注意到是李飞飞团队做的,就还是认真看了一下。看了之后发现还是很有收获的,就在这里记录一下。
一、6D 姿态估计
6D指的是6个自由度,旋转的3个自由度+平移的3个自由度,需要估计的目标姿态是相对于相机的坐标系来定义。
6D姿态估计有很多重要的现实应用,例如机器人抓取与控制、自动导航、增强现实等。
二、Contribution
这篇论文主要是两个contribution,分别对应之前研究工作中的两个问题:
组会被分到讲这篇论文,从来没接触过姿态估计相关的东西,本来还有点抵触。但注意到是李飞飞团队做的,就还是认真看了一下。看了之后发现还是很有收获的,就在这里记录一下。
一、6D 姿态估计
6D指的是6个自由度,旋转的3个自由度+平移的3个自由度,需要估计的目标姿态是相对于相机的坐标系来定义。
6D姿态估计有很多重要的现实应用,例如机器人抓取与控制、自动导航、增强现实等。
二、Contribution
这篇论文主要是两个contribution,分别对应之前研究工作中的两个问题:
重度遮挡的case 效果不好
高耗时的refine,实时性不足
高耗时的refine,实时性不足
第一点问题,之前的方法一般使用图像块计算全局特征或者2D边界框,对于重度遮挡的case,原始图像块中的信息是有污染的——会参杂别的物体的信息——这样得到的全局特征就会不准确,从而造成估计姿态的不准确。而论文通过在像素级别构造特征——嵌入(embed)、融合(fuse) RGB颜色特征和点云几何特征(由深度值D构造)——并引入置信度参数来剔除污染信息,从而在重度遮挡的情况下也能得到准确的姿态估计。
第二点问题,之前使用的refine方法与姿态估计的主体网络是脱节的,因此无法和最终目标函数联合优化,并且计算也比较慢,导致无法满足运算的实时性要求。这篇论文提出了一种基于网络的迭代的refine方法,极大地提高了模型性能,保证了实时的处理速度。
三、网络结构
第二点问题,之前使用的refine方法与姿态估计的主体网络是脱节的,因此无法和最终目标函数联合优化,并且计算也比较慢,导致无法满足运算的实时性要求。这篇论文提出了一种基于网络的迭代的refine方法,极大地提高了模型性能,保证了实时的处理速度。
三、网络结构
整个模型的架构主要包含两个阶段:
第一阶段将彩色图像作为输入,对每个已知的物体进行语义分割。按分割后的结果裁剪原图片和点云(由深度像素转换而成),将两个裁剪结果导入第二阶段。这里segmentation的网络直接使用了别的论文的成果。
第二阶段处理分割的结果并估计目标的 6D 姿态,包含四个部分:
① 一个处理颜色信息的全卷积网络,图像块中的每个像素被映射成一个颜色特征(128维);
② 一个基于 PointNet 的网络,将带有裁剪后的 3D 点云中的每个点处理为一个几何特征(128维);
③ 一个像素级的 fusion 网络,利用颜色和几何特征计算一个全局特征并将三种特征合并后送入pose predictor进行6D姿态估计。每个pixel估计得到一组结果(旋转参数、平移参数和置信度),也就是说如果分割得到的物体有500个像素点,那么这一步会得到500组姿态估计参数。选取置信度最高的pose作为最终的pose。置信度是通过无监督的方法学习,详见Loss部分的内容;
④ 一个迭代的refine方法,通过网络迭代地微调估计结果。将前三步计算得到姿态参数应用到点云上,计算得到新的点云位置,用PointNet重新计算几何特征,联合计算的颜色特征一起送入fusion网络,将得到的特征送入pose residual estimator,计算新的微调姿态参数,再更新点云,再算几何特征,循环迭代。refine网络部分的特征计算与前面的特征计算用的是不太一样的网络结构。
第二阶段处理分割的结果并估计目标的 6D 姿态,包含四个部分:
① 一个处理颜色信息的全卷积网络,图像块中的每个像素被映射成一个颜色特征(128维);
② 一个基于 PointNet 的网络,将带有裁剪后的 3D 点云中的每个点处理为一个几何特征(128维);
③ 一个像素级的 fusion 网络,利用颜色和几何特征计算一个全局特征并将三种特征合并后送入pose predictor进行6D姿态估计。每个pixel估计得到一组结果(旋转参数、平移参数和置信度),也就是说如果分割得到的物体有500个像素点,那么这一步会得到500组姿态估计参数。选取置信度最高的pose作为最终的pose。置信度是通过无监督的方法学习,详见Loss部分的内容;
④ 一个迭代的refine方法,通过网络迭代地微调估计结果。将前三步计算得到姿态参数应用到点云上,计算得到新的点云位置,用PointNet重新计算几何特征,联合计算的颜色特征一起送入fusion网络,将得到的特征送入pose residual estimator,计算新的微调姿态参数,再更新点云,再算几何特征,循环迭代。refine网络部分的特征计算与前面的特征计算用的是不太一样的网络结构。
网络结构的部分细节:
pose predictor是三个4层的1x1卷积网络,旋转参数、平移参数和置信度分别对应一个卷积网络;
pse residual estimator是两个3层的全连接网络,旋转参数和平移参数分别对应一个全连接网络;
pse residual estimator是两个3层的全连接网络,旋转参数和平移参数分别对应一个全连接网络;
四、Loss
计算逐像素点的loss。公式很好理解,下标i表示由第i个点的特征预测得到的姿态参数P的Loss。
区分了对称物体和非对称物体,对于非对称物体直接计算对应像素点之间的距离,而对于对称物体,因为会有歧义,所以计算最近距离点的位置偏差。
区分了对称物体和非对称物体,对于非对称物体直接计算对应像素点之间的距离,而对于对称物体,因为会有歧义,所以计算最近距离点的位置偏差。
这里是理解第一点contribution最关键的部分。如果不考虑置信度参数,那么最终的Loss函数应该是上图的第一个公式:优化所有评估结果的总Loss。而该论文为了解决重度遮挡case的问题,引入了置信度参数:考虑输入的物体信息一共是500个像素点,假设其中有200个像素点并不是目标物体的像素点,而是遮挡在目标物体前的其他物体的像素点,那么这200个像素点计算得到的估计姿态pp pp将会有很高的Loss(LpiLip L^p_{i}Lip),而且这个Loss无法优化到很小(因为本来就是错的输入),那么网络可以选择优化置信度cici c_{i}ci,因为置信度降低可以降低第二个公式中的第一项LpiciLipci L^p_{i}c_{i}Lipci,当然随着cici c_{i}ci减小,−wlog(ci)−wlog(ci) -wlog(c_{i})−wlog(ci)会相应增大,所以LpiLip L^p_{i}Lip和cici c_{i}ci的优化就形成了一个对抗的过程,从而无监督地学习到置信度参数。
五、结果与实验
五、结果与实验
这里就放一个定性的结果对比,更多的定量数据对比详见论文。
简单总结下结论:定量分析中PoseCNN+ICP的组合与本篇论文的表现接近,但PoseCNN+ICP在耗时上远高于本片论文。
另外论文最后还提到了一个机器人抓取的任务测试,论文表示本文算法在物品抓取任务上达到了73%的成功率,最失败的例子是香蕉,猜测的可能原因是使用的香蕉物品与训练数据集中的香蕉颜色不太一样(???这个是不是有点敏感?)。
————————————————
版权声明:本文为CSDN博主「LuminousLumin」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/suian0424/article/details/93319577