https://github.com/zju3dv/clean-pvnet
https://github.com/zju3dv/pvnet
https://github.com/F2Wang/ObjectDatasetTools
https://zju3dv.github.io/pvnet/
Proposed approach
rigid transformation (R; t)
from the object coordinate system to the camera coordinate system
刚性变换,从目标的坐标系到相机的坐标系
采用两阶段的流程:
首先用CNN检测出来2D关键点,然后使用改进的PnP算法来进行位姿估计。
我们的方法使用PVNet的方式检测2D关键点,类似RANSAC,但可以鲁棒地解决遮挡和截断问题。
基于RANSAC的投票也给出了每个关键点的空间概率分布,这样我们能使用不确定性驱动的PnP估计6D姿势。
Voting-based keypoint localization
PVNet 预测像素级的类别以及表示从每个像素到每个关键点的方向的单位向量。(后边注意是不是单位向量,感觉翻译有问题,待定。)
给定从属于某一对象的所有像素到该对象关键点的方向,我们通过基于RANSAC的投票生成该关键点的2D位置的假设以及置信度分数。
基于这些假设,我们估计了每个关键点的空间概率分布的均值和协方差。
与直接从图像块[33,39]回归关键点位置相比,预测像素方向的任务强制网络更多地关注对象的局部特征,并减轻杂乱背景的影响。
此方法的另一个优点是能够表示被遮挡或位于图像外部的关键点。即使关键点不可见,也可以根据从对象的其他可见部分估计的方向正确定位它。
更具体地说,PVNet执行两个任务:语义分割和矢量场预测。
对于像素P,PVNet枢纽机场那就与之相关的特定目标的类别以及代表着像素P到2D关键点
X
k
X_k
Xk的方向的单位向量
V
k
(
P
)
V_k(P)
Vk(P),其中
V
k
(
P
)
V_k(P)
Vk(P)被定义为:
在给定语义标签和单位向量的情况下,我们在基于RANSAC的投票方案中生成关键点假设。
- 首先,我们使用语义标签找到目标对象的像素
- 随机选择两个像素,将他们向量的交集作为关键点 X k X_k Xk的假设 h k , i h_{k,i} hk,i
- 第二部重复N次来产生N个假设 { h k , i ∣ i = 1 , 2 , . . . , N } \left\{h_{k,i}|i = 1, 2, ..., N\right\} {hk,i∣i=1,2,...,N}代表关键点的概率分布
- 最终目标的所有像素都为这些假设投票。
- 特别地,投票分数
w
k
,
i
w_{k,i}
wk,i对应于
h
k
,
i
h_{k,i}
hk,i被定义为:
从而产生了图中关键点的空间概率分布,最终,我们计算均值和协方差为关键点 X k X_k Xk:
后续被用于不确定性驱动的PnP解算。
Keypoint selection
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KgoZt5yA-1635218856164)(C:\Users\zd\AppData\Roaming\Typora\typora-user-images\image-20211026110318219.png)]
关键点需要根据3D关键点定义,现在的许多方法利用3D bouding box的八个角点作为关键点。如图a所示。
这些点可能到目标像素的距离比较远,这会导致更大的定位误差,因此关键点的假设用从目标像素出发的向量产生。
图b,c展示了bouding box角点和在物体表面两种关键点的选取的结果,均由PVNet生成。
物体表面的关键点在定位时候通常有更小的协方差。
因此在物体表面选取关键点,同时要让关键点在目标上分散开来,从而让PnP算法更加稳定。
因此采用farthest point sampling (FPS) algorithm----最远点采样算法.
- 首先添加目标的中心点
- 重复在表面寻找离现有关键点集合最远的点,直到选出K个点。
第5.3节中的结果显示此策略比使用边界框角点产生更好的结果
考虑到准确性和效率我们选取K的值为8.
Multiple instances.
该方法可以处理多实例场景。
对于每个目标类别,我们生成目标中心假设以及他们的投票分数(由我们的投票机制产生)
然后我们在假设中找到modes,并且标记这些modes为不同实例的中心,最后通过分配像素到他们投票的最近的实例中心来产生实例掩膜。
Uncertainty-driven PnP
有了目标的2D关键点,用现成的PnP方案来计算物体的6D位姿。如EPnP.
然而,大多数研究忽略了一个事实,即不同的关键点可能具有不同的置信度和不确定性模式,这在解决PnP问题时应予以考虑。
我们基于投票的方法估计每个关键点的空间概率分布,给出了均值和协方差矩阵,我们通过最小化Mahalanobis distance(马氏距离)来计算6D位姿:
X k X_k Xk为关键点的3d坐标, X ~ k {\tilde{X}}_k X~k 是 X k X_k Xk的2D投影,π是透视投影函数,参数R和t由EPnP基于四个关键点初始化,其协方差矩阵具有最小的迹。
用LevenbergMarquardt算法来求解上式。
Implementation details
假设由C类目标,每类有K个关键点,输入为H ×W ×3的图像,用全卷积架构进行处理,输出H ×W ×(K ×2×C)张量,这表示类别概率。
我们用预训练ResNet-18作为骨干网络,做了三点修改,
- 当网络特征图的大小为H/8×W/8时,我们通过丢弃后续的池层不再对特征图进行下采样。
- 其次,为了保持感受野不变,随后的卷积被合适的dilated convolutions所取代
- ,用卷积层替换原始ResNet-18中的全连接层。
然后,我们在特征图上重复执行跳跃连接、卷积和上采样,直到其大小达到H×W,如图2(b)所示。
通过对最终的特征图进行1×1卷积,我们得到了单位向量和类概率。
Training strategy
使用平滑L1损失 proposed in [10] 来学习单位向量。对应的损失函数为
请注意,在测试期间,我们不需要将预测向量作为单位,因为后续处理仅使用向量的方向。
Datasets
LINEMOD
Occlusion LINEMOD
Truncation LINEMOD
YCB-Video
Evaluation metrics
2D projection metric. A pose is considered as correct if the distance is less than 5 pixels.
ADD metric.
Running time
Conclusion
提出了一种新的6自由度目标姿态估计框架,该框架包括用于关键点定位的像素投票网络(PVNet)和用于最终姿态估计的不确定性驱动PnP。我们发现,预测向量场,然后进行基于RANSAC的关键点定位投票,比直接回归关键点坐标获得了更好的性能,尤其是对于被遮挡或截断的对象。我们还表明,在解决PnP问题时,考虑到预测关键点位置的不确定性,进一步改进了姿态估计。
需要查看的内容:
-
马氏距离
-
LevenbergMarquardt算法
-
RANSAC