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