作者:泡椒味的口香糖  | 来源:计算机视觉工坊

在公众号「3D视觉工坊」后台,回复「原论文」可获取论文pdf和代码链接。

添加微信:dddvisiona,备注:相机标定,拉你入群。文末附行业细分群。

0. 笔者个人体会

特征匹配包括稀疏匹配和稠密匹配,这方面的深度模型这两年很多了,效果也都很好。但是同时实现稀疏匹配和稠密匹配的通用模型还比较少,主要是因为联合训练会引入大量噪声,模型架构不好设计。而且相关的训练数据不好找,直接把几个数据集堆一起训练又会出现各种各样的域问题。这里也推荐「3D视觉工坊」新课程如何学习相机模型与标定?(代码+实战)

最近,浙大就开源了一项工作,以一个通用模型同时实现稀疏匹配和稠密匹配。笔者认为,这篇文章的意义不是提出了一个最新的匹配模型,而在于通用模型的设计+训练思路。学习了这种思路,就可以将这种框架泛化到其他任务上。

1. 效果展示

浙大最新发布的RGM实现了一个通用模型,具体效果是同时实现稠密匹配和稀疏匹配。这里面的稠密匹配也就是光流匹配,还可以根据匹配关系投影RGB图像做两视角重建。

615b2893f8297e33df5f5a961d636af5.png

与其他SOTA方法相比,RGM估计的光流更细腻,边缘更完整。

4c533f69458360fb4045625fbaeca49e.png

目前这篇文章已经开放了github,但是暂时代码还没有开源,感兴趣的小伙伴可以跟踪一下。下面来看一下具体的论文信息。

2. 摘要

在一对图像中寻找匹配的像素是具有各种应用的基本计算机视觉任务。由于光流估计和局部特征匹配等不同任务的特定要求,以前的工作主要分为稠密匹配和稀疏特征匹配,侧重于特定的体系结构和特定任务的数据集,这可能在一定程度上阻碍了特定模型的泛化性能。在本文中,我们提出了一个稀疏和稠密匹配的深度模型,称为RGM (鲁棒通用匹配)。特别地,我们精心设计了一个级联的GRU模块,通过在多个尺度上迭代地探索几何相似性来进行细化,然后使用一个附加的不确定性估计模块来进行稀疏化。为了缩小合成训练样本和真实世界场景之间的差距,我们通过以更大的间隔生成光流监督,来构建具有稀疏匹配真值的新的大规模数据集。因此,我们能够混合各种稠密和稀疏匹配数据集,显著提高训练多样性。通过在大规模混合数据上以两阶段的方式学习匹配和不确定性估计,我们提出的RGM的泛化能力得到了极大的提高。跨多个数据集的zero-shot匹配和下游几何估计实现了卓越的性能,大大超过了以前的方法。

3. 算法解析

RGM这篇文章的目的是要设计一个统一的框架来同时实现稠密匹配和稀疏匹配,但本身两个任务的特性不同,直接设计多任务网络效果不好。所以作者的思想就很巧妙,先设计一个光流稠密匹配网络,再紧跟一个稀疏化网络。

整个Pipeline很直观,可以分成特征提取、稠密匹配、稀疏化三个部分。首先将输入图像利用CNN和Transformer提取特征金字塔,然后使用级联GRU的网络进行稠密匹配,之后通过不确定性估计来过滤得到稀疏匹配,匹配结果就可以直接用于位姿估计、两视角重建等下游任务。

3c0bdd77fa81b04f721fdc71b215cf21.png

这里面还有几个细节需要注意:

1、为什么要提取特征金字塔,而不是使用某个特征层?

虽然感受野更大,但在1/8分辨率下会损失很多细节。作者这里使用的是{1/8,1/4,1/2}分辨率的三层金字塔,其中前两层使用Swin-Transformer的自我注意和交叉注意进行特征增强。

2、这个GRU模块是啥?

这里也是一个trick,就是不在每个尺度上都建立图像对的关联,而在金字塔的两个底层建立局部关联。对于1/8的低分辨率层执行点积运算:

59b4e1010104ee631d46f5779adc605d.png

其中Fr和Ft是特征金字塔,D是维度。然后再用平均池化作为RAFT来构建相关金字塔,给定当前的光流估计f和半径r,就可以构建两个高分辨率的特征融合计算:

53007705e718a793bbb2d41743d626de.png

给定相关性和上下文信息,就可以估计运动信息并将其馈送给GRU优化光流残差,然后迭代得优化光流:

031b7660d9286bd157a301385fc20203.png

3、稀疏化如何实现?

在获得稠密匹配之后,可以直接冻结匹配网络并开始稀疏化。根据估计出的光流可以warp特征图和RGB图计算差异。然后将差值送给CNN计算损失,具体是根据mask真值计算的二进制交叉熵:

84ad387c3ff5f855bb9b18fe8e249f59.png

4、为什么要解耦训练?

具体训练过程是先训练匹配网络,然后冻结这部分,再单独训练稀疏化网络。作者认为直接联合训练的话,会引入大量噪声,导致光流预测不准确。

4. 实验

RGM的训练分匹配学习+不确定学习两阶段进行,也就是所谓的解耦训练。

在匹配学习阶段,首先使用带稀疏匹配真值的MegaDepth(1.4 M对图像)来训练(200k次迭代),然后使用ScanNet+FlyingThings3D+TartanAir+MegaDepth的混合数据集(4 M对图像)进行增强学习(240k次迭代)。Batch size为16,学习率从2e-4余弦退火至1e-5。在不确定学习阶段,直接冻结稠密匹配网络的参数。在MegaDepth和ScanNet上训练了2个epoch,batch size为4,学习率固定1e-4。注意,为了平衡不同数据集之间的差异,还对TartanAir进行了大间距采样。

