覃本學, 沈疆海*, 馬丙鵬, 宋文廣
(1. 長江大學計算機科學學院, 荊州 434023; 2. 中國科學院大學計算機科學與技術學院, 北京 100190)
在石油天然氣領域,巖屑錄井(rock debris logging)是識別地層巖性和油氣顯示的重要手段,是油氣勘探中必不可少的錄井方法。勘探時對鉆取上來的巖屑計算遲到時間以判斷巖屑所在地層,對巖屑巖性進行識別即可得到該巖屑地層的巖性,由此可判斷地層含油、氣情況。傳統識別巖性的方式是人工鑒別,鑒別人員通過觀察、觸摸、嗅、敲擊來識別,有時需借助傅里葉紅外光譜儀、X射線衍射儀、拉曼光譜儀、掃描電鏡等儀器,如南澤宇等[1]對致密含鈣砂礫巖地層鉆井數據進行分級分類得到多級交會圖,識別結果與巖心薄片吻合良好,準確率高,但傳統方式過程復雜、低效,且鑒別人員需要具備專業的石油地質類知識,這也使得巖屑巖性識別的門檻很高。
隨著機器學習的發展,圖像分類的任務早在2014年就已經超過了人眼,在通用事物上達到了92%的正確率,于是石油地質類研究也開始將機器學習應用到巖性識別工作當中,文獻[2-5]構建巖性識別神經網絡,實現了巖石圖像、巖心薄片的自動分類,準確率達到80%;為達到更高準確率,Zeng等[6]和Gu等[7]分別提出了基于柵極循環單元(gated recurrent neural network,GRU)神經網絡的注意機制模型和結合平均值影響(mean impact value,MIV)與粒子群優化(particle swarm optimization,PSO)的概率神經網絡(probabilistic neural network,PNN)模型,對測井環境中的巖性識別達到了較好的效果。
對于巖屑巖性識別,情況則更為復雜,很多時候一張圖像并不只有單純的一類巖屑,可能有背景、雜質或者其他不同類型的巖屑。語義分割(semantic segmentation)模型[8]因為可對圖像進行逐像素級分類,對一張圖像上不同類別進行分割,非常適合應用在巖屑圖像的圖像分割上。2015年,全卷積網絡(fully convolutional networks,FCN)[9]成為語義分割使用廣泛的網絡,由此產生的FCN-32s、FCN-16s、FCN-8s在通用事物上的分割效果越來越好。同年產生的U-Net[10]分割網絡,相比于FCN得到的分割圖像邊緣信息更加精細,因此被非常多地應用在醫學圖像的分割之上。此外,語義分割網絡還被應用于各種其他領域當中且都取得了不錯的效果。如廖娟等[11]以U-Net網絡作為主干網絡,基于側邊深度監督機制構建的模型可對作物苗期植株進行準確的分割;代具亭等[12]提出的基于RGB-D(彩色-深度)圖像的場景語義分割網絡,通過融合多級RGB網絡特征圖和深度網絡特征圖實現了對現實的場景分割;姜楓等[13]針對砂巖薄片圖像構建的分割網絡RockNet,結合模糊聚類技術,實現了對多角度砂巖圖像中砂巖和礦物顆粒的分割。
鑒于巖屑錄井工作中難點和巖屑圖像的特征,現選擇將語義分割網絡應用到巖屑巖性識別當中,并研究主流語義分割網絡在此工作中的適用性,由此設計一種更適合巖屑錄井工作中復雜情況和滿足效率、精度要求的語義分割網絡。
訓練樣本數據來自某油田的十口探井的巖屑數據,其中包括精選巖屑的高分辨率圖像和專業人員對巖屑的巖性定性描述,該描述是標記數據集的根據。巖屑圖像是對專業人員分揀的巖屑所拍攝的高分辨率放大圖像,分為大面積粗選巖屑圖像(圖1)和精選巖屑圖像,前者采用固定高度鏡頭拍攝,圖像分辨率極高,水平、垂直分辨率可達2 000 dpi,因此可實現多倍放大供鑒別人員觀察;后者經過精細挑選,巖屑成分較為單一、標記較為容易、尺寸也相對較小,適合用來作為訓練和測試網絡性能的數據集。為體現本文方法對于外觀相近的巖屑的識別能力,選擇5類巖屑圖像比較接近的沉積巖進行實驗,這5類分別是白云巖(dolomite)、石灰巖(limestone)、泥巖(mudstone)、砂巖(sandstone)和頁巖(shale),如圖2所示。

