曹政濤,黃文豐,寧志剛,廖祥云,熊雪穎,王 瓊
(1.南華大學 電氣工程學院,湖南 衡陽 421001; 2.中國科學院人機智能協(xié)同系統(tǒng)重點實驗室,中國科學院 深圳先進技術研究院,廣東 深圳 518055; 3.武漢大學中南醫(yī)院 醫(yī)學影像科, 湖北 武漢 473001)
由于內窺鏡微創(chuàng)手術具有傷口小、出血量少、好愈合、住院時間短等優(yōu)點,已經被廣泛應用于肝膽外科、耳鼻喉科等多種手術類型中[1-2]。然而內窺鏡手術場景存在一些缺陷,如視野受限、深度信息丟失、手術自由度低等,對于其中一些問題可以通過訓練醫(yī)生手術技巧來解決,但對于內窺鏡影像下深度的認識卻很難通過經驗判斷來得到精確的位置,于是很多學者開始著手于內窺鏡場景下深度估計方法研究[3-5],并在微創(chuàng)手術導航系統(tǒng)中得以應用[6-8]。內窺鏡微創(chuàng)手術可以利用手術導航系統(tǒng)構建內窺鏡手術場景信息,幫助醫(yī)生快速定位病變組織,避免誤觸碰人體關鍵結構從而可以減少手術時間,降低手術風險。
人體微創(chuàng)手術的內窺鏡類型分為:單目內窺鏡[9]、雙目內窺鏡[10]、結構光內窺鏡[11]。雙目內窺鏡和結構光內窺鏡復雜度高、體積大,在人體內使用不便,因此,單目內窺鏡仍是臨床上最常用的內窺鏡。目前在單目內窺鏡場景下的深度估計方法可以分為傳統(tǒng)的單目視覺算法和基于深度學習的方法?;趩文恳曈X算法,如同時定位與地圖映射(simultaneous localization and mapping, SLAM)[12]和運動恢復結構(structure from motion, SFM)[13]等技術。SFM和SLAM將同一視頻序列或不同角度的圖像序列作為輸入,然后利用特征匹配和三角測量方法計算圖像深度和攝像機運動。由于不需要額外適配其他硬件設備且成本低廉,這些方法已經被廣泛關注和研究,并且在胃鏡、腹腔鏡等多種內窺鏡場景下實現(xiàn)了跟蹤和三維重建[14-16],然而內窺鏡圖像中的特征缺乏會導致這些方法產生稀疏和不均勻的重建。為了解決稀疏重建的問題,文獻[17]將視覺SLAM技術與激光掃描技術結合的方法用于稠密的人體組織重建,但是該方法重建的結果失去了很多細節(jié)信息,無法反應組織表面特性。
基于深度學習的方法按照監(jiān)督形式可以分為完全監(jiān)督型學習方法和無監(jiān)督型學習方法。雖然完全監(jiān)督型網絡在一般場景可以得到較好的深度信息[18-20],然而在內窺鏡場景下使用該方法是非常困難的。這是因為在人體內無法像一般場景一樣通過額外的硬件設備來獲取真實的深度圖。文獻[21]為了解決這個問題使用數(shù)字合成和電子計算機斷層掃描(computed tomograph,CT)渲染的方式生成相應的真實深度圖,然而這種方法需要提供病人的CT數(shù)據(jù),此外模擬的圖像可能會失去圖像原有的細節(jié)紋理,這對于本來就紋理稀疏的人體組織并不適用。由于有監(jiān)督學習方法的局限性,近幾年,無監(jiān)督學習方法也得到了廣泛的關注。X.Liu等[4]根據(jù)傳統(tǒng)SFM具有光照不變特性提出自監(jiān)督方法很好地解決了缺乏真實深度標簽和光照變化問題,并在鼻腔視頻的實驗中取得了很好的效果。然而對于腹腔鏡場景下,一些較大肝臟器官,其組織表面紋理稀疏、深度變化不明顯,SFM只能產生有限的監(jiān)督數(shù)據(jù)。H.Luo等[22]提出了一種融合傳統(tǒng)立體先驗知識的無監(jiān)督學習深度估計方法,以傳統(tǒng)的立體方法生成深度標簽,并結合卷積網絡生成左右視差圖,通過左右視差圖構建視差一致性損失函數(shù),但該方法只適用于雙目內窺鏡深度估計。岑仕杰[23]等使用位姿估計網絡提供無監(jiān)督數(shù)據(jù)結合雙重注意力模塊對自然場景進行單目深度估計,然而該方法在位姿估計方面的性能不佳,錯誤的位姿估計將導致三維重建不準確。
根據(jù)以上問題的分析,本文提出基于增量式SFM原理的半稠密COLMAP重建方法[24]來獲取監(jiān)督數(shù)據(jù),采用具有動態(tài)卷積機制的SKNet (selective kernel networks,SKNet) 模型構建自監(jiān)督單目內窺鏡深度估計網絡模型。該方法既可以很好地解決監(jiān)督數(shù)據(jù)不足的問題,又可以增強訓練網絡對一些紋理稀疏和深度信息變化不明顯的區(qū)域的特征提取能力。本文提出的創(chuàng)新點如下:
1)采用半稠密COLMAP方法解決監(jiān)督數(shù)據(jù)不足的問題,同時引入加權可靠度抑制和丟棄一些離群的3D點,相比于稠密的COLMAP重建方法,該方法并沒有引入過多的異常點,也不用手動對重建結果進行修飾;
2)在完全卷積網絡(fully convolutional DenseNets,FC-DenseNet)中加入了具有注意力機制的SKNet模型,輸入SKNet模型中的特征圖根據(jù)不同大小的卷積核動態(tài)分配其輸出的特征圖的權值,實現(xiàn)動態(tài)提取不同感受野下的特征信息。
本文提出的基于改進的半稠密COLMAP與卷積神經網絡相結合的自監(jiān)督單目估計方法,改進了自監(jiān)督數(shù)據(jù),不需要額外提供任何真實的深度標簽。整個系統(tǒng)的內窺鏡深度估計流程圖如圖1所示,首先進入圖像預處理階段,將同一視頻序列圖像送入COLMAP中進行圖像預處理,將重建點云進行投影變換得到半稠密深度圖,之后對半稠密深度圖進行加權處理,去除和抑制一些離群的深度值。在網絡訓練階段,加入SKNet模型,提高網絡的特征提取能力,在應用階段,只需單幀圖像就可以得到對應圖像的密集深度圖。
圖1 單目內窺鏡深度估計框架圖Fig.1 Monocular endoscope depth estimation frame diagram
COLMAP是基于增量式SFM方法的全局重建方法,該方法只需輸入圖像、相機內參、匹配方法便可生成3D點云。COLMAP可以進行稀疏重建和稠密重建,但這兩種方法產生的深度圖都無法較好地用于深度估計。稀疏重建產生的點云數(shù)據(jù)較少,只能得到稀疏深度圖。COLMAP稠密重建是在SFM稀疏重建的基礎上進行了深度圖的融合,雖然得到的是稠密重建,但是也引入了大量的干擾點和錯誤點,并且丟失了每個3D點與圖像幀的對應關系。根據(jù)肝臟表面特征稀疏的特點,對COLMAP稀疏重建進行了改進,在特征提取和匹配時降低了特征提取和匹配的閾值,使其匹配到的特征點多于之前的N倍,再對引入的干擾點進行丟棄和抑制操作。加權半稠密深度圖生成過程如圖2所示,首先調整COLMAP稀疏重建在特征提取和匹配時的閾值,再將內窺鏡視頻幀送入COLMAP中進行特征提取與匹配,然后利用已知的相機內參和匹配的特征點進行半稠密重建即可得到點云數(shù)據(jù)、相機位姿、3D點與2D圖像的對應關系。最后對3D點進行可靠度評估,對干擾點進行抑制或丟棄,并投影映射得到加權半稠密深度圖,3D點與2D圖像的對應關系是指3D點可以由哪些圖像幀重建出來。
圖2 生成加權半稠密深度圖流程圖Fig.2 Generate weighted semi-dense depth map generation pipeline
(1)
其中,Wj是表示加權可靠度,為了減少半稠密重建中的異常點對有效區(qū)域的深度值的影響,對每個有效區(qū)域的深度值進行了加權處理,幀j的深度值加權可靠度Wj定義為:
(2)
其中,α表示用于重建的3D點的平均幀數(shù),w表示每個點用于重建的幀數(shù),?1,?2是給定的超參數(shù)。當w∈(?2,+∞)時,則認為該點絕對可靠。當w∈(?1,?2)時,mn是用于表示重建3D點n投影到2D位置的累積視差的權重,mn越大,反映可靠度越高。當w∈(0,?1)時,表示使用COLMAP得到的3D點云中,存在一些3D點與其相關的圖像幀過少,認為該點是離群點,需要對其進行丟棄。
1.3.1 自監(jiān)督方法
圖3 網絡訓練總體流程圖Fig.3 Overall flowchart of network training
1.3.2 SK-FCDenseNet網絡
FC-DenseNet網絡[25]是由一條下采樣路徑、一條上采樣路徑和跳躍連接組成,跳躍連接通過重用特征圖來幫助上采樣路徑恢復空間細節(jié)信息。SKNet考慮到了分路卷積的權重,能夠使產生不同感受野的卷積核進行動態(tài)卷積。本文結合兩者的優(yōu)點提出了SK-FCDenseNet網絡,該網絡結構如圖4所示。使用了FC-DenseNet57層網絡架構,在下采樣階段和上采樣階段都加入了SKNet模塊,SKNet可以根據(jù)不同的特征圖大小動態(tài)的分配卷積分路的權重,實現(xiàn)了讓網絡自己選擇合適的卷積核的操作。下采樣包含5個DB+TD+SK階段層,上采樣同樣也包含5個TU+SK+DB階段層,為了使網絡輸出適合深度預測任務,上采樣階段,將最后一卷積層通道數(shù)改為1,激活函數(shù)改為線性激活函數(shù)。
圖4 SK-FCDenseNet網絡圖Fig.4 SK-FCDenseNet network
1.3.3 雙分支SKNet模型
本文引入雙分支SKNet模型[26],如圖5所示,首先將下采樣的特征圖X分別通過3×3的卷積和3×3的空洞的卷積(空洞卷積的感受野是5×5)得到U1和U2特征圖,然后將兩特征圖相加得U。U通過全局池化操作和全連接操作相繼得到c×1×1和z×1×1的特征向量,c×1×1維的特征向量表示特征通道的重要程度。輸出的是兩個矩陣a和b,其中矩陣b是冗余矩陣,在兩分支的情況下b=1-a,經過softmax變換得到f1和f2,將這兩個值與U1、U2對應相乘得到A1、A2模塊,最后將兩模塊相加進行信息融合得到A模塊,模塊A相比于最初的X經過了信息的提煉,融合了多個感受野的信息。由于f1和f2相加等于1,因此能夠實現(xiàn)對分支中的特征圖設置權重,因為不同的分支卷積核尺寸不同,因此實現(xiàn)了讓網絡自己選擇合適的卷積核,此外使用空洞卷積實現(xiàn)了在不增加參數(shù)量的情況下增大了卷積核的感受野。這種增加多個感受野的方法可以增加提取有效信息的方式,對一些紋理稀疏的肝臟表面有很好的特征提取效果。
圖5 雙分支SKNet模型Fig.5 Two-branch SKNet model
本文采用了兩種損失函數(shù),首先選用類似于L2范數(shù)的函數(shù)作為網絡的損失函數(shù),用以約束加權半稠密深度圖和預測深度圖之間的像素差異來監(jiān)督訓練,由于只計算半稠密深度圖中的有效深度值,所以該損失函數(shù)叫有效深度損失函數(shù),該損失函數(shù)定義如下:
(3)
其中,Mx是稀疏掩膜,用來忽略訓練數(shù)據(jù)中沒有深度的區(qū)域,N表示有效的像素總數(shù)。Mx定義為:
(4)
其中,x表示圖像幀j或圖像幀k。
由于使用半稠密深度圖存在一些無效的像素點,為了得到稠密的深度圖,使用了與文獻[4]相似的深度差值損失函數(shù)。在同一視頻序列,有足夠重疊的幀j和幀k,利用兩幀之間的幾何約束性可以補償兩個深度圖之間的差異性。深度差值損失的定義為:
(5)
總體損失,網絡的總損失函數(shù)如下圖所示,是兩種損失函數(shù)的加權組合:
L=λ1Ledl+λ2Ldcl
(6)
實驗的軟件環(huán)境為Ubuntu18.04操作系統(tǒng),該方法是PyTorch實現(xiàn)的。實驗的硬件配置主要包括GPU GeForce GTX1080Ti和Intel Xeon CPU E5-2637。COLMAP稀疏重建階段是在CPU上進行的,網絡訓練階段是在圖形處理器(graphics processing unit,GPU)上進行的。
本文通過離體豬肝的內窺鏡視頻數(shù)據(jù)集驗證算法的有效性和可行性。為了模擬人體環(huán)境,在數(shù)據(jù)采集時通過封箱模擬腹部黑暗環(huán)境,將內窺鏡攝像頭插入箱中拍攝視頻,數(shù)據(jù)采集環(huán)境如圖6(a)、(b)所示。豬肝臟可分為尾狀葉、右葉、中右葉、中左葉和左葉,為了證明本算法的通用性,對不同區(qū)域的豬肝臟都進行了數(shù)據(jù)的采集,為了區(qū)分不同部位的豬肝臟影像,在數(shù)據(jù)采集時對豬肝臟的每個區(qū)域都進了標記。本文對4個豬肝臟進行了豬肝臟影像采集,經過后期篩選,每個豬肝臟每個區(qū)域有5到10組視頻,每組視頻長度為20 s左右,每秒幀數(shù)為60幀,其中1到2組用于測試,其余用于實驗,經將采用處理的視頻幀大約共采集64 000張圖像。
如圖6所示,(c)、(d)展示了豬肝臟的左葉區(qū)域的COLMAP重建,為增大相機移動位姿,減輕COLMAP重建壓力,將視頻幀降采樣為每秒20幀。圖中展示的圖像序列為423張,在稀疏重建時,特征匹配點約為19萬個,3D點約為1.5萬個,進行半稠密重建時特征匹配點約為80萬個,3D點約為6萬個。COLMAP重建和生成加權半稠密深度圖階段每次只能處理一組視頻,網絡訓練階段,將預處理得到的監(jiān)督數(shù)據(jù)按分組一同參與訓練。
為了檢測算法的魯棒性,在訓練過程中,采用了一些數(shù)據(jù)增強的方法,其中包括高斯噪聲、高斯模糊、隨機伽馬、隨機HSV(hue,saturation,value)偏移、隨機亮度、隨機對比度等。網絡參數(shù)采用K.He等[27]提出的初始化方法。損失函數(shù)采用隨機梯度下降法來收斂損失函數(shù),并且動態(tài)設置學習率從1×10-3到1×10-4。兩幀之間的范圍是2到20,訓練送入視頻幀的批次大小是 4。控制加權可靠度的參數(shù)?1,?2為5和20。有效深度損失函數(shù)權值設置為5,深度差值損失函數(shù)在前20批次中權值設置為0.1,后80個批次權值設置為5,這樣做的目的是先使用有效深度快速擬合加權半稠密深度圖與預測深度圖之間的有效深度值,待函數(shù)收斂到一定程度,再對一定范圍內兩幀之間深度圖進行約束,互相彌補一些缺失的像素點。
為了展示算法的可行性與實驗結果的可靠性,采用了三種實驗對比方法。第一種,通過深度預測模型對測試圖像進行深度預測,生成預測深度圖和點云數(shù)據(jù),之后將點云數(shù)據(jù)進行三維可視化,并通過不同角度展示重建結果。第二種,和已經在該內窺鏡深度估計領域取得較好結果的算法[4]進行實驗對比,通過對比深度圖、三維重建圖來說明本算法的可行性及優(yōu)越性。第三種,通過進行消融實驗,來判斷半稠密重建、加權半稠密深度圖以及SKNet模塊的有效性。由于本文算法沒有使用到任何標記過的深度標簽,所以在評估預測深度與真實深度之間的差異時,以稀疏深度圖和加權半稠密深度圖為真實深度圖,并僅在有效的像素位置和深度預測中的對應位置上進行評估度量。在誤差分析方面采用絕對相對誤差(absolute relative error):
(7)
準確率是滿足如下不同閾值條件下的百分比:
(8)
本文通過深度預測模型對2個豬肝臟的四個不同的部分進行了深度預測,并對預測結果進行了三維可視化,其中可視化結果如圖7所示。圖中第一列是原圖,第二列到第五列表示重建結果不同角度的展示,從圖中可以看出,除邊緣和個別區(qū)域外,重建結果基本上還原了圖像的三維信息。
圖7 從不同角度展示豬肝臟的重建結果Fig.7 The reconstruction results of pig liver showed from different angles
與X.Liu等[4]從預測深度圖和三維重建進行對比研究,如圖8所示,采用來自同一視頻序列的圖像對深度預測模型進行測試。為了評估本文訓練方法的有效性,跟X.Liu等人使用了相同的預處理方法,并且對稀疏COLMAP和半稠密COLMAP的方式都做了實驗,圖中第一列由訓練圖像組成,第二列和第三列是X.Liu等人以稀疏深度圖為監(jiān)督信號預測的深度圖和三維重建結果,第四列和第五列是X.Liu等人以半稠密深度圖為監(jiān)督信號預測的深度圖和三維重建結果,第六列和第七列是通過本方法提出的加權半稠密深度圖作為監(jiān)督信號得到的預測深度圖和三維重建結果。
圖8 本方法與X.Liu等人的實驗結果對比Fig.8 Comparison of this method with the experimental results of X.Liu et al
由圖8中(a)~(d)組可知對于表面稀疏、深度變化不明顯的肝臟區(qū)域,稀疏COLMAP提取到的特征點不足以達到深度預測的要求,預測深度圖不能很好地表現(xiàn)出深度變化的情況,對應的三維重建會有明顯的壓縮和呈現(xiàn)二維平面的情況。X.Liu等人的方法和本文的方法在使用半稠密COLMAP方式都取得了不錯的效果。由圖8中(e)~(g)組可知,X.Liu等人的方法從半稠密COLMAP方式中雖然可以獲取更多有效的監(jiān)督數(shù)據(jù),但是對引入而來的干擾點控制不足,在深度圖的右下角區(qū)域出現(xiàn)了深度過低的情況,造成了三維重建結果右下角拉伸和凹陷,此外,對于左邊區(qū)域出現(xiàn)了深度值過高并且延伸的情況,最終導致三維重建結果畸變嚴重。而本文使用的SKNet模塊擁有不同的感受野,可以獲取更多特征信息,避免了過渡關注某一區(qū)域的信息,此外本文提出的加權可靠度可以有效的減少COLMAP重建中離群的3D點對預測深度圖的影響。
如表1所示,對本文方法有無SKNet模型的情況以及X.Liu等[4]的方法都做了評估度量實驗,從表中可以看出,不管是稀疏COLMAP重建還是半稠密COLMAP重建,引入SKNet模型深度估計效果都會有所提升,并且本方法的誤差率和準確率都要好于X.Liu等[4]的方法。
表1 實驗誤差和準確率對比Table 1 Comparison of experimental error and accuracy
為了證明加權可靠度去除干擾點的有效性,對加權可靠度進行消融實驗,在控制其他實驗條件不變的情況下僅改變加權可靠度Wj的有無。實驗結果如圖9所示,由于COLMAP處理階段放寬了特征提取和匹配的限制,引入了一些離群點,造成了某些區(qū)域深度預測出錯,如圖第二列和第三列標注所示,在加入加權可靠度的情況下丟棄了這些異常點,預測深度圖和三維重建結果得到了明顯的改善。
圖9 加權可靠度實驗結果對比Fig.9 Comparison of weighted reliability experiment results
本文提出了一種基于半稠密COLMAP及動態(tài)注意力機制的單目內窺鏡自監(jiān)督深度估計方法。以COLMAP產生的半稠密深度圖作為監(jiān)督信號,解決監(jiān)督數(shù)據(jù)不足的問題,加入了加權可靠度抑制干擾點對結果的影響干擾點。在特征提取階段引入SKNet模型,在增加了少許參數(shù)量的前提下,增強了一些低紋理區(qū)域特征提取的能力。實驗結果表明,對肝臟數(shù)據(jù)集實驗中,本方法取得了較好結果,并通過消融實驗證明了各個模塊的有效性。在下一步工作中,將本方法應用于內窺鏡手術導航系統(tǒng)中,實現(xiàn)實時的3D重建。