惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
L
LINUX DO - 最新话题
TaoSecurity Blog
TaoSecurity Blog
S
Security Affairs
H
Hacker News: Front Page
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Hacker News: Ask HN
Hacker News: Ask HN
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
I
InfoQ
The Register - Security
The Register - Security
T
Tor Project blog
T
Threat Research - Cisco Blogs
Spread Privacy
Spread Privacy
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The GitHub Blog
The GitHub Blog
MongoDB | Blog
MongoDB | Blog
Webroot Blog
Webroot Blog
Recent Announcements
Recent Announcements
Vercel News
Vercel News
F
Fortinet All Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
G
Google Developers Blog
N
Netflix TechBlog - Medium
U
Unit 42
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
博客园 - 叶小钗
T
Tailwind CSS Blog
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Help Net Security
Help Net Security
A
About on SuperTechFans
Recorded Future
Recorded Future
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
D
DataBreaches.Net
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
The Blog of Author Tim Ferriss
PCI Perspectives
PCI Perspectives
F
Full Disclosure
美团技术团队
L
Lohrmann on Cybersecurity
H
Hackread – Cybersecurity News, Data Breaches, AI and More

RealCat

📝笔记:图像匹配挑战赛回顾(CVPR 2023) | RealCat 📝笔记:Stable Diffusion QR-Code | RealCat 📝笔记:Python zip() | RealCat 📝笔记:图像匹配挑战赛回顾(CVPR 2022) | RealCat 📝笔记:5秒钟训练NeRF,NVIDIA Instant NeRF 测试 | RealCat 📝笔记:Visualization Localization Revisited(under construction...) | RealCat 📝笔记:使用vlfeat的Matlab接口简单实现BOW以及VLAD | RealCat 📝笔记:一些关于KD-Tree的知识点 | RealCat 📝笔记:简明矩阵求导术之分子布局与分母布局 | RealCat 📝笔记:使用Clockwise/Spiral Rule技巧轻松读懂变量/函数声明 | RealCat 🔨工具:优雅地下载Youtube视频 | RealCat 🔨工具:每日自动获取arXiv论文摘要 | RealCat 🎃资料: 从Eigen向量化谈内存对齐 | RealCat 📝笔记:图像匹配挑战赛总结 (SuperPoint + SuperGlue 缝缝补补还能再战一年) | RealCat 📝笔记:ICCV 2021最佳学生论文 | COLMAP 优化建图组件 Pixel-Perfect SFM | RealCat 📝笔记:CVPR 2021 | PixLoc: 端到端场景无关视觉定位算法(SuperGlue一作出品) | RealCat 📝笔记:港大MARS实验室 R3LIVE (R2LIVE升级) 鲁棒实时RGB雷达视觉惯导紧耦合状态估计 | RealCat 🔨工具:bash常用命令 | RealCat 📝笔记:VSLAM基础知识导图 | RealCat 📝笔记:Patch-NetVLAD论文阅读 | RealCat 📝笔记:光场相机能否用于SLAM? | RealCat 📝笔记:读写文本常用操作 | RealCat 📝笔记:CVPR 2020 视觉定位挑战赛冠军方案 | RealCat 📝笔记:三维重建系列 COLMAP: Structure-from-Motion Revisited | RealCat 🐈芒果驾到 | RealCat 🌡️秋天到了,还是很热 | RealCat 📝笔记:AdaLAM: Revisiting Handcrafted Outlier Detection 超强外点滤除算法 | RealCat 🔨工具:使用vercel加速Hexo静态博客访问 | RealCat 📝笔记:ORB-SLAM3论文阅读 | RealCat 🔨工具:解决Github挂图及龟速访问 | RealCat 📝笔记:图解卡尔曼滤波 | RealCat 🔨工具:国内加速访问arxiv | RealCat 📝笔记:CVPR2020图像匹配挑战赛,新数据集+新评测方法,SOTA正瑟瑟发抖! | RealCat 📝笔记:SuperGlue:Learning Feature Matching with Graph Neural Networks论文阅读 | RealCat 📝笔记:SLAM常见问题(四):求解ICP,利用SVD分解得到旋转矩阵 | RealCat 📝笔记:SLAM常见问题(五):Singular Value Decomposition(SVD)分解 | RealCat 📝笔记:SLAM常见问题(三):PNP | RealCat 📝笔记:SLAM常见问题(二):重定位Relocalisation | RealCat 📝笔记:SLAM常见问题(一):SearchByBoW | RealCat 📝笔记:2019年浙大CADCG暑假SLAM培训部分课件 | RealCat 🔨工具:Filebrowser:一款轻量级个人网盘 | RealCat 📝笔记:SuperPoint: Self-Supervised Interest Point Detection and Description 自监督深度学习特征点 | RealCat Black Hole | RealCat 🔥Awesome CV Works | RealCat 🔨工具:开启SSR模式 | RealCat 虚实:「未麻的部屋」 | RealCat 笔记:李群与李代数求导 | RealCat 资料:ORB SLAM2 阅读报告 | RealCat 资料:SLAM草稿 | RealCat 资料:Line Segments Detection | RealCat 资料:Eigen与Matlab语句之对应关系 | RealCat 笔记:清华-谷歌人工智能研讨会(Tsinghua-Google AI Symposium) | RealCat Think Different | RealCat Light Field Depth Estimation | RealCat CV Related References | RealCat 立体视觉综述:Stereo Vision Overview | RealCat Lytro的光场AR之路:从巅峰到死亡 | RealCat Stephen Hawking | RealCat 常用的生产力工具 | RealCat 深度学习在深度(视差)估计中的应用(2) | RealCat 深度学习在深度(视差)估计中的应用(1) | RealCat Matlab Deep Learning学习笔记 | RealCat CNN框架(CNN Architectures) | RealCat 理解LSTM网络【译】 | RealCat 降维之PCA主成分分析原理 | RealCat 📝笔记:SIFT和SURF特性提取总结 | RealCat 统计学习方法总结 | RealCat Ubuntu上使用Git以及GitHub | RealCat 机器学习修炼手册 | RealCat 初试HCI光场数据集 | RealCat 实习季到了,大家又浮躁了起来 | RealCat 日本与美国之行 | RealCat Light Field 光场以及MATLAB光场工具包(LightField ToolBox)的使用说明 | RealCat MATLAB:多个不同维度的箱线图画在一起 | RealCat AR形势与应用 | RealCat Hexo+Github+jsDelivr+Vercel建站备忘录 | RealCat Markdown 学习 | RealCat 复试那些事儿 | RealCat
📝笔记:GMS一种基于运动统计的快速鲁棒特征匹配过滤算法 | RealCat
2020-09-05 · via RealCat

