计算机视觉life | SLAM的最终形态应该是什么样的?

本文来源公众号“计算机视觉life”,仅用于学术分享,侵权删,干货满满。

原文链接:SLAM的最终形态应该是什么样的?

问题引入:SLAM的最终形态应该是什么样的?

当前的SLAM系统还存在很多问题,比如很多需要先建图,再实时定位。场景规模大了由于内存性能问题,很难建图。随着之后软硬件的发展,SLAM最终能否达到,一旦部署,终身运行,自己能够处理一些环境变化,信息的整合与鉴别。

回答一来自半闲居士

建图:输入传感器数据,输出一个地图。不断输入新的数据,就会不断输出新的地图。

这个过程叫“建图”还是叫“训练”,不重要。传感器数据就是很多的token,地图就是一张图。

地图也不必长的真的跟图一样,不必真的给人看,就是一堆数据或者一个模型。

定位:给定一个地图模型,输入传感器数据,输出该数据对应的pose。输入连续的数据,能输出连续的pose。

同样的,这个过程叫“定位”还是叫“推理”,也不重要。

中间计算过程也不重要,跑滤波器/图优化还是跑模型推理,都无所谓。

连续性是重要的。输入时间上相邻的数据,输出也得在空间上相邻。

这大概是比较本质意义上的slam。

现在传统方法的难点是:

传统方法原理没啥变化,都在搞corner case。搞不定的就真搞不定,没什么解法。

传统方法没法随数据增长有明显的性能提升。

新方法的问题是:

不够通用:性能跟数据分布相关,而传统方法几乎是无限通用的,跟数据无关。

性能不够:在千元级别硬件上,建图至少要到100ms/帧,定位至少要在20ms/帧,才有可能落地。目前训练至少达不到,推理过程兴许可以。

不好解bug:出了问题只能多加数据,不像传统方法通常能给出根本原因,知道怎么调。

大部分新方法都处在比较尴尬的情况:传统方法搞的定的,他可能百分之七八十搞的定。传统方法搞不定的,他可能也是百分之六七十搞的定。但下游的应用通常期望你在搞的定的场景下百分之百搞得定,搞不定的场景可以不卖。

当然这一切原因很可能就是,单纯的,数据不够多,模型不够大,端上性能不够强,然后slam也没怎么搞过几十T带真值pose的数据,花个几百万去训的。没这个动力。

未来主流肯定是数据驱动的方法。在滤波器人肉调那些噪声参数肯定比不上让GPU一口气帮你弄上几百万个数一块儿调(两者本质算是一回事)。

回答二来自forward

华为天才少年的往日峥嵘任历历在目,现在小米千万年薪招聘deepseek的95年ai萝莉的新闻更是冲上热搜。

 相关链接:

https://www.zhihu.com/question/55901895/answer/51544581939?utm_psn=1858846542540173312

该如何从0(绝对的零)开始学习SLAM?

 

  • 突破性的技术创新开始由当时的年轻人做出,技术迅速进步意味着过去的经验在快速贬值去魅。

  • 后浪推前浪的速度在加快,曾经霸榜舆论的技术和人在新的技术周期出现后声量渐失。

  • 可以预见,正有更年轻者摩拳擦掌,当红花旦不会永远红。就像流星一样,烟花易冷绚丽短暂却耀眼夺目难以忘怀。

  • 成功者是少数,幸存者偏差,能飞回来的只有翅膀中弹的飞机,更多的年轻人正顶着烈日送外卖。聚光灯下的他和烈日下的他,最开始没有什么不同。

站在从业多年的算法工程师如何看待这个问题呢?

 相关链接:

https://www.zhihu.com/question/666625418/answer/70000243116?utm_psn=1858846228835622913

选择slam会不会把路走窄了?

第一,悲观且乐观,天才万里挑一,总有年轻人,但人不总年轻。

第二,持续学习,如果无法做开拓者,那就紧紧跟随。

第三,思考技术和落地的关联,从只顾犁地的开荒猛牛进化为解决方案平台。

接着回到这个话题。随着新技术的产生,旧技术的稳定,变化悄然而生。对于SLAM技术本身而言,我感觉会有2点趋势:

与硬件集成,与感知合并

当一个事物成熟了,状态稳定了,不会修改了,提高效率降低成本的做法就是集成。举一个例子,当初那么贵,是因为它的每个零件都是独立的,制造一个LiDAR堪比作坊手搓私人定制。后来随着量铺开,越来越多的零件被集成到一起只提供特定功能,BOM清单越来越短,成本自然越来越低。

