李天平 李功權
關鍵詞:鑄體薄片;遷移學習;孔隙;語義分割
鑄體薄片中孔隙分析是分析儲層孔隙結構的重要方法,薄片中孔隙分割是進行孔隙分析的關鍵一步。傳統(tǒng)做法是利用目測法、計數(shù)法和圖像處理算法對孔隙進行分割。但是目測法和計數(shù)法不僅要求研究人員具有專業(yè)的地質(zhì)知識而且效率低下分割結果受主觀因素影響。
傳統(tǒng)的圖像處理技術中用于孔隙分割的方法有閾值法、邊緣檢測法、區(qū)域生長算法、分裂合并法和聚類分割法[1]。但這些傳統(tǒng)方法只依賴顏色特征且需要大量的人工交互,無法實現(xiàn)自動化分割孔隙。
人工神經(jīng)網(wǎng)絡的快速發(fā)展,為解決鑄體薄片孔隙分割問題提供了新方法。蔡宇恒等人基于Unet模型完成孔隙分割任務,但不足在于模型單一數(shù)據(jù)量少[2]。
鑄體薄片圖像孔隙結構形態(tài)各異,空間分布復雜,如何獲取更高級的孔隙抽象特征;受采樣的影響,鑄體薄片圖像數(shù)量并不多,如何提高模型精度;如何縮短深度學習模型的訓練周期。針對以上問題,本研究對比主要的語義分割模型用于鑄體薄片圖像孔隙分割的效果,采取遷移學習方法減少訓練所需的鑄體薄片數(shù)據(jù)量,并采取召回率、準確率、精確度和F1值對各個模型進行評價,以優(yōu)選鑄體薄片孔隙分割模型。
1 深度學習圖像分割原理對比
1.1 經(jīng)典語義分割模型分析
在語義分割領域內(nèi)常用的卷積網(wǎng)絡模型是全卷積神經(jīng)網(wǎng)絡(FCN)、Unet模型、特征金字塔模型(FPN)和SegNet模型。因此本文選擇這四種經(jīng)典的語義分割模型作為孔隙分割模型的基本網(wǎng)絡結構。
1.1.1 全卷積神經(jīng)網(wǎng)絡模型
全卷積神經(jīng)網(wǎng)絡是卷積神經(jīng)網(wǎng)絡的一種擴展,是首個用于語義分割任務中的模型,廣泛用于語義分割,特別是用于醫(yī)學圖像分割[3],該網(wǎng)絡分為編碼器和解碼器兩部分。編碼器主要用于特征提取,編碼器后擴展了一個解碼器部分,該解碼器采用上采樣層恢復圖像尺寸得到最后的分割圖。關于全卷積神經(jīng)網(wǎng)絡的編碼層和解碼層的示意圖如圖1所示。全卷積網(wǎng)絡的編碼層用于收集圖像中的各種特征,而解碼層實現(xiàn)精確定位。為了避免空間信息的丟失,使用跳躍連接保證解碼層可以從編碼層獲得這些空間信息。
1.1.2 Unet 網(wǎng)絡模型
Unet作為全卷積網(wǎng)絡的一種重要擴展結構如圖2所示,在全卷積層的基礎上增加了上采用層和跳躍連接的數(shù)量,保證模型將特征信息整合到具有更高分辨率的網(wǎng)絡層[4]。模型的解碼器部分與編碼器部分形成對稱結構,產(chǎn)生了一個U型結構。Unet的編碼器是多個卷積塊組成,每個卷積塊由兩個3×3卷積層接著進行RuLU進行非線性化,最后一個2×2的最大池化層。Unet的解碼器部分,每個卷積塊后面跟著一個反卷積層。這個反卷積層對圖像進行上采樣,這意味著圖像的大小加倍,特征通道的數(shù)量減半。最后一個反卷積層可以將圖像恢復到原始圖像的大小。最后,一個1×1的卷積層并使用sigmoid激活函數(shù)產(chǎn)生圖像每個像素的最終預測。Unet網(wǎng)絡一共有23個卷積層,編碼器和解碼器之間的同等級卷積塊通過跳躍連接合并。
1.1.3 FPN 網(wǎng)絡模型
另一類重要分割模型特征金字塔網(wǎng)絡模型(FPN) 是2017年提出來的一種網(wǎng)絡如圖3所示,F(xiàn)PN主要是用來解決物體分割多尺度問題[5]。其主要特征是既不增加模型計算量又提高小物體分割正確率。FPN構建了一個從下到上模塊、從上到下模塊和橫向連接模塊的特征金字塔。從下到上模塊主要作用是產(chǎn)生一個由幾個不同尺度特征圖組成的特征層次結構。從上到下模塊對特征金字塔更高層的特征圖進行反卷積得到分辨率特征圖,特征金字塔越高層的特征圖分辨率越低,語義特征強。這些特征圖與從下到上模塊的特征圖進行融合,來自從下到上的特征圖都經(jīng)過1×1的卷積操作以減少特征通道。最后,在橫向連接路徑上對每個特征圖進行3×3的卷積操作,最后這些特征圖都將進行融合產(chǎn)生最后的預測圖,F(xiàn)PN的結構圖如圖3所示。但是FPN在解碼器中每一階段都會獨立產(chǎn)生預測并且在最后合并這些預測,Unet只在最后階段產(chǎn)生預測。
1.1.4 SegNet 網(wǎng)絡模型
SegNet另一類非常重要的語義分割模型,在模型結構上與Unet非常相似,只是在解碼器部分中的上采樣不同[6]。SegNet的特點是對解碼器部分的低分辨率特征圖上采樣方式做了改進。具體做法是編碼器中每一個最大池化過程中保存其池化索引即最大值的索引,在解碼器部分利用這些索引做非線性上采樣。這些經(jīng)過上采樣的特征圖是稀疏的,再對其做可訓練的卷積操作產(chǎn)生密集的特征圖。采用這種方法的上采樣可以避免FCN中學習上采樣帶來的消耗,再使用卷積操作特征圖,避免保存特征圖產(chǎn)生的額外空間消耗。
1.2 模型融合
為提高孔隙分割效果,要求孔隙分割模型能提取到更抽象的特征用于孔隙分割。為提高孔隙分割模型的特征提取能力,將經(jīng)典的分類模型與語義分割模型進行融合。本文選取經(jīng)典的分類模型有Vgg、Mo?bilenet 和ResNet50,這些模型在圖像分類上表現(xiàn)優(yōu)秀,證明了這些模型的特征提取能力很強。各種主流語義分割網(wǎng)絡模型中的編碼器與分類模型類似,只需將分類模型中的全連接層替換成卷積層就可以作為編碼器使用。這些優(yōu)秀分類模型與經(jīng)典的語義分割模型相結合,孔隙分割模型的編碼器更容易抽取特征。結合后的語義分割模型命名就使用下連接線將兩部分模型名稱連接起來,比如VGG_FCN表示FCN 的編碼器部分采用VGG模型。通過分類模型與語義分割模型結合,得到孔隙分割模型,分別是Vgg_FCN_8、Vgg_FCN_32、Mobilenet_FCN_8、Mobilenet_FCN_32、Vgg_Unet、Resnet50_Unet、Mobilenet_Unet、Vgg_SegNet 和Resnet50_SegNet。
1.3 模型初始化
從零開始訓練一個語義分割模型,需要大量的圖像數(shù)據(jù)和對應的標簽數(shù)據(jù)。鑄體薄片中孔隙遍布全圖而且形狀不規(guī)則,在這種情況下進行孔隙標注效率低下,很難完成大規(guī)模數(shù)據(jù)標記工作。遷移學習為解決孔隙標注提供了一種有效的方法。
遷移學習是將已訓練的模型運用到相關聯(lián)問題的一種新的機器學習方法,目的是遷移已訓練模型來解決目標領域中僅有少量甚至沒有標簽樣本數(shù)據(jù)的學習問題[7]。相對于隨機賦值權重訓練模型,利用遷移學習微調(diào)模型效率更快。張軍軍等人利用遷移學習完成道路提取模型的訓練,先在開源大型數(shù)據(jù)庫ImageNet上預訓練模型并保存最優(yōu)模型,再遷移預訓練保存的模型利用道路數(shù)據(jù)集對模型,進行微調(diào)加速模型訓練[8]。祝一諾等人利用遷移學習方法訓練了Inception-V3 模型,用來識別遙感圖像中的建筑垃圾[9]。上述研究說明,遷移學習的可行性和高效性。
使用遷移學習的方法將已經(jīng)在ImageNet上完成圖像分類的VGG16、Resnet50和Mobilenet的權重,作為本文中語義分割模型編碼器參數(shù)的初始化,然后在訓練中微調(diào)模型參數(shù)[10]。
2 實驗過程及結果
2.1 實驗前的準備工作
2.1.1 模型參數(shù)及孔隙標注
模型損失函數(shù)采用分類交叉熵函數(shù)(categori?cal_crossentropy loss) 。模型優(yōu)化函數(shù)采用Adam,經(jīng)過大量的實踐證明,Adam的工作表現(xiàn)良好,并優(yōu)于其他隨機優(yōu)化算法[11]。表1是其參數(shù)設置,模型訓練過程中利用tensorflow提供的數(shù)據(jù)增強方法增加數(shù)據(jù)量。
孔隙標注采取半人工手段對鑄體薄片中孔隙進行分割。標簽數(shù)據(jù)的制作借助ImageJ完成,ImageJ是一款專業(yè)的、開源的圖像處理軟件。利用ImageJ提供的閾值法完成對大部分孔隙的分割,再利用ImageJ提供的Paintbrush Tool 手動選擇閾值法無法識別的孔隙。將所有的標簽數(shù)據(jù)分割成224×224×3作為模型輸入數(shù)據(jù),分割后一共得到圖像1403張。
2.1.2 模型評價指標
利用準確率(Accuracy)、精確度(Precision)、召回率(Recall)和F1 分數(shù)(F1-score)評價分割網(wǎng)絡模型的優(yōu)劣。有部分鑄體薄片中巖石占了絕大部分,在這種情況下,即使把圖中所有孔隙全部分類為巖石顆粒,此時的模型準確率依然會很高。因此只用準確率無法客觀評價模型的優(yōu)劣,又引入精確度、召回率和F1分數(shù)。精確度和召回率是一對矛盾的性能度量指標,精確度越高時召回率往往會很低。F1-score綜合了Re?call和Precision,對模型優(yōu)劣進行更客觀的評價。
2.2 孔隙分割結果
表2將展示在測試集上表現(xiàn)最優(yōu)的各類模型。在表2 中,F(xiàn)1 分數(shù)最高的是由Mobilenet_unet 所獲96.2%,緊隨其后的是Resnet50_unet獲得的96.19%,兩種模型的性能幾乎一樣。在召回率上的表現(xiàn),Mo?bilenet_uent 達到了96.87%,認為該模型正確預測了96.87% 的孔隙。在精確度上的表現(xiàn),Resnet50_unet 達到了96.02%,認為所有被模型預測為孔隙的像素中有96.02% 的像素是孔隙。在準確率上的表現(xiàn),Mo?bilenet_unet 達到了97.95%,認為模型的預測中有97.95%的像素被正確分類。Mobilenet_Segnet的模型文件是所有模型中最小的,只有63.3M,模型文件小,意味對計算機存儲要求低,模型的加載速度快。模型訓練時間最短的模型是Mobilenet_unet,模型訓練時間越短,對計算機的計算壓力就越小。
3 討論
由表2可知,Mobilenet_unet 的F1分數(shù)最高達到了96.20%,緊隨其后的便是Resnet50_unet的96.19%。在本部分需要討論Resnet50_unet和Mobilenet_unet這兩種模型哪個更適合用于對鑄體薄片孔隙進行語義分割。圖4 和圖5 分別展示了Mobilenet_unet 和Resnet50_unet 在驗證集上的F1分數(shù)、召回率、精確度和準確率。兩種模型在測試集中各張圖片的分割效果相差不大,Mobilenet_unet在驗證集中有14張圖片的F1分數(shù)達到了0.95以上,而Resnet50_unet有15張圖片的F1分數(shù)達到了0.95以上。圖6展示了驗證集中幾張圖片、真實分割圖片以及Mobilenet_unetResnet50_unet兩種模型的預測圖。圖6可以說明這兩種模型對鑄體薄片中的大部分孔隙實現(xiàn)了有效的分割,但是對于圖6的圖d中粒間孔隙的分割效果不好。從圖6 可以得出一個結論:Mobilenet_unet 和Resnet50_unet兩種模型對粒間孔隙以及溶蝕孔隙分割效果不好,其他類型的孔隙都可以進行有效分割。通過對以上幾種模型預測結果的分析,認為Mo?bilenet_unet和Resnet50_unet兩種模型對鑄體薄片孔隙分割的效果幾乎一樣,沒有發(fā)現(xiàn)明顯的差距。但是在模型大小方面,Mobilenet_unet的一個模型參數(shù)文件才72.1MB,Resnet50_unet 的一個模型參數(shù)文件已經(jīng)達到了187MB。在模型參數(shù)文件大小方面,Mo?bilenet_unet相對Resnet50_unet具有很大的優(yōu)勢。模型越小,在訓練過程中對計算機的GPU要求就越低,模型較小不會占用過多的內(nèi)存資源。一般認為,在模型的分割性能差不多的情況下,模型越小越好。Mo?bilenet_unet不僅在模型文件大小方面具有優(yōu)勢,而且在模型訓練時間方面,也比Resnet50_unet更短,Mo?bilenet_unet和Resnet50_unet的模型訓練時間分別是1.6h和6.32h。不管是從模型預測性能、模型參數(shù)文件大小還是模型訓練時間,Mobilenet_unet是最適合進行鑄體薄片孔隙分割的模型。從圖4 觀察,Mo?bilenet_unet對測試集圖片進行預測,大部分預測圖的F1值達到0.95以上,與表1中模型在驗證集中平均F1 為0.9620非常接近,證明Mobilenet_unet泛化能力強。
4 結論
為了實現(xiàn)鑄體薄片圖像孔隙自動分割的目標,本文對比了經(jīng)典語義分割模型,利用遷移學習解決鑄體薄片數(shù)據(jù)量少,而影響孔隙分割準確率的問題。實驗結果表明,Mobilenet_unet和Resnet50_unet兩種模型在準確率、召回率、精確率和F1分數(shù)表現(xiàn)上非常接近,因此認為兩個模型在孔隙分割效果幾乎一樣。但是Mo?bilenet_unet在訓練時間和模型大小上占據(jù)優(yōu)勢,所以Mobilenet_unet更適合用于鑄體薄片孔隙分割。