一 知识背景算法
3D scan&cloud points(点云)patch-based features,fully convolutional network, deep metric learning, sparse tensors,sparse convolutions, hard negetive-mining, contrastive loss, triplet loss, batch normalization...网络
1.cloud points(点云)架构
“在逆向工程中经过测量仪器获得的产品外观表面的点数据集合也称之为点云,一般使用三维坐标测量机所获得的点数量比较少,点与点的间距也比较大,叫稀疏点云;而使用三维激光扫描仪或照相式扫描仪获得的点云,点数量比较大而且比较密集,叫密集点云,框架
在稀疏的卷积中和权值${W}$相乘的${x}$必须在${C}$中,这样的系数卷积获得的也是一个稀疏的结果。文中的${V^(3){-1,0,1}}$我以为其中的元素没必要是固定的${{-1,0,1}}$,若是非要是这样,卷积(相关)就没法计算了(这也是我在阅读时遇到的困惑)。固然最主要的仍是要在code中去实现这个系数卷积。[接下来的时间我会探索一下]。ide
文章正文:函数
从3D扫描或者是点云上提取几何特征是许多工做的第一步。例如注册(registration),重建(reconstruction)和跟踪(tracking)。现今的(state of art)方法须要将低阶(low-level)的特征做为输入来计算。性能
“低层次特征提取算法基于兴趣点所在表面及临近点的空间分布,提取基本的二维、三维几何属性做为兴趣点特征信息,如线性、平面性等。低层次特征提取算法复杂度低、运算效率高、内存消耗少,但领域尺寸的选择对识别效果影响较大。”学习
“高层次特征提取算法基于低层次几何特征及临近点空间分布,定义并计算更复杂的几何属性做为特征信息。根据几何属性的定义又可细分为基于显著性、基于直方图、基于显著性直方图与基于其余特征的四大类提取算法[1][2]。”spa
这里说明下指标:recall 中文叫查全率又叫召回率,其计算公式以下:.net
$recal{l_c} = \frac{{T{P_c}}}{{T{P_c} + F{N_c}}}$
意思是某一类判断正确占到该类总数的百分比。理所固然的想要提高recall能够遵循“宁肯错杀一百,不可放过一人”的思想。嘿嘿~
接着咱们给出做者用的网络框架:
这是一个ResUNet的架构,两个白框是输入输出层,每一个块用三个参数来描述:kernel size, stride, channel dimensionality.(核大小,步幅,和通道维度)除了最后一层其余的卷积层后面都有Batch normalization而后跟一个非线性(Relu).
那说了半天啥是全卷积特征啊?
全卷积特征做者说了:
我给你翻译翻译:
全卷积网络纯粹的由具备平移不变性的操做组成,像卷积和元素级别的非线性。(我不懂啥是元素级别的非线性啊?)一样,咱们吧稀疏卷积网络(注这里是由于他用的稀疏卷积因此将这个网络将spase convolution network)给一个稀疏的tensor用上,咱们获得的也是个稀疏的tensor,咱们把这个稀疏的tensor输出叫作全卷积特征。
OK。
重头戏来了,嘿嘿~
做者本身说本身搞了个新的Metric learning的新的损失函数。在看他的新家伙式儿以前,咱们不妨回顾下他站在谁的肩膀上搞了个大新闻。。
在前面的背景知识里有提到,就是negative mining 和标准的metric learning 的损失函数。这个做者说本身用全卷积网络了搞了个metric learning,并且还把negative mining整合到对比损失函数和三元组损失函数里了,他本身把整合后的这个新的损失函数叫作“Hardest contrastive"和”hardest-triplet"
网络:“我太难了(哭腔)"。
好言归正传,想要搞metric learning必须遵循两个约束,一个是相似的特征必须和彼此之间挨的足够近,对于分类来讲,确定是越近越好,那么有
$D({{f}_{i}},{{f}_{j}})\to 0\forall (i,j)\in P$
啥意思?${P}$是正确配对feature-match成功的特征,${(i,j)}$是其中的一个组合。相反的不类似的特征必然挨的越远越好,那咱们就给他一个警惕线称之为margin(注:margin在英语里由差距,差额之意)用数学来讲就是
$D({{f}_{i}},{{f}_{j}})>m\forall (i,j)\in N$
这里的${D}$是一种距离的衡量手段,原文没说啥距离,我以为应该能够用欧氏距离。
文章说Lin等人说这些对于正例的约束会致使网络过拟合,而后搞出个针对正例的基于margin的损失函数。式子里右下角的+号表明着大于0时就取这个值,不然就取0。说实话,我由于一直吧这里边的${I_{ij}}$当是个示性函数,觉得根据后边中括号里边的东西来取值,一直没搞懂,后来偶来见发现tm这两货是分开的。我真想吐槽这做者。。
做者的对正例加了个margin的约束后,能够解决网络过拟合的现像。
接着又弄个三元组(triplet loss)损失,我一并给出原文,瞅瞅:
在许多的文献了这篇文章后边也用了,这(4)里边的这个${f}$叫作anchor(中文名叫锚)而${f_+}$表明正例里边的元素。带负号的就不难说了。
在negative mining里边就说了,网络的性能会被小部分”人"左右,是谁呢?就是那些对于网络来讲很是难啃的硬骨头——“hardest negatives"
接着做者讨论一个容易被人忽视,但却相当重要的存在:全卷积特征的特性
传统的Metric learning 认为特征是独立同分布的(iid),为啥?做者说了:
由于batch是随机采样来的。
这里须要和你们回顾下啥是epoch,batch,iteration???
虽然说基础,但也要温故而知新嘛~
然而,然而...
在全卷积特征的提取过程当中,相邻特征的位置是相关的。(我也不懂...)