
自動駕駛和機器人定位一直有一個很反直覺的現象大多數系統不是在最差的時候崩潰的而是在“自我感覺良好”的時候崩潰的。LiDAR 定位看起來比純視覺穩定得多點云不會受光照變化影響幾何結構也更干凈。但真正在停車場、隧道、重復結構樓道里跑過定位的人都知道LiDAR 也會漂也會匹配錯而且錯誤往往沒有任何預警——優化器照樣輸出一個置信度很高的位姿直到下游任務跟著翻車。UQ-Loc 這個工作值得關注的真正原因不在于它又提出了一種更準的 LiDAR 定位方法而在于它把“不確定性估計”這件事放到了 LiDAR 場景坐標回歸Scene Coordinate RegressionSCR的框架里。換句話說它讓每一次定位輸出都能附帶一個可靠度評分系統終于可以知道自己“什么時候不知道”了。這篇文章會從 SCR 的前世今生講起拆解 UQ-Loc 的思路、不確定性建模的兩種來源、訓練與驗證的完整流程以及要想把這套方法真正用進生產系統你會踩到的那些坑。什么樣的讀者適合讀這篇文章正在做 LiDAR SLAM 或重定位的算法工程師研究視覺/點云場景坐標回歸的碩博生以及想給多傳感器定位系統增加安全邊界的開發同學。你不需要提前讀過原論文只需要對點位姿估計、相機/雷達投影變換有基本概念剩下的我會逐步展開。1. 這篇文章真正要解決的問題先拋開論文本身聊一個更寬泛的問題為什么我們其實很需要“帶不確定性的定位”傳統 LiDAR 定位的主流做法是 ICP、NDT 或者基于特征匹配的配準。這類方法有一個共同點它們輸出一個位姿同時也會輸出一個“分數”比如 ICP 的 fitness score、NDT 的變換協方差。麻煩在于這個分數和真正的定位誤差之間并不總是單調相關。一個在對稱走廊里匹配錯誤的位姿可能 fitness score 看起來相當不錯因為兩邊的墻在幾何上就是幾乎相同的。再往深處想一步。定位系統往往不是孤立工作的。下游的路徑規劃、避障、地圖更新、傳感器融合都要拿這個位姿當輸入。如果定位模塊每次輸出位姿的同時還能輸出一個誠實的不確定性估計——這次定位的誤差可能有多大——下游系統就可以做很多事在不確定性過高時降低速度、切換定位模式、觸發重新初始化、或者在后端融合時自動降低該位姿的權重。這就是 UQ-Loc 這類工作的意義它不一定讓你在 benchmark 上刷出驚人的精度提升但它能讓定位系統從“自信地犯錯”變成“知道自己可能犯錯”。從論文標題來看UQ-Loc 的三個關鍵詞可以這樣拆LiDAR輸入是激光雷達點云而不是圖像。Scene Coordinate Regression不直接回歸位姿而是先為每個點回歸三維場景坐標再求解位姿。Uncertainty-Aware在回歸過程中同時估計不確定性并用不確定性來優化定位結果。這類工作的價值不能只看位姿精度指標還要看它能不能真正提升系統的安全性和魯棒性。2. 場景坐標回歸從視覺定位到 LiDAR 重定位2.1 什么是場景坐標回歸場景坐標回歸Scene Coordinate RegressionSCR最早是在視覺定位領域發展起來的。它的核心思想很樸素給定一幀圖像對圖像中的每個像素直接回歸出該像素對應表面點在世界坐標系下的三維坐標。有了足夠多這樣的 2D-3D 對應關系就可以用 PnP 或 RANSAC 求解出相機在世界坐標系中的位姿。通俗解釋傳統特征匹配需要先在圖像和三維地圖之間建立特征描述子對應再做 PnPSCR 則把這個過程壓縮成一個端到端的回歸問題——我不管這個像素長什么樣我直接“猜”它在世界里的位置。這個思路相比傳統方法有幾個明顯優勢不需要存儲大量特征描述子地圖可以做得更緊湊。端到端訓練特征學習和位姿求解可以聯合優化。在紋理缺失或重復紋理場景中比基于局部特征的方法更魯棒。DSAC* 等一系列工作把 SCR 推到了視覺定位的第一梯隊。這個路線的基本范式是卷積網絡回歸場景坐標 可微 PnP/RANSAC 模塊求位姿 端到端損失傳播。2.2 從視覺轉到 LiDAR難點在哪視覺 SCR 的輸入是 RGB 圖像每個像素都有明確的規則網格結構。LiDAR 點云則完全不同稀疏性一幀 64 線雷達大約十多萬個點但分布極不均勻近處密遠處稀。無序性點云沒有固定的排列順序。幾何退化在隧道或長走廊中某些維度如沿走廊方向的平移在幾何上不可觀。外觀信息少激光雷達沒有豐富的紋理信息雖然強度值可以提供一些幫助但遠不如 RGB 信息豐富。所以 LiDAR SCR 不能直接把視覺的網絡結構搬過來用。它需要處理點云的稀疏與無序特性常見的做法包括體素化、PointNet 這類集合提取結構、或者將點云投影到距離圖range image上做稠密預測。UQ-Loc 的賣點在于它不光做這個回歸還在回歸的同時估計每個點的不確定性并把不確定性信息用于最終的位姿優化——這正是從視覺方法轉向 LiDAR 場景時容易被忽略的問題。2.3 SCR 與傳統定位方法的對比方法類型核心思想優勢劣勢ICP / NDT 配準迭代優化源點云與目標點云的幾何對齊精度高通用性強需要較好的初始位姿對稱場景易退化特征匹配 PnP提取關鍵點描述子匹配地圖點計算位姿可處理大范圍重定位依賴特征質量弱紋理場景易失敗位姿回歸網絡直接回歸 6-DoF 位姿輕量推理快精度低泛化能力弱場景坐標回歸回歸每個點的全局三維坐標再求解位姿精度較高地圖緊湊可與 PnP 結合需要模型訓練場景變化需要重新訓練不確定性 SCRSCR 不確定性輸出具備誤差預警能力可輔助失敗恢復訓練復雜度更高評估維度更多從這張表能看出來UQ-Loc 不是把上一行全部推翻而是在 SCR 這個已經有較好精度基礎的框架上增加了一個最關鍵的維度風險感知。3. UQ-Loc 的核心思路拆解下面開始拆 UQ-Loc 的模型設計。需要說明的是不同論文對“不確定性感知”的具體實現差異較大這里重點講通用的方法論框架這樣無論你看的是哪篇具體論文都能快速對上號。3.1 不確定性從哪里來偶然不確定性與認知不確定性幾乎所有帶不確定性估計的深度學習工作都會把不確定性分成兩類偶然不確定性Aleatoric Uncertainty來自觀測數據本身的噪聲。比如激光雷達測距誤差、標定誤差、動態物體的遮擋導致的測量不完整。這類不確定性無法通過增加訓練數據消除只能估計它的大小并在推理時考慮進去。認知不確定性Epistemic Uncertainty來自模型的“知識盲區”。比如你訓練集里全是室外道路場景突然來一個地下車庫模型在這個分布外輸入上就不知道該怎么辦。增加訓練數據、增加模型容量、或者使用測試時增強可以降低認知不確定性。UQ-Loc 這類工作在設計時通常會把這兩種不確定性分別建模偶然不確定性通過網絡的第二個輸出頭直接回歸出來比如為每個點的場景坐標預測加上一個方差。認知不確定性常見做法是用 MC Dropout 或 Deep Ensemble 來近似在推理時多次前向傳播觀察輸出的一致性。如果你只想落地一個最簡版本先從偶然不確定性開始就夠用它的訓練損失函數天然支持方差的學習工程成本也要小得多。3.2 共享主干 雙分支輸出UQ-Loc 的典型結構可以概括為一個點云特征提取主干PointNet、稀疏卷積或范圍圖 CNN一個場景坐標回歸分支輸出每個點/像素的全局三維坐標一個不確定性回歸分支輸出對應每個坐標的不確定性方差或置信度。兩個分支共享同一個特征提取網絡。這樣做的好處是特征提取部分學習的幾何和語義信息既為坐標回歸服務也為不確定性估計服務。在推理階段不確定性分支并不需要額外的計算量所以這個設計幾乎是免費的。用代碼邏輯表示推理時的偽代碼如下# 偽代碼UQ-Loc 風格推理流程示意 # 實際網絡結構以論文實現為準 def forward(point_cloud): # 輸入一幀 LiDAR 點云形狀 [N, 3C] # N 為點數C 為額外特征強度、時間戳等 features backbone(point_cloud) # 點云特征提取 scene_coords coord_head(features) # 每個點的全局場景坐標 [N, 3] uncertainty unc_head(features) # 每個點的不確定性 [N, 1] return scene_coords, uncertainty這里最關鍵的設計決策是不確定性分支的輸出應該是什么形式常見選擇有兩種輸出方差variance在損失函數中參與加權輸出置信度confidence在位姿求解時作為 RANSAC 的樣本權重。前者訓練更穩定后者和 PnP/RANSAC 的結合更直覺。UQ-Loc 這種工作一般會想辦法讓兩者在一個統一框架里工作。3.3 損失函數讓不確定性學會“誠實”不確定性估計最難的一點是它沒有直接的監督標簽。我們并不知道每個點真實的方差是多少那該怎么辦答案是利用似然函數來間接監督。一個經典的思路是假設場景坐標預測服從高斯分布均值是預測的坐標方差是不確定性分支的輸出。那么我們訓練的目標就是最大化這個高斯分布的似然等價于最小化如下所示的負對數似然損失loss 0.5 * ( (y_pred - y_true)^2 / sigma^2 log(sigma^2) )其中sigma^2是不確定性分支輸出的方差。這個損失函數的妙處在于當預測誤差很大時模型會增大sigma來降低第一項但第二項會阻止sigma無限增大當預測誤差很小時模型會減小sigma并保持它以降低第二項。這樣訓練出來的不確定性可以理解為模型對自身預測誤差的“誠實估計”。誤差大的位置不確定性高誤差小的位置不確定性低。在實際工程中還需要注意如果不確定性分支輸出的是log(sigma^2)而不是直接輸出sigma^2訓練數值會更加穩定因為避免了方差必須非負的約束帶來的優化困難。3.4 位姿求解階段如何使用不確定性有了每個點的不確定性后續的位姿求解可以有兩種用法。一種是用不確定性作為 RANSAC 的權重。傳統 RANSAC 在采樣時對所有點一視同仁但如果我們知道某些點的預測很不確定就可以降低它們被采樣的概率從而提高采樣效率減少迭代次數。另一種是用不確定性做加權 PnP。在求解最小二乘問題時每個 2D-3D 對應的殘差乘以一個權重權重由不確定性決定。這樣不確定度高的點在優化中的影響被自動壓低最終的位姿精度會更高。定位流程對比 無不確定性感知 原始點云 → 回歸場景坐標 → 均勻權重 PnP/RANSAC → 一次性位姿輸出 不確定性感知 原始點云 → 回歸場景坐標 不確定性 → 加權 PnP/RANSAC → 位姿 不確定性估計這個差異在表面上看只是多了一個分支實際上是把“系統是否可信”這個原本要靠事后閾值判斷的問題提前合并到了模型的推理過程中。4. 不確定性感知到底能改變什么很多人看到“不確定性”三個字第一反應是“這個東西又不能直接提升精度有什么實際價值”這個判斷是不完整的。不確定性感知的核心價值在于讓定位系統具備了自我評估的能力。拿自動駕駛場景來說如果定位模塊給出的位姿不確定度突然升高說明當前環境可能進入了結構退化區域、動態遮擋嚴重區域或者傳感器數據質量在下降。這時候系統可以選擇降低車速、切換定位策略、請求重新初始化而不是繼續以高置信度往前沖。具體到工程系統不確定性輸出可以在至少三個環節被使用第一后端融合的權重調節。在多傳感器融合系統中GPS、IMU、輪速計、LiDAR 定位各自的可靠性是動態變化的。傳統做法是配置一個固定的噪聲協方差。如果 LiDAR 定位模塊能輸出逐幀的不確定性就可以將這個不確定性動態映射到融合權重中實現更合理的多傳感器融合。這也正好呼應了當前業內非常關注的“針對 camera / lidar / imu / gps 四類傳感器的專屬質量評估指標”這一趨勢——不確定性估計正是評估感知模塊輸出質量的關鍵技術手段之一。第二失敗檢測與自動恢復。定位系統最怕的不是失敗而是失敗了還不自知。不確定性估計算法可以提供一個天然的失敗檢測信號。設定一個閾值當不確定性超過閾值時觸發重定位或地圖切換流程就能避免系統帶著錯誤位姿長時間運行。第三動態場景過濾。在動態物體行人、車輛占據的區域場景坐標回歸的誤差通常很大不確定性也會相應升高。利用不確定性信息可以在位姿求解前過濾掉這些不可靠的點相當于給點云做了一次面向定位任務的動態物體去除。從架構層面看不確定性感知改變的并不是某一個模塊的算法而是定位系統對待自身輸出的態度從每次輸出一個唯一答案到輸出答案并且告訴你這個答案值不值得信賴。5. 實驗設計與評估指標怎么證明“不確定性”是有效的一個很實際的問題是如果我們要復現或者評估這類方法除了看傳統的定位精度還需要關心什么5.1 定位精度指標LiDAR 定位精度通常使用兩類指標ATE絕對軌跡誤差衡量估計軌跡與真值軌跡的整體偏差。RPE相對位姿誤差衡量相鄰幀之間的相對位姿誤差。這兩個指標在任何 SLAM / 定位論文中都是標配UQ-Loc 這類工作也會報告。但只看這兩個指標無法回答“不確定性估計到底準不準”的問題。5.2 不確定性質量指標比精度更重要的驗證維度假設一個模型預測出了不確定性sigma那怎么判斷它好不好核心標準是預測的不確定性和實際誤差是不是匹配。常用的指標包括NLL負對數似然衡量模型預測分布和真實標簽的擬合程度越低越好。ECE期望校準誤差把預測不確定性分桶比較桶內平均不確定性和實際誤差的一致性越低說明校準越好。AUSE面積下的不確定性誤差對不同不確定性閾值計算“錯誤被接受的比例”繪制曲線后積分。AURRE面積下的拒絕誤差在不同拒絕比例下計算平均定位誤差可以直觀看到“過濾掉高不確定性樣本后精度能提升多少”。這里的工程含義是一個良好的不確定性估計應該能做到“當系統說這次定位不可信時這次定位真的更可能出錯”。如果不確定性輸出和真實誤差完全不相關那這個輸出對下游來說就是一個噪音。5.3 設計評測場景的注意事項評估不確定性算法比評估普通定位算法更要小心場景設計。建議準備三類測試集正常場景常規道路、公開數據集上的標準序列。退化場景長走廊、隧道、停車場、空曠區域。動態場景車流密集、行人混雜的環境。退化場景和動態場景恰恰是不確定性估計發揮最大價值的地方。如果在這些場景下模型的不確定性輸出能夠顯著高于正常場景并且過濾掉高不確定性幀之后定位誤差明顯下降那基本可以判斷這套不確定性機制是有效的。6. 一個最小可驗證的實驗流程如果你打算在項目里試著引入類似 UQ-Loc 的方案可以參考下面的思路跑通一個最小閉環實驗。6.1 數據準備階段你需要準備一個包含 LiDAR 點云、真值位姿和三維地圖的數據集。如果是自采數據需要先完成 LiDAR 的位姿標定也就是通常說的 LiDAR SLAM 或 LiDAR-Inertial 建圖。這一步非常關鍵因為場景坐標回歸的訓練標簽就是“每個點在地圖坐標系下的真實三維坐標”標簽不準整個模型的上限就被卡死了。這里特別提醒一個容易出現問題的環節LiDAR 外參標定。場景坐標回歸需要把每幀點云從傳感器坐標系變換到地圖坐標系如果 LiDAR 相對車體的外參不準確點云和地圖的對齊誤差會直接變成訓練標簽的誤差。工程上建議在建圖之前先做一次完整的 LiDAR-IMU-Camera 聯合標定并建立標定參數的版本管理機制。6.2 網絡訓練流程一個最小訓練流程可以這樣組織# 偽代碼訓練循環核心邏輯 import torch # 假設已經構建好模型和數據加載器 model UQLocModel( backbonepointnet2, coord_dim3, uncertainty_modeheteroscedastic ) optimizer torch.optim.Adam(model.parameters(), lr1e-4) for epoch in range(args.epochs): for batch_points, batch_coords_true in dataloader: batch_points batch_points.to(device) batch_coords_true batch_coords_true.to(device) coords_pred, log_var model(batch_points) # 負對數似然損失帶不確定性加權 precision torch.exp(-log_var) loss torch.mean(precision * (coords_pred - batch_coords_true) ** 2) loss torch.mean(log_var) # 正則項防止方差無限增大 optimizer.zero_grad() loss.backward() optimizer.step()這個代碼的核心邏輯就是前文提到的負對數似然損失。注意這里用的是log_var而不是直接輸出方差這是數值穩定性的關鍵。6.3 后處理與位姿求解訓練完場景坐標回歸器后在位姿求解階段可以按如下方式結合不確定性# 偽代碼加權 PnP 流示意 # 省略了 RANSAC 細節只展示加權核心思想 import numpy as np def solve_pose_with_uncertainty(scene_coords, uncertainties, keypoint_indices): # scene_coords: 模型預測的全局場景坐標 # uncertainties: 對應每個預測點的方差 # keypoint_indices: 通過 RANSAC 采樣選中的內點下標 selected_coords scene_coords[keypoint_indices] selected_weights 1.0 / uncertainties[keypoint_indices] # 方差異常處理可加 epsilon # 用加權最小二乘求解位姿示意 # 這類問題建議使用成熟 PnP 庫或實現加權版本的 P3P/PnP 求解器 pose weighted_pnp( points_2dselected_coords, points_3dselected_coords, weightsselected_weights ) return pose這里面的關鍵處理是不確定度越高的點其權重越低。可以有效抵抗場景坐標回歸中少量外點對位姿求解的干擾。6.4 運行與驗證跑完一套流程后建議至少輸出以下統計信息ATE / RPE驗證定位精度。不確定性估計值和定位誤差之間的相關系數。設置不同不確定度閾值時的定位誤差變化曲線。如果看到的現象是過濾掉高不確定度的幀之后定位誤差明顯下降那就說明不確定性輸出是有信息量的。這也是 UQ-Loc 這類方法最值得關注的驗證結果。7. 常見問題與排查思路圍繞不確定性感知 LiDAR 定位結合我過去定位方向的經驗整理出下面幾個高頻問題供大家快速排查。問題現象可能原因排查方式解決方案不確定性輸出全部接近幾乎沒有區分度訓練數據場景單一模型沒有見過難度不同的樣本檢查訓練集中退化場景和動態場景的占比增加不同難度的場景尤其是長走廊、停車場場景坐標回歸誤差很大模型不收斂訓練標簽地圖坐標本身存在錯誤可視化一部分點云和地圖的疊加檢查對齊情況重新做建圖和 LiDAR 外參標定校驗標簽生成流程不確定性估計與定位誤差不相關不確定性分支只用 NLL 訓練但未參與位姿求解檢查推理時是否使用了不確定性信息在位姿求解階段引入不確定性權重對稱環境下位姿錯配但不確定性不高模型在訓練時沒有見過這種對稱場景單獨構造對稱場景測試集引入結構退化感知的損失項或數據增強推理速度較慢不確定性分支增加了額外計算分析每個模塊耗時考慮用輕量級不確定性頭或只在定位結果下發時計算不確定性訓練時 loss 出現 NaN方差出現極小值導致除零檢查 log_var 的輸出范圍和數值穩定性給分母加 epsilon或約束 log_var 的上下界這里的前兩個問題最容易出現在自采數據集上。很多時候模型訓不好不是網絡結構不夠好而是地圖建得不夠好。8. 工程化落地的幾條建議把這類算法從論文帶到實際系統有幾點經驗值得分享。第一地圖資產和傳感器標定要分開管理。UQ-Loc 這類方法強依賴三維地圖的質量而地圖的質量又強依賴 LiDAR 建圖時的外參、回環糾正、點云去畸變等環節。建議把標定參數、地圖版本、算法權重三者納入獨立的版本管理避免某個環節變更后難以回溯。第二別丟掉傳統定位方法。“不確定性 SCR”和傳統 ICP/NDT 不是替代關系而是互補關系。在工程上更穩妥的做法是用 SCR 做全局重定位的初始猜測再用 ICP/NDT 精配準最后用 SCR 輸出的不確定性來決定這個流程是否可信。這樣即兼容了 SCR 的重定位能力和傳統精配準的高精度。第三先做好不確定性校準再談部署。模型訓練完后不確定性輸出的絕對值通常不能直接當作真實方差使用。需要通過一段帶有真值的序列做校準得到不確定性到真實誤差的映射關系。這一步不做你很難在下游安全邏輯里設定一個合適的閾值。第四評估鏈路要覆蓋退化場景。很多團隊在測試時只跑 normal 場景得到的結論是“模型挺準的”但這掩蓋了退化場景下的風險。建議把退化場景自動化地加入回歸測試集每次模型更新都要跑一遍防止“精度提升但魯棒性下降”的隱性回歸。第五關注多傳感器質量評估體系。如果系統里同時有 camera、LiDAR、IMU、GPS建議為每一類傳感器都設計獨立的質量評估指標再在融合層把 LiDAR 定位的不確定性作為其中一個輸入。不確定性感知和傳感器質量評估本質上是一件事的兩個側面一個是讓每個傳感器模塊“誠實匯報”另一個是讓融合中心“合理信任”。9. 總結與后續方向UQ-Loc 的核心思想可以濃縮成一句話LiDAR 場景坐標回歸不僅要回答“我在哪里”還要回答“我有多確定”。它把不確定性估計融入到從點云特征提取、場景坐標回歸到位姿求解的完整鏈路中讓定位系統第一次有機會在“自信地犯錯”之前向系統發出預警。如果你想從這篇文章開始動手實踐建議按這樣的順序來先準備一套帶真值位姿和三維地圖的點云數據確認標定無誤再實現一個最簡的“共享主干 坐標回歸頭 不確定性頭”結構用負對數似然損失訓練最后在傳統定位精度之外加上不確定性質量的評估指標驗證不確定性是否真的有信息量。這個閉環跑通之后再討論與現有 SLAM 系統的集成。在更寬的技術趨勢里不確定性感知定位是“安全型定位系統”的基石之一。后續值得深入的方向包括將不確定性估計與相機-雷達深度融合用不確定性來動態調節跨傳感器的信任權重在線的場景坐標回歸與地圖更新以及更細粒度的不確定性分解把動態物體、傳感器噪聲、模型知識盲區三類不確定性來源區分開。這些方向落地難度都不小但每進一步機器對自身能力邊界的認識就更清晰一層。如果你正在做定位方向的工程或研究建議把這篇文章的思路和你的實際場景對照一下看看你的系統在哪些環節最容易出現高誤判置信度那個地方很可能就是不確定性感知應該介入的位置。