第一作者:Eldar Insafutdinov
研究机构:Max Planck Institute for Informatics, Intel Labs

自己的想法:

  • 重投影误差:该方法不需要准确的地面真实相机姿势,因此可以应用于从真实数据中学习
  • 使用了位姿估计器集合来解决位姿歧义问题
论文解决的问题

解决了从一组未标记类别的特定图像中学习精确的三维形状和相机姿态的问题。

论文训练了一个卷积网络,通过最小化重投影误差来预测单个图像的形状和姿态:给定一个物体的多个视图,预测的形状到预测相机姿态的投影应该与提供的视图相匹配。

选择点云表示相比于体素更加精确,允许计算效率高的处理,可以生成高质量的形状模型

论文克服了三个问题:

  1. 估计形状和姿势是一个鸡和蛋的问题:没有一个好的形状估计就不可能学习准确的姿势,反之亦然,准确的姿态估计是学习形状的必要条件。这个问题通过形状和姿势预测器的联合优化解决
  2. 位姿估计容易出现由模糊性引起的局部极小值:一个目标可能从两个角度看起来很相似,如果网络在所有情况下都收敛到只预测其中一个角度,那么它将无法学习预测另一个角度。这个问题会导致姿态估计中的严重误差。为了解决这个问题,作者训练了不同的姿态预测器集合并将其提炼为单个学生模型(student model)
  3. 在没有明确的3D监督的情况下学习点云信息。论文提出了一个可微投影算子,该算子在给定点集和相机姿态的情况下,生成一个二维投影(轮廓、彩色图像或深度图),作者将该算子称为“可微点云”
现有方法的不足 & 本文贡献

现有方法需要相机位姿的精确数据作为label,且预测形状由于基于voxel,其分辨率非常低。

本文提出了一种不需要标签数据、利用点云表示的方法来学习仅给出二维投影的三维物体的姿态和形状。

实验表明,点云在效率和准确性方面优于 voxel-based 的表示。

相比于使用真值训练的相机位姿估计网络,性能只有很小的下降。

论文方法介绍

直观上,模型要求对于同一对象的所有成对的视图,预测的点云的投影必须与提供的真值视图相匹配。

流程概述:

输入数据为同一个目标的多个单视图,包含K个目标的数据集:
D=i=1k{<Xji,pji>}j=1miXjipjimi D = \cup _{i=1}^k\{ <X_j^i,p_j^i>\}_{j=1}^{m_i}\\X_j^i 为彩色图,p_j^i为同一视角下的某种投影(如轮廓或深度图等),m_i 为视角数目
假定有两个输入X1,X2,分别使用它们来对形状(点云形式)和相机位姿进行预测:
P1^=FP(x1,θP)姿c2^=Fc(x2,θc)FPFc 形状:\hat{P_1}=F_P(x_1, θ_P)\\相机位姿: \hat{c_2}=F_c (x_2, θ_c)\\其中F_P,F_c 为共享大多数参数的卷积网络,通过固定长度的全连接层输出预测
得到两个预测后就可以投影出预测的视图:
p^1,2=π(P1^,c2^)π \hat p_{1,2}=\pi(\hat{P_1},\hat{c_2})\\\pi表示 可微投影算子,即可微点云
最后使用预测视图与真值之间的差别构造损失函数:
L(θP,θc)=i=1Nj1,j2=1mip^j1,j2ipj2i2 L(θ_P,θ_c) =\sum_{i=1}^N\sum^{m_i}_{j_1,j_2=1}||\hat p^i_{j_1,j_2}−p^i_{j_2}||^2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qojz9b34-1589087767840)(/home/phy12321/Documents/Pictures/2020-05-10 09-52-13 的屏幕截图.png)]

姿态预测器估计姿态

实际上,基于上述的实现基本无法预测准确的相机位姿。这是由局部极小值引起的:有些目标从后看和从前看差别不大(位姿的歧义性),而目标姿态估计器的估计视角其有可能收敛到而两种的任何一种。 Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

