深度学习 相机标定_基于深度学习的多传感器标定
標定是確定不同坐標系的相互轉(zhuǎn)換關(guān)系,是傳感器數(shù)據(jù)融合的前提,特別是激光雷達和圖像數(shù)據(jù)。這里以深度學習的方法訓練CNN模型去回歸坐標系轉(zhuǎn)換的參數(shù)。
主要是兩個CNN模型:RegNet和CalibNet。
RegNet應(yīng)該是第一個深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)推斷多傳感器的6自由度(DOF)外參數(shù)標定,即激光雷達(LiDAR)和單目攝像頭。RegNet將標定的三個步驟(特征提取、特征匹配和全局回歸)映射到單個實時CNN模型中。在訓練期間,隨機對系統(tǒng)進行重新調(diào)整,以便訓練RegNet推斷出激光雷達投影到攝像頭的深度測量與RGB圖像之間的對應(yīng)關(guān)系,并最終回歸標定外參數(shù)。此外,通過迭代執(zhí)行多個CNN,在不同程度失標定(decalibration)數(shù)據(jù)上進行訓練。如圖是一個例子。
失標定標定基礎(chǔ)事實(GT)RegNet標定結(jié)果首先,傳感器坐標系中給出的點x變換為世界坐標系中的點y,定義為一個仿射變換矩陣H,即y = Hx。估計變換矩陣H的任務(wù)稱為外標定。應(yīng)用深度學習,需要重新定義外標定的問題,在給定初始標定Hinit和基礎(chǔ)事實標定Hgt的情況下,確定失標定矩陣φdecalib,其定義如下
然后可以隨機改變Hinit以獲得大量的訓練數(shù)據(jù)。為了能夠建立標定過程可觀測的對應(yīng)關(guān)系,用Hinit和攝像頭內(nèi)參數(shù)矩陣P將激光雷達點投影在攝像頭圖像平面上,即
在每個像素(u,v),如果沒有投射的激光雷達點,則存儲投影點的逆深度值(攝像頭坐標)zc或者為零。 由于相比圖像像素的數(shù)量大多數(shù)常見的激光雷達傳感器僅提供少量測量數(shù)據(jù),因此深度圖像非常稀疏。為了對付這種稀疏性,在輸入深度圖使用最大值池化(Max Pooling)對投影的激光雷達深度點上采樣。
下面圖展示的是Regnet的結(jié)構(gòu)框圖,其實現(xiàn)深度和RGB圖像之間的標定。 使用初始標定Hinit將深度點投影在RGB圖像上。在CNN網(wǎng)絡(luò)的第一和第二部分,使用NiN(Network in Network)塊來提取豐富的特征以進行匹配,其中索引顯示NiN塊的第一卷積層的核大小k。 特征通道的數(shù)量顯示在每個模塊的右上角。 CNN網(wǎng)絡(luò)最后一部分通過使用兩個全連接層收集全局信息來對失標定進行回歸。(注:NiN塊由一個k×k卷積,然后是幾個1×1卷積組成。)在訓練期間,失標定矩陣會被隨機排列,形成深度點的不同投影數(shù)據(jù)。
如下圖所示,深度點的投影隨給定的初始標定值而強烈地變化。當初始校準從標定的基礎(chǔ)事實(GT)旋轉(zhuǎn)偏離20°平移偏離1.5米的時候,可能導致激光雷達點云的投影的大多數(shù)點在圖像區(qū)域之外,難以與RGB圖像建立對應(yīng)關(guān)系。
即使在這些情況下,訓練的CNN網(wǎng)絡(luò)仍然能夠改進標定。使用新的估計標定參數(shù)可以再次投影深度點,從而產(chǎn)生更多供相關(guān)計算的深度點。 然后,該步驟多次迭代即可。
初始化結(jié)果CalibNet是一個自監(jiān)督的深度網(wǎng)絡(luò),能夠?qū)崟r自動估計激光雷達和2D攝像頭之間的6-自由度剛體轉(zhuǎn)換關(guān)系。在訓練時,不進行直接監(jiān)督(例如不直接回歸標定參數(shù));相反,可以訓練網(wǎng)絡(luò)去預(yù)測標定參數(shù),以最大化輸入圖像和點云的幾何和光度一致性。
下圖是CalibNet的流程圖:(a)來自標定攝像頭的RGB圖像;(b)原始激光雷達點云作為輸入,并輸出最佳對齊兩個輸入的6-自由度剛體變換T;(c)顯示錯誤標定設(shè)置的彩色點云輸出;(d)顯示使用CalibNet網(wǎng)絡(luò)標定后的輸出。
該網(wǎng)絡(luò)將RGB圖像、相應(yīng)的誤標定(mis-calibration)的激光雷達點云和相機標定矩陣K作為輸入。作為預(yù)處理步驟,首先將點云轉(zhuǎn)換為稀疏深度圖,將激光雷達點云投影到圖像平面即可。由于初始誤標定的不準確,將誤標定點投影到圖像平面會導致稀疏深度圖與圖像(嚴重)不一致,如上圖(c)所示。 將RGB輸入圖像和稀疏深度圖標準化為±1的范圍,然后用5 x 5最大池化窗將稀疏深度圖最大池化為半致密深度圖。
雖然網(wǎng)絡(luò)的輸出可直接預(yù)測平移,但需要將so(3) 中的輸出旋轉(zhuǎn)矢量轉(zhuǎn)換為其對應(yīng)的旋轉(zhuǎn)矩陣。一個元素ω ∈ so(3) 可以通過使用指數(shù)圖(exponential map)轉(zhuǎn)換為SO(3)。
一旦將網(wǎng)絡(luò)預(yù)測的標定參數(shù)轉(zhuǎn)換為T∈SE(3)中的剛體變換,就會使用3-D空間變換器層(Spatial Transformer Layer),通過預(yù)測變換T對輸入深度圖進行變換。這里擴展了原始的3D空間變換器層以處理稀疏或半致密的輸入深度圖,如上圖(d)。
下圖是CalibNet的網(wǎng)絡(luò)結(jié)構(gòu)圖。網(wǎng)絡(luò)主要由”RGB”和”深度”2個不對稱分支組成,每個分支執(zhí)行一系列,因此”深度”流的濾波器在每個階段都會減少。然后兩個分支的輸出沿著信道這個維度連接并通過一系列附加全卷積和批規(guī)則化(Batch Norm)層,用于全局特征聚合。將旋轉(zhuǎn)和平移的輸出流分離,以捕獲旋轉(zhuǎn)和平移之間可能存在的模態(tài)差異。網(wǎng)絡(luò)的輸出是1×6矢量ξ=(v, ω)∈ se(3), 其中v是平移速度矢量,ω是旋轉(zhuǎn)速度矢量。
下面是損失函數(shù)的定義:
1. 光度損失:在通過預(yù)測的T變換深度圖之后,檢查預(yù)測的深度圖和正確的深度圖之間的密集像素誤差,誤差定義為,
2. 點云距離損失:3D空間變換器層允許在反投影(back projection)后的點云轉(zhuǎn)換。 在這個階段,嘗試度量尺度最小化未校準的變換點和目標點云之間的3D-3D點距離。距離測量有
a) Chamfer 距離
b) 推土機距離(Earth Mover’s Distance):
c) 質(zhì)心ICP距離
最后,整個損失函數(shù)定義為:
下圖是CalibNet標定的一些結(jié)果。第一行顯示輸入的RGB圖像,第二行顯示投影到圖像上的相應(yīng)的誤標定的激光雷達點云。 第三行顯示使用網(wǎng)絡(luò)預(yù)測變換投影的激光雷達點云,最后一行顯示相應(yīng)的基礎(chǔ)事實結(jié)果。 第二行中的紅色框表示未對齊,而在第三行中,紅色框表示標定后的正確對齊。
總結(jié)
以上是生活随笔為你收集整理的深度学习 相机标定_基于深度学习的多传感器标定的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信号与系统2022春季学期:作业内容与参
- 下一篇: 【基于机器视觉与深度学习的人机对弈机器人