论文笔记:《3D Correspondences by Deep Deformation》
Introduction:
本文提出了Shape Deformation Networks,来做template-driven形状对应。
这个网络学习 变形模板的形状,并与输入形状做对应。
训练:shape deformation networks(encoder-decoder)
编码网络:将目标形状作为输入,生成全局特征向量
解码网络:模板作为输入,将模板变形为目标形状
Method:
论文方法分为三大块:
(a)network training:这个是网络的训练过程。(对应论文中的3.1)
**编码器Eφ:**先输入一个三维点云S,它将输入的每一个3D点都与一个多层感知器相连(MLP隐藏特征大小为64,128,1024),经过一个线性层后,对每一个点得到的特征结果做maxpooling,得到1024维的Eφ (S)特征。
(直观理解,输入一个点云S,利用前向传播将S编码成隐藏代码E,然后利用pointnet将E码弄成特征向量E(S)。)
解码器Dθ:它的输入是上面得到的特征向量和模板A上的一个点P的3D坐标。
这个网络是一个多层感知器,隐藏层大小为1024 , 512 , 256 , 128。后面跟着一个双曲正切。该结构是将模板域的任意点映射到重构表面上,通过对模板进行采样,反复操作,从而输出任意数量的输出点。
在这个过程中,包含了两种损失。
supervised loss:
这种情况下,模板A 与 训练形状 S 之间的对应是已知的。qj是训练形状上的点,pi是模板上的点。 pj ↔ qj 。
the reconstruction loss:其中,第一项代表的是重构点,第二项代表的是输入的点。从这个式子也可以看出,解码器的输入是由模板点和特征向量组成的。这个loss包含了所有N个形状上的p个点。
unsupervised loss:
这种情况下,样本形状和模板之间的对应关系是未知的。我们优化了重构过程,并做了正则化。对于重构,我们在输入Si和重构点云 Dθ(A;(Eφ(Si)))之间使用chamfer distance;对于正则化,使用了两个项。
这个过程都是通过参数化完成的,都是对于输入形状的预测参数并不一定是最优的,所以需要优化过程。
————————————————————————————————————
(b)optimization:(对应文中的3.2 optimizing shape reconstruction)
这个步骤是对重构好的表面进行优化。(对向量X作回归操作)
给定形状S,以及编码器Eφ、解码器Dθ学习到的权值。最近邻搜索来找模板形状与输入形状之间的对应关系。
为了得到更高的准确度,Eφ给出的参数是近似值,可以改进。
由于不知道输入形状和生成形状之间的对应关系,所以不能用(1)计算损失。
重构形状与输入形状之间的chamfer distance:从第一步的x = Eφ (S)开始,我们对于这个loss做了3000次迭代。
————————————————————————————————————————————
(c)(对应论文中的3.3 finding 3D shape correspondence)
我们给定了两个三维形状Sr和St,首先,通过上面的两个过程将模板变形,在这个过程中,我可以获得它们的特征向量xr和xt。然后,我在左边Sr的那个形状上给定一个三维的点qr,我们会通过上面得到的xr找到模板A上的一个点p,生成的形状D(P,xr)是qr的邻近点。最后,我们找到目标形状St上的三维点qt是与D(P,xt)接近的。这个过程是通过对p的transformation(转换)实现的。
Algorithm:
————————————————————————————————————————————
Results:
Datasets:
1
**synthetic training data:**反正下面说了这么多就是把数据集成功扩展了。
训练算法需要数据集,我们用synthetic data来训练我们的模型。
对于人类形状,我们使用SMPL模型。我们在SURREAL数据集上对参数采样。
SURREAL的缺陷:not include any humans bent over——对数据集扩展:
1 手动估计了7个关键节点参数,2 随机采样这些值周围的参数。。。?figure3:并非所有的网格生成的都是真实的形状,不过这也可以让我们更好地去覆盖可能的姿势空间。
对于动物形状,我们使用SMAL模型。(inter-category correspondence——河马和马)
2
Testing data:
我们在FAUST、TOSCA、SCAPE数据集上对我们的算法进行评价:
the FAUST dataset:100个训练数据,200个测试数据,170000个顶点,有噪声,有洞,有可能缺feet。我们本文只用到了它的测试集。
the SCAPE dataset:有两个数据集含71个网格。第一个里面是holes和我occlusions的正确的扫描,第二个是第一个的对齐。姿势与我们的训练集合FAUST的都不一样。
the TOSCA dataset:是由三个模板网格变形生成的,网格互相之间都不一样。
3
Shape normalization:
训练形状和测试形状都必须用相同的方式标准化。
Experiments:
1、results on FAUST:误差2.878 cm——an improvement of 8% over state of the art
我们是第二好的(平均1.99cm),但不能用两个网格来表示同一个人。
2、results on SCAPE:3.14cm ,局部网格4.04cm。我们只比Deep Functional Maps差一些。
3、results on TOSCA:对扰动的鲁棒性—等距、噪声、喷出噪声、孔、拓扑变化和采样
对SMPL、SMAL都做了训练。
左边的图是输入的,右边的是重构的。a是不完全扫描,b是强的扰动,c是对动物形状训练
Reconstruction optimization:优化的关键是 找到一个合适的初始化。
初始化的质量(即我们算法的第一步)对于优化至关重要。a是给定的目标形状,bcd是不同的优化结果。b的初始化是随机的,c的初始化是不正确的,所以它们收敛到了不好的局部极小值。而d收敛的结果很接近目标形状。
在FAUST-inter上的相关定量结果。
1、在输入输出之间minmize chamfer distance来优化latent features会得到很好的效果(这是加了regression);
2、在训练网络时使用更均匀的形状会使初始化变好;
3、使用一个高分辨率的模板抽样可以使得性能提高。
Necessary amount of training data:
想看看训练数据起的作用。
对FAUST点进行重新采样,使用低分辨率模板对不同训练集进行训练:由表可看出,添加synthetic data 可以将误差减小到3
基本合成数据集与其增强版本之间的性能差异主要是由于特定姿态上的失败(fig 3)这张图说明了训练数据的重要性。
a是给定的目标形状,
b:FAUST数据集,c:augmented synthetic 训练集,优化前是左边、优化后是右边。
unsupervised correspondence:
我们使用公式(3)来看看我们的方法是否可以不用对应监督就可以训练。发现得到的网络模板和输入形状之间没有对应关系,如图7所示。
通过适当的正则化可以得到改进,例如.公式(2)中给出的正则化。我们训练没有任何对应监督的网络,并且在FAUST-inter数据上获得了4.88cm的误差,即类似于具有4.83cm误差的DFM。这表明即使在没有通信监督的情况下,我们的方法也是有效的。
Rotation invariance:(旋转不变)
我们处理旋转不变性通过旋转形状和选择的方向,其中重建是最优的。作为另一种选择,我们试图学习一个直接围绕垂直轴旋转的网络。
FAUST-inter的表现稍差(3.10cm),但仍比目前的水平好(由于网络的容量有限)
旋转不变网络增加了鲁棒性,SCAPE有稍微更好的结果