RLSAC:强化学习增强的端到端鲁棒估计采样一致性

TL;DR 提出强化学习引导的几何采样一致性框架,在极高外点率下实现端到端鲁棒模型估计。

ICCV 已发表

IEEE/CVF International Conference on Computer Vision(IEEE/CVF 国际计算机视觉大会,ICCV 2023)

作者单位
RLSAC — 利用几何反馈学习采样。 利用几何反馈学习采样。
publications

采样器:没有人训练的那一环

几何视觉的大半江山,是靠鲁棒估计撑起来的。相机位姿、运动分割、宽基线匹配、平面拟合、直线拟合,把应用层剥掉,剩下的都是同一个问题:观测里有很大一部分根本就是错的,怎么还原出正确的那些观测共同认可的那个模型。四十年来,这个问题的默认答案一直是 RANSAC。它抽出一组最小集(minimum set),用这组集合解出一个模型,数一数有多少观测与结果一致,然后重来。两点确定一条直线,八对对应点确定一个基础矩阵。

抽取这一步是刻意盲目的。每个观测都被当作同样值得一试的对象,数据本身的任何信息都进不了这个决策。外点稀少时,这个赌注是划算的。但它很快就变得不划算:外点比例一升高,抽到一组全由内点构成的最小集的概率就往下掉,找到好模型所需的迭代次数跟着往上涨。能让搜索变轻松的证据,就摆在观测数据里,采样器却从来不看一眼。

第二个问题更安静,也是我们写这篇论文的原因。均匀随机抽取不可微。你没法把它接到网络里,也没法用一个位于它下游的目标函数去训练它。于是鲁棒估计器最后停在了学习系统的边缘:一个开箱即用的部件,外面裹着一层接口,从不与周围的部件一起优化。

前人的工作从好几个方向试过,各自都留下了一点没解决的问题。LO-RANSAC 持续在当前最优假设的内点中采样,它改善的是已经找到的那个模型,而不是找到它的那次搜索。NAPSAC 把采样限制在一个局部邻域内,换来条件数更好的集合,代价是失去全局覆盖;PROGRESSIVE NAPSAC 让邻域不断扩张,也只是给这个假设打补丁,并没有把它换掉。GC-RANSAC 和 MAGSAC++ 改变的是假设的打分方式,不动假设的提出方式。PROSAC 和 USAC 对采样顺序做重排或调度,可排序规则是手工设计的,在第一个假设被评分之前就已经固定。NG-RANSAC 这类方法学到了对点的有效偏好,围绕它的过滤式做法会及早丢掉糟糕的候选集合,但两者都没把采样决策的序列当成一件需要规划的事。DSAC 走得最直接,把选择概率化,让梯度能穿过整条流水线。这确实可行,但它要求采样器、求解器和打分环节全部可微,而我们最信任的那些经典部件,恰恰都不可微。

采样就是一个动作:强化学习马尔可夫决策过程(MDP)形式化

我们最初的观察是:这两个问题形状相同。强化学习里,智能体读取状态,选择动作,环境回报发生了什么。抽取一组最小集本来就是这个结构。

我们将几何鲁棒估计序列形式化为马尔可夫决策过程元组 $\langle \mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma \rangle$:

  • 状态空间 $\mathcal{S}$:在时间步 $t$,设全部输入观测集合为 $\mathcal{O} = \{o_1, o_2, \dots, o_N\}$。状态矩阵 $\mathbf{X}_t \in \mathbb{R}^{N \times D}$ 将每个观测的表征向量并行排布,融合了静态几何特征与动态历史轨迹。
  • 动作空间 $\mathcal{A}$:动作对应于从 $N$ 个观测中抽选出基数为 $m$ 的最小采样集合 $\mathcal{M}_t = \{i_1, i_2, \dots, i_m\} \subset \{1, \dots, N\}$。例如直线拟合中 $m=2$,双视图基础矩阵估计中 $m=8$,单应矩阵估计中 $m=4$。
  • 环境状态转移 $\mathcal{P}$:经典求解器与共识函数充当确定性环境。求解器 $\mathbf{M}_t = \mathrm{Solver}(\mathcal{M}_t)$ 产生几何模型参数,共识函数计算全局几何残差分布,驱动状态转移至 $\mathbf{s}_{t+1}$。
  • 奖励函数 $\mathcal{R}$:求解器将提出的集合转化为模型假设后,共识函数度量所有观测与该模型的一致性。定义阈值 $\tau$ 下的内点集合为 $\mathcal{I}(\mathbf{M}_t, \tau) = \{ i \in [1, N] \mid \mathrm{dist}(o_i, \mathbf{M}_t) < \tau \}$。标量奖励由瞬时内点比例与历史探索增益共同定义:
