GCNv2阅读笔记,用deep feature替代ORB

GCNv2阅读笔记,用deep feature替代ORB

1. Geometric Correspondence Network for Camera Motion Estimation, J. Tang, J. Folkesson and P. Jensfelt, RA-L and ICRA 2018

2. GCNv2: Efficient Correspondence Prediction for Real-Time SLAM, J. Tang, L. Ericson, J. Folkesson and P. Jensfelt, in arXiv:1902.11046, 2019

jiexiong2016/GCNv2_SLAMgithub.com图标

用deep feature替换ORB-SLAM中的ORB描述子,并且做到了实时


网络结构:


输入: 前帧 image1, 后帧 image2

输出: Feature1, Feature2 256x320x240 与ORB的维度相同这样方便用ORB-SLAM

Mask1, Mask2 1x320x240 每个像素为keypoint的概率

同时输出关键点位置keypoint location 和特征descriptors

设angle为0 (ORB描述子里面额外有这个angle项?)


However, a CNN is capable of generating more representative features with a larger receptive field than classical methods.

CNN相比传统方法,包括但不限于局部feature,有能力产生更大感受野的feature



卷积: ResNet作为backbone

shallow bi-directional recurrent convolutional network (RCNN)



定义loss:

1. Feature loss 用 Triplet Loss:


+正样本(通过真值pose将image1上的keypoint映射到image2), -负样本

负样本: feature上的汉明距离相近且与真值之间的像素距离大于threshold c (因为有噪声,标定误差,真值误差等等,c以内的像素可能是由于噪声引起的)

这里的小于号"<"应该写成大于号">"(A small question about paper · Issue #4 · jiexiong2016/GCNv2_SLAM)

用于相似性(feature)区分,使其与真值更近,与负样本更远



2. Mask loss:

alpha是超参,用于平衡正负样本(keypoint是正样本,远远少于负样本)


训练数据:

在image1上用角点检测方法得到keypoint,并根据真值pose投影到image2上, 这样mask loss的监督信号就有了

V1:Harris algorithm 跑两次 (第一次整张图,第二次用sub-image/四分之一)

V2: Shi-Tomasi corners 16x16 grid "This leads to better distribution of keypoints and the objective function directly reflects the ability to track the keypoints based on texture." 实际上,CNN的感受野可以很大,而不像传统角点检测关注的非常local


pipeline 与 ORB 对比:

总结:

效果看起来很好,实时性和精度都很好,开源了代码

他只替换掉ORB的前端,工作量少,易于验证成果,对比控制变量令人信服,这种科研思路值得借鉴(去改一个系统的某个模块)

这种训练,不需要标注数据,只需要用传统描述子去guidance网络,设计好loss即可(location+feature)

用了dl,但还是用low-level的角点检测方法去guidance,可能CNN提取的feature的维度里包含了很大感受野的信息在里面? 但是会不会有的点不被角点检测方法检测到,但是却有更高维的语义信息,是有意义的keypoint,这个keypoint不会被学到,corner detection没法给guidance.

要想证明这个猜想:就得给出某个点,1.不被角点检测得到,2.它具有有意义的信息;感觉提升不会很明显.

发布于 2019-03-22