1. 这不是又一个SLAM,而是把“空间感知”从稀疏点升级为连续体的底层重构
DisFlow这个词第一次出现在我视野里,是在去年底一个工业AR设备商的内部技术分享会上。他们没放PPT,只用一段20秒的视频:一台移动机器人在堆满纸箱的仓库里穿行,镜头扫过角落——一个刚被工人随手挪动过的托盘,系统在0.3秒内不仅识别出它“动了”,还实时输出了它新的三维位置、朝向、甚至微小的倾斜角度(pitch/yaw/roll),误差控制在±0.8°和±1.2mm以内。后台可视化界面上,没有密密麻麻的特征点,而是一片平滑流动的彩色热力图,像水波一样包裹着每个物体表面。主持人说:“我们没用传统SLAM,用的是DisFlow。”
那一刻我就意识到,这背后不是算法调参的胜利,而是建模范式的切换。传统视觉定位(比如ORB-SLAM、VINS-Mono)本质上是“点思维”:靠提取图像角点、边缘等稀疏特征,在三维空间里拼凑出几十到几百个离散锚点,再通过这些点的运动反推相机位姿。它高效、成熟,但有个硬伤——对动态物体束手无策。一旦场景里出现人走动、传送带运转、机械臂抓取,那些被当作静态背景的特征点突然开始漂移,整个位姿估计链就崩了。工程师们只能加规则:设ROI区域、加运动检测滤波、上光流粗筛……全是打补丁。
DisFlow干了一件更根本的事:它放弃“找点”,转而构建整个场景的 隐式距离场(Implicit Signed Distance Field, SDF) 。你可以把它理解成给整个三维空间发一张“电子皮肤”——每个空间坐标(x,y,z)都对应一个数值,这个数值代表该点到最近物体表面的有符号距离:正值=在物体外部,负值=在物体内部,零值=刚好落在表面上。这张“皮肤”不是由离散点采样拼出来的,而是用神经网络(通常是轻量级MLP)直接学习一个连续函数f(x,y,z)→d。当相机拍到一帧新图像,DisFlow不急着匹配特征,而是先用当前SDF预测这一帧里每个像素应该看到什么颜色、什么深度;再把预测结果和真实图像比对,反向驱动SDF参数更新。整个过程天然兼容动态——只要把动态物体的运动参数(6DoF位姿)也作为网络输入的一部分,SDF就能学会区分“背景缓慢形变”和“物体整体平移旋转”。
所以DisFlow解决的从来不是“怎么跟踪一个盒子”,而是“如何让机器真正理解‘空间’本身”。它把位姿跟踪从“基于观测的推理”,变成了“基于模型的拟合”。这解释了为什么它能在强光照变化、部分遮挡、甚至纹理缺失(比如纯白墙壁)下保持稳定——因为它的依据不是图像像素的灰度相似性,而是空间几何的一致性。关键词里反复出现的“距离场”“场景流”“6DoF”,其实是一个闭环:距离场是空间表征的底座,场景流(Scene Flow)是描述每个空间点在时间维度上的运动矢量,而6DoF位姿正是动态物体在该场中运动的紧凑参数化表达。三者咬合,缺一不可。
我后来翻遍论文和开源实现,发现很多初学者一上来就卡在“为什么非要用SDF”,甚至想用传统TSDF(Truncated Signed Distance Field)替代。这里必须划重点:TSDF是栅格化的、显式的、需要大量内存的;而DisFlow用的隐式SDF是函数化的、连续的、可微的,这才是它能端到端联合优化相机位姿、物体位姿和SDF参数的根本前提。如果你还在用Open3D加载一堆点云去配准,那DisFlow对你而言不是升级,而是换赛道。
2. 场景流不是光流的3D版,它是空间运动的“守恒律”表达
很多人看到“场景流(Scene Flow)”第一反应是:“哦,就是3D光流?”——这是最危险的误解。光流(Optical Flow)描述的是图像平面上像素的2D运动,本质是投影变换的副产品;而场景流描述的是三维空间中每个点的真实3D运动矢量。二者数学上天差地别:光流满足


392

被折叠的 条评论
为什么被折叠?