圖1 粗選巖屑圖像

圖2 5類精選巖屑圖像
對多種通用語義分割網絡在同一數據集上進行訓練,同時搭建網絡和上述網絡進行對比并不斷改進,得到了一種在巖屑數據集上表現良好且更為高效的語義分割網絡,取名為Debseg-Net(debris segmentation network)。其網絡結構如圖3所示。網絡采用編解碼(encoder-decoder)結構,引入深度可分離卷積(depth separable convolution),編碼部分將輸入圖像進行卷積和最大值池化(max pooling)使圖像尺寸不斷變小,通道數不斷變多。解碼部分采用轉置卷積(transposed convolution)操作使特征圖尺寸再次放大通道數變少,同時結合跳級連接(concat)將編碼部分保存的信息與解碼部分的信息結合,再使用卷積進一步抽象特征達到像素級分類的目的,同時,Debseg-Net在卷積層中穿插批標準化(batch normalization)層。除最后一層使用Softmax激活函數外,每一層得到的輸出函數使用ReLu函數進行激活。Debseg-Net共有65層。
目前的主流語義分割網絡都采用編解碼結構,如U-Net、Seg-Net[14]和DeconvNet[15]。該結構將網絡分為兩部分:編碼器負責圖片的特征提取,解碼器負責尺寸還原以及像素級分類的任務,解碼部分采用逐次上采樣(up-sampling)的方式,相比于FCN,該結構可以解決因簡單上采樣導致的像素位置信息丟失、忽略全局上下文、缺乏空間一致性的問題。
Debseg-Net采用該編解碼結構,不過與U-Net、Seg-Net和DeconvNet相比,放棄了編碼與解碼器的對稱設計。由于編碼部分負責特征提取的部分,所以可替換成對特征更加敏感的深度神經網絡,以VGG-16[16]網絡為例,將U-Net的編碼部分替換為VGG-16網絡得到的VGG-Unet,在巖屑數據集上也能獲得很好的分割效果。Debseg-Net網絡相比于VGG-Unet,它擁有更深的編碼器網絡,達到37層,是編碼和解碼層數不相同的不對稱結構。
傳統卷積操作的卷積核擁有和輸入圖像相同的通道數,如圖4所示。

圖4 普通卷積示意圖
該做法的優點是充分考慮圖像通道間的空間信息,但是帶來的是參數量的爆炸式增長,這就限制了卷積神經網絡在層數深度上的增加。后來的研究發現卷積操作可在通道卷積上進行完全的解耦,但同時丟失了通道間的空間信息,這個問題可以通過增加跨通道的1×1卷積核來彌補[17],該卷積核擁有與輸入特征圖相同的通道數,卷積時僅收集跨通道的信息,長寬方向的信息不再擴張,即將三維信息的乘法解耦為二維的乘法再加上一維的信息,如圖5所示。

圖5 深度可分離卷積示意圖
深度可分離卷積與傳統卷積的參數量之比可用式(1)表示,由式(1)可以發現,使用深度可分離卷積代替普通卷積后參數量可減少大約CO倍。

