#ICCV2019论文阅读#Fully_convolutional_Features

一 知识背景算法

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(点云)架构

  “在逆向工程中经过测量仪器获得的产品外观表面的点数据集合也称之为点云,一般使用三维坐标测量机所获得的点数量比较少,点与点的间距也比较大,叫稀疏点云;而使用三维激光扫描仪或照相式扫描仪获得的点云,点数量比较大而且比较密集,叫密集点云,框架

点云是在和目标表面特性的海量点集合。根据激光测量原理获得的点云,包括三维坐标(XYZ)和激光反射强度(Intensity)。根据摄影测量原理获得的点云,包括三维坐标(XYZ)和颜色信息(RGB)。
结合激光测量和摄影测量原理获得点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)。在获取物体表面每一个采样点的空间坐标后,获得的是一个点的集合,称之为“点云”(Point Cloud)。点云的格式:; *.pts; *.asc ; *.dat; *.stl ;*.imw;*.xyz;。”
-----from 百度百科。
2.patch-based features
即基于一块数据的特征。
3.fully convolutional networks
具体可参见Long[2014]年的论文 FCN,还可参见这篇博客 CSDN_Blog。简单的说,Long等人将传统CNN网络如AlexNet, VGGNet的后几个全链接层所有改装成卷积层,由于Long提到全链接层能够看做卷积核覆盖整个输入的卷积(”these fully connected layers can also be viewed as convolutions with kernels that cover their entire input regions."),这种转换很是有效的提高了计算效率,由于它没必要重复的计算重叠的patch上的卷积。
4 deep metric learning(深度度量学习
如何有效的度量物体间的类似性?若是经过使用深度学习的方法去学习到这种度量的策略便是deep metric learning。现有的依赖对比(contrastive loss)和三元组损失(triplet loss),因为正负样本可组合的数量极多,所以人们多采用仅对训练有意义的正负样本采样,也被称为“难例挖掘”(hard negative mining)。可参考 这篇综述。综述里包括了对 hard negetive-mining, contrastive loss, triplet loss的解释说明。
5.hard negative mining(难例挖掘)
参见此知乎回答。大量的简单负例会使真正的对训练有意义的难例的梯度被“淹没”。难例挖掘就是在训练时,尽可能多挖掘其难负例加入负样本集,这样比easy negative组成的负样本集更好。[具体的R-CNN中的hard negative mining]。
6.sparse tensors和做者定义的generalized(广义)sparse convolution
在做者的工做中的3D data是对物体表面的3D扫描。在这样的3D空间中,大部分的空间是empty的。为了解决这种高维的稀疏矩阵,论文做者用sparse tensor,一个sparse tensor能够用一个矩阵Matrix去表示其坐标,另外一个矩阵'向量'表明其特征(Features):

 

 

接着做者定义了广义的稀疏卷积。系数卷积不是第一次出现,做者在这里只是描述。不过做者这种定义方法确实不容易理解,个人意思是所用的数学公式。如图所示。

 

 

 在稀疏的卷积中和权值${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

 或者是基于有限感知域的块特征。在该文章中做者提出了有3D全卷积网络计算得来的一种全卷积的几何特征。同时做者提出了一个metric learning 的损失函数,这个损失函数极大的提升了算法的性能。
接着做者吹捧了一波本身的全卷积几何特征,说这种特征是很紧凑(compact),而后能结合很大的空间的上下文的信息,并且可以拓展到很大的场景(scenes)。接着说这种特征不须要预处理(preprocessing),在室内和室外的数据集上比以前最精确的方法快290倍,并且本身的特征维数只有32维哦~
给张图感觉下全卷积特征的“统治力”:

 

 这里说明下指标: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???

  • epoch:表明在整个数据集上的一次迭代(全部一切都包含在训练模型中);
  • batch:是指当咱们没法一次性将整个数据集输入神经网络时,将数据集分割成的一些更小的数据集批次;
  • iteration:是指运行一个 epoch 所需的 batch 数。举个例子,若是咱们的数据集包含 10000 张图像,批大小(batch_size)是 200,则一个 epoch 就包含 50 次迭代(10000 除以 200)。

虽然说基础,但也要温故而知新嘛~

然而,然而...

在全卷积特征的提取过程当中,相邻特征的位置是相关的。(我也不懂...)

相关文章
相关标签/搜索