張利霞,高俊濤,馬 強,楊潤湉,王志寶,李 菲
(1.東北石油大學(xué) 計算機與信息技術(shù)學(xué)院,黑龍江 大慶 163318;2.黑龍江八一農(nóng)墾大學(xué) 信息與電氣工程學(xué)院,黑龍江 大慶 163319)
斷層是地下巖層沿破裂面或破裂帶發(fā)生位移而形成的一種地質(zhì)構(gòu)造。它是油氣運移和聚集的主要通道。在油氣勘探開發(fā)過程中,斷層解釋是地震資料解釋的關(guān)鍵,弄清斷層的位置及分布對于油氣勘探有著十分重要的作用,斷層解釋的結(jié)果直接關(guān)系到儲層預(yù)測的精度。因此,如何從變化多樣的地震剖面數(shù)據(jù)中準(zhǔn)確高效地識別斷層成為了一項難題,對此,許多國內(nèi)外學(xué)者進行了大量研究。
傳統(tǒng)斷層解釋由解釋人員手工拾取地震剖面上的同相軸不連續(xù)點,將這些點連接成斷層線,逐個地震剖面解釋完畢后,將斷層線在三維空間中進行組合,得到斷層面。人工解釋的結(jié)果準(zhǔn)確度雖然高,但是比較耗時費力,并且主觀性強,非常依賴于解釋人員的經(jīng)驗。為了解決傳統(tǒng)斷層識別方法存在的不足,相關(guān)學(xué)者提出了利用相干體、曲率、方差等地震屬性來識別斷層的方法,Bahorich等人[1]在1995年提出C1相干體技術(shù),此方法的計算速度很快,但易受噪聲的干擾。為了彌補C1相干體技術(shù)存在的不足,Marfurt等人[2]在1998年提出了C2相干體技術(shù),不僅保證了計算速度,同時提高了抗噪性,但是對于小斷層的識別效率比較低。Gersztenkorn等人[3]在1999年提出了C3相干體技術(shù),提高了斷層識別的精度,但是計算量較大。印興耀等人[4]在2014年提出了一種基于離心窗的傾角掃描方法,降低了地震噪聲的影響,提高了計算的效率。楊國權(quán)等人[5]在2015年提出了使用不同網(wǎng)格提取曲率的方法,但是曲率易受人為因素影響,主觀性大,識別準(zhǔn)確率較低。汪杰和汪銳[6]在2016年提出了方差相干體技術(shù),改善了噪聲影響,對較大斷層識別效果較好,但小斷層的識別效果較差。馬藝璇等人[7]在2020年提出了基于匹配追蹤頻譜分解的分頻相干體技術(shù),改進螞蟻追蹤流程,提高斷裂刻畫精度。謝清惠等人[8]在2021年根據(jù)工區(qū)實際情況,引進螞蟻追蹤技術(shù)來進行裂縫預(yù)測,并通過降噪、增強連續(xù)性、突出斷層邊界、剔除假構(gòu)造等手段提高裂縫預(yù)測的精度?;诘卣饘傩缘臄鄬幼R別算法在不斷的優(yōu)化與改進,但是依賴于算法參數(shù)的設(shè)置,許多參數(shù)需要經(jīng)過多次測試才能得到理想效果,并且對于地質(zhì)構(gòu)造復(fù)雜的斷層仍然很難有效識別。
近年來,深度學(xué)習(xí)被廣泛應(yīng)用于各個領(lǐng)域,深度學(xué)習(xí)通過多層網(wǎng)絡(luò)可以自動提取圖像特征,因其高效、便捷,許多學(xué)者提出基于深度學(xué)習(xí)的斷層識別方案。Huang等人[9]在2017年將多種地震屬性作為CNN的輸入,應(yīng)用于斷層識別。Guo等人[10]在2018年從三維地震數(shù)據(jù)中提取出帶有斷層標(biāo)簽的二維圖像用于卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練,再用此模型進行高精度斷層自動識別。H.Di等人[11]在2018年將MLP和CNN的實驗結(jié)果進行對比分析,發(fā)現(xiàn)CNN在斷層識別效率與準(zhǔn)確率方面均優(yōu)于MLP,證明了CNN比傳統(tǒng)的機器學(xué)習(xí)方法好。Chang等人[12]在2019年提出了用UNet網(wǎng)絡(luò)識別斷層,利用合成數(shù)據(jù)與實際數(shù)據(jù)相結(jié)合,嘗試解決泛化能力低的問題。Di等人[13]在2020年以新西蘭塔拉納基盆地為例用深度卷積神經(jīng)網(wǎng)絡(luò)(CNN),高效完成斷層的自動解釋工作。Augusto Cunha等人[14]在2020年提出在合成地震數(shù)據(jù)上利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)進行訓(xùn)練和調(diào)整,并利用遷移學(xué)習(xí)預(yù)測F3地震數(shù)據(jù)的方法。Liu等人[15]在2020年提出了UNet結(jié)合ResNe-34的方法,進一步提高了斷層自動識別的精度。張政等人[16]在2020年提出了深度殘差網(wǎng)絡(luò)與遷移學(xué)習(xí)相結(jié)合的方法,利用人工合成的樣本加上少量的實際樣本進行遷移學(xué)習(xí),提高了實際數(shù)據(jù)中斷層識別能力。席英杰等人[17]在2021年提出了一種改進的SPD-UNet模型,并利用空洞卷積擴大了感受野,更加有效地提高了斷層識別的能力。
已有的利用深度學(xué)習(xí)來識別斷層的方法取得了很大的進步,但仍然存在一些不足,如斷層識別的結(jié)果連續(xù)性不足,存在錯誤識別、漏識別的現(xiàn)象,導(dǎo)致無法較為精準(zhǔn)地分割出斷層。針對該問題,提出基于CBAM-UNet++的斷層識別方法,在UNet++模型的跳躍連接處添加注意力模塊,提高UNet++對斷層的特征提取能力,從通道和空間兩個維度抑制非斷層信號的干擾。使用DropBlock防止網(wǎng)絡(luò)過擬合。最終對連續(xù)性不足的斷層實現(xiàn)準(zhǔn)確識別,提高斷層識別的準(zhǔn)確率。
圖像分割是將圖像分割成不同的連續(xù)像素點的集合,按照圖像中如像素值、紋理、顏色等對圖像有意義的特征進行識別。在地質(zhì)勘探中,斷層識別可以將地震數(shù)據(jù)中的斷層和非斷層看作不同的區(qū)域,用圖像分割方法提取斷層。
UNet++是一種基于深度學(xué)習(xí)的圖像分割方法,使用UNet++可以直接對地震數(shù)據(jù)進行特征提取。UNet++[18]由Zhou等人提出,該網(wǎng)絡(luò)是對UNet網(wǎng)絡(luò)模型的改進,解決了隨著UNet[19]網(wǎng)絡(luò)深度的增加,識別效果不一定越好的局限。UNet++由不同層級UNet疊加組成,其解碼器利用重新設(shè)計的跳躍連接以相同的分辨率密集連接,其結(jié)構(gòu)如圖1所示。在UNet++中,由淺到深將2、3、4、5深度的UNet依次疊加,各層互不孤立,通過跳躍連接,依次被連接起來。由于不同層級UNet最后得到的特征維度不同,所以在每個UNet的右端模塊與1*1卷積核的卷積層連接,降低維度并監(jiān)督各層訓(xùn)練,最后將每層特征圖相加,得到相加特征。UNet++能夠提取到來自不同深度的特征,學(xué)習(xí)到不同深度的特征的重要程度。地震剖面圖像中同時存在局部小斷層和全局大斷層,UNet++具有考慮不同深度圖像特征的特點,因此非常適用于同時識別地震圖像中的小斷層以及大斷層。
2018年,WOO等人[20]提出了CBAM(Convolutional Block Attention Module),它同時結(jié)合了通道注意力和空間注意力,是一種簡單且有效的卷積神經(jīng)網(wǎng)絡(luò)注意力模塊。CBAM模塊如圖2所示。CBAM的運算分為兩個部分,首先將通道注意力Mc(F)與輸入F相乘,得到特征圖F';然后將空間注意力Ms(F')與F'按元素相乘,得到特征圖F'',具體流程如圖2,CBAM的過程可描述為:
圖2 CBAM 模塊示意圖
F'=Mc(F)?F
(1)
F''=Ms(F')?F'
(2)
其中,F'為輸入特征圖;F''為輸出特征圖;Mc(F)為通道注意力模塊;Ms(F')為空間注意力模塊。
(1)通道注意力模塊。
通道注意力主要關(guān)注哪些特征為有意義的特征。通道注意力計算過程為:
Mc(F)=σ(MLP(AvgPool(F))+
MLP(MaxPool(F)))
(3)
其中,F為輸入特征圖;Mc(F)為通道注意力模塊;σ為sigmoid 激活函數(shù);MLP為多層感知器;AvgPool為平均池化;MaxPool為最大池化。
它將輸入F分別通過最大值池化和平均池化得到兩個特征圖;然后將這兩個特征圖輸入到多層感知器中做降維、升維處理;之后將從多層感知器中得到兩個特征圖進行加和;同時經(jīng)過sigmoid激活函數(shù)處理后,得到通道注意力Mc(F),如圖3所示。
圖3 通道注意力示意圖
(2)空間注意力模塊。
空間注意力主要關(guān)注哪些地方特征為有意義的特征,是對通道注意力的補充??臻g注意力計算過程可描述為:
Ms(F')=σ(f([AvgPool(F');MaxPool(F')]))
(4)
其中,Ms(F')為空間注意力模塊;f為卷積層運算;σ為sigmoid 激活函數(shù);AvgPool為平均池化;MaxPool為最大池化。
首先,將輸入F'分別通過最大值池化和平均池化,并將它們連接起來;然后,利用卷積網(wǎng)絡(luò)將其降維為一通道;之后,經(jīng)過sigmoid激活函數(shù)得到空間注意力模塊,如圖4所示。
圖4 空間注意力示意圖
為了便于理解該文的整體思路,圖5展示了完整的工作流程,分為四個步驟。第一步是樣本準(zhǔn)備階段,在三維地震圖像中裁剪出一定的切片作為訓(xùn)練樣本和預(yù)測樣本。第二步是斷層識別網(wǎng)絡(luò)構(gòu)建階段,針對目前斷層識別存在的問題,構(gòu)建CBAM-UNet++模型。第三步,利用訓(xùn)練后獲得的最佳預(yù)測模型對預(yù)測數(shù)據(jù)集進行預(yù)測。第四步,將預(yù)測后的輸出圖像進行霍夫變換、膨脹腐蝕、骨架提取等后處理,得到最終的預(yù)測結(jié)果。
圖5 總體流程
針對深度學(xué)習(xí)方法在斷層識別時存在的斷層識別結(jié)果連續(xù)性不足、地震資料中非斷層樣本高于斷層樣本的問題,在UNet++網(wǎng)絡(luò)的基礎(chǔ)上,提出CBAM-UNet++模型,用于地震圖像的斷層識別,CBAM-UNet++模型整體結(jié)構(gòu)如圖6所示。在UNet++跳躍連接處添加CBAM注意力模型,提高斷層區(qū)域的關(guān)注度,同時抑制無關(guān)區(qū)域的干擾,以提高標(biāo)簽預(yù)測的準(zhǔn)確性。它從通道和空間兩個維度抑制干擾,增強地震斷層的檢測能力。同時,采用了Dropout卷積塊,即每個卷積層后面都有一個DropBlock,一個批處理歸一化(BN)層和一個ReLU激活單元,如圖7所示,來達到防止神經(jīng)網(wǎng)絡(luò)過擬合的目的。在神經(jīng)網(wǎng)絡(luò)中引入注意力機制可以提高模型的特征表達能力[21]。
圖6 CBAM_UNet++結(jié)構(gòu)
圖7 添加DropBlock后的卷積單元
為避免原始UNet++訓(xùn)練過程中出現(xiàn)的過擬合問題,在網(wǎng)絡(luò)模型中加入DropBlock[22]來規(guī)范卷積架構(gòu)。DropBlock從一個層的特征圖中丟棄連續(xù)的區(qū)域,它是dropout的一種結(jié)構(gòu)化形式[23]。DropBlock有兩個參數(shù),分別為block_size和γ。
block_size為DropBlock的長寬,當(dāng)block_size為1時,DropBlock類似于dropout。
γ為伯努利函數(shù)的概率,控制要刪除的特征數(shù),計算公式如下:
(5)
在地震剖面圖像中,斷層線像素區(qū)域面積較小,會導(dǎo)致正負(fù)樣本不平衡,最終影響模型識別效果。采用Dice損失函數(shù)[24]緩解樣本的不平衡問題。
Dice系數(shù)的計算公式如下:
(6)
其中,P為斷層預(yù)測結(jié)果,G為斷層標(biāo)簽,N為斷層圖像的總數(shù),pi為P中的某一像素,gi為相同位置中G的某一像素。Dice損失函數(shù)公式如下:
(7)
基于CBAM-UNet++的斷層識別模型可以準(zhǔn)確提取地震剖面中的斷層線,相較于其他深度學(xué)習(xí)模型,對不連續(xù)斷層的識別精度更高。但是,由于地震剖面中的斷層存在反射特征不明顯但屬于同一斷層的問題以及破裂面破碎嚴(yán)重的問題,因此模型的輸出中不可避免有部分不連續(xù)斷層。
從圖像分割的角度看,斷層中存在的不連續(xù)的現(xiàn)象是正常的,但是模型輸出的直接結(jié)果降低了應(yīng)用性,不能真正地被應(yīng)用于地震解釋處理中,需要對輸出的初步識別結(jié)果進行后處理。方法如下:
首先對斷層預(yù)測結(jié)果進行霍夫變換,連接斷開的斷層。霍夫變換根據(jù)圖像空間中共線的點對應(yīng)在參數(shù)空間里相交的線的關(guān)系把在圖像空間中的直線檢測問題轉(zhuǎn)換到參數(shù)空間里,在參數(shù)空間里進行累加統(tǒng)計完成直線檢測任務(wù)。
然后對霍夫變換處理后的斷層圖像進行膨脹、腐蝕、骨架提取處理,填充斷層區(qū)域,同時將斷層細(xì)化成一條線。
在地震斷層識別實驗中,數(shù)據(jù)集的制作主要通過兩種方法,一種是利用人工合成的地震數(shù)據(jù)及其標(biāo)簽進行訓(xùn)練和測試,另一種是采用真實的地震數(shù)據(jù)及人工標(biāo)注的斷層標(biāo)簽進行訓(xùn)練。
為了避免不正確的標(biāo)注數(shù)據(jù)對網(wǎng)絡(luò)的學(xué)習(xí)造成誤導(dǎo)的問題,采用Wu等人[25]提出的合成地震斷層數(shù)據(jù)的方法,將合成地震斷層數(shù)據(jù)作為樣本集。人工合成的方法可以快速且大量地生成實驗數(shù)據(jù),有利于實驗研究,同時避免手動標(biāo)記耗時且斷層位置主觀性大的問題。
合成地震斷層數(shù)據(jù)是由地震正演模擬得到,合成過程如下:
(1)創(chuàng)建一維反射模型;(2)應(yīng)用高斯函數(shù)在模型中增加褶皺構(gòu)造;(3)添加平面剪切構(gòu)造;(4)添加斷層;(5)同雷克子波褶積;(6)添加隨機噪聲。
通過此方法生成7 819張分辨率為128*128的合成地震數(shù)據(jù)和斷層標(biāo)簽數(shù)據(jù)用于模型訓(xùn)練,同時生成3 150張用于驗證,1 150張用于預(yù)測,生成的合成地震數(shù)據(jù)及其斷層標(biāo)簽如圖8所示,其中(a)(c)(e)(g)為合成地震數(shù)據(jù),(b)(d)(f)(h)分別為(a)(c)(e)(g)對應(yīng)的斷層標(biāo)簽。
圖8 合成地震數(shù)據(jù)及其斷層標(biāo)簽
提出的模型在Pytorch神經(jīng)網(wǎng)絡(luò)框架中完成,使用的硬件環(huán)境為AMD Ryzen 9 3950X 16-Core Processor~3.49 GHz,搭載了英偉達2080 Ti GPU。實驗過程中batch_size設(shè)置為20,epoch設(shè)置為60,使用學(xué)習(xí)率1×10-4的Adam 優(yōu)化器對模型訓(xùn)練過程進行優(yōu)化。模型的輸入尺寸為128*128*3像素。訓(xùn)練平臺配置見表1。
表1 訓(xùn)練平臺配置
地震斷層的分割任務(wù)主要是將斷層從地震數(shù)據(jù)中提取出來,將二值黑白圖與斷層標(biāo)簽做對比,計算出混亂矩陣中的各個數(shù)據(jù),用于分割斷層的混亂矩陣分布,如表2所示。
表2 混亂矩陣
地震斷層識別的結(jié)果實質(zhì)上是二分類的結(jié)果,同時也是一個不平衡分類問題,可以采用機器學(xué)習(xí)中分類器的評價指標(biāo)來對地震斷層識別進行評價。為了評價提出方法的有效性,采用IOU、ACC、Dice、Precision、Specificity多個指標(biāo)進行綜合的比較和分析,每個評估指標(biāo)計算公式如下:
(8)
(9)
(10)
(11)
(12)
其中,TP代表實際是斷層且識別結(jié)果也為斷層的像素點數(shù)量,TN為實際不是斷層且識別結(jié)果也不是斷層的像素點數(shù)量,FP為實際不是斷層但是被識別成斷層部分的像素點數(shù)量,FN為實際是斷層但是沒被識別成斷層部分的像素點數(shù)量。
將設(shè)計的CBAM-UNet++與UNet++、UNet、SegNet進行比較。由表3可以看出,CBAM-UNet++算法相比于UNet++方法在IOU、ACC、Dice、Precision、Specificity分別提高了0.73、0.35、0.6、5.5、0.67百分點,相比于UNet方法在ACC、Precision、Specificity分別提高了0.18、3.87、0.5百分點,這說明加入CBAM注意力機制后,新的算法有利于斷層的分割,這說明提出的模型具有一定的優(yōu)越性。
表3 CBAM-UNet++與UNet、UNet++、SegNet的結(jié)果比較 %
不同算法的分割效果如圖9所示,其中,(a)表示地震斷層原始圖像;(b)表示地震斷層實際標(biāo)注;(c)表示用SegNet模型進行斷層識別的結(jié)果;(d)表示用UNet模型進行斷層識別的結(jié)果;(e)表示用UNet++模型進行斷層識別的結(jié)果;(f)表示加入CBAM注意力模型的CBAM-UNet++識別結(jié)果。從實驗結(jié)果中可以看出,SegNet在斷層中部位置存在漏識別的現(xiàn)象,同時在斷層頂部有部分錯誤識別;UNet、UNet++同樣在斷層中部位置存在漏失別的現(xiàn)象,但是相對于SegNet,在中部位置漏識別的區(qū)域減少,識別效果有明顯提高;CBAM-UNet++識別的斷層相對于以上三種模型,連續(xù)性有明顯提升,與實際標(biāo)注的地震斷層形狀及位置更接近。
圖9 合成地震數(shù)據(jù)不同算法對斷層識別效果對比
為了驗證CBAM-UNet++斷層識別方法在實際工區(qū)地震數(shù)據(jù)中的有效性,將提出的方法應(yīng)用于北海荷蘭地區(qū)F3的某工區(qū)地震數(shù)據(jù)。從圖10中可以看出,SegNet漏識別的情況比較嚴(yán)重;UNet、UNet++同樣在剖面的中間位置存在漏識別的現(xiàn)象,但是相對于SegNet識別效果有明顯提高;而CBAM-UNet++與其他三種方法對比,在斷層連續(xù)性方面較好,錯誤識別率較低,能夠有效識別出絕大多數(shù)斷層線,證明了所提方法的有效性。
圖10 F3區(qū)塊不同算法的斷層識別效果對比
從表4中可以看出,CBAM-UNet++算法在IOU、ACC、Dice、Precision、Specificity這幾個評價指標(biāo)上優(yōu)于UNet++,同時與其他兩個算法相比CBAM-UNet++獲得了較大的提升,得到了更好的識別效果。CBAM-UNet++不僅在合成地震數(shù)據(jù)中有較好的效果,在實際地震工區(qū)中也同樣具備較好的效果。
表4 4種語義分割模型在F3地震工區(qū)中的斷層識別效果比較 %
用CBAM-UNet++網(wǎng)絡(luò)對F3地震數(shù)據(jù)檢測斷層,斷層檢測效果如圖10(f)所示,圖中斷層仍存在少部分?jǐn)鄬訑嗔?此檢測結(jié)果降低了應(yīng)用性,所以對CBAM-UNet++網(wǎng)絡(luò)檢測的斷層結(jié)果進行進一步處理。通過霍夫變換、膨脹、腐蝕、骨架提取等方法進行后處理,連接斷層斷裂的部分。最終后處理的斷層效果(圖11)與地震斷層標(biāo)簽(圖10(a))進行對比,可以看出所提方法最終的預(yù)測效果與地震斷層標(biāo)簽基本一致。
圖11 F3區(qū)塊地震數(shù)據(jù)后處理效果
從地震數(shù)據(jù)中自動提取斷層是地震解釋工作中的難點。針對人工標(biāo)注斷層效率低、傳統(tǒng)斷層識別方法對實際地震斷層預(yù)測效果不理想的問題,將注意力機制融入到UNet++算法中,建立CBAM-UNet++模型,并將其應(yīng)用地震斷層識別中,抑制無關(guān)特征的干擾,同時采用DropBlock有效地抑制網(wǎng)絡(luò)中產(chǎn)生的過擬合問題,通過引入Dice Loss損失函數(shù)以減輕地震斷層識別任務(wù)中的數(shù)據(jù)不均衡問題。該方法在合成地震數(shù)據(jù)集上進行訓(xùn)練和預(yù)測,其中,IOU、ACC、Dice、Precision和Specificity指標(biāo)分別達到了55.09%、96.08%、71.04%、75.51%、98.32%。CBAM提高了特征提取能力,為地震斷層識別提供了一種很好的識別效果。同時,將該方法應(yīng)用于真實地震數(shù)據(jù)F3區(qū)塊進行檢驗,實驗結(jié)果表明該網(wǎng)絡(luò)能夠?qū)鄬舆M行精準(zhǔn)的提取。該研究展示了從二維的角度解釋斷層線,在未來的工作中,將應(yīng)用深度學(xué)習(xí)方法進行三維斷層解釋的研究,直接提取三維斷層面并自動連接不連續(xù)斷層面。