一、课程导论与预备知识

什么是视觉里程计?

视觉里程计,说白了就是让机器「用眼睛走路」。

你想想看,我们人类走路时,眼睛看路,大脑算距离,腿脚跟着动。视觉里程计(Visual Odometry,简称VO)干的事一模一样——它通过分析连续的视频帧,估算出相机在三维空间中的运动轨迹。

我在2016年刚接触这个领域时,做过一个地面机器人的项目。当时用的还是传统方法,跑在树莓派上,帧率只有10fps。嗯,那感觉就像让一个近视眼在雾天跑步,磕磕绊绊的。

VO的核心任务其实就两个:

  • 估计相机的位姿——也就是每一帧图像对应的位置和朝向
  • 构建局部地图——把看到的特征点记下来,方便后续定位

传统VO的流程大致是这样的:

  1. 提取图像特征点(比如ORB、SIFT)
  2. 匹配相邻帧的特征点
  3. 用对极几何或PnP求解相机运动
  4. 用BA(Bundle Adjustment)优化结果

听起来挺顺的,对吧?但实际跑起来,问题一堆。

传统VO的痛点——我踩过的坑

我曾经在一个室内仓库项目里,用ORB-SLAM2做定位。仓库里全是白墙、金属货架,纹理少得可怜。特征点提取出来,稀稀拉拉几十个,匹配还经常出错。结果呢?轨迹漂移得离谱,10米的路程能偏出1米去。

传统VO的痛点,我总结下来有这么几个:

痛点 具体表现 我遇到的真实案例
纹理缺失 白墙、地面、天空等区域提取不到特征点 仓库白墙导致跟踪丢失
光照变化 白天黑夜、阴影移动,特征点匹配失败 室外AGV从树荫下经过时直接崩了
动态物体 行人、车辆干扰特征匹配 商场机器人被路人带偏轨迹
累积漂移 长时间运行后误差越来越大 500米路径漂移了3米

为什么会这样?因为传统方法太依赖「手工特征」了。手工特征说白了就是人为设计的规则——角点怎么定义、描述子怎么算,都是人定的。但真实世界的图像千变万化,几条规则根本覆盖不了。

深度学习为何能解决传统VO的痛点?

深度学习解决这个问题的思路,其实很直接——让网络自己学特征,而不是人设计特征。

我2018年第一次用CNN做特征提取时,效果让我吃了一惊。在纹理缺失的场景下,深度学习提取的特征居然还能保持稳定。为什么?因为CNN学到的不是角点、边缘这些低级特征,而是更高层的语义信息——比如墙面和地面的交界线、物体的轮廓。

具体来说,深度学习在VO中的优势体现在:

  • 端到端学习:直接从图像像素映射到位姿,跳过了手工特征提取和匹配
  • 鲁棒的特征表示:对光照、视角变化更不敏感
  • 深度信息估计:单目图像也能通过深度网络估计出场景深度
  • 可微分优化:整个VO流程可以端到端训练,梯度可以回传

核心观点:传统VO是「规则驱动」,深度学习VO是「数据驱动」。前者靠人写规则,后者靠数据喂出规则。在复杂场景下,数据驱动的上限远高于规则驱动。

我个人的习惯是,把深度学习VO分成三类:

  1. 替代式:用深度学习替换传统VO中的某个模块(比如用CNN提取特征)
  2. 端到端式:输入图像序列,直接输出位姿(比如PoseNet系列)
  3. 混合式:深度学习+传统几何,取长补短(比如DROID-SLAM)

这三种方式各有优劣,我们后面的课程会逐一深入。

课程整体架构与学习路径

这门课一共30章,我把它分成了五个阶段。你想想看,学VO就像盖房子,得从地基打起。

下面这张图是我亲手画的课程知识体系,建议你保存下来,学习过程中随时对照:

深度学习视觉里程计课程知识体系 阶段一:基础篇 第1-5章 VO基础 · 相机模型 · 坐标系 阶段二:传统VO 第6-10章 特征提取 · 匹配 · BA优化 阶段三:DL基础 第11-15章 CNN · RNN · 注意力机制 阶段四:深度学习VO 第16-25章 端到端VO · 深度估计 光流 · 可微分优化 阶段五:实战部署 第26-30章 模型部署 · 嵌入式优化 项目实战 · 调优技巧 课程共30章,从基础到实战,循序渐进 每个阶段的核心知识点 📷 相机模型 · 坐标系变换 · 特征提取 🧠 CNN/RNN/Transformer · 端到端VO · 深度估计 · 光流 ⚙️ 模型量化 · TensorRT部署 · 嵌入式优化 · 实车测试

学习建议:我个人建议你按顺序学,不要跳。尤其是第6-10章的传统VO部分,虽然我们讲的是深度学习VO,但传统几何是根基。我见过太多人一上来就搞端到端,结果连对极几何都不懂,调参时一脸懵。

课程的具体安排是这样的:

  • 第1-5章(基础篇):VO基础概念、相机模型、坐标系、数据集与评估指标
  • 第6-10章(传统VO):特征提取与匹配、对极几何、PnP、BA优化、ORB-SLAM2解析
  • 第11-15章(深度学习基础):CNN架构、RNN与LSTM、注意力机制、Transformer、自监督学习
  • 第16-25章(深度学习VO):PoseNet、DepthNet、光流估计、可微分BA、DROID-SLAM、多传感器融合
  • 第26-30章(实战部署):模型量化、TensorRT部署、嵌入式平台优化、实车测试、项目总结

避坑提醒:我曾经在学VO时犯过一个错误——太关注算法本身,忽略了工程实现。比如BA优化,论文里写得天花乱坠,但实际部署时,内存占用、计算延迟才是大头。所以这门课我会特别强调「工程思维」,每个算法都会讨论它的实际部署代价。

好了,第一章的内容就到这里。你准备好了吗?接下来我们就要进入相机模型和坐标系的世界了。这些东西看着枯燥,但它们是VO的「语言」,不懂这些,后面寸步难行。


专注资料整理