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