今天要介绍的文章是边佳旺在CVPR2017以及IJCV2020发表的GMS,论文名是”GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence”。同之前介绍的外点滤除算法AdaLAM的目的相同,该算法能够实现对初始匹配的筛选,以减少错误匹配。

(a)图是ORB+Lowe Ratio的结果,有很多错误的匹配;(b)图是ORB+Lowe Ratio+GMS的结果,匹配效果明显变好。 首先祭出代码 Repo

GMS-Feature-Matcher

原有技术问题

原有算法复杂,为了达到好的效果,设计的算法比较复杂,导致运行速度慢,性价比低,无法部署在实时性要求较高的系统中。

新技术创新点

  1. 将运动平滑约束转换为剔除错误匹配的统计量,实验证明该算法能够应对较为棘手的场景;
  2. 提出了一种高效的基于网格的得分估计器,使得该算法能够用于实时特征匹配;
  3. 能够取得比Lowe Ratio更好的特征匹配筛选效果,该结论已经在传统特征如SIFT,SURF以及CNN特征如LIFT上得到验证;

新技术主要框架以及关键技术点

首先给出第一个假设:

运动平滑性:真实匹配的小邻域内匹配通常是在三维空间中的同一块区域。同样地,一个错误匹配的邻域内的匹配通常是几何上不同的三维位置。

这个假设告诉我们:正确匹配的邻域内有多个支持它的匹配,而错误匹配的邻域内支持它的匹配是很少的。这里其实隐含着一个逻辑:作者通过观察发现,正确匹配的邻域内匹配的数量多的概率就会很大,反之则少;那么根据贝叶斯法则,那些匹配对邻域内有很多匹配的匹配关系有很大概率是正确匹配。 一句话:正确匹配周围会有较多的匹配去支持它,而错误的匹配周围支持它的匹配很少

运动统计

输入图像为,它们分别有个特征匹配;

表示图到图的最近邻匹配;

其中表示像素点的匹配;定义的邻域为:

以及它的相似邻域可以表示为:

其中表示两点之间的欧式距离,为距离阈值,对于:

它表示在中元素的个数,即匹配运动支持。 如下图所示:黄圈区域即表示邻域。支持它的匹配对为,错误匹配没有支持它的匹配对,即。那么我们就可以通过统计的方式知道哪些匹配是正确的,哪些是错误的。

由上文我们知道:统计支持域内的匹配数量就能够判别正确/错误匹配。于是我们可以对建模,如下:

其中表示二项分布:

表示邻域内匹配对的数量,分别表示正确/错误匹配被其某个邻域窗口匹配支持的概率。

进一步解释:是受特征质量的控制,即接近匹配的正确率。通常很小,因为错误匹配几乎随机分布在图像范围内。上式的期望为:

方差为:

于是真假匹配的可区分度被表示为如下形式(均值差异比方差之和):

