Category: SLAM&机器人

论文笔记:End-to-End Learnable Geometric Vision by Backpropagating PnP Optimization

本文针对传统 PnP 方法与深度学习的结合做了一些工作,整体思路比较简单,主要就是怎么把传统方法 PnP 的残差反向传播给神经网路,从而能够实现 End2End 的训练,以及无需给定数据关联下的计算(Blind PnP)。 1 Backpropagating a PnP solver (BPnP) 首先用数学语言描述 PnP 问题。 定义 g 是一个 PnP solver,其输出 y 是求解的 6DoF 姿态: 其中 x 代表特征点在图像上的...

CVPR 2021 Image Matching 挑战赛双冠算法回顾

借之前我们给公司提供的文章,总结一下前一段时间参赛的一些实验和思考。本文版权所有:旷视科技。原文链接:https://www.zhihu.com/question/32066833/answer/2041516754 Image Matching (图像匹配)是计算机视觉领域最基础的技术之一,它是指通过稀疏或者稠密特征匹配的方式,将两幅图像相同位置的局部信息进行关联。Image Matching 在很多领域均有广泛应用,比如机器人、无人车、AR/VR、图像/商品检索、指纹识别等等。 在今年刚刚结束的 CVPR 2021 Image Matching 比赛中,旷视 3D 组获得两冠一亚的成绩,本文介绍了他们的比赛方案、实验和一些思考。 比赛介绍 图像匹配是指将两幅图像具有相同或者相似属性的内容或结构进行像素上的识别与对齐。一般而言,待匹配的图像通常取自相同或相似的场景或目标,或者具有相同形状或语义信息的其他类型的图像对,从而具有一定的可匹配性。 Image Matching Challenge 本次 Image Matching Challenge(IMC) 比赛还是分为两个赛道 unlimited keypoints 和 restricted keypoints,即每张图片可提取特征点数量分别小于 8k 和...

论文笔记:Learning to Solve Nonlinear Least Squares for Monocular Stereo

本文利用端对端的网络处理直接法单目 SLAM 问题。作者在多个数据集和问题上实验,最后结果在准确性,参数量和速度上都超过LM方法。虽然整篇文章用于解决单目稠密SLAM问题,不过由于是在整个框架中优化后端的非线性最小二乘部分,其思想对于SLAM问题引入Learning具有普适性。与BA-Net 比较类似,是用深度学习改进后端优化的最基础贡献之一。 本文主要创新点如下: 1)提出了基于非线性最小二乘优化的一个端到端训练的框架; 2)先验和正则项学习都直接来自于训练数据; 3)第一个采用机器学习来优化光度误差的算法。 1 背景 本文背景比较类似于基于优化问题的直接法。 1.1 非线性最小二乘求解(Nonlinear Least Squares Solvers) 典型的非线性最小二乘问题如下: 其中 代表第 j 项的误差; 是优化变量; 代表目标函数。 通常求解这样的问题会采用数值优化的方法,例如 Gauss-Newton (GN)、Levenberg-Marquadt (LM) 算法等。 通常的做法是将误差进行一阶展开: 其中: 则最优迭代值为(使得当前误差函数取极小的迭代迭代方向): 在 Gauss-Newton (GN) 法中迭代步长通过下述方程求解: 而与 GN 算法不同,Levenberg-Marquadt (LM) 算法引入 改善收敛性,其迭代步长为: 以上是典型的通过梯度下降迭代优化最小二乘问题的步骤。 1.2...

论文笔记:Online Invariance Selection for Local Feature Descriptors

本篇文章是 ECCV 2020 Oral ,来自 ETH 的最新大作。本文主要侧重点在于通过神经网络的方式在线选择不变性的局部特征。通过很少的计算量增加,该方法可以比较通用地扩展到各种检测和描述子中,极大地提升实际场景的匹配效果。 主要创新点如下: 使用一个网络通过多任务学习的方式学习出适应多种变化组合的描述子 提出了一种基于 meta descriptor 的轻量级在线选择不变性描述子的方式 本文提出的多任务学习变化描述子以及在线选择不变性描述子的方式,可以拓展到任何传统或者基于 learning 的描述子上,具有很强的通用性。 1 Learning the best invariance for local descriptors 为了说明选择最佳不变性描述子的意义,作者举了个例子: 如上图所示,在纯旋转情况下 SIFT 可以有很好的表现,但是在没有旋转时, Upright SIFT (主方向固定为 (0, 1))...

论文笔记:From Coarse to Fine: Robust Hierarchical Localization at Large Scale

0 Background 视觉定位是指,在大尺度场景下,已知环境地图,给定任意一张图片,计算出该图片对应的位姿。目前比较流行的方法是,由粗到细两步定位。先通过图像检索的方式找到最接近的关键帧,再与该关键帧匹配局部特征。由于关键帧位姿已知,所以通过PnP等方法可以估计出当前帧位姿。两步定位可以避免从所有关键帧中直接匹配带来的时间复杂度,同时避免了将整个环境地图加载进内存带来的空间复杂度。 本文基于作者更早一些的工作《Leveraging Deep Visual Descriptors for Hierarchical Efficient Localization》,在那篇文章中,作者使用MobileNetVLAD实现图像检索,再使用局部特征(FREAK、SIFT等)实现位姿估计。 在看这篇文章之前可以看下 CVPR 2020 的 Long-term Visual Localization 比赛: 其中在手持设备定位方面,排在最前面的就是这篇 HF-Net + SuperGlue 的组合,可以看出其还是很有实战竞争力的。 1 Introduction 在视觉定位领域,基本上有两种主要的方向,一种是所谓的 End-to-end 方法,代表作是 PoseNet,这类方法直接用图片和 pose...

