Segmentation-driven 6D Object Pose Estimation论文理解

本文创新点\贡献

分割驱动,让每个可以看到的部分都对关键点位置的预测做出贡献


方法

在这里插入图片描述

方法概述

假设
物体是刚体且CAD模型已知。

对输入的图片做卷积,然后产生分割和预测,将图片分成 S × S S \times S 个网格,每个网格都i预测属于的类别并回归关键点的位置,关键点在这里就是交点,然后根据2D-3D对应来做EPnP


分割流

在这里插入图片描述
对每个 S × S S \times S 的cell预测label, D s e g = K + 1 D_{seg} = K +1 K K 是类别数,因为前景和背景的不平衡,所以使用的 Focal Loss


回归流

在这里插入图片描述
预测内容
在分割出来的mask中进行的预测,预测提前定义好的3D关键点的2D映射,这里用的是八个角点,所以 N = 8 N=8 D r e g = 3 N D_{reg} = 3N

预测方法
没有直接预测位置,预测的是八个角点对于中心位置的偏移,所以设2D形心是 c c ,对于第 i i 个关键点,预测的偏移为 h i ( c ) h_i(c) ,所以绝对位置就是 c + h i ( c ) c+h_i(c) ,然后训练的时候残差就是:
Δ i ( c ) = c + h i ( c ) g i \varDelta_i(c) = c + h_i(c) - g_i
所以loss就是:
L p o s = c M i = 1 N Δ i ( c ) 1 L_{pos} = \sum_{c\in M}\sum^N_{i=1}||\varDelta_i(c)||_1
同时还用sigmoid计算对于每个预测的置信度,来表示和真实值的相似程度:
L c o n f = c M i = 1 N s i ( c ) exp ( τ Δ i ( c ) 2 ) 1 L_{conf} = \sum_{c\in M}\sum^N_{i=1}||s_i(c) - \exp(-\tau||\varDelta_i(c)||_2)||_1

所以这一块的总loss是:
L r e g = β L p o s + γ L c o n f L_{reg} = \beta L_{pos} + \gamma L_{conf}


训练

网络结构是Darknet-53,输出为3Dtensor,空间分辨率是 S × S S\times S ,在其中的每个cell上预测两个特征向量 D s e g , D r e g D_{seg},D_{reg} ,这个网格能控制投票的数量。
两个流的结构是相同的,不过输出的特征维度不同

最终loss

L = L s e g + L r e g L = L_{seg} + L_{reg}

推理

在这里插入图片描述
多同类物体
因为这里的分割是类级别的,而不是实例级别的,所以对多同类物体的情况表现不好,为了解决这个作者使用了聚类方法,使用相似像素距离阈值来做聚类

EPnP:
如果直接使用RANSAC的话速度比较慢,所以作者提取了 n = 10 n=10 个最高置信度的预测来做RANSAC,能减少计算量,之后再用EPnP来求出结果,过程如下图:
在这里插入图片描述
a b c d P o s e a是网格上的类别预测,b是显示出所有预测的关键点,c是对关键点过滤,d是最终Pose可视化


实验结果

在这里插入图片描述
N F H C b n R A N S A C n 消融实验,NF不知道是啥,HC是只用置信度最高的一个预测点,b-n是RANSAC取n个最高点的效果

在这里插入图片描述
和其他的方法的对比

训练和测试的时候把所图片resize到 608 × 608 608 \times 608 ,然后将2D映射的位置和置信度都正则化到范围[0,10]

就当是输出的比例,要结果的时候再映射回去


总结

就算是逐像素预测了,2020看这篇文章确实没啥东西,主要后面出来了不少厉害的方法,比起来这个就比较简单基础了

虽然说不是很新,但是这方法跟这之前的yolo-6D有啥区别呢?都是用cell,都是预测的偏移,都是用的PnP,就名字起的好,这个比yolo-6D多了个分割,就是预测的时候只计算分割mask部分,就这个改动,这也能中了?

发布了63 篇原创文章 · 获赞 2 · 访问量 8005

猜你喜欢

转载自blog.csdn.net/McEason/article/details/104565525