相关链接:

https://www.zhihu.com/question/269069887/answer/3618921890?utm_psn=1857547024167206912

能否推荐几个比较有研究价值的slam方向?

SLAM遗留问题是(高级语义)特征提取+匹配,一般需要采用深度学习的方式,站在组织和程序效率的角度看,这不应该由SLAM团队做,应该是感知做。既然感知已经做了从图片和LiDAR学习深层特征这个事情,那么SLAM特征对于他们而言只是多一个head或者分类的事情,对于SLAM团队而言则是重新造轮子。

相关链接:

https://www.zhihu.com/question/419264201/answer/3611060914?utm_psn=1857546679273795584

为什么目前落地的主流SLAM技术很少用神经网络进行特征提取?

而且SLAM提供的里程计是被部分感知任务需要的,SLAM和感知对数据的要求(同步标定配对)在同一个设备上又是一样的,因此往后会有更多的业务和组织重叠。

对SLAM从业人员而言,要么是技术路线变更实现华丽转身,技多不压身,多个备胎多条路,一碗水端平雨露均沾;要么是针对现有技术在不同产品上的开发和维持,不断打磨深耕,一条道走到黑,深情专一,做if之王。

相关链接:

https://www.zhihu.com/question/661361369/answer/3604463621?utm_psn=1857416502938066944

坚守SLAM还是拥抱大模型?

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

 

激光SLAM与视觉SLAM的主要区别体现在传感器类型、数据获取方式、环境适应性、计算复杂度以及应用场景等多个方面。 ### 3.1 传感器与数据获取方式 激光SLAM依赖激光雷达(LiDAR)作为主要传感器,通过发射激光束并测量反射时间来获取环境的距离信息,生成高精度的二维或三维点云地图。激光雷达直接获取距离数据,具有较高的几何精度和稳定性[^3]。视觉SLAM则使用摄像头作为传感器,通过图像处理技术来估计相机位姿并构建环境地图。视觉SLAM可以使用单目、双目或RGB-D相机,分别通过运动恢复结构(SfM)、视差计算或直接深度信息来获取三维空间信息[^1]。 ### 3.2 环境适应性 激光SLAM在结构化环境中表现优异,如室内、走廊等静态场景,具有较强的抗光照变化能力。然而,激光雷达在动态环境中(如人群密集区域)容易受到遮挡影响,导致建图误差[^3]。视觉SLAM对动态环境适应性较强,能够捕捉丰富的视觉信息,适用于户外、光照变化频繁或纹理丰富的场景。但在低光照、无纹理或快速运动条件下,视觉SLAM可能失效[^1]。 ### 3.3 计算复杂度与资源需求 激光SLAM通常需要处理点云数据,计算复杂度相对较低,适合实时应用。但由于激光雷达成本较高,整体系统开销较大。视觉SLAM依赖图像处理,虽然摄像头成本低廉,但特征提取、匹配和位姿估计过程计算量较大,尤其在高分辨率图像下更为明显。直接法视觉SLAM(如LSD-SLAM、DSO)通过像素级优化进一步提升了精度,但也增加了计算负担[^1]。 ### 3.4 应用场景 激光SLAM广泛应用于工业机器人、自动导引车(AGV)和室内导航系统,因其高精度和稳定性适合构建长期运行的地图[^3]。视觉SLAM则更多用于消费级机器人、无人机、增强现实(AR)和自动驾驶领域,因其具备丰富的环境感知能力和较低的硬件成本[^1]。 ### 示例代码:视觉SLAM中的特征提取与匹配 以下是一个基于OpenCV的简单视觉SLAM特征提取与匹配示例: ```python import cv2 import numpy as np def feature_extraction(image): sift = cv2.SIFT_create() keypoints, descriptors = sift.detectAndCompute(image, None) return keypoints, descriptors def feature_matching(descriptors1, descriptors2): flann = cv2.FlannBasedMatcher() matches = flann.knnMatch(descriptors1, descriptors2, k=2) good_matches = [] for m, n in matches: if m.distance < 0.7 * n.distance: good_matches.append(m) return good_matches # 示例图像匹配 img1 = cv2.imread('image1.jpg', 0) img2 = cv2.imread('image2.jpg', 0) kp1, des1 = feature_extraction(img1) kp2, des2 = feature_extraction(img2) matches = feature_matching(des1, des2) # 绘制匹配结果 match_img = cv2.drawMatches(img1, kp1, img2, kp2, matches, None) cv2.imshow('Matches', match_img) cv2.waitKey(0) ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值