基於跨模態上下文的局部描述子增強
github:https://github.com/lzx551402/contextdesc
論文:https://arxiv.org/abs/1904.04084
轉載註明出處!
1.早期特徵設計的目標:
可重複性:相同的“區域”可以在不同的圖像中被找到;
可區別性:不同的“區域”有不同的表示;
高效性:同一張圖像,特徵點的數量應<<像素數量;
本地性:特徵僅與一小片圖像區域相關;
誤匹配 由於圖像特徵的局部特性,場景中存在大量重複紋理,都有相似的特徵描述,僅利用局部特徵;
導致誤匹配廣泛存在,長期以來沒有很好的解決辦法,成爲了制約視覺SLAM性能的一大瓶頸;
2.論文主要思想
通過區域信息和幾何結構信息來增強原特徵描述子;
它不包含關鍵點的檢測.
加入高階圖像表示的視覺上下文;
加入關鍵點分佈的幾何上下文;
- 從輸入的單張圖像中提取:
關鍵點[k, 2];
區域特徵[H/32, W/32, 2048];
基礎描述子特徵向量[k, 128]; - 將三種信息轉化爲:
幾何信息;
視覺信息;
3.GeoDesc(2018.8)–基礎描述子
一種基於卷積神經網絡的描述子;
輸入是關鍵點的image patch,[32,32,1];
整個網絡共7層;
輸出尺寸是128維特徵向量;
4.幾何上下文模塊
- 此模塊輸入:
K個關鍵點座標;
K個描述子,用來得到關鍵點的可匹配度; - 輸出:
是128維特徵向量.
5.可匹配度
- 提出一種預測“匹配能力”的度量;
- 目標是在匹配階段之前, 確定一個關鍵點是否可匹配的;
- 其實就是一種置信度,在經過多層卷積之後,使用tanh激活函數進性激活;
6.Context Normalization(CN)
-
在多層卷積中,加入CN技術,公式:
-
由於原始輸出都是非負的,會影響表達能力,所以調整順序,每個殘差單元使用預激活, 能兼容CN. 替換了最後四個殘差單元. 簡單的變化卻在減少優化負擔中起到了關鍵的角色.
7.視覺上下文模塊
- 輸入:
1)區域特徵,尺寸是H/32W/322048;
2)K個局部特徵描述子(基礎的局部描述子);
3)k個關鍵點座標; - 輸出:
K個增強後的帶有視覺信息的特徵向量;
8.區域特徵數與關鍵點匹配
- , 網格點座標;
- ,關鍵點座標;
- 使用與距離成反比的加權平均特徵來表示關鍵點的區域特徵;
- 使用K近鄰來選取鄰域,k=3;
- 之後再通過多層卷積和squeeze,降低維度;
9.特徵融合
- 對於融合基礎特徵、幾何上下文、視覺上下文特徵, 簡單的做法是將3種特徵合併起來, 然而增加的維度將會在匹配階段增加計算複雜度;
- 因此,將3種特徵加權求和,加入L2正則項,從而不改變維度;
- 除了實現簡單, 這種策略還可以靈活的運用. 例如,在區域特徵不顯著的情境,可以僅融合幾何上下文,而不需要訓練模型.
10.N-pair損失函數
-
原始的N-pair沒有可調參數:
-
由於D輸出是[0,2],導致softmax函數尺度敏感,從而導致收斂問題;
所以乘以一個可訓練的縮放因子α,初始化爲1:
- 可訓練的,所以不需要人爲干預或者複雜的啓發式方法;
實驗證明,對比其原始形式,這一簡單調整有很大的提升; - α參數訓練日誌:
11.訓練
- 每次有1024個隨機選取的關鍵點(包含關鍵點和噪聲).
- 輸入patch都經過0均值和歸一化.
- 輸入關鍵點座標相對於圖像,被規範到[-1,+1]之間.
- 訓練數據集:GL3D–一個大規模攝影旅遊航拍數據集;
12.關於關鍵點檢測
- 雖然本文中並未討論檢測子,
- 但作者認爲更先進的關鍵點檢測技術無疑可以帶來很大提升;
- 可以利用深度的方法來檢測關鍵點,例如SuperPointNet;
13.評估
作者做了很多實驗,結果都是state-of-the art,詳細的可以看論文,我只是將我的見解講一講