宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

Scan2CAD: Learning CAD Model Alignment in RGB-D Scans的学习总结

概述:团队研究人员研究的内容是通过训练后的新颖3D卷积神经网络去接受一个半虚拟半真实组合成的对象作为输入,并且生成相对应的热图,最后通过一个9DoF位姿优化算法去将这个热图最终重建成一个对应的CAD模型并且根据输入场景进行对齐。

数据集设计:
他们设计了自己的数据集Scan2CAD作为训练神经网络的数据。Scan2CAD数据集的设计都是基于ShapeNet中的CAD模型以及ScanNet中的扫描图片。研究人员通过手动标注扫描图片和CAD模型的对应关键点对来完成图片和模型的对齐工作(关键点对需要保持在6个及以上)。这些标注后的数据就作为训练神经网络的数据集。

Benchmark:
他们设计了一个Benchmark来判定他们的Scan2CAD方法是否成功对齐。他们通过9DoF的数据来定量误差阈值(三维度位移,三维度旋转,三维度scale)。如果位移的误差阈值≤20cm, 旋转的误差阈值≤20°,scale的误差阈值≤20%则是成功的对齐。

神经网络:
对于输入数据的表达式Scan data和CAD data都采用了不同的表达方式。Scan data通过有向距离场(SDF)来表达在一个volumetric grid中。CAD data则是通过github中的工具直接转换成距离场(DF)表达。
个人认为以下的博客对于SDF和DF有十分清晰的定义:
https://www.jianshu.com/p/c466e8b2c854?utm_campaign=haruki(SDF)
https://www.zhihu.com/question/314433176(DF)

个人认为研究人员使用SDF表达Scan data是为了保证在扫描数据在经过卷积神经网络的加密之后,加密后的信息依然保持较高的准确性。(平面数据)
在CAD data的表达中是一个三维立体数据,所以可以通过距离场去表示。

他们同时将Scan data和CAD data作为输入,然后经由不同的卷积结构加密,将最终结果链接在一起并且作为输入值传输到解码区,解码区会对热图,兼容性和比例分别进行预测。如下图所示:

注:图中的(K,S,C)结构代表(卷积核大小,步长,数字通道)。
ConvBlock是由Conv3-BatchNorm-ReLu结构组成的一个卷积块,ResBlock本质上是用来跳过连接层。BigBlock则包含着两个连续的ResBlock。

BatchNorm详解:https://blog.csdn.net/wzy_zju/article/details/81262453

每个热图的的最终大小都为32×32×32,初始的输出是H:Ω→[0,1](映射),这代表图像中每个voxel(体素)在定义域为Ω∈N×N×N(N在这里指代自然数集)匹配到扫描SDF中心点的匹配概率值。每个体素都在[0,1]区间内的概率值表达模型匹配的概率。后续将二元交叉熵(BCE)和负对数似然(NLL)结合使用去训练神经网络。在最后一层的解码层会得到一个原始的输出S:Ω→R(R在这里指代实数集),最终通过这个输出去生成热图:

可以通过公式看出最终的损失函数L是通过将BCE和NLL相加得出。if x > 0.0, ω(x)=64.0, else ω(x)=1.0。v=64是加权因子用来提高体素网格中稀疏体素的信号。HGT在这里指代的是ground truth数据。sigmoid和softmax分别是两个激励函数。

关于误差函数和激励函数个人找了一篇比较直观的博客:
(https://www.cnblogs.com/woodyh5/p/12067215.html)误差函数
(https://blog.csdn.net/yizhen_acmer/article/details/55652187?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param)激励函数

兼容性概率的取值范围在[0,1]之间,如果概率的值越大则越说明scan data和CAD data之间的相似性很高,对于兼容性的误差计算先使用了sigmoid函数,后使用了BCE:

对于Scale的预测则是使用了最普遍的均方差方法(MSE):

最后用一个加权组合误差去训练网络:

对齐优化:
对齐优化的输入值是从场景S中的模型M中获取到的一个Harris keypoints的集合K。他们会从K中筛选出需要的值进行优化。他们采用了Otsu阈值分割算法去筛选数据。

接着他们设计了一个变量优化方法。根据Harris keypoints p j p_j pj​和热图 H j H_j Hj​给每个模型 m j m_j 细心的小蚂蚁​构建了point-heatmap pair ( p j p_j pj​, H j H_j Hj​)。

其中 p 1 ∈ R 3 p_1∈R^3 p1​∈R3, H j H_j Hj​ : Ω → [0,1]。
他们为了找到最优化的位姿构建了一个最小化问题:

c v o x c_{vox} cvox​是体素坐标, T w o r l d → v o x T_{world→vox} Tworld→vox​代表一个用来将世界点映射到体素网格进行查找的转换,α代表愉快的芝麻的坐标(旋转和位移),s定义了scale, λ s λ_s λs​定义了scale的正则化强度,α和s组成了一个转换矩阵 T m i T_{m_i} Tmi​​=ψ( a m i , s m i a_{m_i},s_{m_i} ami​​,smi​​):

Γ代表热图,expm是矩阵指数。

作者使用Levenberg-Marquardt (LM)算法解决了公式(1)。在使用不同的参数组合后获得了一个CAD模型的多种对齐结果。最后通过将输入场景中的已知空余空间全部裁剪掉后获取最终匹配的唯一一个模型对象:

T m − 1 T_{m}^{-1} Tm−1​表示CAD到扫描的转换矩阵,Ω代表体素网格空间 ⊂ N 3 \subset N^3 ⊂N3。 τ \tau τ是volumetric fusion中的切面距离为15cm,O是对scan中的有向距离函数或者CAD中的距离函数的查找。

本文未对作者的实验结果进行分析,主要针对于这篇文章中采用的方法以及实验思路进行分析以达到学习的目的。