(1)
式(1)中:SK為卷積核的尺寸;CI為輸入特征的通道數量;CO為輸出特征的通道數量。
采用深度可分離卷積的Debseg-Net在擁有65層網絡的情況下,參數僅為9 966 278個。
當語義分割網絡編碼器部分在進行特征提取的時候,隨著卷積操作的進行,特征圖(feature map)越來越小,提取到的特征從一開始的豐富逐漸變得抽象和高級,伴隨著的圖像信息丟失也越來越明顯[18],以至于解碼器部分在轉置卷積或者上采樣的時候,不能很好地還原圖像信息,無法進行準確的像素級分類。于是在FCN中,特征在卷積之后會接上一個池化層,用來保存該層提取到的特征,在上采樣時,將保存的池化層提取信息與上采樣信息連接,來還原圖像信息;在U-Net中,伴隨著每一次最大池化,圖像尺寸都會變為原來的1/2,而上采樣會使圖像變為上一層的2倍,于是將池化前的圖像信息和上采樣后的信息結合以還原圖像信息。Debseg-Net同樣采用這一思想,不過是在編碼器部分的每一次卷積之后,加上一個批標準化層,用來規范和保存該卷積層處理后的信息。
在解碼器部分,每次都使轉置卷積之后圖像尺寸變為原來的2倍,對應編碼部分的最大值池化操作,如式(2)所示,卷積核k的大小和步長d同取值為2,由于圖像尺寸在網絡中迭代時尺寸最大值為256,最小值為16,卷積核大小為2×2,所以無需邊緣填充(padding),p取值為0。則尺寸為16×16的特征圖經轉置卷積操作后尺寸變為32×32,由此代替了上采樣操作,實現了圖像尺寸的放大。
So=d(Si-1)-2p+k
(2)
式(2)中:k為卷積核的大??;d為卷積核的步長;Si為輸入特征圖的尺寸;So為輸出特征圖的尺寸;p為邊緣填充像素數量。
每個轉置卷積之后會再跟一個批標準化層,用來規范轉置卷積操作后的數據,而后將編碼與解碼器的批標準化層進行concat,完成編碼與解碼部分信息的合并,如式(3)所示。
(3)

相比于池化操作,對批標準化層進行concat能最大程度保留原始特征,因為池化操作無論是平均池化還是最大值池化,僅僅是在單張圖像的像素間進行取樣并保存,選擇范圍小則會帶來普適性差、不能反映整體特征的問題,而使用批標準化會在同批次多張圖像間進行標準化操作,如式(4)所示。

(4)
式(4)中:n為同批次圖像數量;xi為輸入特征值;μB為將輸入特征值進行求和取得的平均值。


(5)


(6)
式(6)中:ε為為了增加訓練穩定性而加入的小的常量數據。
不僅如此,批標準化操作還會根據兩個參數γ和β進行反批標準化實現自主學習,讓神經網絡自己學習以改變這兩個參數從而得到新的特征值,如式(7)所示。

(7)
如果前面的批標準化并沒有起到優化的作用,就會使用這兩個參數抵消批標準化的操作,避免批標準化使用導致更壞的情況。使用批標準化以后可以使神經網絡中每一層的輸入都大致在該層的激活函數敏感范圍內,從而減少收斂時間,提高訓練效率,而且防止梯度消失的發生。正因如此,Debseg-Net網絡層與層之間廣泛使用批標準化操作。
語義分割需要實現對5種不同巖屑及背景的語義分割,輸出是對應不同巖屑及背景的6個值的圖像,所以是一個像素級的六分類問題,于是最后一層采用Softmax函數進行激活,采用多分類問題中效果最好的交叉熵作為損失函數,以完成網絡參數的優化,交叉熵計算如式(8)所示。

(8)

