P2GNet:Pose-Guided Point Cloud Generating Networks for 6-DoF Object Pose Estimation
背景信息
- 输入RGBD图像
- 基于DenseFusion
- 最大创新点是将model也训练在特征提取网络中,并且用一个点云生成网络来进行监督学习。
方法
整个网络可以由三部分组成:
Point-wise Fusion Network,Point cloud generating network, pose estimation network
canonical pose的理解:我理解的这个正则位姿就是model本身相对于世界坐标系的位姿。
这篇文章作图做的不是很好,有很多会引起歧义,还有图中重复的地方,不明确的地方特别多。
所以,理解起来比较吃力。
Point-wise Fusion Network
-
三种数据源的数据表示方法
三种数据源,相对于densefusion多了model作为输入。这三种数据源表示成:
(1)RGB提取成deep representation(N sample)
(2)depth提取成re-projected depth values(N sample)
(3)model转换到target进行表示(N sample) -
Point-wise Fusion 网络
(1)逐点(共N个点)融合在这里存在一个问题:三种数据源的点对应关系怎么找?
densefusion两种数据源RGB和depth逐像素对应就可以找到点的对应,但是model本身是点云,怎么跟RGB和depth对应是个困难的问题。如果直接使用没有对其的model点云来做,发现性能会下降。
作者说Point-wise Fusion 网络可以实现这个功能,因为他们提出一个point-fusion block里面引入了修正的Non-Local block[X.Wang,R.Girshick,A.Gupta,andK.He.Non-localneural networks. In CVPR, 2018. 4 ]
这里面的原理或许还需要看一下Non-Local block原理才能知道,这留作后面的任务。
(2)如何生成最后的特征向量?
作者说经过这三个分支之后(Point-wise Fusion本身就处理三个分支数据),每个分支输出的向量维度都是 d e m b d_{emb} demb, 把他们串联起来,每个点的特征就会变为 d e m b ∗ 3 d_{emb}*3 demb∗3维的向量。然后把所有点的特征(原文the concatenated features)输入到一个类似PointNet结构的网络中,如图2a所示那种. 然后再作用一个全局平均池化,以最终生成一个固定大小的全局特征向量。 -
点云生成网络
good idea: 用点云生成网络来监督特征提取和融合过程
生成目标点云in target pose来监督point-fusion网络对model点云内在属性的提取。
生成目标点云in canonical pose来稳定训练过程以及使编码特征包含目标模型的完整3D信息。
注意:点云生成网络生成的点云只用作训练监督作用,这些点云不参与后面的位姿估计。 -
位姿估计网络
这篇文章采用了与densefusion相似的位姿估计网络,位姿估计网络的输入是Point-wise Fusion 网络生成的feature。
与densefusion网络存在三点不同:
(1) 输入通道数量由二维增加到三维。
(2)densefusion每个目标对象都要对应一个位姿估计网络,P2GNet改善了这一问题,使得网络更通用。
(3)把densefusion估计置信分数的网络激活函数由sigmoid换成了softmax,去掉了置信分数计算的正则项。
学习目标函数
(1)位姿估计损失
与densefusion一样,
ADD:
ADD-S:
这里再解释一下ADD-S的理解:对称对象上使用ADD,会在神经网络上施加不必要的约束,即回归到备选3D旋转之一,产生训练不一致的信号。
final goal:
i是指第i个点的预测,这跟作者上面的描述产生的矛盾:上面“2. Point-wise Fusion 网络” 指出用了一个类似于PointNet的网络最后生成了全局的特征向量,我理解的是:作者并没有很好的描述清楚这里的步骤,我感觉应该是类似与densefusion中那种,生成全局特征向量之后,再把它串联到每个点的
d
e
m
b
∗
3
d_{emb}*3
demb∗3维向量上。
(2)点云生成损失
这个所谓的chamfer distance(倒角距离),我理解的是跟ADD-S很像的指标,1)原始点云上的点不动,去用它与生成点云上的最近点做距离误差。 2)生成点云上的点不动,去用它与原始点云上的最近点做距离误差。这两种距离误差取最大的那一个作为最终的倒角距离。
(3)整体训练损失
技术实现细节
训练策略
step1:
联合训练pose-guided point cloud generation network和pose estimation network.
step2:
用densefusion中的iterative refinement network进行位姿优化训练。
实验结果
LineMOD
文章做了消融实验,证明他们提出的模块工作有效:
YCB
推理时间效率:
real-time application (∼25 FPS, about 5 objects each frame)
读后感
1.这篇文章最重要的一个创新就是,将模型点云作为数据输入到网络中去。增加了模型3D信息有助于位姿估计。
2.文章中用的处理逐点匹配的Point-wise Fusion Network原理没有解释的很清楚。最终要想实现RGB、depth、model上各个点的对应关系可能确实比较困难,否则直接就用model与depth的对应关系通过ICP算出位姿了。所以作者提出的方法只能说是部分匹配,究竟有匹配度有多少作者也没做这方面的实验,因此不得而知,这是可以改进的地方。
3.在输入数据源上增加模型空间信息,是3D位姿估计中一个可以尝试的方向。