[CVPR 2020] D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features
零、概要
- 论文: D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features
- tag:
CVPR 2020
;keypoints
,registration
- 代码: https://github.com/XuyangBai/D3Feat
- 作者: Xuyang Bai, Zixin Luo, Lei Zhou, Hongbo Fu, Long Quan, Chiew-Lan Tai
- 机构: Hong Kong University of Science and Technology, City University of Hong Kong
- 笔者整理了一个最近几年150多篇点云的论文列表,欢迎大家一块学习交流。
0.0 摘要
一个成功的点云配准通常依赖于通过有区分性的3D局部特征建立鲁棒的稀疏匹配。尽管基于学习的三维特征描述子发展迅速,但三维特征检测器却很少受到关注,更没有考虑到这两个任务的联合学习。在这篇论文中,作者利用一个3D全卷积网络来处理三维点云,并提出一个新颖且实用的学习机制,可以密集地预测每个3D点的检测分数(detection score)和特征描述。特别地,作者提出了一种克服3D点云固有密度变化的关键点选择策略,并进一步提出了在训练过程中有特征匹配结果引导的自监督检测器损失函数。最后,D3Feat在indoor和outdoor数据集上均获得了SOTA结果,在ETH数据集上显示了其强大的泛化能力。在实际应用中,作者表明,通过采用可靠的特征检测器,只需对少量特征进行采样,就可以实现精确、快扫的点云对齐(alignment)。
一、论文的出发点和贡献
点云配准的目的是寻找两个具有重叠(overlap)点云直接最佳变换,这是SLAM等应用的基本任务。而局部关键点的检测和描述是获得鲁棒点云对齐结果的两个关键。
对于关键点检测,随机选择一组点进行特征描述,是一个选择。这会带来以下几个问题: (1)随机选择的点可能位于非显著区域(如平面等)或者属于噪声点,影响匹配结果; (2)为了获得完整的场景覆盖,需要对随机点进行过采样,这会大大降低整个匹配过程的效率。作者认为,少量的关键点就足以成功地对齐点云,而良好的关键点点位可以进一步提高配准精度。
然而,基于学习的三维关键点检测器在以往的研究中并没有得到足够的重视。3DFeat-Net[ECCV 2018]预测了patch-wise的检测分数,只考虑了有限的空间上下文,并且在实践中对整个点云进行dense预测时并不使用。USIP[ICCV 2019]提出了无监督方法来学习关键点检测,但其无法对检测分数进行密集预测;同时,USIP没有检测器和描述器的联合训练,产生的检测器可能与描述符的能力不匹配,从而限制了学习到的3D特征。
因此,作者提出了D3Feat(Dense Detection and Description of 3D local Features),实现特征检测器和特征描述子的联合学习。作者的主要贡献:
- 基于全卷积网络,采用联合学习框架实现3D局部特征检测和描述.
- 提出了一种新的密度不变(density-invariant)的关键点选择策略,这是获得3D点云可重复关键点的重要策略。
- 提出了一种自监督的检测器损失,该方法利用训练过程中的特征匹配结果进行有意义的指导,这保证了描述子和检测器的收敛性。
二、论文的方法
给定一组点集P∈RN×3P \in \mathbb R^{N \times 3}P∈RN×3和对应的一组特征Fin∈RN×DinF_{in} \in \mathbb R^{N \times D_{in}}Fin∈RN×Din,令xix_ixi和fif_ifi分别表示P中的第iii个点和FinF_{in}Fin中的第iii个特征。
2.1 密集特征描述子(Dense Feature Description)
D3Feat的骨干网络是全卷积网络,如Figure 1(Left)所示,它是一种U-Net式的网络架构,其中的卷积层是采用的normalized的KPConv(kernel point convolution):
(Fin∗g)=1∣Nx∣Σxi∈Nxg(xi−x)fi(F_{in} * g) = \frac{1}{|N_x|}\Sigma_{x_i \in N_x}g(x_i - x)f_i(Fin∗g)=∣Nx∣1Σxi∈Nxg(xi−x)fi
经过上述全卷积网络,输出学习到的特征F∈RN×cF \in \mathbb R^{N \times c}F∈RN×c,ccc是特征向量的维度,可以看到网络输出了每个点的特征。最终的特征采用L2归一化到了单位长度。
2.2 密集关键点检测(Dense Keypoint Detection)
前面已经提取了每个点的特征,这里面对的问题是如何利用学习到的特征来刻画关键点 ?
作者借鉴D2-Net(CVPR 2019)中的思想,定义3D点云中关键点。对于点xix_ixi,首先在特征通道(channel)方向上寻找最大值,记其索引为k;接着和点xix_ixi的邻域内的其他点xj∈Nxix_j \in N_{x_i}xj∈Nxi的特征在第k维上进行比较,如果第iii个点xix_ixi的第k个特征Fi,kF_{i, k}Fi,k大于邻域内其它点的第k个特征Fj,k,j∈xjF_{j, k}, j \in x_jFj,k,j∈xj,则表示这个点是关键点。通俗地讲,关键点就是特征在通道维度和空间维度都是最大值(可能不是那么准确)的点。
为了和论文中的符号对应,定义Dk=F:k,Dk∈RN,k=1,2,...,cD^k = F_{:k}, D^k \in \mathbb R^N, k = 1, 2, ..., cDk=F:k,Dk∈RN,k=1,2,...,c, 其中F:kF_{:k}F:k表示F∈RN×cF \in \mathbb R^{N \times c}F∈RN×c的第kkk列,那么
xix_ixi是关键点 <=> k=argmaxtDitk = \arg \max_{t} D_i^tk=argmaxtDit & i=argmaxj∈NxIDjki = \arg \max_{j \in N_{x_I}}D_j^ki=argmaxj∈NxIDjk
在网络的预测阶段,采用了这种方式选择关键点。在网络的训练阶段,作者没有直接采用上述方式, 而是定义saliency score和channel max score, 如Figure 1(right)。
作者设计了一种密度不变性(density-invariant)的显著性分数(saliency score):
αik=ln(1+exp(Dik−1NxiΣxj∈NxiDjk))\alpha_i^k = ln(1 + \text{exp}(D_i^k - \frac{1}{N_{x_i}}\Sigma_{x_j \in N_{x_i}}D_j^k))αik=ln(1+exp(Dik−Nxi1Σxj∈NxiDjk))
通过计算当前点xix_ixi的特征与局部邻域的平均特征之间的差值来得到当前点xix_ixi的显著性分数,而且αik\alpha_i^kαik表示第iii个点第kkk个特征的显著性。
对于点xix_ixi,选择最有代表性的通道,作者设计了channel max score:
βik=DikmaxtDit\beta_i^k = \frac{D_i^k}{\max_t D_i^t}βik=maxtDitDik
最终,关键点检测得分为:
si=maxkαikβiks_i = \max_k\alpha_i^k\beta_i^ksi=kmaxαikβik
这样就获得了每个点表示关键点的分数,论文中选择具有比较高分数的点作为关键点。
2.3 训练
到这里,已经说明了如何产生特征描述子,以及如何使用特征描述子来刻画关键点分数。但是,如何训练呢?
设计合适的监督信号是特征描述子和关键点检测器联合学习的关键。作者使用了度量学习loss来监督描述子,使用自监督loss来监督特征点检测器。
给定两个具有overlap的点云P和Q,和n个pairs的对应点(correspondence points)(论文中设置n=64)。假设(Ai,Bi)(A_i, B_i)(Ai,Bi)表示第iii个对应点对,dAid_{A_i}dAi和dBid_{B_i}dBi表示对应的特征,sAis_{A_i}sAi和sBis_{B_i}sBi表示对应的关键点score。
特征描述子损失(Descriptor loss)
特征描述子损失是一个constrastive loss,
dpos(i)=∣∣dAi−dBi∣∣2d_{pos}(i) = ||d_{A_i} - d_{B_i}||_2dpos(i)=∣∣dAi−dBi∣∣2
dneg(i)=min{∣∣dAi−dBj∣∣2,s.t.∣∣Bj−Bi∣∣2<R}d_{neg}(i) = \min \lbrace||d_{A_i} - d_{B_j}||_2, s.t. ||B_j - B_i||_2 < R \rbracedneg(i)=min{∣∣dAi−dBj∣∣2,s.t.∣∣Bj−Bi∣∣2<R}
这里R是安全半径,BjB_jBj是安全半径之外的hardest的负样本。
Contrastive margin loss定义为:
Ldesc=1nΣi[max(0,dpos(i)−Mpos)+max(0,Mneg−dneg(i))]L_{desc} = \frac{1}{n}\Sigma_i[\max(0, d_{pos}(i) - M_{pos}) + \max(0, M_{neg} - d_{neg}(i))]Ldesc=n1Σi[max(0,dpos(i)−Mpos)+max(0,Mneg−dneg(i))]
MposM_{pos}Mpos是positive pairs的margin,MnegM_{neg}Mneg是negative pairs的margin。论文中Mpos=0.1,Mneg=1.4M_{pos} = 0.1, M_{neg} = 1.4Mpos=0.1,Mneg=1.4
检测器损失(Detector loss)
Ldet=1nΣi[(dpos(i)−dneg(i))(sAi+sBi)]L_{det} = \frac{1}{n}\Sigma_i[(d_{pos}(i) - d_{neg}(i))(s_{A_i} + s_{B_i})]Ldet=n1Σi[(dpos(i)−dneg(i))(sAi+sBi)]
直观上,如果dpos(i)<dneg(i)d_{pos}(i) < d_{neg}(i)dpos(i)<dneg(i),表明这个correspondence points可以正确的匹配上,因此LdetL_{det}Ldet使SAiS_{A_i}SAi和SBiS_{B_i}SBi尽量大; 相反,如果dpos(i)>dneg(i)d_{pos}(i) > d_{neg}(i)dpos(i)>dneg(i),表明该correspondence points不可以正确匹配上,因此LdetL_{det}Ldet使SAiS_{A_i}SAi和SBiS_{B_i}SBi尽量小。即,检测器应该对匹配正确的pairs预测较高的分数,对不匹配的pairs预测较低的分数。
三、论文的实验
暂略。
[CVPR 2020] D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features相关推荐
- (CVPR 20) D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features
想要了解深入了解D3Feat产生的原因,建议可以先去看一下D2Net[1],再来看D3Feat. D3Feat核心优势: D3Feat提供了一种联合框架,在学习描述子的同时进行关键点的检测,传统匹配可 ...
- CVPR 2020 论文和开源项目合集(Papers with Code)
CVPR 2020 论文开源项目合集,同时欢迎各位大佬提交issue,分享CVPR 2020开源项目 [推荐阅读] CVPR 2020 virtual ECCV 2020 论文开源项目合集来了:htt ...
- CVPR 2020代码开源的论文最全合集
前言 之前Amusi整理了1467篇CVPR 2020所有论文PDF下载资源,详见:全在这里了! CVPR2020-Code CVPR 2020 论文开源项目合集,同时欢迎各位大佬提交issue,分享 ...
- 300+篇CVPR 2020代码开源的论文,全在这里了!
CVPR 2020代码开源项目一放出,得到不少CVers的关注,重点是:开源和根据方向分类.目前star数已经来到2000+,期间也有不少国内外的CVPR 2020论文作者提交issue,分享他们的工 ...
- 300+篇CVPR 2020代码开源的论文,全在这里了
300+篇CVPR 2020代码开源的论文,全在这里了! CVPR 2020代码开源项目一放出,得到不少CVers的关注,重点是:开源和根据方向分类.目前star数已经来到2000+,期间也有不少国内 ...
- CVPR 2020 论文大盘点-目标检测篇
本文盘点CVPR 2020 所有目标检测相关论文,总计64篇论文,感觉最大的特点是3D目标检测研究工作很多有21篇,尤其是工业界单位,可能是自动驾驶热带来的.2D目标检测依然很热,神经架构搜索也开始在 ...
- CVPR 2020 论文大盘点-行人检测与重识别篇
本文盘点CVPR 2020 所有行人检测(Pedestrian Detection)与人员重识别(Person Re-Identification,ReID)相关论文,在视频监控领域该方向技术应用广泛 ...
- DENSE 数据集 - STF 数据集(CVPR 2020)
DENSE 数据集 - STF 数据集 - Seeing Through Fog Without Seeing Fog: Deep Multimodal Sensor Fusion in Unseen ...
- 【CVPR 2021】Joint Generative and Contrastive Learning for Unsupervised Person Re-identification
方法概述 1,提出了一种用于无监督行人重识别的联合生成对比学习框架,生成和对比模块互相提高对方的性能. 2, 在生成模块中,我们引入了3D网格生成器. 3, 在对比模块,我们提出了一种视角无关的损失, ...
最新文章
- 微软职位内部推荐-Software Development Engineer II
- 皮一皮:真正的情侣服...一家人轮流穿...
- n阶幻方c语言编程,求单偶阶与双偶阶幻方编程思想及其算法!
- Not Equal on a Segment(CF-622C)
- 【今日CV 视觉论文速览】 17 Dec 2018
- 无线打印服务器 惠普打印机,连接您的HP无线打印机 | 无线打印中心 | 惠普中国...
- 【华为云技术分享】Scrum Master如何引导团队中的刺头
- asp.net 读取excel文件的一些方法,NPOI方法
- sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第一部分
- 史上最强GAN:训练费10万起,现在免费体验,画风鬼畜又逼真
- Windows Server 2012 R2 VDI系列(八)—发布RemoteDesktop
- exchange EWS 开发随笔二
- logistic和logitraw
- html网站右侧广告位,分享一个html+css对联广告位的代码,网站通用
- java文件内容比较_怎么用JAVA技术编写一个两文件内容比较的程序?
- 百度程序员删库跑路被逮捕!
- 人民币大写的正确写法(开票据事项)
- 什么是python web
- 小程序游戏开发三个引擎用哪个好呢 Cocos,Egret,Laya?
- Hadoop-The variance for this alert is **MB which is 20% of the **MB average (**MB is the limit)
热门文章
- 【书谷】一个免费赠送图书的好网站,推荐给书虫们
- 短链接如何快速生成?短链接的应用场景有哪些?
- 设f(x)=∑x^n/n^2,证明f(x)+f(1-x)+lnxln(1-x)=∑1/n^2
- git 从远程服务器更新本地项目
- JS实现仿新浪微博大厅和腾讯微博首页滚动效果_前端开发
- 前端CSS移动端适配
- 为什么说串行比并行快
- referer与referrer
- 浅析组合子集和的互异性
- 教你免费且快速地搭建个人网站