萬 川 ,王正勇 ,何海波 ,滕奇志 ,何小海
(1.四川大學(xué) 電子信息學(xué)院,四川 成都 610065;2.成都西圖科技有限公司,四川 成都 610065)
巖屑是在鉆井過程中產(chǎn)生的巖石碎塊,其種類繁多,按照巖屑的組成成分可以將巖石大致分成沉積巖、變質(zhì)巖和巖漿巖。巖屑是巖屑錄井的直觀材料,其中巖屑顆粒識(shí)別工作是巖屑錄井的主要工作。對巖石巖性的識(shí)別工作可以反映出地段地質(zhì)的地層特性,從而能幫助勘探工作者分析地層的具體特性。巖性準(zhǔn)確識(shí)別是地質(zhì)人員研究地層特征和地質(zhì)建模的基礎(chǔ)。
目前國內(nèi)對巖屑顆粒的識(shí)別鑒定傳統(tǒng)的做法是采用人工標(biāo)記的方式對巖屑顆粒進(jìn)行采集分析。這需要專業(yè)人員來識(shí)別,并且工作量巨大。人工方式的標(biāo)記對巖屑提取的信息與分析的結(jié)論存在誤差,對地質(zhì)專家分析地質(zhì)存在較大影響。絕大多數(shù)在巖屑錄井上采用數(shù)字圖像識(shí)別和機(jī)器學(xué)習(xí)等技術(shù)手段, 運(yùn)用數(shù)字圖像處理技術(shù)分析巖屑顆粒圖像,從而得到巖屑的紋理、顏色、空洞等特征,來用作區(qū)分巖屑顆粒巖性的識(shí)別分類。雖然利用數(shù)字圖像處理等方法解決了傳統(tǒng)特定方法中[1-2]人為標(biāo)記巖性的問題,但是由于仍需要在分類時(shí)人為設(shè)置相應(yīng)的特征,在某些程度上限制了識(shí)別的準(zhǔn)確度。隨著深度神經(jīng)網(wǎng)絡(luò)廣泛被應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域,且不同的實(shí)驗(yàn)場景推出了不同深度神經(jīng)網(wǎng)絡(luò)模型[3-5],通過將較低的分辨率圖片的特征映射到像素級(jí)尺度對圖片中的每個(gè)像素進(jìn)行識(shí)別,從而大幅度提升了圖像識(shí)別的水平。但深度神經(jīng)網(wǎng)絡(luò)模型復(fù)雜度提升,增加了巖屑識(shí)別所耗費(fèi)時(shí)長,對于巖屑顆粒的識(shí)別準(zhǔn)確率有很大的提升空間。
為了提高巖屑顆粒識(shí)別算法準(zhǔn)確率和識(shí)別效率,本文提出了一種基于改進(jìn)P-Unet 巖屑顆粒識(shí)別模型,在文獻(xiàn)[6]基礎(chǔ)上做出了如下改進(jìn):
(1)在不改動(dòng) Unet 模型對稱結(jié)構(gòu)的情況下,將金字塔池化模塊[7]融合到Unet 中,從而得到了本文模型 P-Unet 網(wǎng)絡(luò)結(jié)構(gòu)。
(2)運(yùn)用了多分類焦點(diǎn)損失函數(shù)[8]代替?zhèn)鹘y(tǒng)的交叉熵?fù)p失函數(shù)。
(3)將深度殘差網(wǎng)絡(luò)ResNet[9]的升級(jí)版ResNeXt[10]的網(wǎng)絡(luò)結(jié)構(gòu)用于P-Unet 下采樣的結(jié)構(gòu)。
(4)用深度可分離卷積[11-12]代替?zhèn)鹘y(tǒng)卷積。
傳統(tǒng)的 Unet 模型呈 U 形,具體結(jié)構(gòu)如圖 1 所示,圖中每一層數(shù)字表示卷積核個(gè)數(shù),結(jié)構(gòu)前半部分是下采樣,經(jīng)過不同的卷積層卷積,提取圖像深層次的特征。結(jié)構(gòu)后半部分是上采樣,實(shí)現(xiàn)方式利用反卷積的方式實(shí)現(xiàn),輸出指定類別數(shù)量的特征圖。有學(xué)者也稱這樣的結(jié)構(gòu)為編碼器-解碼器結(jié)構(gòu)。
傳統(tǒng)Unet 網(wǎng)絡(luò)在上采樣時(shí)會(huì)直接拼接上一層的特征和對應(yīng)下采樣得到的特征信息,結(jié)果容易出現(xiàn)特征丟失等問題。為了有效解決上述問題,本文提出了改進(jìn)的P-Unet 網(wǎng)絡(luò)。本文模型采用了 Unet網(wǎng)絡(luò)模型編碼和解碼過程,同時(shí)在上采樣時(shí)將對應(yīng)的下采樣得到的特征經(jīng)過金字塔池化模塊之后和上一層特征拼接,拼接完之后再進(jìn)行上采樣。本文還用金字塔池化模塊替換了最后一層下采樣與上采樣的過程。將金字塔池化模塊運(yùn)用在特征拼接過程和最后一層的上下采樣過程,能充分利用上下層卷積層所提取的特征信息。同時(shí)運(yùn)用了殘差網(wǎng)絡(luò)ResNeXt101 代替?zhèn)鹘y(tǒng)殘差網(wǎng)絡(luò)ResNet,并且將P-Unet網(wǎng)絡(luò)中的傳統(tǒng)卷積方式替換為深度可分離卷積,以及采用焦點(diǎn)損失函數(shù)代替?zhèn)鹘y(tǒng)的損失函數(shù),具體P-Unet 結(jié)構(gòu)如圖 2 所示。
圖1 Unet 網(wǎng)絡(luò)結(jié)構(gòu)
圖2 P-Unet 網(wǎng)絡(luò)結(jié)構(gòu)
傳統(tǒng)方式一般通過加深或者加寬網(wǎng)絡(luò)提高網(wǎng)絡(luò)準(zhǔn)確率,但同時(shí)伴隨著網(wǎng)絡(luò)參數(shù)和網(wǎng)絡(luò)計(jì)算時(shí)間的增加。本文P-Unet 網(wǎng)絡(luò)采用了升級(jí)版的殘差網(wǎng)絡(luò) ResNeXt,此結(jié)構(gòu)利用了 Inception[11]的多支路的思想,保持了ResNet 可移植性的優(yōu)點(diǎn),在改變模型復(fù)雜度的情況下增加一定的準(zhǔn)確率。相比較ResNet 結(jié)構(gòu),ResNeXt 可以在不增加網(wǎng)絡(luò)參數(shù)復(fù)雜度的情況下,同時(shí)減少了超參數(shù)的數(shù)量。ResNeXt 除采用了VGG 網(wǎng)絡(luò)堆疊的思想,同時(shí)還引用了Inception 中多支路的思想。圖3(a)顯示了ResNet 結(jié)構(gòu)中的基本塊結(jié)構(gòu),圖 3(b)顯示 ResNeXt 結(jié)構(gòu)中對應(yīng) ResNet 結(jié)構(gòu)的基本塊結(jié)構(gòu),圖3 長方形中的第一個(gè)數(shù)字表示參加卷積操作的輸入通道數(shù),長方形中的第二個(gè)表達(dá)式中相同的數(shù)字表示卷積操作卷積核的大小,第三個(gè)數(shù)字表示卷積的通道數(shù)。ResNeXt 結(jié)構(gòu)引入了一個(gè)名叫基數(shù)(cardinality)的超參數(shù),指的是獨(dú)立路徑的數(shù)量,通過這個(gè)參數(shù)可以調(diào)整模型的容量。在圖 3(b)中基數(shù)為32,通過擴(kuò)大基數(shù)值,網(wǎng)絡(luò)模型的準(zhǔn)確率能得到一定的提升。
圖3 ResNet 基本塊結(jié)構(gòu)和 ResNeXt 基本塊結(jié)構(gòu)
本文改進(jìn) P-Unet 網(wǎng)絡(luò)融合了 ResNeXt101 網(wǎng)絡(luò),具體網(wǎng)絡(luò)結(jié)構(gòu)如表 1 所示(表中 C 表示的是基數(shù))。與ResNet 相比較,在相同參數(shù)個(gè)數(shù)條件下,一個(gè)101 層 ResNeXt 網(wǎng)絡(luò)和 200 層 ResNet 網(wǎng)絡(luò)準(zhǔn)確度差不多,但前者計(jì)算量只有后者的一半。ResNeXt 網(wǎng)絡(luò)采用的是Inception 網(wǎng)絡(luò)結(jié)構(gòu)的思想,但殘差網(wǎng)絡(luò)全新的架構(gòu)相比Inception 網(wǎng)絡(luò)更加能適應(yīng)新的數(shù)據(jù)。
表1 ResNeXt101 結(jié)構(gòu)與 ResNet101 的結(jié)構(gòu)對比
金字塔池化模塊最初應(yīng)用于 PSPnet 網(wǎng)絡(luò)[7],用于聚合不同區(qū)域的上下文特征信息,從而提高獲取全局特征的能力。金字塔池化模塊結(jié)構(gòu)如圖4 所示,模塊中融合了4 種不同金字塔尺度的特征,Level1顯示了最粗略的全局池化后產(chǎn)生的層級(jí),該層是單個(gè)特征輸出。Level2、Level3 和 Level4 是不同尺度池化后的特征,能獲取不同的全局范圍的特征。為了獲取全局特征的權(quán)重,假如金字塔總共有n 個(gè)不同的級(jí)別,則在池化之后產(chǎn)生的每一個(gè)級(jí)別分別進(jìn)行卷積將每個(gè)級(jí)別的通道數(shù)變?yōu)樵瓉淼?/n。金字塔池化模塊每個(gè)級(jí)別的池化核大小可人為設(shè)定,池化核大小不同對應(yīng)不同的級(jí)別,池化核大小與輸入的尺寸有關(guān)。
圖4 金字塔池化模塊結(jié)構(gòu)
本文P-Unet 網(wǎng)絡(luò)模型融合金字塔池化模塊結(jié)構(gòu)對于像素級(jí)上的識(shí)別能充分獲取上下文不同區(qū)域場景下的特征,對巖屑顆粒識(shí)別的準(zhǔn)確率有一定的提升。
焦點(diǎn)損失函數(shù)(Focal Loss)是在交叉熵?fù)p失函數(shù)[12]基礎(chǔ)上進(jìn)行改進(jìn)得到的損失函數(shù),焦點(diǎn)損失函數(shù)表示為:
從式(1)可以看到焦點(diǎn)損失函數(shù)相比交叉熵?fù)p失函數(shù)引入了兩個(gè)超參數(shù) α 和 γ,α 是用來平衡樣本數(shù)量,即可以平衡正負(fù)樣本本身的比例不均衡的問題,γ 是用來調(diào)節(jié)簡單樣本和復(fù)雜樣本所占的權(quán)重,即調(diào)節(jié)簡單樣本權(quán)重降低的速率,當(dāng)γ 增加時(shí),調(diào)整因子的影響也在增加。當(dāng) γ=0 且 α=1 即為交叉熵?fù)p失函數(shù),對于交叉熵?fù)p失函數(shù),正樣本的輸出概率越高損失越小,負(fù)樣本輸出概率越小損失越小。本文巖屑顆粒識(shí)別是多分類問題,因此焦點(diǎn)損失函數(shù)中α 是一個(gè)數(shù)組,數(shù)組大小為巖屑顆粒類別個(gè)數(shù),分別代表著每一個(gè)類別對應(yīng)的權(quán)重。普通交叉損失函數(shù)在大量簡單樣本的迭代過程中存在著比較緩慢而且可能無法達(dá)到最優(yōu)的問題。焦點(diǎn)損失函數(shù)能有效地解決交叉損失函數(shù)所不能解決的樣本比例不平衡的問題以及上述問題。
文中采用殘差網(wǎng)絡(luò)雖然能提升巖屑識(shí)別的準(zhǔn)確率,但是隨著網(wǎng)絡(luò)特征提取能力的增強(qiáng),網(wǎng)絡(luò)復(fù)雜度也隨之增高,網(wǎng)絡(luò)參數(shù)也增加,使得預(yù)測和訓(xùn)練的時(shí)間增長。為了減少網(wǎng)絡(luò)參數(shù),本文用深度可分離卷積[13]代替常規(guī)的卷積方式極大減少網(wǎng)絡(luò)參數(shù)。
深度可分離卷積主要是將傳統(tǒng)的卷積分為倆部分,一部分是深度卷積,另一部分為卷積核大小1×1 的卷積,如圖 5 所示。
圖5 傳統(tǒng)卷積核、深度卷積核、點(diǎn)卷積核
圖5 中(a)、(b)、(c)表示分別為傳統(tǒng)的 卷積、深度卷積和 1×1 的卷積。傳統(tǒng)卷積對特征圖的所有通道同時(shí)卷積,無論多少個(gè)通道輸出一個(gè)數(shù)。深度可分離卷積將正常的卷積過程分為兩步:假設(shè)輸入有N 個(gè)通道,第一步是用 N 個(gè)卷積對 N 個(gè)通道分別做卷積,這樣可以得到 N 個(gè)數(shù);第二步是將第一步得到的特征圖通過 1×1×N 的卷積核進(jìn)行卷積。
假設(shè)輸入的特征圖的尺寸為 W×W×M,輸出特征圖的大小為 W×W×N,卷積核的大小為 H×H,則通過傳統(tǒng)卷積的性質(zhì)可知該計(jì)算量為:
深度可分離卷積的計(jì)算量為上述兩步的計(jì)算量之和,第一步深度卷積的計(jì)算量為:
第二步 1×1 卷積的計(jì)算量為:
根據(jù)上述的計(jì)算量得到深度可分離卷積和傳統(tǒng)卷積之比,如式(5)所示:
假設(shè)卷積核大小為C×C,可以得到傳統(tǒng)卷積的計(jì)算量大致是深度可分離卷積的C2倍。
根據(jù)以上性質(zhì)可知,用深度可分離卷積代替?zhèn)鹘y(tǒng)卷積可以大量減少網(wǎng)絡(luò)的參數(shù),同時(shí)減少預(yù)測時(shí)間。
本文的數(shù)據(jù)集來源于地質(zhì)錄井公司提供的巖屑樣本,先經(jīng)過篩選巖屑樣本得到6 類比較多的巖屑顆粒,再通過實(shí)驗(yàn)室采集軟件采集得所需樣本圖片。本文將采集得到的樣本進(jìn)行裁剪得到初步樣本。再將樣本經(jīng)過旋轉(zhuǎn)、鏡像、平移等數(shù)據(jù)增強(qiáng)操作的方式得到最終所需的數(shù)據(jù)集,總共得到570 張512×512 的巖屑顆粒的訓(xùn)練集樣本,以及通過隨機(jī)選取得到的 60 張 512×512 的巖屑顆粒的測試集樣本。巖屑樣本中總共分為7 類,將不同類別的巖屑用不同RGB 值標(biāo)記,其中本文將背景(背景指的是裝巖屑顆粒的盒子)也當(dāng)成 1 類,背景的 RGB 值設(shè)置為全 0。
本文的實(shí)驗(yàn)在Windows 7 64 位操作系統(tǒng)下進(jìn)行,實(shí)驗(yàn)使用的硬件資源為 Intel Core i5-7500 CPU。實(shí)驗(yàn)中使用的深度學(xué)習(xí)框架是以TensorFlow 作為其后端,Keras 作為其前端,同時(shí)利用 Python3.6 作為編程語言進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)中采用的是傳統(tǒng)收斂速度較快的 Adam 優(yōu)化器優(yōu)化損失,其中 epochs 為 100,batch_size 為1。
將自制的訓(xùn)練數(shù)據(jù)集輸入改進(jìn)的P-Unet 網(wǎng)絡(luò),用改進(jìn)的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,采用客觀評(píng)價(jià)指標(biāo)[14]對訓(xùn)練得到的結(jié)果與一些算法進(jìn)行了對比。傳統(tǒng)準(zhǔn)確率的公式如下:
式中:TP 表示預(yù)測圖和標(biāo)簽圖中像素值不為 0 的像素點(diǎn)的總數(shù)量;FP 表示預(yù)測圖中像素值不為0并且標(biāo)簽圖中像素值為0 的像素點(diǎn)的總數(shù)量;FN表示預(yù)測圖中像素值為0 并且標(biāo)簽圖中像素值不為 0 的像素點(diǎn)的總數(shù)量;TN 表示預(yù)測圖和標(biāo)簽圖中像素值為0 的像素點(diǎn)的總數(shù)量;可以看出FN、FP是預(yù)測錯(cuò)誤的像素,TP、TN 是預(yù)測正確的像素,本文準(zhǔn)確率公式簡化為:
式中:PN 表示預(yù)測值與標(biāo)簽值相同的像素;FN 表示預(yù)測值與標(biāo)簽值不同的像素。
從表2 看出:改進(jìn)P-Unet 網(wǎng)絡(luò)準(zhǔn)確率相比Linknet[15]網(wǎng)絡(luò)、傳統(tǒng)的 Unet 網(wǎng)絡(luò)分別上升了 2.31%、2.65%。同時(shí)對比了采用不同殘差網(wǎng)絡(luò)得到的準(zhǔn)確率,運(yùn)用了 ResNeXt101 的 Unet 網(wǎng)絡(luò)準(zhǔn)確率比運(yùn)用了ResNet101 的 Unet 網(wǎng)絡(luò)準(zhǔn)確率上升了 0.16%。改進(jìn)的模型可以更加準(zhǔn)確地預(yù)測出巖屑顆粒的種類。
表2 本文模型與其他模型性能對比
根據(jù)表 2 和表 3 可知使用傳統(tǒng)卷積的 P-Unet網(wǎng)絡(luò)準(zhǔn)確率高,但是模型的復(fù)雜度高。本文中使用深度可分離卷積替換傳統(tǒng)卷積之后,雖然準(zhǔn)確率下降了0.41%,但使用深度分離卷積的P-Unet 網(wǎng)絡(luò)訓(xùn)練參數(shù)大約是使用傳統(tǒng)卷積的P-Unet 網(wǎng)絡(luò)訓(xùn)練參數(shù)的1/3 倍,網(wǎng)絡(luò)的復(fù)雜度也相應(yīng)大大降低。
本文提出了一種改進(jìn)P-Unet 網(wǎng)絡(luò)模型的巖屑顆粒識(shí)別方法,利用傳統(tǒng)Unet 網(wǎng)絡(luò)的上采樣和下采用的技術(shù),融合了金字塔池化模塊,采用了焦點(diǎn)損失函數(shù)作為網(wǎng)絡(luò)的損失函數(shù),以及ResNeXt 殘差網(wǎng)絡(luò)結(jié)構(gòu)等一系列的技術(shù),本文改進(jìn)的模型在巖屑顆粒識(shí)別準(zhǔn)確性上得到進(jìn)一步的提升。實(shí)驗(yàn)結(jié)果表明,本文的方法有效改進(jìn)了巖屑顆粒識(shí)別的準(zhǔn)確率,在巖屑顆粒識(shí)別領(lǐng)域上有一定的參考價(jià)值。
表3 本文模型與其他模型的參數(shù)量