CVPR 2023開源! ORB和SuperPoint還可以再強(qiáng)化一下!
無論是ORB、SIFT這樣的手工特征點(diǎn),還是SuperPoint這類基于深度學(xué)習(xí)的特征點(diǎn),都在SLAM和SfM中應(yīng)用廣泛。但這些方法都已經(jīng)很早了,有沒有什么算法可以對它們進(jìn)行二次強(qiáng)化,并且還能在嵌入式設(shè)備上使用呢?
作者:泡椒味的口香糖 ?| 來源:3D視覺工坊
在公眾號「3D視覺工坊」后臺,回復(fù)「原論文」即可獲取論文pdf。
添加微信:dddvisiona,備注:深度學(xué)習(xí),拉你入群。文末附行業(yè)細(xì)分群。
今天要給大家介紹的就是這樣一項工作,名為FeatureBooster,是CVPR 2023開源的工作。其在傳統(tǒng)的特征匹配中引入輕量級描述符增強(qiáng)網(wǎng)絡(luò),主要思想是編碼特征點(diǎn)的描述子及其幾何信息,并使用輕量級Transformer來增強(qiáng)感受野,可以很好得優(yōu)化ORB、SIFT、SuperPoint、ALIKE等特征點(diǎn),并且在3090上運(yùn)行速度達(dá)到了3.2ms,在Jetson Xavier NX上運(yùn)行速度達(dá)到了27ms。這里也推薦「3D視覺工坊」新課程《ORB-SLAM3理論講解與代碼精析》。
下圖左列是原始ORB的匹配結(jié)果(最近鄰匹配+RANSAC),右列是ORB引入FeatureBooster后的匹配結(jié)果,顯然在運(yùn)動模糊和低紋理場景下引入FeatureBooster可以實(shí)現(xiàn)很好的匹配結(jié)果。
下面是一些真實(shí)場景下的匹配結(jié)果,引入FeatureBooster后匹配性能大幅提升,對于SLAM和SfM等任務(wù)的應(yīng)該也會有提升效果。
代碼已經(jīng)開源了,感興趣的小伙伴趕快試試吧,下面來看具體的論文信息。
我們引入一個輕量級網(wǎng)絡(luò)來改進(jìn)同一幅圖像中關(guān)鍵點(diǎn)的描述符。該網(wǎng)絡(luò)以原始描述符和關(guān)鍵點(diǎn)的幾何屬性作為輸入,使用基于MLP的自增強(qiáng)階段和基于Transformer的交叉提升階段對描述符進(jìn)行增強(qiáng)。增強(qiáng)后的描述符可以是實(shí)值描述符,也可以是二進(jìn)制描述符。我們使用所提出的網(wǎng)絡(luò)來提升手工設(shè)計的(ORB, SIFT)和最先進(jìn)的基于學(xué)習(xí)的描述符(SuperPoint, ALIKE),并在圖像匹配、視覺定位和運(yùn)動產(chǎn)生的結(jié)構(gòu)任務(wù)上對它們進(jìn)行評估。結(jié)果表明,我們的方法顯著提高了每個任務(wù)的性能,特別是在具有挑戰(zhàn)性的情況下,如較大的光照變化或重復(fù)模式。我們的方法在桌面GPU上處理2000個特征只需要3.2 ms,在嵌入式GPU上處理2000個特征只需要27ms,速度足夠快,可以應(yīng)用到實(shí)際系統(tǒng)中。
FeatureBooster的輸入是原始描述符和關(guān)鍵點(diǎn)的幾何特性(位置、方向、置信度、尺度),并使用基于MLP的自提升階段和基于Transformer的交叉提升階段來增強(qiáng)描述符。其中,自提升階段分為兩步,首先將幾何特性編碼到新的高維向量,然后將描述子使用MLP投影到新空間。交叉提升階段更側(cè)重其他特征的描述符和所有特征的空間布局的全局上下文,主要是使用一個輕量級Transformer實(shí)現(xiàn)。注意,FeatureBooster的輸入并不包括原始圖像,所以這個網(wǎng)絡(luò)很輕量。
那么,為啥要這樣做呢?
首先,我們知道手工特征匹配有歐氏距離、漢明距離、Hellinger距離等等,那么使用這些距離進(jìn)行相似性度量就一定好嗎?或者舉例來說,ORB的二進(jìn)制描述子,一定是最適合漢明匹配嗎?實(shí)際上,改變相似性度量方式,就相當(dāng)于將原始的描述符投影到了另一個空間。所以,理論上這個空間也是可以學(xué)習(xí)的!所以就可以使用MLP將原始描述符編碼,來逼近這個最優(yōu)空間!
其次,描述子的幾何信息,例如位置、方向、置信度、尺度,也對學(xué)習(xí)非常有用,所以也可以進(jìn)行編碼。
再說這個交叉增強(qiáng)。前面自增強(qiáng)是獨(dú)立得增強(qiáng)每個關(guān)鍵點(diǎn)的描述子,但是沒有考慮不同關(guān)鍵點(diǎn)之間的相關(guān)性。交叉增強(qiáng)就是巧妙利用了同一圖像中不同特征點(diǎn)的上下文線索,而全局上下文正好就是Transformer的強(qiáng)項!借助Transformer中的Attention,可以聚合所有局部特征信息,形成全局上下文。通過整合這種全局上下文信息,局部特征描述子會具有更大的感受野,并根據(jù)其鄰域特征點(diǎn)進(jìn)行自適應(yīng)調(diào)整。
但使用Transformer最大的問題是計算量和GPU顯存占用,作者使用了一些trick。本身多頭注意力機(jī)制使用注意力矩陣來進(jìn)行Q和V的交互,進(jìn)行Q和K點(diǎn)積計算的話復(fù)雜度是O(N2D)(N是特征點(diǎn)數(shù)目,D是描述子維度),顯然是無法接受的。因此,作者設(shè)計了一個Attention-Free Transformer模塊(AFT),AFT重新排列了Q、K、V的計算順序,它將K和V逐元素相乘,而沒有使用矩陣乘法,因此**計算復(fù)雜度降低到了O(ND)**。
最重要的是,F(xiàn)eatureBooster可以適用于任何實(shí)值描述子和二進(jìn)制描述子。但實(shí)際上,實(shí)值描述子也就相當(dāng)于給網(wǎng)絡(luò)的最后一層輸出進(jìn)行L2歸一化,二進(jìn)制描述子也就相當(dāng)于使用tanh給最后一層進(jìn)行閾值化。
訓(xùn)練是在MegaDepth和DISK上進(jìn)行,使用AdamW優(yōu)化器,初始學(xué)習(xí)率為1e-3并使用余弦退火策略。測試時,使用HPatches測試集來評估圖像匹配任務(wù),使用Aachen Day-Night數(shù)據(jù)集和InLoc數(shù)據(jù)集來評估定位任務(wù),使用ETH SfM benchmark來評估SfM性能,使用EuRoC來評估ORB-SLAM2優(yōu)化效果,注意FeatureBooster并沒有在這些數(shù)據(jù)集上進(jìn)行微調(diào)。
光照和視角變化下的MMA顯示,F(xiàn)eatureBooster無論對于實(shí)值描述子還是二進(jìn)制描述子,都可以提升性能,表中Boost-F和Boost-B分別表示實(shí)值描述子和二進(jìn)制描述子。筆者覺得這里也有一個很重要的點(diǎn),就是FeatureBooster可以將實(shí)值描述子轉(zhuǎn)換為二進(jìn)制描述子,反之亦然。注意看表中帶有二進(jìn)制描述子的SuperPoint,其性能幾乎和原始的浮點(diǎn)數(shù)描述子相同,但要知道二進(jìn)制描述子的區(qū)分度本來就是不如浮點(diǎn)數(shù)的!
下面再看視覺定位結(jié)果,主要對比嚴(yán)重光照變化、重復(fù)紋理和無紋理條件下的定位性能,結(jié)果顯示FeatureBooster在室內(nèi)和室外環(huán)境下都提升了性能,優(yōu)化后的ORB特征甚至可以和SuperPoint競爭,甚至在室內(nèi)實(shí)驗超越了ALIKE。有意思的是,還對比了SuperPoint和SuperGlue這個組合。
再來看看SfM測試結(jié)果,實(shí)驗方法是,首先對數(shù)據(jù)集進(jìn)行窮舉圖像匹配,然后進(jìn)行最近鄰匹配,最后執(zhí)行ColMap,對比匹配圖像的數(shù)量、稀疏點(diǎn)、圖像中的總觀測值、平均軌跡長度和平均重投影誤差。這個結(jié)果說明優(yōu)化后的特征點(diǎn),可以找到更多的匹配關(guān)系來重建3D點(diǎn)。這里也推薦「3D視覺工坊」新課程《ORB-SLAM3理論講解與代碼精析》。
消融實(shí)驗是針對SuperPoint(為啥不做ORB和其他特征點(diǎn)了呢?),主要是證明幾何信息編碼對于自提升階段的作用,還有交叉提升階段的影響。
作者還將改進(jìn)后的ORB特征嵌入到了ORB-SLAM2中,并在EuRoC數(shù)據(jù)集中進(jìn)行測試。結(jié)果顯示,大多數(shù)序列上的平移誤差都減小了。感興趣的讀者可以嘗試嵌入到ORB-SLAM3中進(jìn)行測試。
作者也對比了不同的Transformer模塊對算法性能的影響,結(jié)果顯示,使用Attention-Free的模塊雖然MMA稍差一點(diǎn),但是速度得到了極大提升,這也從另一方面證明了作者設(shè)計的這個注意力模塊的計算效率。
FeatureBooster這項工作主要是針對ORB、SIFT、SuperPoint、ALIKE這四個常見的特征點(diǎn)的描述子進(jìn)行優(yōu)化,分別進(jìn)行描述子編碼、描述子幾何信息編碼,以及同其他特征點(diǎn)的全局上下文感知。分別做了圖像匹配、定位、SfM、SLAM等實(shí)驗,工作量很充實(shí)。關(guān)鍵是算法可以在嵌入式設(shè)備上實(shí)時運(yùn)行,這一點(diǎn)還是挺有應(yīng)用價值的。
目前工坊已經(jīng)建立了3D視覺方向多個社群,包括SLAM、工業(yè)3D視覺、自動駕駛方向,細(xì)分群包括:[工業(yè)方向]三維點(diǎn)云、結(jié)構(gòu)光、機(jī)械臂、缺陷檢測、三維測量、TOF、相機(jī)標(biāo)定、綜合群;[SLAM方向]多傳感器融合、ORB-SLAM、激光SLAM、機(jī)器人導(dǎo)航、RTK|GPS|UWB等傳感器交流群、SLAM綜合討論群;[自動駕駛方向]深度估計、Transformer、毫米波|激光雷達(dá)|視覺攝像頭傳感器討論群、多傳感器標(biāo)定、自動駕駛綜合群等。[三維重建方向]NeRF、colmap、OpenMVS等。除了這些,還有求職、硬件選型、視覺產(chǎn)品落地等交流群。大家可以添加小助理微信: dddvisiona,備注:加群+方向+學(xué)校|公司, 小助理會拉你入群。