一肌访、概述
??本文來(lái)自索尼團(tuán)隊(duì)女气,提出了一種屬于detect to describe結(jié)構(gòu)的肮之,image與patch相結(jié)合的joint learning框架瘤袖。不同于LIFT直接輸入patch進(jìn)行預(yù)測(cè)的方式艳吠,本文以完整圖像為輸入,利用STN進(jìn)行方向估計(jì)并crop patch孽椰,再將patch送入特征描述網(wǎng)絡(luò)學(xué)習(xí)描述子昭娩。
??值得注意的是,本文提出的LF-Net只需要最基本的圖像之間是否存在匹配關(guān)系這種粗粒度的信息作為標(biāo)注并未像其他論文中那樣利用匹配的興趣點(diǎn)作為標(biāo)注信息黍匾,而是只利用圖像之間相對(duì)相機(jī)位姿栏渺、深度等幾何關(guān)系,然后在訓(xùn)練中利用該幾何關(guān)系以在線方式生成監(jiān)督信號(hào)及組件triplet锐涯。以下為原文摘要:
??本文提出了一種新的深度特征提取框架及訓(xùn)練方式磕诊,在無(wú)需人為標(biāo)注的情況下實(shí)現(xiàn)局部特征描述網(wǎng)絡(luò)的從頭學(xué)習(xí)。為了完成訓(xùn)練纹腌,我們利用現(xiàn)成的SFM模型預(yù)測(cè)出匹配圖像之間的相對(duì)深度和相機(jī)位姿等幾何關(guān)系霎终,并利用該關(guān)系將檢測(cè)/描述網(wǎng)絡(luò)對(duì)某張圖像的預(yù)測(cè)結(jié)果轉(zhuǎn)移到和其匹配的另一張圖像上,作為訓(xùn)練目標(biāo)升薯。由于該過(guò)程本質(zhì)上不可微莱褒,我們展示出一種新的方式:使用兩個(gè)分支完成訓(xùn)練,其中一個(gè)分支用于優(yōu)化并保留可微的能力涎劈,另一個(gè)分支則用產(chǎn)生第一個(gè)分支的監(jiān)督目標(biāo)广凸。
??我們分別在室內(nèi)、外的數(shù)據(jù)集上進(jìn)行訓(xùn)練蛛枚,最終的模型結(jié)果超越了其他最好的稀疏特征匹配方法谅海,且在QVGA圖像可以達(dá)到60+fps的推理速度。
二蹦浦、方法
??首先作者從實(shí)用角度出發(fā)扭吁,討論如下場(chǎng)景:給定“dense correspondence data”(即一個(gè)由圖像構(gòu)成的集合,這個(gè)集合中圖像兩兩間的匹配關(guān)系已知)盲镶,理論上我們可以只用這種非常粗粒度的GT信息訓(xùn)練一個(gè)局部特征提取流程:分別用檢測(cè)+描述網(wǎng)絡(luò)對(duì)一對(duì)圖像進(jìn)行關(guān)鍵點(diǎn)檢測(cè)和逐點(diǎn)的描述子提冉耐唷;然后利用兩圖像的描述子得到其匹配關(guān)系徒河,再利用該兩圖像的真實(shí)GT關(guān)系來(lái)監(jiān)督匹配結(jié)果系馆。
??如果上面的idea可以實(shí)現(xiàn)送漠,那么局部特征描述應(yīng)該會(huì)迎來(lái)很大的突破顽照,畢竟獲取這種“是否匹配”級(jí)別的關(guān)聯(lián)幾乎沒(méi)有成本,可以輕易獲得海量訓(xùn)練數(shù)據(jù)。作者也提出了該流程無(wú)法實(shí)現(xiàn)的兩個(gè)原因:
- 從興趣點(diǎn)檢測(cè)網(wǎng)絡(luò)預(yù)測(cè)的score map中提取多個(gè)maxima作為關(guān)鍵點(diǎn)代兵,這一過(guò)程是不可微的
- 利用該方式對(duì)輸入的一對(duì)圖像預(yù)測(cè)出的兩組關(guān)鍵點(diǎn)尼酿,它們之間的匹配關(guān)系可能非常稀疏,即產(chǎn)生的groundtruth matches數(shù)目很少植影。而描述網(wǎng)絡(luò)的訓(xùn)練依賴這些關(guān)鍵點(diǎn)的匹配關(guān)系裳擎,轉(zhuǎn)而再引導(dǎo)檢測(cè)網(wǎng)絡(luò)訓(xùn)練,使其可以檢測(cè)出更具分辨率思币,對(duì)特征匹配更佳的興趣點(diǎn)鹿响。
- 我理解的是由于檢測(cè)網(wǎng)絡(luò)也并非訓(xùn)好的,對(duì)于當(dāng)前pair的兩個(gè)圖像谷饿,檢測(cè)網(wǎng)絡(luò)對(duì)其各自提取出的興趣點(diǎn)可能都會(huì)漏一些惶我;這樣兩圖匹配的興趣點(diǎn)就會(huì)更少了
??為了解決不可微和匹配數(shù)目少這兩個(gè)問(wèn)題,作者想到一個(gè)方法:將輸入圖像之間的geometry correspondence利用到關(guān)鍵點(diǎn)上博投。具體來(lái)說(shuō)绸贡,對(duì)于成對(duì)的輸入圖像(I,J),可以首先利用檢測(cè)分支對(duì)圖像J預(yù)測(cè)出score map毅哗,然后再將I和J的幾何關(guān)系warp到J的score map上听怕,然后對(duì)warp后的score map進(jìn)行不可微的maxima(關(guān)鍵點(diǎn))提取操作,再利用提取的點(diǎn)生成一個(gè)gaussian map虑绵,用于優(yōu)化圖像I預(yù)測(cè)的score map尿瞭,如下圖的L_im部分所示:
??具體的warp方法比較復(fù)雜,需要輸入相機(jī)位姿P翅睛、內(nèi)參矩陣K筷厘、深度圖Z,以及待warp的score map宏所,利用投影相機(jī)模型進(jìn)行一個(gè)rigid transform酥艳。作者稱之為SE(3)模塊w(這個(gè)概念可能需要回頭在slam十四講里面再了解下)。
??這里要思考一個(gè)問(wèn)題爬骤,為什么對(duì)圖像I_i充石,其label產(chǎn)生要這么麻煩萎馅?為什么不能直接用I_i和I_j的預(yù)先準(zhǔn)備好的correspondences中的興趣點(diǎn)位置做強(qiáng)監(jiān)督花椭,或者利用興趣點(diǎn)的repeatability原則優(yōu)化颜说?
??答:之前沒(méi)注意到這個(gè)地方莲蜘,LF-Net在構(gòu)建訓(xùn)練數(shù)據(jù)時(shí)好像并沒(méi)有兩個(gè)匹配圖像之間的一組匹配的興趣點(diǎn)情组,像LIFT和很多類似論文中都會(huì)做的那樣爬凑。本文對(duì)于一對(duì)匹配圖像金刁,僅僅利用SFM預(yù)測(cè)出兩圖像的深度辜王、相機(jī)相對(duì)位姿等關(guān)系惫企,并沒(méi)有kpt correspondences撕瞧,也沒(méi)有kpts陵叽!
2.1 網(wǎng)絡(luò)模塊介紹
??LF-Net由檢測(cè)和描述兩大網(wǎng)絡(luò)部分組成。檢測(cè)網(wǎng)絡(luò)為全卷積的dense prediction風(fēng)格丛版,可以同時(shí)預(yù)測(cè)出關(guān)鍵點(diǎn)位置巩掺、尺度、方向页畦,并支持多尺度預(yù)測(cè)(對(duì)輸入具有尺度不變性)胖替。特征描述網(wǎng)絡(luò)則根據(jù)檢測(cè)網(wǎng)絡(luò)提取的關(guān)鍵點(diǎn)crop出的patch,來(lái)學(xué)習(xí)局部描述子豫缨。
I. 特征提取
??檢測(cè)模塊的特征提取部分使用ResNet block堆疊而成独令,每個(gè)block由5x5 conv + BN + Leaky-Relu組成,每個(gè)卷積輸出均為16通道且尺寸與輸入相同好芭,也就是說(shuō)整個(gè)特征提取部分都維持著全圖分辨率的记焊。作者強(qiáng)調(diào),實(shí)驗(yàn)證明他們這種看似簡(jiǎn)單粗暴的方式比轉(zhuǎn)置卷積或者pixel shuffle等dense prediction任務(wù)中常見(jiàn)的decoder組件結(jié)果要好栓撞。
??與SuperPoint遍膜、SEKD等在image level上預(yù)測(cè)的方法不同,本文的特征描述網(wǎng)絡(luò)是以patch為輸入的瓤湘,故與detector并無(wú)特征共享瓢颅,整體為串行結(jié)構(gòu)。
II. 檢測(cè)網(wǎng)絡(luò)
??檢測(cè)網(wǎng)絡(luò)的流程稍復(fù)雜弛说,不過(guò)由于結(jié)構(gòu)為串行挽懦,將其步驟整理如下:
??①生成多尺度縮放因子:Si ∈ exp(linspace(log(m), log(M), N_scales))
??②在每一個(gè)尺度s上,將I中提取的特征feat resize為feat尺寸的1/s木人,再將resize之后的特征送入一層卷積用于輸出通道為1的當(dāng)前尺度上的score map信柿。得到一個(gè)多尺度的score map list
??③同時(shí),將I提取的特征送入單層卷積層醒第,輸出通道數(shù)為2的Orientation map渔嚷,并通過(guò)L2Norm層轉(zhuǎn)換到歐式空間。兩個(gè)通道分別代表cos(θ)和sin(θ)稠曼,其中θ代表各個(gè)像素位置的方向形病。
??· 注意:輸出Orientation map的卷積層,W和bias分別初始化為全零和[1, 0]霞幅,作者解釋是方向θ初始值為0漠吻,cos(θ)即1,sin(θ)即0司恳。相當(dāng)于引入了一點(diǎn)先驗(yàn)途乃?不知道這里影響有多大。
??· 屆時(shí)將由這兩個(gè)通道經(jīng)過(guò)arctan運(yùn)算扔傅,得到密集的方向估計(jì)耍共。
??④對(duì)于②得到的score_map_list中的每個(gè)元素烫饼,將其送入instance_normalization,再resize到原圖輸入尺寸划提。然后將各個(gè)尺度的resized score map concat到一起,得到所謂"scale space"上的scoremap
??⑤concat之后的score map再通過(guò)一個(gè)類似softmax的操作邢享,整合各個(gè)scale的特征并得到最終的score map S鹏往,其具有尺度不變性,將用來(lái)提取興趣點(diǎn)
??⑥提取top K個(gè)興趣點(diǎn)位置骇塘,并且使用softargmax來(lái)進(jìn)行"sub-pixel refinement"伊履。⑤、⑥這兩步不理解款违,代碼中連續(xù)用了3D Soft-NMS和普通NMS唐瀑,可能需要進(jìn)一步學(xué)習(xí)才能了解。
III. 特征描述網(wǎng)絡(luò)
?? 這部分網(wǎng)絡(luò)并不復(fù)雜插爹,關(guān)鍵在于patch_extraction模塊哄辣,該模塊輸入特征圖(I輸出的feat,不是II輸出的score map S)赠尾,以及關(guān)鍵點(diǎn)的位置力穗、尺度、方向信息气嫁,輸出K個(gè)大小為patch_size的圖像塊当窗,每個(gè)圖像塊的中心、尺度寸宵、方向由對(duì)應(yīng)下標(biāo)的kpt決定崖面。patch_extraction的核心是spatial transformer crop模塊。詳細(xì)內(nèi)容見(jiàn)同級(jí)目錄下的notebook梯影。
??提取出patch之后巫员,直接將patch堆疊到一起 [BK, patch_h, patch_w, patch_c]送入由若干卷積層構(gòu)成的特征描述網(wǎng)絡(luò),得到 [BK, D] 的特征描述甲棍。注意對(duì)于特征描述網(wǎng)絡(luò)而言疏遏,其batch_size變成了B*K。
2.2 訓(xùn)練細(xì)節(jié)與loss函數(shù)
I. 數(shù)據(jù)準(zhǔn)備
??使用ScanNet室內(nèi)數(shù)據(jù)集和25 photo-tourism室外數(shù)據(jù)救军,并通過(guò)3D視覺(jué)方法確保兩個(gè)數(shù)據(jù)集過(guò)濾出的不同視角圖像之間有足夠的重疊面積财异。部分?jǐn)?shù)據(jù)采樣如下:
II. 訓(xùn)練檢測(cè)分支
??作者將LFNet的訓(xùn)練設(shè)計(jì)為一個(gè)類似孿生網(wǎng)絡(luò)的結(jié)構(gòu)。不同之處在于唱遭,網(wǎng)絡(luò)的兩個(gè)分支中只有一個(gè)分支用來(lái)傳導(dǎo)梯度并優(yōu)化戳寸;另一個(gè)分支則用于執(zhí)行warp、提取關(guān)鍵點(diǎn)拷泽、生成第一個(gè)分支的監(jiān)督目標(biāo)等不可微的操作疫鹊。訓(xùn)練的方式為袖瞻,當(dāng)前一次迭代中的J分支,使用上一次迭代結(jié)束時(shí)I分支的參數(shù)(涉及一個(gè)拷貝的過(guò)程)拆吆。作者說(shuō)這種訓(xùn)練方式來(lái)源于強(qiáng)化學(xué)習(xí)中的Q-Learning聋迎。
??檢測(cè)分支的優(yōu)化目標(biāo)由image-level loss和patch-level loss構(gòu)成,這是因?yàn)殛P(guān)鍵點(diǎn)檢測(cè)本身既依賴image level的操作枣耀,也會(huì)影響到提取出的patch位置霉晕,故作者認(rèn)為應(yīng)該同時(shí)考慮在兩個(gè)level設(shè)計(jì)loss。
-
Image level
-
該級(jí)別的優(yōu)化目標(biāo)在于捞奕,讓分支I能夠生成最接近分支J產(chǎn)生的gauss map GT(再重復(fù)一下牺堰,該GT是由上一個(gè)iteration的分支I'的權(quán)重,對(duì)當(dāng)前iteration的圖像J預(yù)測(cè)出的score_map_j颅围,apply當(dāng)前iteration中圖像I和J的geometry伟葫,得到的warped_score_map_j,再通過(guò)NMS取top K關(guān)鍵點(diǎn)并放置gauss響應(yīng)得到的)院促。故直接對(duì)圖像I的score map和圖像J warp產(chǎn)生的score map求像素級(jí)損失即可:
-
-
Patch level
在之前的一些方法中筏养,patch之間的pair-wise關(guān)系都是事先定義并保存到一個(gè)池子中的(比如我們當(dāng)前的做法)。本文作者認(rèn)為常拓,這種離線構(gòu)建patch關(guān)系的方式不利于讓梯度回傳到檢測(cè)網(wǎng)絡(luò)撼玄,促使其學(xué)習(xí)更加利于匹配的興趣點(diǎn)。故作者提出在線構(gòu)建patch關(guān)系的方式:
-
對(duì)于I分支提取出來(lái)的K個(gè)興趣點(diǎn)墩邀,可以再次利用當(dāng)前iteration中(I,J)的幾何關(guān)系掌猛,將I圖像的興趣點(diǎn)坐標(biāo)warp到J圖像上。注意這次是把I的坐標(biāo)warp到J上眉睹,和image level的warp相反荔茬。這部分有點(diǎn)不好理解,可以舉個(gè)簡(jiǎn)單的例子:假設(shè)圖像J是圖像I順時(shí)針旋轉(zhuǎn)90度得到的竹海,那么將I上的一組興趣點(diǎn)也旋轉(zhuǎn)90度慕蔚,得到的就是J的一組興趣點(diǎn),可以用來(lái)對(duì)J crop patches并送入特征描述斋配。同時(shí)I,J也得到了若干組匹配的關(guān)鍵點(diǎn)孔飒,即kpt correspondences。分別在I, J分支上提取這些匹配的關(guān)鍵點(diǎn)對(duì)應(yīng)的描述子和艰争,代表匹配對(duì)數(shù)坏瞄。為了使檢測(cè)出的興趣點(diǎn)具有可重復(fù)性,應(yīng)該使和之間的距離盡可能小甩卓。
-
另外鸠匀,這一組匹配關(guān)鍵點(diǎn)對(duì)應(yīng)的方向和scale也應(yīng)該具有幾何一致性:
-
III. 訓(xùn)練特征描述分支
??通常訓(xùn)練描述子都使用triplet loss。這就涉及positive pair和negative pair的構(gòu)建逾柿。上面在patch level loss中已經(jīng)通過(guò)warp構(gòu)建出了kpt correspondences缀棍,那么其實(shí)就有了正對(duì)和負(fù)對(duì)宅此。不過(guò)由于負(fù)對(duì)非常多,這里還需要考慮如何對(duì)負(fù)對(duì)進(jìn)行挖掘爬范,以確保送入訓(xùn)練的負(fù)對(duì)足夠informative父腕。
??作者設(shè)計(jì)的采樣方法:
??1. 對(duì)于每個(gè)patch,將其與非匹配patch(即negatives)的loss按照降序排列青瀑,在前M個(gè)中選取patch來(lái)構(gòu)建negative pair璧亮。其中
??,k代表iteration數(shù)
??2. 這M個(gè)難樣例構(gòu)成了本次iteration的采樣池狱窘。而采樣池中的樣本數(shù)則和迭代次數(shù)相關(guān)杜顺,從一開(kāi)始的64個(gè)财搁,到接近收斂時(shí)的5個(gè)蘸炸。
??有了正對(duì)和負(fù)對(duì),就可以構(gòu)建起triplet loss:
??最后尖奔,整合得到兩個(gè)模塊的損失:
三搭儒、評(píng)價(jià)
- 這篇論文是目前為止看到過(guò)的最復(fù)雜的...作者開(kāi)源了代碼,但是全程用TF實(shí)現(xiàn)(包括SE(3) warp那部分)提茁,且沒(méi)有提供任何數(shù)據(jù)sample淹禾,難以調(diào)試只能干讀...不過(guò)代碼里還是有一些非常值得學(xué)習(xí)的地方,比如
SpatialTransformCropper
等茴扁。 - 在整體流程中包含不可微模塊時(shí)铃岔,本文展示了一種可用的訓(xùn)練的方式:利用兩個(gè)分支訓(xùn)練,其中一個(gè)分支使用不可微的操作(如warp峭火、NMS毁习、構(gòu)建clean heatmap等)為另一個(gè)分支準(zhǔn)備監(jiān)督信號(hào)。