评估也是一个零样本泛化实验。匹配估计使用ETH3D+HPatches+KITTI+TUM数据集,位姿估计(下游任务)使用TUM+YFCC数据集,光流估计使用Sintel数据集。

首先是解耦训练和联合训练的对比,证明他们做提出的解耦训练是有效的。看到这里笔者也有个疑问,有的模型是联合训练效果更好,有的模型却是解耦训练更好,希望有小伙伴能传授一下经验。

88f6e8a2a5b83339c1e0165b85f8227e.png

训练使用数据集的对比,显然使用的数据集越多效果越好。

b7d877267e8bdb6ec111ad481e68f166.png

特征匹配最直观的定性对比,相同颜色代表预测的匹配关系。相较于之前的SOTA方法可以取得更多的匹配关系,而且语义预测也更好(大部分匹配关系都集中在摩托车和人上)。

20d61139f19cedaefbf62d30c021ac8a.png

光流估计的对比,也是一个zero-shot实验。对比方案包括光流专用模型、稠密几何估计方法,还有通用匹配模型,RDM效果最优。这里也推荐「3D视觉工坊」新课程如何学习相机模型与标定?(代码+实战)

8b8c32836c910c7b884d998f047d9239.png

最后是一个在TUM和YFCC上进行位姿估计的zero-shot评估,也是匹配性能的进一步验证。

4e343ae330eb8868a153b05bea31c283.png

5. 总结

一句话总结:RGM以一个通用模型同时实现了稀疏和稠密匹配。具体创新点是级联GRU细化模块+用于稀疏化的不确定性估计模块+解耦训练机制。除了评估特征匹配的精度,作者还做了很多下游任务的评估,比如位姿估计、两视角重建。感觉这篇文章还在审稿中,后续应该会上传新版本的文章和代码。

—END—

高效学习3D视觉三部曲

第一步 加入行业交流群,保持技术的先进性

目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:

[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;

[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;

[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。

[三维重建方向]NeRF、colmap、OpenMVS、MVSNet等。

[无人机方向]四旋翼建模、无人机飞控等。

除了这些,还有求职、硬件选型、视觉产品落地等交流群。

大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

f6bf756a83a465bb20d5825624c76ccd.jpeg
添加小助理微信:cv3d007, 拉你入群
第二步 加入知识星球,问题及时得到解答
3.1 「3D视觉从入门到精通」技术星球

针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」

学习3D视觉核心技术,扫描查看,3天内无条件退款 080778432b923161a80f6388b76df490.jpeg
高质量教程资料、答疑解惑、助你高效解决问题
3.2 3D视觉岗求职星球

本星球:3D视觉岗求职星球 依托于公众号「3D视觉工坊」和「计算机视觉工坊」、「3DCV」,旨在发布3D视觉项目、3D视觉产品、3D视觉算法招聘信息,具体内容主要包括:

  • 收集汇总并发布3D视觉领域优秀企业的最新招聘信息。

  • 发布项目需求,包括2D、3D视觉、深度学习、VSLAM,自动驾驶、三维重建、结构光、机械臂位姿估计与抓取、光场重建、无人机、AR/VR等。

  • 分享3D视觉算法岗的秋招、春招准备攻略,心得体会,内推机会、实习机会等,涉及计算机视觉、SLAM、深度学习、自动驾驶、大数据等方向。

  • 星球内含有多家企业HR及猎头提供就业机会。群主和嘉宾既有21届/22届/23届参与招聘拿到算法offer(含有海康威视、阿里、美团、华为等大厂offer)。

  • 发布3D视觉行业新科技产品,触及行业新动向。

f57a0a046dbcd2e3085f0f6d766ba06f.jpeg
扫码加入,3D视觉岗求职星球,简历投起来
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行

如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com

科研论文写作:

[1]国内首个面向三维视觉的科研方法与学术论文写作教程

基础课程:

[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶

[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]

[3]如何学习相机模型与标定?(代码+实战)

[4]ROS2从入门到精通:理论与实战

[5]彻底理解dToF雷达系统设计[理论+代码+实战]

工业3D视觉方向课程:

[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]

[2]保姆级线结构光(单目&双目)三维重建系统教程

[3]机械臂抓取从入门到实战课程(理论+源码)

[4]三维点云处理:算法与实战汇总

[5]彻底搞懂基于Open3D的点云处理教程!

[6]3D视觉缺陷检测教程:理论与实战!

SLAM方向课程:

[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战

[2]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

[3](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化

[4]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析

[5]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)

[6](第二期)ORB-SLAM3理论讲解与代码精析

机器人导航与路径规划

[1]移动机器人规划控制入门与实践:基于Navigation2

视觉三维重建:

[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

[2]基于深度学习的三维重建MVSNet系列 [论文+源码+应用+科研]

自动驾驶方向课程:

[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)

[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程

[3]单目深度估计方法:算法梳理与代码实现

[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)

[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)

无人机:

[1] 零基础入门四旋翼建模与控制(MATLAB仿真)[理论+实战]

最后

1、3D视觉文章投稿作者招募

2、3D视觉课程(自动驾驶、SLAM和工业3D视觉)主讲老师招募

3、顶会论文分享与3D视觉传感器行业直播邀请

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