$$ \mathcal{R}(\mathbf{s}_t, \mathbf{a}_t) = \frac{|\mathcal{I}(\mathbf{M}_t, \tau)|}{N} + \lambda_{\text{best}} \mathbb{I}\left( |\mathcal{I}(\mathbf{M}_t, \tau)| > \max_{k < t} |\mathcal{I}(\mathbf{M}_k, \tau)| \right), $$

其中第二项为突破历史全局最优记录时的探索奖励指示函数。

这个设计最关键的地方在于:整个强化学习循环中,任何地方都不需要人工标注「哪些观测点是真值内点」。只要几何问题自带闭式最小求解器与几何代数残差定义,物理环境本身就会免费回传稠密奖励。从联合结果出发训练,意味着策略从来不会被告知哪些单个观测在绝对意义上是好是坏,它学到的是什么样的点组合能够解出全局一致性最高的模型。

问题RLSAC 的回答
学的是什么?采样策略;求解器与打分函数保持原样
需要什么监督?除了流水线本来就会算出的共识得分,不需要人工真值标签
状态里放什么?观测特征、选中的集合、相对上一个假设的残差,以及使用次数
用在哪里?合成直线拟合与真实双视图基础矩阵估计

策略能看见什么:四路特征编码与残差感知

状态里只放观测是不够的。第一步和第十步看到的数据一模一样,策略无从知道自己已经试过什么。所以构造状态时,我们让它携带上一次决策的后果。

每个观测上堆叠了四路物理特征,形成维度为 $D$ 的状态向量 $\mathbf{x}_{t, i} = [\mathbf{f}_i^{\text{obs}}, a_{t-1, i}, r_{t-1, i}, c_{t, i}]$:

  1. 观测原生特征 $\mathbf{f}_i^{\text{obs}}$:提供底层数据描述。直线拟合中为二维点坐标,双视图对应关系中为归一化图像坐标对 $(u_1, v_1, u_2, v_2)$、匹配相关性分数以及局部几何描述子。
  2. 上一步动作标记 $a_{t-1, i}$:构成上一轮最小集 $\mathcal{M}_{t-1}$ 的观测记为 $+1$,其余未被选中的观测记为 $-1$。
  3. 几何残差场 $r_{t-1, i}$:上一个模型假设 $\mathbf{M}_{t-1}$ 在观测点 $i$ 处诱导的几何残差。对于直线为点线欧氏距离,对于基础矩阵为极线 Sampson 距离。这是一份遍布所有观测的稠密几何梯度反馈,明确指示出当前模型在哪些区域成立、在哪些区域失效。
  4. 历史采样频率计数器 $c_{t, i}$:记录观测点 $i$ 在当前回合内已被选中的归一化累积次数。

残差指出哪些区域有希望,计数是一条面包屑防止陷入局部循环,动作标记标出当前位置。它们都不改变底层的几何真实,改变的是策略从几何拓扑中读取模式的能力。

每次假设评估后,策略状态都会随之更新。
查看原图 ↗
从一次采样到下一次采样:观测特征、所选集合、残差与采样历史共同构成状态转移。

一个回合,一次随机起点:图神经网络与最大熵 SAC

RLSAC 在同一份输入上跑若干个回合,每个回合都以随机抽取的一组最小集开场。这几乎不花什么计算代价,却换回两样东西。一是性能下限有了理论兜底,每个回合都从一次无偏抽取出发,策略只会比它更好;二是策略立刻获得了一个有意义的初始几何残差场作为响应基准。