论文笔记:UnsuperPoint: End-to-end Unsupervised Interest Point Detector and Descriptor

SuperPoint 的工作取得了巨大的成功,但是有一个非常明显的问题就是训练和真值获取非常困难(采用仿真辅助)。在实际场景中,想要进行人工标注再 finetune 是比较难的。因此本文提出了一种无监督学习的方式同时获得关键点与描述子,虽然无监督,但是在数据集上取得了很好效果的同时也达到了很快的速度。 1 网络设计 本文的网络设计大体与 SuperPoint 一致,但是在 head 设计上面有很多细节不同,主要是 SuperPoint 主要使用分类方式离散地定位关键点坐标、是否为关键点等信息。在 UnsuperPoint 中,作者使用了 score map 作为关键点置信度指标、使用回归 offset 方式进行关键点定位。它的网络设计如下: 1.1 Backbone Module 本文的 Backbone module 与 SuperPoint 类似是一个...

将门创投分享《三维视觉与机器人》

document.getElementById("test").style.height=document.getElementById("test").scrollWidth*0.75+"px"; 1月16日我在将门创投在线直播分享了《三维视觉与机器人》,现将完整录像与 PPT 同步分享到这里。由于能力有限,经验不足,还望大家批评指正。 分享目录 SLAM 研究内容与应用概要 专题1:VIO& 多传感器融合 专题2:Struct SLAM 专题3:Visual Localization 专题4:激光SLAM 专题5:三维重建 专题6:语义 SLAM & HDMap 相关下载 PPT 下载 [pdf-embedder url="http://www.liuxiao.org/wp-content/uploads/2020/01/三维视觉与机器人_刘骁-将门-PDF.pdf"] PPT 下载 录像下载(by 将门创投) https://pan.baidu.com/s/1Sl9dYQsOxq4WVlotp8TNTg 相关地址 将门创投公众号:https://mp.weixin.qq.com/s/j_ZkLG4TrOu9o4hI31gPGw 视频回顾(B站):https://www.bilibili.com/video/av83616108/...

双目相机畸变和平行矫正

1 双目相机内外参 1.1 内参矩阵 左相机: 右相机: 1.2 畸变系数 左相机: 右相机: 1.3 外参系数 左相机外参: 和 右相机外参: 和 1.4 理想内参矩阵 构建一个两个相机共同的理想内参矩阵 2 典型步骤 参照 [2] 中的步骤,双目相机典型的畸变和平行矫正流程如下: 分别将两个图像的像素坐标系通过共同的内参矩阵转换到相机坐标系: 分别对两个相机坐标系进行旋转得到新的相机坐标系。通过左乘旋转矩阵R1和R2。 针对新的相机坐标分别进行左、右相机的去畸变操作。 去畸变操作结束后,分别用左、右相机的内参矩阵将左、右两个相机坐标系重新转换到左、右图像像素坐标系。 并分别用左、右源图像的像素值对新左、右图像的像素点进行插值。 3 OpenCV 中的相关函数 findChessboardCorners()用来发现棋盘格的角点位置,这里用的是haaris角点检测方法。cornerSubPix()角点位置精确到亚像素级。 stereoCalibrate()通过角点推算出两个相机的内参矩阵M1,M2和畸变系数D1,D2,当然外参矩阵随之也就计算出来了(在图像校正中还没有用到外参),这里用到的是张正友相机标定算法。 stereoRectify()根据内参矩阵和畸变系数计算右相机相对于左相机的旋转R和平移矩阵T,并将这个旋转和平移矩阵分解成左、右相机各旋转一半的旋转R1,R2和平移矩阵T1,T2,这里用到的是bouguet极线校正的方法。 initUndistortRectifyMap()和remap()对左右相机拍摄的图像进行校正(在今后的文章中将会详细介绍实现方法和步骤)。 参考文献 [1] https://blog.csdn.net/wangxiaokun671903/article/details/37935113 [2] https://blog.csdn.net/wangxiaokun671903/article/details/38017055...

论文笔记:Deep Closest Point: Learning Representations for Point Cloud Registration

DCP 是一篇基于 Deep Learning 来解决 ICP 问题的,其中 Deep Learning 部分主要用于做匹配,后端仍然沿用 SVD 的方法。比很多 MLP 直接出 Pose 的合理,也取得了更好的效果。在与传统方法例如 Go-ICP 以及深度学习方法 PointNetLK 的对比中,都取得了一定的优势。 1 经典 ICP 问题 这一部分在之前的论文笔记中已经有了比较详细的阐述,参见:使用 SVD 方法求解...

使用 SVD 方法求解 ICP 问题

本文是结合《Least-Squares Rigid Motion Using SVD》和《Least-Squares Fitting of Two 3-D Point Sets》两篇文章写的一个总结,里面有一些是自己的理解不一定正确。 1 问题定义 假设我们有两个点云集合 和 ,则我们定义的 ICP 问题是通过最小化点对之间距离获得相应的 Pose: 其中 代表每个点的权重。R 和 t 是我们所要求的旋转矩阵和平移向量。 2 计算平移 我们分两步求解旋转和平移,首先求解 t。固定...