Debseg-Net是一種采用監督學習的語義分割網絡,訓練模型需要大量像素級標記數據。這些數據大都采用人工描邊標出巖屑部分來實現,不同的巖屑需要標記為不同的顏色,而且人工標記的數據集存在著很大誤差,達不到像素級分類的要求。如數據集Ⅰ,是使用Labelme數據集標記插件進行標記,在對邊緣進行描點時無法保證落點正好位于巖屑與背景的交界處,使得將不少像素標注為了錯誤的類別。
所用巖屑圖像為精選巖屑的近景拍攝圖像,背景單一,與前景巖屑形成較為明顯的對比。FCN-8s、U-Net、VGG-Unet、Debseg-Net在數據集Ⅰ上的訓練結果都擁有如下特點:①不同巖屑間分類準確率欠佳;②前景背景區分明顯、準確率高。于是利用語義分割網絡對巖屑圖像進行前景背景的分割,分割完成后,程序會按照路徑不同以區分類別并進行上色,實現類別的區分。以此可得到精分割數據集Ⅱ。
此方法省去了耗時耗力的人工描點方法。原始方法標記一張圖像耗時在6 min左右;采用自標記方法,只需要將不同類別的巖屑圖像事先區分好存儲在不同文件夾,利用語義分割網絡按讀取圖像的文件夾的不同給前景附上不同的值,標記640張圖像僅需20 s,效率提高10 000多倍,而且標記精度也得到極大提升,如圖6所示。傳統標記在邊緣部分原圖與標記圖有縫隙,而本文標記方法卻能幾乎重合,而且能將周圍的碎屑部分也進行標記。

圖6 兩種標記方法效果對比
訓練在Kaggle進行,GPU顯存為16 GB,RAM為13 GB;以Python 3.7.10作為編程語言,以Tensorflow作為學習框架,Tensorflow版本為2.6.0。
由于數據集Ⅱ的標記更為精準可信,所以實驗以數據集Ⅱ作為數據集,數據集Ⅱ包含1 280張長寬在500~1 200像素的圖像,分為640張5類巖屑圖像以及對應的640張5類巖屑精分割圖像。在進行訓練之前,進行數據增強、像素值歸一化、圖像尺寸統一的操作,數據增強包括圖像的隨機裁剪、翻轉、亮度與對比度變化等,像素值歸一化到(0, 1),尺寸統一為256×256。采用分批次訓練方法,批次大小為16,所有訓練圖像在模型中完成一次計算即為一次迭代(epoch)。在體現所有網絡的最佳性能前提下設計消融實驗,即保持所有網絡迭代次數、所用優化器、損失函數一致,分別為80次迭代、Adam優化器、交叉熵損失函數。初始學習率選擇各網絡的最優值,FCN-8s、U-Net、VGG-Unet、Debseg-Net分別為0.000 05、0.000 01、0.000 01和0.000 03。
采用像素準確率(pixel accuracy,PA)、類別平均像素準確率(mean pixel accuracy,MPA)、平均交并比(mean intersection over union,MIoU)作為評價指標。
PA為預測類別正確的像素數量與總像素的比例,如式(9)所示。

(9)
式(9)中:c為類別總數減1,其中0表示背景;pij為本屬i類卻預測為j類的像素點總數,具體的,pii為真正例(true postives, TP),pij為假正例(false positives, FP),pji為假反例(false negatives, FN),pjj為真反例(true negatives, TN)。
MPA為每個類別被正確分類像素數的比例平均值,由類別像素準確率(class pixel accuracy,CPA)除以類別數得到,如式(10)所示。

(10)
MIoU表示模型對每一類預測的結果和真實值的交集與并集的比值求和取平均的結果,計算方式如式(11)所示。MIoU在語義分割任務中常被作為標準度量來使用,能體現模型在全局的表現。
(11)
4種網絡的訓練過程如圖7和圖8所示,分別表示4種網絡在80次迭代中的損失值變化情況和準確率變化情況。

圖7 4種網絡訓練損失值變化圖

圖8 4種網絡訓練準確率變化圖
模型訓練結束后使用模型對測試集進行預測,得到(128, 256, 256)類型的預測數據,對原始標簽進行unbatch操作得到同類型數據,將兩批數據進行一維化操作可得到兩個包含8 388 608像素點信息的數組,由這兩個數組繪制混淆矩陣,代入式(9)~式(11),得出各網絡的PA、MPA、MIoU評價指標,如表1所示。

表1 4種網絡性能比較
同樣使用訓練后的模型對測試集進行預測,將得到的數據分為128個(256, 256)類型的數據,即128張256×256大小的圖像,如圖9所示,由于預測圖中不同的值代表不同的類別,即可用熱力圖的形式將其繪制出來,與原圖、標簽圖進行比較,預測圖中共有5種不同的顏色代表5種不同的巖性。

