曹遷義,李立華,何小海*,滕奇志,卿粼波
(1.四川大學 電子信息學院,四川 成都 610041;2.河北省地質礦產(chǎn)勘查開發(fā)局第六地質大隊,河北 石家莊 050000)
充填縫即具有充填物質的巖心裂縫,是一種研究裂縫型儲層的重要地質資料。因此,將巖心充填縫從背景中提取出來,在油氣勘探、研究地質構造等領域具有重大的意義。在早期,巖心充填縫提取主要依靠地質研究人員進行手工標注,這種方法極其耗費時間精力,并且嚴重依賴分析人員的操作,主觀性較強,提取的裂縫不一定準確。
伴隨著數(shù)字圖像處理技術的發(fā)展,越來越多的研究者采用相關的圖像處理算法進行裂縫的提取。劉寧[1]提出了基于閾值分割的巖心裂縫提取算法,首先對巖心圖像進行二值化處理,然后通過形態(tài)學方法處理裂縫,該方法能夠將裂縫的大致輪廓提取出來,但提取的結果噪點較多。韋宇飛[2]研究了基于滲流模型的巖心裂縫提取算法,但在實際應用中,需要人工設置初始的閾值參數(shù),效率較低。李朝輝等[3]提出了改進的相位一致的巖心圖像裂縫提取算法,該算法能夠保留傳統(tǒng)相位一致算法的優(yōu)點,提取出的裂縫連通性較好,但算法的泛化能力有待提高。使用這些方法相比人工提取大大提高了檢測的效率,但還是存在一些不足之處,當巖心充填縫圖像較為復雜時,難以得到準確的提取結果。
近年來,隨著深度學習的飛速發(fā)展,基于深度學習的算法在分割領域取得了一定的成果。Ronneberger等[4]提出了類似U型結構的UNet網(wǎng)絡,使用了跳躍連接拼接淺層次和深層次的特征,該網(wǎng)絡在醫(yī)學圖像分割領域取得了較好的效果。Zhou等[5]提出了UNet++網(wǎng)絡,在UNet的基礎上增加密集的短連接,提高了模型的性能。梁博等[6]提出了基于全卷積神經(jīng)網(wǎng)絡的多任務分割網(wǎng)絡,在實際場景中取得了較好的分割效果。劉啟等[7]將先驗信息與UNet網(wǎng)絡結合,用于海陸圖像的分割,具有較好的時效性與分割精度。黃帥坤[8]提出了基于改進卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的巖心裂縫語義分割網(wǎng)絡,但是對于較細的裂縫,提取效果還有待提升。張振華等[9]提出了改進的CNN用于檢測混凝土橋梁裂縫,取得了較好的識別效果。李孟歆等[10]將CNN應用在腦血管圖像分割上,實現(xiàn)了較好的分割效果。Choi等[11]根據(jù)空間特征結構,提出了HA-Net,并將其嵌入到DeepLabv3中,改善了城市場景圖像的分割效果。但是目前的裂縫檢測方法在檢測充填縫時容易受到復雜背景的干擾,并且充填縫的粗細大小不一,使得一些細小的充填縫未能被檢測出來。
針對上述模型存在的問題,本文設計了一種基于UNet++的巖心圖像充填縫檢測算法,引入坐標注意力(Coordinate Attention,CA)[12]來抑制背景區(qū)域的干擾,在UNet++網(wǎng)絡的編碼器末端添加空洞空間池化金字塔(Atrous Spatial Pyramid Pooling,ASPP)模塊融合多尺度特征圖,增強模型的魯棒性及分割準確性。
UNet++網(wǎng)絡是在UNet的基礎上發(fā)展而來,UNet提出的初衷是為了解決醫(yī)學圖像分割的問題,后來研究者發(fā)現(xiàn)在自然圖像上也有不錯的分割效果,于是被廣泛用于語義分割的各個方面。UNet++在UNet的基礎上引入了密集的短連接,對淺層和深層的特征進行拼接,從而減少了淺層與深層之間的語義鴻溝,并引入了深層監(jiān)督,融合了淺層與深層的語義信息。但是過多淺層語義信息的引入會對充填縫的目標提取帶來干擾。由于巖心充填縫圖像較為復雜,容易將部分背景區(qū)域也識別為充填縫,給最終的提取結果帶來一定的噪聲;并且?guī)r心充填縫的形狀大小差異較大,既存在較大的充填縫,又有比較細微的小裂縫,使用UNet++網(wǎng)絡直接進行巖心充填縫的提取,難以檢測出比較細微的充填縫,從而使得提取出的部分細微的裂縫出現(xiàn)斷裂。鑒于巖心圖像充填縫的特性,本文把CA,ASPP及UNet++網(wǎng)絡相結合,提出了一種新的巖心充填縫提取模型Improved-UNet++。在跳躍連接中嵌入一個CA模塊,增強模型對巖心充填縫特征的表達,并且在編碼器末端引入ASPP模塊,通過搭建具有不同空洞率的卷積池化金字塔,提升模型對充填縫特征的多尺度信息的感知能力。
本文提出的Improved-UNet++網(wǎng)絡由編碼器、跳躍連接和解碼器3個部分組成,網(wǎng)絡結構如圖1所示。編碼器由圖1左側的1~5層(X0,0,X1,0,X2,0,X3,0和X4,0)組成,每一層都由2個卷積塊和一個最大池化層組成。每個卷積塊由3×3卷積層(padding=1,stride=1)、BatchNorm歸一化層和ReLU激活層組成。X0,1,X0,2,X0,3,X1,1,X1,2和X2,1層代表模型中的跳躍連接部分,將不同層次的特征圖進行通道維度上的拼接融合。本文模型在X1,0特征圖之后嵌入一個CA模塊,用來抑制低層次語義信息上的干擾。解碼器部分由圖1中右側的X3,1,X2,2,X1,3和X0,4層組成,每一層包含一個上采樣層及2個卷積塊。在編碼器路徑的末端嵌入ASPP模塊,增強模型對充填縫特征的多尺度信息的感知能力。將X0,1,X0,2,X0,3和X0,4層輸出的特征圖送入到1×1卷積層中進行深監(jiān)督,最后得到和輸入圖像的長寬大小相同、通道數(shù)為1的特征圖,并將該特征圖送入Sigmoid層,生成最后的預測結果。
圖1 改進的UNet++網(wǎng)絡結構Fig.1 Improved-UNet++ network structure
CA機制是一種非常高效的注意力機制,不僅能夠獲得通道信息,還能捕獲到對圖像分割領域來說極其重要的坐標信息,這能幫助網(wǎng)絡更加準確、精細地聚焦到目標區(qū)域,有效抑制背景噪聲帶來的影響。CA模塊由坐標信息嵌入和坐標信息生成2部分組成。CA結構如圖2所示。
圖2 CA結構Fig.2 CA structure
(1) 坐標信息嵌入部分
首先,定義輸入的特征圖Input為X,從水平方向(H,1)和垂直(1,W)方向對X的每一個通道進行一維平均池化,池化后得到的2個特征圖為:
(1)
(2)
(2) 坐標信息生成部分
對2個生成的特征圖進行拼接操作,之后進行1×1的卷積,生成一個中間特征圖f:
(3)
式中,δ為非線性激活函數(shù);F1×1是1×1的卷積;cat將水平和垂直的池化結果進行空間維度的拼接。圖2中r是控制模塊大小的超參數(shù)。
gh=δ(Fh(fh)),
(4)
gw=δ(Fw(fw))。
(5)
最后把權重與輸入的特征圖相乘,得到調整后的特征圖Output,定義輸出的特征圖Output為Y=[y1,y2,…,yc],即:
(6)
調整后的特征圖使得模型更加關注充填縫區(qū)域,抑制背景帶來的影響。在特征提取階段, 深層次的特征圖由于不斷地編碼導致丟失了很多位置和細節(jié)信息,而淺層特征圖的位置與細節(jié)信息比較豐富。通過引入CA模塊,充分捕獲跨通道的信息及位置敏感的特征,增強網(wǎng)絡定位充填縫區(qū)域的準確性。因此,本文在較淺層特征嵌入一個CA模塊,用于抑制特征圖中語義信息上的干擾,使得模型更加準確地提取出圖像中的充填縫。
空洞卷積(Dilated Convolution)可以在不增加模型大小,減少計算資源的消耗,不損失信息的情況下提供更大的感受野。相比于標準卷積,空洞卷積引入了一個空洞率(Dilation Rate)的超參數(shù),即卷積核中各點的距離。假設卷積核尺寸為k,空洞率為rate,則感受野n為:
n=k+(k-1)×(rate-1)。
(7)
圖3中展示了4個卷積核尺寸大小為3,rate分別為1,2,3,4的空洞卷積核。圖中紅色像素為目標像素,黃色像素是需要進行卷積運算的像素。根據(jù)式(7),假定卷積核的尺寸為3,當rate=1時,感受野為3;當rate=2時,感受野為5;當rate=3時,感受野為7;當rate=4時,感受野為9。
圖3 不同空洞率的卷積核Fig.3 Convolution kernels with different void rates
ASPP很好地利用了空洞卷積的優(yōu)點,采用多個并聯(lián)的不同空洞率的空洞卷積對輸入的特征圖進行并行采樣,并且引入全局平均池化來捕獲圖像的全局特征。ASPP能夠將不同尺度的特征圖進行融合,使得網(wǎng)絡能夠更加充分地利用圖像的上下文信息。
ASPP模塊的具體結構如圖4所示,將輸入特征圖分別送入到一個大小為1×1的標準卷積中,3個卷積核尺寸為3×3的不同空洞率的空洞卷積中,以及一個全局平均池化單元,然后將包含不同尺度信息的特征圖在通道維度拼接,最后送入到一個卷積核尺寸為1×1的標準卷積中進行通道數(shù)的變換。
圖4 ASPP結構Fig.4 ASPP structure
由于巖心充填縫圖像中充填縫的尺度大小不一致,在解碼之前,將特征圖輸入到ASPP模塊中獲取多尺度的圖像特征,充分利用全文上下文信息,有利于加強網(wǎng)絡對不同粗細的巖心充填縫的提取能力,使得網(wǎng)絡對于細微的充填縫也能實現(xiàn)比較精確的分割結果。經(jīng)過多次實驗,本文將ASPP的空洞卷積的rate分別設置為2,3,6,使得模型提取充填縫的性能最佳。
為了驗證Improved-UNet++的有效性,在巖心充填縫數(shù)據(jù)集[8]上進行不同算法的對比實驗;同時為了評估所提算法的泛化能力,在2個公開數(shù)據(jù)集(ISIC2018[13-14]和Crack500[15]上進行了不同算法的對比實驗。在這2組實驗中,對比算法包括GCN[16],DeepLabv3+[17],DDRNet[18],UNet以及UNet++。另外,為了驗證各個模塊的有效性,進行了消融實驗。
巖心充填縫數(shù)據(jù)集由黃帥坤構建,該數(shù)據(jù)集使用高清線陣相機所采集的巖心圖像,將相機拍攝的原始巖心圖像進行裁剪,并從中剔除不含裂縫的圖片。共得到154張500 pixel×500 pixel的充填縫圖片,使用LabelMe軟件進行標注,生成JSON文件,并轉換成圖像。
ISIC2018數(shù)據(jù)集是由國際皮膚成像協(xié)會(International Skin Imaging Collaboration,ISIC)發(fā)布的皮膚病變檢測數(shù)據(jù)集,共有2 594張圖像及其對應標注數(shù)據(jù),目前已成為主流的醫(yī)學圖像分割算法數(shù)據(jù)集之一。Crack500是目前網(wǎng)上公開的最大的道路裂縫數(shù)據(jù)集之一,包含3 020張分辨率為640 pixel×360 pixel的圖像及對應標簽。
上述3個數(shù)據(jù)集的訓練集與測試集之比均為8∶2,并隨機采用水平翻轉、垂直翻轉和水平垂直翻轉的方式對數(shù)據(jù)集進行數(shù)據(jù)增強,有效地擴充了數(shù)據(jù)集的大小。
為了有效客觀地評估模型的性能,選用平均交并比(mean Intersection over Union,mIoU)、平均像素精度(mean Pixel Accurary,mPA)和F1值(F1-Score,F(xiàn)1)3個在語義分割領域常用的評價指標。上述評價指標的值都在0~1,越接近1表示模型的效果越好。mIoU, mPA和F1值的計算式為:
(8)
(9)
(10)
式中,TP(True Positive)表示被模型預測為正的正樣本;TN(True Negative)表示被模型預測為負的負樣本;FP(False Positive)表示被模型預測為正的負樣本;FN(False Negative)表示被模型預測為負的正樣本。
2.3.1 實驗環(huán)境設置
本文所有的實驗都在版本為Ubuntu18.04 LTS的系統(tǒng)下進行,GPU為NVDIA GeForce RTX2080Ti,顯存大小為11 GB;CPU為Intel(R) Core(TM)i7-9700;實驗中使用的深度學習框架是pytorch1.6。
2.3.2 實驗參數(shù)設置
實驗使用 RMSProp算法作為優(yōu)化器,初始學習率設定為0.000 1,網(wǎng)絡權重的初始化采用He initialization[19],Batchsize為2,迭代次數(shù)(epoch)為40輪。需要對圖像進行前景與背景的分割,選擇二值交叉熵損失函數(shù)(Binary Cross-Entropy Loss Function)作為模型訓練時的損失函數(shù),該損失函數(shù)為:
(11)
式中,N代表總的像素個數(shù);yi代表像素點i在標注圖像中的值;xi代表經(jīng)過模型后像素點i在預測圖像中的值。
2.4.1 Improved-UNet++的有效性驗證
為了驗證本文算法的有效性,在巖心充填縫數(shù)據(jù)集上對比不同算法的分割結果。圖5為各個算法的可視化結果。表1是各個算法的指標結果。在該數(shù)據(jù)集上,GCN,DeepLabV3+和DDRNet算法對于細微裂縫的提取能力弱,并且這也導致了它們在表1中的指標數(shù)據(jù)較低。而本文算法在編碼器末端引入了ASPP模塊,增強了對細微裂縫的提取效果。UNet和UNet++算法對能夠大致提取出細微裂縫的輪廓,但存在嚴重的斷裂現(xiàn)象及噪點。本文算法在較低層的特征提取階段中嵌入CA模塊,可減少背景區(qū)域對后續(xù)預測的干擾,提升了模型對充填縫的檢測精度。相比其他算法,本文算法提取出的充填縫更加接近人工標注,并在mIoU,mPA和F1值上均高于其他算法。綜合主觀與客觀的結果表明,本文算法在巖心充填縫提取上表現(xiàn)出最佳的性能。
圖5 巖心充填縫圖像對比結果可視化Fig.5 Visualization of core filling fracture image comparison results
表1 巖心充填縫數(shù)據(jù)集的對比結果Tab.1 Comparison results of core filling fracture datasets 單位:%
2.4.2 Improved-UNet++的泛化性能評估
為了評估本文算法的泛化性能,在2個公共數(shù)據(jù)集(ISIC2018和Crack500)上對比不同算法的分割結果??梢暬Y果如圖6所示。在ISIC2018數(shù)據(jù)集上,其他方法的結果與標注圖像相差較大,本文方法的結果更加準確精細。在Crack500數(shù)據(jù)集上,本文方法所受干擾最少,提取效果最好。
圖6 公共數(shù)據(jù)集圖像對比結果可視化Fig.6 Visualization of image comparison results of public datasets
本組實驗的指標結果如表2所示。
表2 公共數(shù)據(jù)集的對比結果Tab.2 Comparison results of public datasets 單位:%
在ISIC2018數(shù)據(jù)集上,相比于UNet++,本文方法在mIoU,mPA和F1值提升了2.82%,3.75%和3.29%。在Crack500數(shù)據(jù)集上,相比于UNet++,本文方法在mIoU,mPA和F1值提升了1.02%,0.42%和1.61%。由于在低層次特征提取階段引入CA,增強了網(wǎng)絡區(qū)分前景與背景的性能,在ISIC2018數(shù)據(jù)集和Crack500數(shù)據(jù)集上的提取結果明顯噪聲最少,而在編碼與解碼路徑中間的ASPP結構則使得本文方法在Crack500數(shù)據(jù)集上提取的道路裂縫較為連續(xù)完整,而其他網(wǎng)絡則有出現(xiàn)斷裂情況。在2個公共數(shù)據(jù)集的提取精度上均優(yōu)于其他主流算法,從而驗證了本文算法具有一定的泛化性。
為了驗證改進的UNet++網(wǎng)絡的各個模塊的有效性,在巖心充填縫數(shù)據(jù)集上進行消融實驗,消融實驗共分為4組:第1組實驗使用的網(wǎng)絡為UNet++,第2組在第1組網(wǎng)絡的基礎上加CA模塊,第3組在第1組網(wǎng)絡的基礎上加ASPP模塊,第4組在第2組的基礎上加ASPP模塊,實驗的訓練參數(shù)均保持一致。消融實驗具體結果如表3所示。從表3中可以看出,2種模塊均使得網(wǎng)絡的提取精度有了一定的提升。CA使得模型抑制了部分背景信息無用的特征,提高了分割的準確性,但對細微裂縫的提取效果仍有待提升,而ASPP模塊通過構建不同空洞率的卷積層,融合不同尺度信息的特征圖,雖然引入了更多的參數(shù),但增強了模型對不同尺度充填縫的檢測能力,有效改善因裂縫較細而產(chǎn)生的漏檢情況。為了增強網(wǎng)絡的魯棒性及提取精度,本文同時嵌入了CA及ASPP模塊,表3中的數(shù)據(jù)也證實了本文算法具有最佳的分割效果。
表3 不同模塊的消融實驗Tab.3 Ablation experiments of different modules
為了更加精確地提取巖心充填縫,本文在UNet++網(wǎng)絡的基礎上提出了一種改進的巖心充填縫自動提取算法,通過引入CA模塊增強模型對充填縫的聚焦能力,構建ASPP融合不同尺度的圖像特征,有效提升了模型在巖心充填縫上的分割效果。在巖心充填縫數(shù)據(jù)集上進行的實驗表明本文算法對巖心充填縫的提取具有較好的性能,在ISIC2018和Crack500數(shù)據(jù)集上進行的實驗驗證了本文算法具有一定的泛化性能,而消融實驗則驗證了各個模塊的有效性。在后續(xù)的工作中,將致力于在不降低分割精度的情況下探索模型輕量化的研究。