策略网络采用 EdgeConv 风格的动态图神经网络。观测集合天然无序,将观测当成平坦序列读入的网络会受到排列扰动的影响。EdgeConv 在特征空间构建动态 $k$ 近邻图 $\mathcal{E}_t = \{ (i, j) \mid j \in \mathcal{N}_k(i) \}$,并执行边特征卷积:

$$ \mathbf{h}_i^{(l+1)} = \max_{j \in \mathcal{N}_k(i)} \Theta^{(l)} \left( [ \mathbf{h}_i^{(l)}, \mathbf{h}_j^{(l)} - \mathbf{h}_i^{(l)} ] \right). $$

差分项 $\mathbf{h}_j - \mathbf{h}_i$ 能够显式捕获相邻特征点之间的相对几何导数(如局部线段斜率或局部极线一致性),对称的最大池化算子保证了对观测输入次序的严格置换不变性(Permutation Invariance)。

网络顶层为每个观测输出未归一化的对数几率 $z_i$,通过带温度参数的 Softmax 转化为选择概率分布。在训练阶段,我们采用离散动作空间的 Soft Actor-Critic(SAC)框架,最大化累积奖励与策略熵:

$$ J(\pi_\theta) = \sum_{t=0}^T \mathbb{E}_{(\mathbf{s}_t, \mathbf{a}_t) \sim \rho_\pi} \left[ \mathcal{R}(\mathbf{s}_t, \mathbf{a}_t) + \alpha \mathcal{H}(\pi_\theta(\cdot \mid \mathbf{s}_t)) \right]. $$

最大熵目标 $\mathcal{H}$ 阻止了策略在组合爆炸的离散采样空间中过早坍缩到某一个局部极小值点,保证了充分的组合多样性探索。而在测试推理阶段,策略直接以贪心方式选取概率最高的前 $m$ 个点构成提议集合。

重复的最小集会被显式拒绝。每一个在当前回合中使用过的集合都由哈希表记录,若策略提议的集合已被探索,则按概率递推抽取下一个,直至得到全新集合。这确保了宝贵的采样计算预算不会浪费在重复的假设验证上。

训练中,回合在三种情况下自适应终止:内点数连续两步不再变化,内点率连续三步未能打破本回合最优记录,或者达到步数硬上限。测试时则只保留最大步数上限,给予策略充分搜索时间。

看它在一条直线上怎么工作

在正方形里撒下几百个点,让其中一部分落在一条直线上,其余当作外点。任意两点确定一条候选直线,其余每个点到它都有一个距离,这个距离就是反馈。随着一步步推进,假设肉眼可见地朝真值靠拢。这看着很舒服,但并不是有意思的地方。

有意思的是策略到达之后干什么。一旦找到内点率很高的假设,它就继续在局部做文章,细化这一组集合,而不跳到数据的另一片区域。没有记忆的采样器做不到这一点,因为它无从知道自己已经离得很近。这是把残差和历史特征放进状态最有力的论据,而且在定性轨迹里,它比任何汇总数字都明显得多。

我们的合成数据还把外点放进内点带内部,真实场景里也会出现这种情况。这样一来,「背下坐标」这条捷径就被堵死了。真正可学的是什么样的点组合能构成条件数良好的模型,这正是我们希望策略掌握的东西。

直线拟合中的连续采样状态。
查看原图 ↗
论文示例:候选假设与残差信息随策略状态转移发生变化。

从点扩展到图像对应关系:极几何、Sampson 误差与退化规避

双视图几何换掉了观测的物理载体,却没有换掉 MDP 的接口。现在一个观测是两幅图像上两个局部特征点之间的一次几何匹配 $o_i = (\mathbf{x}_i, \mathbf{x}'_i)$,由归一化坐标、初始匹配置信度与深度特征描述子共同表征。

当智能体抽取 8 个观测组成的最小集送入经典非可微求解器(归一化八点法)时,求解器解算基础矩阵 $\mathbf{F}$ 满足对极几何代数方程:

$$ \mathbf{x}'_i{}^\top \mathbf{F} \mathbf{x}_i = 0. $$

共识函数使用一阶近似的 Sampson 一阶几何误差衡量全部 $N$ 个观测与所得极线几何的一致程度:

$$ d_S(\mathbf{x}_i, \mathbf{x}'_i; \mathbf{F}) = \frac{(\mathbf{x}'_i{}^\top \mathbf{F} \mathbf{x}_i)^2}{(\mathbf{F} \mathbf{x}_i)_1^2 + (\mathbf{F} \mathbf{x}_i)_2^2 + (\mathbf{F}^\top \mathbf{x}'_i)_1^2 + (\mathbf{F}^\top \mathbf{x}'_i)_2^2}. $$

