论文阅读笔记之——《PVNet: Pixel-wise Voting Network for 6DoF Pose Estimation》

先给出论文的链接(https://arxiv.org/pdf/1812.11788.pdf

论文主页,包括了一个实时AR demo:https://zju3dv.github.io/pvnet/

论文代码:https://github.com/zju3dv/pvnet

作者还开源了他们用blender合成数据代码:https://github.com/zju3dv/pvnet-rendering

 

传统方法常常借助local descriptor来解决6D Pose Estimation这个问题。但是,对于没有表面问题的物体,local descriptor的提取往往很差。近年来,深度学习对场景理解的能力非常瞩目,也就有工作希望通过一个网络直接从图片中回归出物体的6D Pose,但发现网络的泛化能力一般。6D Pose的搜索空间大,是导致网络泛化能力一般的一个原因。

最新的6D Pose Estimation工作会先在2D图片中检测物体的关键点,然后通过2D-3D的对应,用PnP计算出物体的6D Pose。在2D图片中检测关键点大大减小了网络的搜索空间,深度学习方法在6D Pose Estimation的效果也有了很大的提升。但对于Occlusion,Truncation这些状态下的物体,效果仍然有局限性。

作者观察到,对于occlusion的物体,图片中有很多其他无关物体的干扰。因此,作者提出利用物体可见部位的局部信息,来检测关键点。首先,检测出物体的可见部位。然后,每个像素预测一个指向物体关键点的方向向量。

 

abstract

6D Pose Estimation这个问题的目标是输入一张图片,然后检测出物体在3D空间中的位置和姿态。最近的方法采用两个流程。首先检测关键点,然后转换为PNP问题来估算位姿(可参考博文《P3P位姿估计推导》)然而,大部分的方法都是通过回归图像坐标或热图(heatmaps)来稀疏关键点,均会受到遮挡或截断的影响。因此本文提出采用Pixel-wise Voting Network (PVNet)(像素投票网络?)来回归指向关键点的像素单位向量,并使用这些向量使用RANSAC对关键点位置进行投票。从而可以抗遮挡或截断。进一步地,这种表示提供了关键点位置的不确定性,PNP解算器可以进一步利用这些不确定性。

introduction

目标姿态估计的目的是检测目标并估计其相对于标准帧的方向和平移。在增强现实,自动驾驶和机器人操作中,位姿估计都起到非常重要的作用Accurate pose estimations are essential and quite challenging from many perspectives, including object detection under severe occlusions, variations in lighting and appearance, and cluttered background objects.

传统的方法通过建立目标图像与目标模型之间的对应关系,可以实现姿态估计。主要是通过手工制作特征,但是对于图像变化和背景杂波是不鲁棒的。基于深度学习的方法通过end to end的训练来实验位姿的估计。然而generalization(泛化能力)仍然是一共challenge

最近有些方法采用CNN先回归2Dkeypoints,然后再采用PnP计算6D的位置参数。换句话来说,检测到的关键点作为姿态估计的中间表示。由于鲁棒的关键点检测,这样的two-stage approaches可以获得比较好的performance。然而这些方法在处理遮挡和截断的对象(tackling occluded and truncated objects)的时候都非常困难,由于部分的关键点不可见,虽然CNN可以通过记忆相似的模式来预测这些看不见的关键点,但是泛化能力仍然很差。

作者提出,处理这种遮挡效应是需要密集预测(dense predictions,)称为pixel-wise or patch-wise estimates用于最终输出或中间表示。为此,本文提出了一个新的framework来实现6D位姿的估计,采用Pixel-wise Voting Network(PVNet),基本流程如下图一所示。PVNet预测表示从对象的每个像素到关键点的方向的单位向量。这些方向然后基于RANSAC来投票作为关键点的位置。这个投票方案是由刚性物体的性质所驱动的,一旦我们看到一些局部,我们就能够推断出其他部分的相对方向。

我们的方法基本上就是构建一个矢量场来代表关键点的定位。相对于基于representation的坐标或者热力图,学习如此一个representation迫使网络关注于目标的局部特征以及目标不同部分之间的空间关联性。因此可以从可见部分推测不可见部分的位置。除此以外,vector-field representation(向量场表示)也可以代表目标关键点,甚至在图片以外的地方。

此外,dense output提供了丰富的信息给PNP来处理不精确的关键点预测。特别地,RANSAC-based voting删减异常值预测,并给出每个关键点的空间概率分布。而不确定性的关键点locations给了PNP算法更多的自由来为预测最终姿势确定一致的对应关系。

contribution

1、作者提出了一种新的framework作为6D的位置估计(PVNet),通过学习对物体2D关键点的方向向量场,进而可以较好的处理遮挡效应(很大程度的利用了刚体物体的性质。对于刚体物体,只要见到物体露出的一部分,就能推测出物体其他部分的方向。通过方向向量场的表示,可以帮助网络学习到刚体物体的结构性质。)

2、基于PVNet的dense预测,作者提出使用不确定性驱动的PNP算法来计算二维关键点定位中的不确定性。

related work

Holistic methods(整体法)

传统的6D位置估计的方法,都是基于模板匹配方法,但对于杂乱的环境和外观变化非常敏感。最近CNN却表现出对环境的鲁棒性。

PoseNet采用CNN通过一张RGB图来直接回归6d的相机位姿(类似于目标位置估计)。然而,直接定位3D目标的位置是比较难的,由于缺乏深度信息且大的搜索空间。

为了克服这点,PoseCNN从2D图像中定位目标,并且预测他们的深度信息来获得3D位置。然而,直接预测3D旋转角是非常难的,由于旋转角空间的非线性使得CNN缺乏泛化能力。

因此,有些工作也将旋转空间离散化,将三维旋转估计转化为分类任务。离散化产生一个粗略的结果和后精化,以获得一个准确的6自由度姿态。

Keypoint-based methods(关键点法)

不直接从图片中获得位姿。基于关键点的方法可以先通过预测目标的2D关键点,然后再根据PNP算法来计算2D到3D的映射(two-stage pipeline)。相比起3D位姿以及旋转角的估计,2D关键点的检测是非常简单的。然而传统的2D关键点检测的方法难以对于纹理少的物体及低分辨率的图像进行预测。

为此,最近采用CNN来检测2D关键点。通过输出pixel-wise热图来解决遮挡的问题。然而,由于热图是固定尺寸的,对于截断的物体,部分关键点可能在图片外部。而通过向量场的表示,关键点的位置是通过从方向上投票来确定的,这适用于被截断的对象。(对物体关键点的方向向量场的表示,很大程度的利用了刚体物体的性质。对于刚体物体,只要见到物体露出的一部分,就能推测出物体其他部分的方向。通过方向向量场的表示,可以帮助网络学习到刚体物体的结构性质。)

Dense methods(密度方法)

在这些方法中,每个像素或面片都会对所需的输出进行预测,然后对最终结果进行投票,得到一个广义的Hough投票方案。Compared with sparse keypoints, object coordinates provide dense 2D-3D correspondences for pose estimation, which is more robust to occlusion.作者的方法通过dense预测关键点的位置,它可以看作是一种基于关键点和密集方法的炒作,结合了这两种方法的优点。

Proposed approach

给定一张图片,位姿检测的目标就是预测目标的位姿。6D位姿是通过平移和旋转来决定的在本文中,也是采用two-stage pipeline,首先通过CNN来获得2D目标的关键点,然后采用PNP算法来计算6D。创新点在于:a new representation for 2D object keypoints as well as a modified PnP algorithm for pose estimation.

Voting based keypoint localization

图2描述了所提出的pipeline。输入一张RGB图,PVNet预测pixel-wise的目标label,并且单位向量(unit vectors)代表每个pixel到关键点的方向。给定从属于某个对象的所有像素到某个对象关键点的方向,我们通过基于RANSAC的投票以及置信度得分来生成该关键点二维位置的假设。基于这些假设,我们估计了每个关键点的空间概率分布的均值和协方差。

相比于从patch图像直接回归关键点的位置,预测像素方向(pixel-wise)的任务迫使网络更多地关注对象的局部特征,并减轻了背景杂乱的影响。

 

 

 

 

 

 

 

接下来会好好读一下论文《PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes》

 

额外补充

这个新的关键点定位方法相对于heatmap的关键点检测方法有三大优势。一个是heatmap方法对关键点只有一次预测,而在本文的方法中,物体可见部分的像素对关键点都有一个预测,极大提高了模型的鲁棒性。第二个优势是,对物体关键点的方向向量场的表示,很大程度的利用了刚体物体的性质。对于刚体物体,只要见到物体露出的一部分,就能推测出物体其他部分的方向。通过方向向量场的表示,可以帮助网络学习到刚体物体的结构性质。第三个优势是,heatmap只能表示图片内的关键点,而方向向量场可以检测图片外的关键点,所以可以检测Truncation状态下的物体的6D Pose。

 

一种新的特征点定位方法

首先,PVNet读入一张RGB图片,然后输出目标物体的semantic segmentation和指向物体关键点的向量场。随后,通过Ransac voting,再从方向向量场计算出物体的关键点。

在关键点的生成过程中,PVNet同时还会生成物体关键点的概率分布,也就是关键点空间分布的mean和covariance。随后在PnP中,利用关键点的不确定性,进一步提升了6D Pose Estimation的鲁棒性。

 

参考资料

https://mp.weixin.qq.com/s?__biz=MzUxNjcxMjQxNg==&mid=2247489197&idx=2&sn=d1fc20498a1284db290b7ab1f19edc5e&chksm=f9a26422ced5ed34c47cb6c0dcfedfe1f252abe69cdd7415ce051bb025cf18d0cb4f5371ce3c&mpshare=1&scene=24&srcid=#rd

 

 

 

  • 7
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
clean-pvnet是一个用于6DoF姿态估计的代码库,它是基于“PVNet: Pixel-wise Voting Network for 6DoF Pose Estimation论文开发的。如果您想要下载clean-pvnet代码并配置环境,可以按照以下步骤进行操作: 1. 使用命令`git clone https://github.com/zju3dv/clean-pvnet.git`下载代码。 2. 配置环境,可以使用以下命令: ``` conda create -n pvnet python=3.7 conda activate pvnet conda install pytorch==1.5.0 torchvision==0.6.0 cudatoolkit=10.2 -c pytorch pip install Cython==0.28.2 sudo apt-get install libglfw3-dev libglfw3 pip install -r requirements.txt ``` 这些命令将创建一个名为`pvnet`的虚拟环境,并安装所需的依赖项。 3. 当您运行`run.py`时,输出日志将显示运行的进度和结果。根据提供的日志,运行看起来是成功的,并输出了一些信息。 4. 对于权重文件,根据提供的信息,训练好的权重文件可能存储在代码库的某个目录中。 请注意,这只是对clean-pvnet的简要介绍,如果您需要更多详细信息或有其他相关问题,请参考论文和代码库中的文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【复现笔记】clean-pvnet复现](https://blog.csdn.net/weixin_54470372/article/details/128293400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值