为了解决这个问题,作者设计了一个包含K个姿态预测器的集合:Fck(,θck)F^k_c(·,θ^k_c),然后使用“后视损失( hindsight loss)”进行训练。损失函数:
Lh(θP,θc1,...,θcK)=mink[1,K]L(θP,θck)姿L(q1,q2)=1Re(q1q21/q1q21)q1,q2Re() L_h(θ_P,θ^1_c,...,θ^K_c) = min_{k∈[1,K]}L(θ_P,θ^k_c)\\其中位姿损失 L(q_1,q_2) = 1−Re(q_1q^{−1}_2/||q1q^{−1}_2||)\\q_1,q_2为四元数,Re()表示四元数的实部
每个预测器都专门学习一个姿态空间的子集,它们一起覆盖了目标的整个姿态空间。

如果网络架构合适,这种分工学习的机制是随机权重初始化的自然结果,无需采取特殊措施即可确保这种专业化。

不同的姿势预测器需要具有多个(根据作者经验,至少3个)非共享层。

Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

在训练预测器集合(student)的同时,使用集合中的最佳模型(LhL_h最小的那个)作为teacher,将其提取为单个的回归器。在测试时使用该最佳模型作为姿态回归器。

最终网络的输出为 点云数据(3×N 或者包含RGB的6×N),相机位姿(4*1,四元数),位姿估计器集合的K=4。

可微分点云投影算子π

该投影算子给定一个点云P和一个相机位姿c,会生成一个视图p =π(P,c)