圖9 不同網絡分割效果
由于準確率與參數量的大小有關,故設計實驗探究網絡層數、網絡總參數以及準確率的關系。語義分割網絡具有不同層組成的模塊堆疊的特點,于是考慮增加、減少重復的網絡模塊,在相同數據集上進行訓練得到4種網絡的層數、參數量及其準確率表,由準確率除以參數量,可得到各網絡單個參數對于準確率的貢獻值,如表2所示。

表2 參數量與準確率關系
以參數量為橫坐標,準確率為縱坐標繪制散點圖如圖10所示,其中網絡名后的1、2、3表示網絡參數由小到大,且散點越大、越靠右表示網絡參數量越多,散點越靠上表示網絡準確率越高,則越靠近左上角的網絡性能越好。

圖10 參數量與準確率關系
由圖7和圖8可知,4種網絡最終都能比較好地收斂,且收斂于模型的預測準確率,該結果同式(9)得到的結果一致,4種網絡都有不同程度的震蕩,這與數據集的大小有關,可通過更大批量的圖像來解決??芍?種網絡中Debseg-Net的損失值在最低處收斂,準確率在最高處收斂,且較為穩定,可見該網絡在巖屑數據集上的性能最好。
由表1可知,在PA度量方式中Debseg-Net相比于FCN-8s、U-Net、VGG-Unet分別提高0.070 4、0.039 1、0.047 4;在MPA上,較FCN-8s、U-Net、VGG-Unet分別提高0.057 6、0.040 0、0.038 4;在MIoU上,較FCN-8s、U-Net、VGG-Unet分別提高0.040 9、0.025 9、0.041 8。
由圖9可知,4種網絡在對巖屑圖像前景和背景的分割上都有很好的性能,但FCN-8s、U-Net、VGG-Unet在對不同類別巖屑的區分上出現了問題,將一種巖屑或該巖屑的部分預測為其他巖屑的情況較為普遍,在圖中表現為顏色與標簽圖不符、存在異色斑點。而Debseg-Net預測圖與標簽圖對比十分接近,可見不管是前景背景的區分還是不同巖屑間的分割都表現得更為優異。
由表2可知,隨著參數量的增大,網絡的分割準確率會得到提升,但是單位參數的貢獻值反而會下降,可見參數不能無限制地增多,否則不但不會提高網絡的性能,還會增加網絡訓練的負擔,有時還會出現過擬合的現象,如U-Net與VGG-Unet,隨著層數從52增加到64和從53增加到64,參數量有很大程度的增加,但準確率并沒有得到增長,反而有下降的趨勢。由單位貢獻值來看,參數量少的網絡單個參數的貢獻值更高,但是準確率很差,不同網絡準確率存在一個飽和值,參數量增多使得準確率達到該值以后,再增加參數量準確率也不會明顯上升。因此合適的網絡層數十分必要,才能保證準確率的同時爭取效率最大化。
由圖10可知,Debseg-Net 2、Debseg-Net 1、VGG-Unet 1、U-Net 1的參數量最少,Debseg-Net 2和Debseg-Net 3的準確率最高,綜合來看Debseg-Net 2表現最好,效率最高。
提出的針對巖屑圖像的語義分割模型Debseg-Net,在擁有較少參數量的同時,保證了分割的準確性。經多輪實驗,在與傳統分割網絡對比中表現了其在巖屑圖像上的高準確率與平均交并比,具有良好的巖屑分割效果與泛化能力,并實驗探究了不同網絡參數量與性能的關系,有助于后期網絡的優化和剪枝,在實現數字化巖屑錄井進程中具有較大意義。同時,利用此網絡可對巖屑圖像進行標記,省去了人工標記的煩瑣,大大提高了巖屑錄井工作的效率。在后續的研究中將針對網絡對于混雜巖屑的識別性能以及模型的輕量化做進一步研究,在保證分割精度的基礎上進一步提高其效率和不同巖屑的普適性。