王 鑫,田 歡
(蘭州職業(yè)技術(shù)學院 a.信息工程學院; b.現(xiàn)代服務(wù)學院, 甘肅 蘭州 730070)
炳靈寺石窟位于中國甘肅省臨夏回族自治州永靖縣境內(nèi),是中國著名的佛教石窟遺址之一,具有重要的文物研究價值。炳靈寺石窟開鑿年代久遠,由于很多文物部分或完全暴露在野外環(huán)境中,經(jīng)過千年的風雨侵蝕,文物色彩甚至結(jié)構(gòu)均不同程度存在缺失,尤其是鑿刻于石壁中的浮雕和標志性的大佛,其色彩幾乎已經(jīng)完全褪去,因而對其進行數(shù)字化保護顯得尤為重要。
對文物進行三維重建是文物數(shù)字化保護重要的組成部分,而文物數(shù)字化三維形態(tài)復(fù)原的質(zhì)量在很大程度上取決于對于文物多視圖間的特征點匹配。盡管已經(jīng)有許多經(jīng)典算法,如SIFT等能夠取得良好的匹配結(jié)果,但對于在空間區(qū)域中出現(xiàn)大面積的純色等弱紋理且視覺模式比較重復(fù)的石窟文物圖像而言,其匹配效果欠佳[1-2]。隨著深度學習技術(shù)在計算機視覺領(lǐng)域的廣泛應(yīng)用,許多算法利用深度學習模型來學習圖像表示信息,并通過比較特征向量或分析特征信息來實現(xiàn)圖像匹配,取得了比傳統(tǒng)算法更加明顯的效果,尤其針對弱紋理區(qū)域的情況。如SuperPoint是一種基于學習的局部特征匹配算法,利用的是神經(jīng)網(wǎng)絡(luò)學習圖像中的關(guān)鍵點和描述子[3],對特征圖中的關(guān)鍵點,在特征圖上取一個固定大小的區(qū)域,并將其扁平化成一個向量,作為該關(guān)鍵點的描述子。然而,這些算法都強調(diào)在匹配之前明確檢測關(guān)鍵點和計算描述子,因此在大規(guī)模訓(xùn)練數(shù)據(jù)時往往會受到計算資源的限制,其性能仍有較大的提升余地。DeepMatching是一種基于學習的端到端特征匹配算法[4],它利用神經(jīng)網(wǎng)絡(luò)學習圖像之間的匹配關(guān)系,通過多層卷積疊加的方式來獲取全局特征信息,因此將會付出較多的計算成本。結(jié)合上述方法所存在的問題,本文針對炳靈寺文物圖像匹配任務(wù),搭建了一個無法檢測的局部特征匹配網(wǎng)絡(luò)模型,在融合Transformer特征提取模塊的前提下,充分利用其對于全局特征的感知能力,獲取每個像素間的相關(guān)性得分[5],Linear Transformer能使計算復(fù)雜度有較大幅度的下降,且該模型采用由粗略到精細化的方法,輸出的像素級匹配效果良好。經(jīng)具體實驗證明,本方法無論在單應(yīng)性估計評價方面,還是在輸出匹配數(shù)量方面,較其他方法均有明顯的提升;且本方法不僅在炳靈寺石窟文物圖像匹配應(yīng)用中表現(xiàn)良好,對于普通室內(nèi)外各類場景,也表現(xiàn)出良好的性能,具有很好的泛化能力。
圖像匹配是諸如三維重建等三維計算機視覺任務(wù)的基礎(chǔ)環(huán)節(jié)。給定要匹配的兩幅圖像,常見匹配方法包括三個階段:特征檢測、特征描述以及特征匹配。首先把各幅圖像中檢測類似角點作為興趣點,然后在此類興趣點的鄰域提取局部描述符,產(chǎn)生具有描述符的興趣點,最后根據(jù)最近鄰搜索或其他匹配算法找到圖像間的點對點對應(yīng)關(guān)系。大多數(shù)情況下,特征檢測算法能夠滿足任務(wù)要求。然而特征檢測會減少可選的匹配空間,所得到的對應(yīng)關(guān)系也比較稀疏。在特征檢測環(huán)節(jié)還可能由于圖像紋理信息匱乏導(dǎo)致圖像模式單一等情況,從而很難獲取足夠的興趣點,這個問題在石窟文物圖像中尤為突出。
局部特征匹配算法SuperPoint利用了深度網(wǎng)絡(luò)學習特征圖中的關(guān)鍵點及描述算子,由一個類似于VGG網(wǎng)絡(luò)的編碼器和兩個并行的解碼器構(gòu)成,編碼器主要用于對輸入圖像進行下采樣,而兩個解碼器分別用來提取特征點和特征描述子。每當圖像樣本被輸入后,首先,通過卷積層提取圖像的特征圖;其次,在特征檢測層中,使用非極大值抑制(Non-Maximum Suppression)選擇具有最高響應(yīng)的特征點作為關(guān)鍵點;再次,對每個關(guān)鍵點,在特征圖上取一個固定大小的區(qū)域,并將其扁平化成一個向量,作為該關(guān)鍵點的描述子;最后,通過損失函數(shù)和訓(xùn)練數(shù)據(jù)來優(yōu)化網(wǎng)絡(luò)參數(shù),提取的關(guān)鍵點和描述子能夠更好地適應(yīng)圖像匹配任務(wù)。
SuperGlue是一種圖像匹配算法,旨在解決圖像間幾何關(guān)系的估計問題。作為對局部特征匹配算法的一種擴展,特別是對SuperPoint算法的進一步發(fā)展,SuperGlue采用了更綜合的方法,不僅是匹配局部特征點,還考慮了這些點之間的全局幾何關(guān)系。其創(chuàng)新之處在于將局部特征匹配與全局幾何關(guān)系建模結(jié)合起來,提供了更全面的圖像匹配解決方案。它在各種計算機視覺任務(wù)中具有廣泛的應(yīng)用,如三維重建、SLAM[6]等。其綜合性能在許多情況下比傳統(tǒng)的特征匹配算法更出色,特別是在存在較大視角變化和復(fù)雜場景的情況下。
Transformer可以作為一種編碼器,由相互連接的注意力層構(gòu)成,輸入向量分別為Query(Q)、Key(K)和Value(V),其注意力層的運算機制如圖1所示:
圖1 注意力機制
并可以表示為:
Attention(Q,K,V)=softmax(QKT)V
(1)
注意力機制通過度量Query和Key之間的相似程度來獲得關(guān)聯(lián)度信息,最后的輸出向量則由相似度得分矩陣與Value的加權(quán)獲得。根據(jù)相似度的高低,將從Value向量中根據(jù)權(quán)重提取特征信息。
筆者在認真研究SuperGlue后深受啟發(fā),使用含有Self-Attention和Cross-Attention的Transformer將backbone輸出的密集局部特征進行轉(zhuǎn)換[7]。首先以1/8的圖像空間維度提取兩組變換特征間的密集匹配,選擇其中高置信度的匹配,然后利用相關(guān)性將所得匹配結(jié)果進行亞像素級細化。其次,利用Transformer的全局特征感知并引入位置編碼使所得變換后的特征表達具備上下文和位置信息。通過重復(fù)的Self-Attention和Cross-Attention,筆者所搭建的網(wǎng)絡(luò)模型通過Ground-Truth匹配中所顯示的密度學習到具有全局一致性的匹配先驗。最后,采用線性Transformer進一步將計算復(fù)雜度減少至可控水平,且其提供的全局特征提取能力使得在弱紋理區(qū)域產(chǎn)生比較密集的匹配效果。該網(wǎng)絡(luò)模型由一個局部特征提取器串聯(lián)一個粗粒度匹配模塊及細粒度優(yōu)化模塊組成,下面將分別介紹各個組成部分。
圖2 局部特征提取器結(jié)構(gòu)
圖3 局部特征轉(zhuǎn)換模塊結(jié)構(gòu)
從圖3可以看出,粗粒度特征經(jīng)過flatten操作處理后,結(jié)合位置編碼信息交由Nc個重復(fù)的LoFTR模塊處理,所有相同結(jié)構(gòu)的模塊中均包含自注意力層和交叉注意力層。
1.Linear Transformer
相比普通注意力計算復(fù)雜度較高的情況,當Q、K均具有N個輸入特征,而每個特征的長度都為D,則兩矩陣相乘的復(fù)雜度為O(N2)。筆者采用計算復(fù)雜度相對簡單的Linear Transformer作為相似度量的函數(shù),其可以表示為:
sim(Q,K)=φ(Q)·φ(K)T
(2)
如此一來,便將計算復(fù)雜度降低為O(N),其中,
φ(·)=elu(·)+1
(3)
其結(jié)構(gòu)如圖4所示。
圖4 Linear Attention計算機制
2.Position Encoding
筆者采用與DETR一致的Transformer位置編碼,針對LoFTR的輸入特征圖進行位置編碼[9],所不同的是,僅在輸入LoFTR模塊前一次性將編碼信息添加到Backbone,而位置編碼是以正弦表達形式為各個輸入Token提供了唯一的位置信息,如此,LoFTR便會輸出與特征位置相關(guān)的特征信息。
3.Self-Attention與Cross-Attention層
筆者采用與Transformer中相同的自注意力和交叉注意力層。
將LoFTR模塊的輸出結(jié)果導(dǎo)入可微匹配層[10],此處既可以使用SuperGlue的最優(yōu)傳輸層OT,又能夠采用Dual-Softmax操作計算LoFTR輸出的特征相關(guān)性得分矩陣S[11],該過程可以表示為:
(4)
如果使用OT進行匹配操作,S則可作為局部分配成本矩陣,得到置信矩陣Pc。如果針對S的兩個維度使用Softmax,則匹配概率矩陣Pc可以表示為:
Pc(i,j)=softmax(S(i,·))j·softmax(S(·,j))i
(5)
接下來便可以對匹配空間進行篩選了。根據(jù)置信度矩陣Pc,選擇置信度高于閾值θc的匹配,進一步進行最近鄰(MNN)[12]操作便會得到粗粒度級匹配。該粗粒度級匹配可以表示為:
(6)
筆者采用的損失由粗粒度損失和細粒度損失構(gòu)成,可以表示為:
L=Lc+Lf
(7)
1.粗粒度損失
(8)
2.細粒度損失
本文使用2范數(shù)作為細粒度損失:對于每個點計算由其生成的熱圖方差,以測量其確定性,使得細粒度化后的匹配結(jié)果的確定性較高,其加權(quán)損失函數(shù)可以表示為:
(9)
通過現(xiàn)場拍攝,筆者構(gòu)建了一個自定義炳靈寺石窟文物圖像數(shù)據(jù)集,該數(shù)據(jù)集圖片內(nèi)容包括石窟內(nèi)的佛教建筑構(gòu)件、佛教故事雕像、壁畫及鑿刻在石壁上的佛像和大佛雕像等文物圖像等,這些圖像內(nèi)容在空間維度中均存在大面積的弱紋理區(qū)域和結(jié)構(gòu)缺損的情況。該數(shù)據(jù)集共包含23個場景內(nèi)容,且每個場景的視圖數(shù)量介于4至20個之間,其部分樣本如圖5與圖6。
圖5 佛龕圖像示例
圖6 佛塔浮雕圖像示例
筆者在對該圖像數(shù)據(jù)集樣本進行相關(guān)實驗后,為了進一步驗證筆者采用方法的先進性,又在HPatches公共數(shù)據(jù)集上進行實驗以證實該方法的良好表現(xiàn),最后使用相應(yīng)的三維重建方法,在該方法的基礎(chǔ)上對炳靈寺石窟文物進行三維形態(tài)恢復(fù)。實驗機器所搭載的系統(tǒng)為Windows11,其具體硬件配置為CPU:12th Gen Intel(R) Core(TM) i7-12700F。內(nèi)存16g,顯卡為12g的顯存Nvidia RTX3060型號。軟件實驗平臺情況:并行計算環(huán)境為Cuda11.6,Python為3.7版本,Pytorch版本為1.9.1+cu111,Torchvision版本為0.10.1+cu111,OpenCV-Python 版本為3.4 .2 .17。
為了快速獲得單應(yīng)性評估結(jié)果,以初步驗證該方法的性能,筆者先在炳靈寺石窟圖像數(shù)據(jù)采集上開展實驗。由于受到現(xiàn)場地形影響,手工拍攝采集的石窟圖像無法保證其拍攝角度的規(guī)律性旋轉(zhuǎn),所以同一物體多視圖圖像的視角變化幅度較大。在這個實驗環(huán)節(jié),對于每一個場景,用一張隨機選定的參考圖像與其他剩余圖像進行匹配運算,使用OpenCV中集成的RANSAC算法來量化單應(yīng)性估計。相比于其他方法,該方法所產(chǎn)生的特征點匹配數(shù)量具有明顯數(shù)量優(yōu)勢(圖7、圖8)。
圖7 其他有檢測匹配算法匹配結(jié)果示例
圖8 本文無特征點檢測匹配算法匹配結(jié)果示例
為了進一步證明方法的普適性,筆者在含有各類室內(nèi)外普通場景圖像的HPatches公共數(shù)據(jù)集上進行了更加具體的量化單應(yīng)性估計結(jié)果。在使用RANSAC算法進行估計的基礎(chǔ)之上,利用HPatches訓(xùn)練樣本中的真值對匹配點進行拐點誤差計算,將計算結(jié)果作為正確匹配的標準。詳細的實驗結(jié)果如表1。
表1 在HPatches公共數(shù)據(jù)集上的實驗結(jié)果
在表1中,AUC表示拐點誤差曲線所構(gòu)成的定積分面積,將誤差閾值分別設(shè)置為3、5和10個像素。根據(jù)表1,可以看出,誤差閾值在所設(shè)定的所有情況下,由于無特征點檢測所提供的更多匹配選擇和Transformer范式所輸出的富含全局上下文的特征信息,以及Coarse-To-Fine模塊進一步將匹配結(jié)果進行亞像素級細化以提高估計精度等措施,該方法比其他方法表現(xiàn)出明顯的優(yōu)勢,匹配數(shù)量有很大幅度的提升。
炳靈寺石窟作為重要歷史遺跡,具有極高的研究價值。為了永久保存其客觀空間形態(tài)并把它作為修復(fù)的原始參考,數(shù)字化保護和逆向三維形態(tài)復(fù)原顯得尤為重要。在此過程中,圖像匹配在三維形態(tài)復(fù)原中扮演著關(guān)鍵角色,匹配質(zhì)量的好壞直接決定了三維重建的精度。筆者基于學習架構(gòu),引入了Transformer特征范式進行圖像匹配,剔除繁瑣的特征檢測環(huán)節(jié),提高了匹配效率和質(zhì)量。實驗結(jié)果證明,相比其他方法,該方法在處理弱紋理和圖像模式重復(fù)等情況下具有顯著優(yōu)勢,并在評價指標上表現(xiàn)出色?;谠摲椒ɑ謴?fù)的石窟文物的三維立體形態(tài)不僅具有更高的保真度,還呈現(xiàn)出更出色的視覺效果,這對于炳靈寺石窟文物的保護和研究具有重要意義。