點擊上方「計算機視覺life」,選擇「星標」
快速獲得最新乾貨
本文轉自3D視覺工坊
本文出自近幾年備受矚目的創業公司MagicLeap[1],之前發表在CVPR, 一作Daniel DeTone[2],
paper[3] ,
slides[4] ,
code[5] 。雖然過去了挺久,但是仍然是經典,值得學習
這篇文章設計了一種自監督網絡框架,能夠同時提取特徵點的位置以及描述子。相比於patch-based方法,本文提出的算法能夠在原始圖像提取到像素級精度的特徵點的位置及其描述子。本文提出了一種單應性適應(Homographic Adaptation)的策略以增強特徵點的復檢率以及跨域的實用性(這裡跨域指的是synthetic-to-real的能力,網絡模型在虛擬數據集上訓練完成,同樣也可以在真實場景下表現優異的能力)。
介紹 諸多應用(諸如SLAM/SfM/相機標定/立體匹配)的首要一步就是特徵點提取,這裡的特徵點指的是
能夠在不同光照&不同視角下都能夠穩定且可重複檢測的2D圖像點位置 。基於CNN的算法幾乎在以圖像作為輸入的所有領域表現出相比於人類特徵工程更加優秀的表達能力。目前已經有一些工作做類似的任務,例如人體位姿估計,目標檢測以及室內布局估計等。這些算法以通常以大量的人工標註作為GT,這些精心設計的網絡用來訓練以得到人體上的角點,例如嘴唇的邊緣點亦或人體的關節點,但是這裡的問題是這裡的點實際是ill-defined(我的理解是,這些點有可能是特徵點,但僅僅是一個大概的位置,是特徵點的子集,並沒有真正的把特徵點的概念定義清楚)。本文採用了非人工監督的方法提取真實場景的特徵點。本文設計了一個由特徵點檢測器監督的具有偽真值數據集,而非是大量的人工標記。為了得到偽真值,本文首先在大量的虛擬數據集上訓練了一個全卷積網絡(FCNN),這些虛擬數據集由一些基本圖形組成,例如有線段、三角形、矩形和立方體等,這些基本圖形具有沒有爭議的特徵點位置,文中稱這些特徵點為MagicPoint,這個pre-trained的檢測器就是MagicPoint檢測器。這些MagicPoint在虛擬場景的中檢測特徵點的性能明顯優於傳統方式,但是在真實的複雜場景中表現不佳,此時作者提出了一種多尺度多變換的方法Homographic Adaptation。對於輸入圖像而言,Homographic Adaptation通過對圖像進行多次不同的尺度/角度變換來幫助網絡能夠在不同視角不同尺度觀測到特徵點。綜上:
SuperPoint = MagicPoint+Homographic Adaptation 算法優劣對比 特徵點與描述子分開進行訓練導致運算資源的浪費,網絡不夠精簡,實時性不足;或者僅僅訓練特徵點或者描述子的一種,不能用同一個網絡進行聯合訓練;
網絡結構 上圖可見特徵點檢測器以及描述子網絡共享一個單一的前向encoder,只是在decoder時採用了不同的結構,根據任務的不同學習不同的網絡參數。這也是本框架與其他網絡的不同之處:其他網絡採用的是先訓練好特徵點檢測網絡,然後再去進行對特徵點描述網絡進行訓練。網絡共分成以下4個主要部分,在此進行詳述:
1. Shared Encoder 共享的編碼網絡 從上圖可以看到,整體而言,本質上有兩個網絡,只是前半部分共享了一部分而已。本文利用了VGG-style的encoder以用於降低圖像尺寸,encoder包括卷積層,max-pooling層,以及非線性激活層。通過3個max-pooling層將圖像的尺寸變成
和 ,經過encoder之後,圖像由 變為張量2. Interest Point Decoder 這裡介紹的是特徵點的解碼端。每個像素的經過該解碼器的輸出是該像素是特徵點的概率(probability of 「point-ness」)。通常而言,我們可以通過反卷積得到上採樣的圖像,但是這種操作會導致計算量的驟增以及會引入一種「checkerboard artifacts」。因此本文設計了一種帶有「特定解碼器」(這種解碼器沒有參數)的特徵點檢測頭以減小模型計算量(子像素卷積)。例如:輸入張量的維度是 ,輸出維度 ,即圖像的尺寸。這裡的65表示原圖 的局部區域,加上一個非特徵點dustbin。通過在channel維度上做softmax,非特徵點dustbin會被刪除,同時會做一步圖像的reshape: 。(這就是子像素卷積[6]的意思,俗稱像素洗牌)3. Descriptor Decoder 首先利用類似於UCN的網絡得到一個半稠密的描述子(此處參考文獻UCN[7]),這樣可以減少算法訓練內存開銷同時減少算法運行時間。之後通過雙三次多項式插值得到其餘描述,然後通過L2-normalizes歸一化描述子得到統一的長度描述。特徵維度由 變為 。由特徵點得到其描述子的過程文中沒有細講,看了一下原始碼[8]就明白了。其實該過程主要用了一個函數即grid_sample,畫了一個草圖作為解釋。圖像尺寸歸一化:首先對圖像的尺寸進行歸一化,(-1,-1)表示原來圖像的(0,0)位置,(1,1)表示原來圖像的(H-1,W-1)位置,這樣一來,特徵點的位置也被歸一化到了相應的位置。構建grid:將歸一化後的特徵點羅列起來,構成一個尺度為1*1*K*2的張量,其中K表示特徵數量,2分別表示xy坐標。特徵點位置反歸一化:根據輸入張量的H與W對grid(1,1,0,:)(表示第一個特徵點,其餘特徵點類似)進行反歸一化,其實就是按照比例進行縮放+平移,得到反歸一化特徵點在張量某個slice(通道)上的位置;但是這個位置可能並非為整像素,此時要對其進行雙線性插值補齊,然後其餘slice按照同樣的方式進行雙線性插值。註:代碼中實際的就是雙線性插值,並非文中講的雙三次插值;4. 誤差構建 可見損失函數由兩項組成,其中一項為特徵點檢測loss ,另外一項是描述子的loss 。其中 為Hinge-loss(合頁損失函數,用於SVM,如支持向量的軟間隔,可以保證最後解的稀疏性);網絡訓練 本文一共設計了兩個網絡,一個是BaseDetector,用於檢測角點(注意,此處提取的並不是最終輸出的特徵點,可以理解為候選的特徵點),另一個是SuperPoint網絡,輸出特徵點和描述子。第一步是採用虛擬的三維物體作為數據集,訓練網絡去提取角點,這裡得到的是BaseDetector即,MagicPoint;使用真實場景圖片,用第一步訓練出來的網絡MagicPoint +Homographic Adaptation提取角點,這一步稱作興趣點自標註(Interest Point Self-Labeling)對第二步使用的圖片進行幾何變換得到新的圖片,這樣就有了已知位姿關係的圖片對,把這兩張圖片輸入SuperPoint網絡,提取特徵點和描述子。預訓練Magic Point 此處參考作者之前發表的一篇論文[Toward Geometric Deep SLAM[9]],其實就是MagicPoint,在此不做展開介紹。
Homographic Adaptation 算法在虛擬數據集上表現極其優秀,但是在真實場景下表示沒有達到預期,此時本文進行了Homographic Adaptation。 作者使用的數據集是MS-COCO,為了使網絡的泛化能力更強,本文不僅使用原始了原始圖片,而且對每張圖片進行隨機的旋轉和縮放形成新的圖片,新的圖片也被用來進行識別。這一步其實就類似於訓練裡常用的數據增強。經過一系列的單映變換之後特徵點的復檢率以及普適性得以增強。值得注意的是,在實際訓練時,這裡採用了迭代使用單映變換的方式,例如使用優化後的特徵點檢測器重新進行單映變換進行訓練,然後又可以得到更新後的檢測器,如此迭代優化,這就是所謂的self-supervisd。
利用上面網絡得到的關鍵點位置以及描述子表示構建殘差,利用ADAM進行優化。實驗結果 總結 it is possible to transfer knowledge from a synthetic dataset onto real-world imagessparse interest point detection and description can be cast as a single, efficient convolutional neural networkthe resulting system works well for geometric computer vision matching tasks such as Homography Estimation研究Homographic Adaptation能否在語義分割任務或者目標檢測任務中有提升作用作者最後提到,他相信該網絡能夠解決SLAM或者SfM領域的數據關聯,並且learning-based前端可以使得諸如機器人或者AR等應用獲得更加魯棒。[1]MagicLeap: https://www.magicleap.com/ [2]Daniel DeTone: http://www.danieldetone.com/ [3]paper: https://arxiv.org/abs/1712.07629 [4]slides:https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork/blob/master/assets/DL4VSLAM_talk.pdf [5]code:https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork [6]子像素卷積: https://blog.csdn.net/leviopku/article/details/84975282 [7]UCN: https://arxiv.org/abs/1606.03558 [8]SpatialGridSamplerBilinear:https://github.com/pytorch/pytorch/blob/f064c5aa33483061a48994608d890b968ae53fb5/aten/src/THNN/generic/SpatialGridSamplerBilinear.c [9]Toward Geometric Deep SLAM: https://arxiv.org/abs/1707.07410
編輯:計算機視覺SLAM
專輯:計算機視覺方向簡介
專輯:視覺SLAM入門
專輯:最新SLAM/三維視覺論文/開源
專輯:三維視覺/SLAM公開課
專輯:深度相機原理及應用
專輯:手機雙攝頭技術解析與應用
專輯:相機標定
專輯:全景相機
從0到1學習SLAM,戳↓
視覺SLAM圖文+視頻+答疑+學習路線全規劃!
交流群歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺 、傳感器、自動駕駛、 計算攝影 、檢測、分割、識別、醫學影像、GAN 、算法競賽 等微信群(以後會逐漸細分),請掃描下面微信號加群,備註:」暱稱+學校/公司+研究方向「,例如:」張三 + 上海交大 + 視覺SLAM「。請按照格式備註,否則不予通過 。添加成功後會根據研究方向邀請進入相關微信群。請勿在群內發送廣告 ,否則會請出群,謝謝理解~
投稿、合作也歡迎聯繫:simiter@126.com
掃描關注視頻號,看最新技術落地及開源方案視頻秀 ↓