假定有N个点的点云数据为
P={xi,si,yi}i=1Nxi=(xi,1,xi,2,xi,3siyiRGB P=\{〈x_i,s_i,y_i〉\}^N_{i=1}\\其中: 点云坐标 x_i= (x_{i,1},x_{i,2},x_{i,3}); 尺寸参数 s_i 是一个二维向量,包括各向同性高斯的协方差和比例因子;关联信号y_i(例如RGB颜色信息)
尺寸参数可以手动指定,也可以与点位置一起学习

投影算子流程图如下

Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

Transformed point cloud:

首先,通过相机位姿c对应的投影变换Tc将点的位置转换到标准坐标系:xi=Tcxix′_i=T_cx_i, 还计算了变换后的尺寸参数s’,然后设置相机变换矩阵,以使变换后的投影一律等于沿第三轴的正交投影

Occupancy map:

为了允许梯度计算,使用平滑函数fi(论文中使用缩放的高斯密度函数)表示每个经过放缩后的点云<xi,si>
fi(x)=cie(12(xxi)Ti1(xxi))ci,Σi=si f_i(x) =c_i *e^{(−\frac12(x−x′_i)^T\sum ^{−1}_i(x−x′_i))}\\其中〈c_i,Σ_i〉=s_i是尺寸参数(缩放因子,协方差)
点云的占用函数是经过裁剪后的每个点的fi函数值的总和:
o(x)=clip(i=1Nfi(x),[0,1]) o(x) = clip(\sum^N_{i=1}f_i(x),[0,1]) \\
将得到的函数离散为一个分辨率为1×D2×D3的网格,得到occupancy map

Ray termination probabilities:

在将occupancy map投影到平面上之前,需要确保来自被遮挡点的信号不会干扰前景点

这里使用现有的可微光线追踪公式来执行遮挡推理,将占有率o转换为射线终止概率r:
:rk1,k2,k3=ok1,k2,k3u=1k31(1ok1,k2,u)   if  k3D3,:rk1,k2,D3+1=u=1D3(1ok1,k2,u)ki 占用图单元格: \quad r_{k_1,k_2,k_3}=o_{k_1,k_2,k_3}\prod^{k_3−1}_{u=1}(1−o_{k_1,k_2,u}) \ \ \ if \ \ k_3\leq D3,\\ 背景单元格:\quad r_{k_1,k_2,D_3+1}=\prod^{D_3}_{u=1}(1−o_{k_1,k_2,u})\\这里k_i指的是占用图的三个维度
直观地,如果一个单元的占用值ok1,k2,k3o_{k_1,k_2,k_3}很高,而之前的所有占用值ok1,k2,u,u<k3o_{k_1,k_2,u} ,u <k_3都很低,则该单元具有较高的终止概率rk1,k2,k3r_{k_1,k_2,k_3},附加的背景单元格rk1,k2,D3+1r_{k_1,k_2,D_3+1}用于确保终止概率总和为1

Orthogonal projection:

将体素网格投影到平面:
pk1,k2=k3=1D3+1rk1,k2,k3yk1,k2,k3y(x)=i=1Nyifi(x)i=1Nfi(x)yRGByk1,k2,k3=k3/D3yk1,k2,k3=1δk3,D3+1 p_{k_1,k_2}=\sum^{D_3+1}_{k_3=1}r_{k_1,k_2,k_3}y_{k_1,k_2,k_3}\\y(x) =\frac{\sum^N_{i=1}y_if_i(x)}{\sum^N_{i=1}f_i(x)}\\这里y表示归一化后的投影的信号,例如RGB信息等。\\如果想获得深度图,令y_{k_1,k_2,k_3}=k_3/D_3\\如果想获得轮廓图,令y_{k_1,k_2,k_3}=1−δ_{k_3,D_3+1}

实验内容以及分析

已知相机位姿进行预测:

已知相机姿态情况下来预测形状的定量结果如下。

Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

模型还支持使用除轮廓之外的其他监督信息训练,例如颜色。尽管不同视图之间的光照和阴影变化带来了挑战,但该方法仍能够正确学习彩色的点云。

Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

不使用相机位姿的情况

Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

这些结果证明了点云表示优于基于体素的表示。 点云特别适合表示细微的细节,例如椅子的细腿。 我们还显示了所提出方法的典型失败案例。 其中一架飞机旋转了180度,因为网络无法找到认为正确的方向。 两把椅子的形状与真实形状有所不同。 这是由于训练问题的复杂性,以及过度拟合的原因。 但是,形状看起来很细腻且逼真。

发现语义对应关系:

由于使用全连接层来预测点云,因此可以预期 同一输出单元生成的不同形状的点云具有相似的语义。

作者通过实验验证了该猜想:

从椅子类别的验证集中选择两个实例作为模板,并手动注释与特征部位相对应的3D关键点位置,例如座椅的拐角,腿的尖端等。然后对于每个关键点,选择与关键点相距不远的预测点云中的所有点,并计算两个模板之间的点索引的交集。使用这些索引在其他几个对象实例上可视化点,并用不同的颜色突出显示每组点。 结果如图所示:

Unsupervised Learning of Shape and Pose with Differentiable Point Clouds && NIPS 2018 论文笔记

如假设的那样,被选中的点往往代表不同的对象实例中的相同对象部分。 请注意,没有针对此目标进行明确的监督:语义对应关系自动出现。 作者将其归因于模型的 学习输出光滑,平滑表示的形状空间的隐式能力,这可以通过为相同的对象部分重用相同的点来实现。

Reference

【摸鱼读paper】点云形状与位姿的无监督学习 - 等我一下就好啦的文章 - 知乎 https://zhuanlan.zhihu.com/p/91618864

相关文章:

  • 2021-09-30
  • 2021-08-14
  • 2021-10-14
  • 2021-05-10
  • 2022-12-23
  • 2021-11-13
  • 2021-07-14
  • 2021-06-06
猜你喜欢
  • 2021-10-10
  • 2021-05-04
  • 2021-11-16
  • 2021-05-31
  • 2021-07-31
  • 2021-10-26
  • 2021-07-21
相关资源
相似解决方案