上式告诉我们:

如果时,。也就是说,当图像中的匹配点越多,此时正确与错误匹配的可区分度就越强!同时,即使是在稍微大一丁点的情况下,也可以通过增多特征点的数量来弥补正确匹配与错误匹配区分程度不足的缺点;当然,也可以通过提高特征质量来增加正确/错误匹配之间的区分度。

上图展示了作者在Oxford Affine Dataset上验证模型合理性的示意图。利用SIFT特征进行匹配,根据真值标记出正确以及错误匹配。统计每个匹配所在小邻域内的匹配数量。可以发现,正确匹配的支持域得分明显高于错误匹配,即使在非常困难的匹配序列上,该现象仍然存在。

因此,可通过对设置阈值来判定是正确或者错误匹配:

上式中,以及分别表示正确/错误匹配集合,的阈值被设置为:

其中为超参数,经验值为4~6。

基于网格的框架

看到这里,大家肯定有一个疑问:如何高效地实现上述算法呢?难道对每一个匹配画个圈圈,然后统计圈圈内的匹配数?当然不是,本文设计了一种基于划分网格的算法对上述算法进行加速。将两幅图像划分为多个不重合的网格:以及表示为落到网格中的一个匹配对,如上图中的一个红线段。于是邻域(表示在网格网格中的匹配)被重新定义为:

相似邻域被重新定义为:

上面的两个式子中,表示某个网格,表示落在中的匹配对,表示同时落在中的匹配对。换句话说,本文将落在同一个网格中的匹配当作邻域,将同时落在两个网格中的匹配称为相似邻域,即cell-pair

注意:一个cell-pair中的匹配满足运动平滑性假设,所以在判断匹配关系是正确还是错误时,仅需要判定一个cell-pair中的所有匹配是否正确即可,无需逐个匹配判断。此外,不需要确定所有可能的cell-pair,而是只检查与第一个图像网格匹配数量最多的一个cell-pair即可。

运动核

如果网格很小,则很少邻域信息将被考虑, 这会降低算法性能。 但是,如果网格很大,则将包括更多不正确的对应关系。为解决这个矛盾,我们将网格大小设置为较小以提高准确性,并提出运动内核以考虑更多邻域信息。

考虑了原有网格邻域的8个网格,构成一个更大的网格

于是我们从新定义了邻域:

其中; 重新定义相似邻域:

其中:

多尺度+多旋转

为了应对匹配过程中的尺度与旋转问题,本文提出了多尺度以及多旋转策略。

多尺度

固定一个图像网格,假设网格大小为,改变另一个图像的网格大小为,其中有5个候选的取值,分别为

在不同尺度的网格上运行GMS算法,然后统计最好的匹配结果。如果场景的尺度发生较大改变,此时可以设置更多的候选值或者增大

多旋转

利用旋转运动核模拟不同方向的旋转,如下图所示,固定,对按照顺时针旋转,这样可以得到8个运动核。然后利用GMS算法在所有的运动核上,然后选择最好的结果(选择匹配数量最多那个)。

伪代码

综上,算法伪代码如下:

局限性

  1. 首先,算法假设图像运动是分段平滑的时,在违反假设的区域,例如图像边界,性能可能退化;
  2. 其次,在视觉上相似但空间位置不同的图像区域,算法性能受到限制。此问题通常发生在具有大量重复纹理的场景中;
  3. 最后,由于算法使用了网格化对图像进行处理,算法判定正确的匹配网格中仍然存在不准确匹配。

实验

旋转以及尺度变化

高精确率与召回率

算法快速

GMS能够在PC端速度2ms,multi-scale(GMS-S)以及multi-rotation(GMS-R)会增加一定的耗时。

高效解算位姿

求解位姿速度快,且位姿精确。

有利于SLAM初始化

集成到SLAM也可获得较好的结果(该实验不够充分,仅测试了将GMS集成到SLAM初始化的阶段,为了展示GMS能够更快/更好的进行初始化,同时能够产生较多的地图点)。

借鉴意义

  1. 本文提供了一种高效/快速的外点滤除算法,能够在PC端实现实现实时滤除外点;
  2. 本算法已经被集成到OpenCV中,接口名为matchGMS(),可直接调用;
  3. 本算法可用于SLAM/SFM等领域,可提高位姿解算的精度以及速度;
  4. (局限)本算法需要提取较多的特征点以提高正确匹配与错误匹配的可区分度,若特征匹配较少;该算法性能会有一定下降;
  5. (局限)由于仅统计特征匹配数量,在重复纹理条件下该算法的性能也会下降;

附录

  1. 项目地址:http://jwbian.net/gms
  2. 论文:CVPR 2017IJCV 2020
  3. 讲义:稳定的图像特征匹配以及快速的GMS方案
  4. 视频资料:BilibiliYoutube