在这一设定中,几何估计面临的经典陷阱是几何退化(Degeneracy):如果采样的特征点大多共面(如落在同一堵平整墙面上)或空间分布极其狭窄,解出的基础矩阵在代数上秩亏或存在虚假零空间,导致内点计数虚高而在全局空间严重失准。

令人欣慰的是,图网络在连续回合与残差反馈中,自发学会了规避这种退化。策略倾向于在空间大基线、深度落差明显的刚性背景区域(如建筑拐角、远近景交错边缘)抽取点对,而不会将采样配额集中在局部纹理重复或狭窄聚集区。没有人显式编写退化检测规则,这种空间分散性完全是最大化全局共识奖励在图注意力传播下的自然结果。

采样状态转移中的对应关系与几何假设。
查看原图 ↗
学习式采样器接收经典几何求解器的反馈。

真正穿越两个任务的东西,与其说是训练好的网络权重,不如说是一份严格解耦的系统约定:编码观测拓扑,提出离散最小集,调用不可微几何求解器,计算物理残差,将几何状态反馈回策略。换到新问题上,仅需提供与任务匹配的物理特征、求解器算子与残差定义。

我们从中得到什么

我们反复回到的一条经验是:奖励可以替代可微性。只要下游有一个物理或几何指标能给输出打分,它就能训练产生这个输出的前端模块。没有必要把 argmax、SVD 分解、求解器或者阈值强行软化为可微版本,可解释且高精度的经典部件就能完整保留在架构内部。

在这里,记忆也比单次预测更值钱。把上一次尝试的残差送回状态,计算开销极小,几何信息密度却极高。训练一个更大参数量的一步到位分类器不仅泛化脆弱,而且在复杂退化场景下根本无法抵御长尾外点。

还有一条工程底线:学习到的采样器绝不该在任何场景下比它取代的随机基线更差。每个回合都用一次无偏随机抽取开局,从算法设计上锁定了系统的理论性能下限。

它仍然受限的地方

一份诚实的清单:

  1. 阈值超参数依然存在:内点判定阈值 $\tau$ 仍是手工设定的先验参数,并直接影响奖励标量。这正是 MAGSAC++ 等连续打分框架试图消除的敏感性,我们在当前版本中保留了它,尚未将其转化为完全无参数的连续密度打分。
  2. 候选集容量截断:为了控制图卷积的计算复杂度,状态只跟踪初始置信度最高的前 $N$ 个对应关系。若前置特征提取阶段发生了严重的漏检,真实内点完全落在该集合之外,策略受限于输入上界便无法将其召回。
  3. 计算延迟与迭代预算的权衡:图网络前向推理、SVD 求解以及稠密 Sampson 误差计算,每一步都需要数十毫秒级耗时。相比纯 C++ 实现的轻量级 RANSAC 变体,RLSAC 在单次迭代上的时间开销明显更大。它的优势在于将传统方案数千次盲目采样压缩至十余次精准决策,但在超高帧率极限场景下,这笔计算开销仍需通过模型轻量化或知识蒸馏进一步优化。

更大的图景

论文的讨论部分给出了我们真正相信的论点。一次性的深度估计器一旦离开训练分布就不可靠,可解释性又差,很难部署到工程场景里。经典估计器行为清晰、适用范围明确,却因为不可微而无法折进学习框架。把两者结合起来,两种性质都能拿到。一个部件只要能被打分,它就能被学习,同时还能继续做那个你信得过的部件。

我们很想知道,同样的处理方式能不能推广到几何栈里其他不可微的部件上。SLAM 中的噪声协方差估计是我们一直在琢磨的那一个。