胡啟成 葉為民② 王 瓊 陳永貴
(①同濟大學巖土及地下工程教育部重點實驗室,上海 200092,中國)(②教育部城市環(huán)境與可持續(xù)發(fā)展聯(lián)合研究中心,上海 200092,中國)
2008年,Google推出了GFT(Google Flu Trends),利用Google搜索引擎,根據(jù)人們鍵入的搜索關鍵詞的頻數(shù)預測流感,經(jīng)與美國疾病控制和預防中心監(jiān)控報告相關書籍的多次比對,證實了預測結果與實測值之間存在很大的相關性(Laser et al.,2014)。這意味著,利用大量數(shù)據(jù)的相關性解決部分問題成為可能。與此同時,根據(jù)搜集到的用戶信息,大數(shù)據(jù)推薦系統(tǒng)可向用戶推送專屬、感興趣的片段信息(朱揚勇等, 2015),如購物軟件的商品推薦系統(tǒng),音樂軟件的歌曲推薦系統(tǒng),導航軟件的交通流量預測等等,大數(shù)據(jù)已經(jīng)滲透進人們生活的方方面面。
長期以來,地質(zhì)學科積累有大量的文本、圖像和序列數(shù)據(jù),借助大數(shù)據(jù)手段開展地質(zhì)數(shù)據(jù)在科研和商業(yè)上的應用研究,具有極其重要的理論與社會意義。2017年11月,“地質(zhì)云1.0”上線運行,實現(xiàn)了地質(zhì)調(diào)查數(shù)據(jù)共享; 2018年10月18日,“地質(zhì)云2.0”在2018中國國際礦產(chǎn)大會上正式上線,我國的地質(zhì)數(shù)據(jù)共享工作正在有序推進。
地質(zhì)大數(shù)據(jù)一般包括序列數(shù)據(jù)、文本數(shù)據(jù)及圖像數(shù)據(jù)。其開發(fā)利用過程一般包括數(shù)據(jù)采集、數(shù)據(jù)預處理、模型構建、模型訓練和結果評價等5個步驟。其中,模型構建是地質(zhì)大數(shù)據(jù)挖掘的關鍵。
地質(zhì)數(shù)據(jù)挖掘的發(fā)展主要取決于大數(shù)據(jù)挖掘技術的進步。初期主要依賴于傳統(tǒng)的機器學習、模式識別等方法,如Bhattacharya et al.(2006)利用決策樹、人工神經(jīng)網(wǎng)絡及支持向量機算法,將靜力觸探試驗測得的錐尖阻力和側壁摩阻力生成圖像,再利用CONCC算法進行分割,并針對分割塊進行土性分類。Marjanoviet al.(2011)通過GIS系統(tǒng)提供的關于滑坡的地理、地質(zhì)數(shù)據(jù),分別使用決策樹、logistic回歸模型和SVM模型進行滑坡穩(wěn)定性分析,并且通過對比展現(xiàn)出SVM模型的泛性。當深度學習展露出強大功能后,Patel et al.(2016)使用Probabilistic Neural Network對石灰石種類進行分類; 程國建等(2016)借助深度學習將多隱含層(Hidden Layer)與大量訓練數(shù)據(jù)聯(lián)系起來,構建“深網(wǎng)絡模型”實現(xiàn)自動學習并最終提升巖性分類的準確性。劉麗婷(2017)將深度信念網(wǎng)絡應用于巖石薄片的圖像處理中,借用光學顯微鏡進行圖像采集,經(jīng)無縫拼接出整張圖片的光學圖,并傳入深度信念網(wǎng)絡分類模型。張野等(2018)采用基于Inception-v3的深度卷積神經(jīng)網(wǎng)絡模型,建立了巖石圖像分類的深度學習的遷移模型,實現(xiàn)基于圖像特征的巖性分類。
實際上,開展基于地質(zhì)圖像大數(shù)據(jù)的巖性識別研究,對于遙感衛(wèi)星等巖石圖像及處于較危險地帶巖性圖像等的識別,減輕傳統(tǒng)人工識別工作強度,提升工作效率與識別準確率等均具有重要的學術與經(jīng)濟社會價值。
本文針對地質(zhì)大數(shù)據(jù)中的圖像數(shù)據(jù),基于深度學習,通過基于網(wǎng)絡搜索的數(shù)據(jù)采集、數(shù)據(jù)預處理、搭建網(wǎng)絡、訓練網(wǎng)絡以及評價與結果等步驟,開展圖像識別巖性研究。結果表明,圖像識別巖性的測試準確率可達90%。
圖像是人類世界中數(shù)量最大的數(shù)據(jù)類型之一,可以傳遞大量的直觀信息?;趫D像數(shù)據(jù)可以開展復雜的分析,如識別圖中物體、描述圖像,甚至對圖像進行聯(lián)想。隨著近幾年計算機視覺技術的發(fā)展,機器在處理諸如圖像識別(Image Recognition)、圖像描述(Image Caption)、圖像風格轉移(Style Transfer)等方面均取得了長足進步。
圖像識別:簡單來說,就是輸入圖像數(shù)據(jù),通過模型輸出圖像名稱。該模型可以是人的大腦,也可以是其他數(shù)學模型。實際上,日常地質(zhì)圖像處理工作中,存在諸多識別問題,如巖性識別、礦物識別、結構識別等等。需要指出的是,圖像識別不僅只局限于普通光學照片的識別,紅外、X光、高光譜等技術同樣可以用于地質(zhì)圖像識別。
圖像描述:即輸入圖像數(shù)據(jù),借助模型分析,機器輸出圖像信息對應的文字描述。例如,輸入某個地質(zhì)體的圖像,機器會對地質(zhì)體圖像進行分析,從而生成對該地質(zhì)體相關信息的文字描述。
圖像生成:即輸入圖像數(shù)據(jù)和圖像風格信息,借助模型分析輸出帶有目標風格的圖像。目前常用的生成模型為對抗模型(GAns)和變分自編碼器(VAes),兩者都擁有較強的圖像生成能力。在此基礎上,可通過文本數(shù)據(jù)的加入,構建需求描述和圖形設計數(shù)據(jù)集,從而通過網(wǎng)絡模型實現(xiàn)自動生成設計圖的功能。
開展基于圖像數(shù)據(jù)的巖性識別,就是要利用輸入的圖片數(shù)據(jù)來預測、判斷該圖片所示的巖性類別,實質(zhì)上是要尋找一個從高維圖片空間到低維圖片類別空間的映射。為此,本文開展了數(shù)據(jù)采集、數(shù)據(jù)預處理、網(wǎng)絡搭建、網(wǎng)絡訓練和結果評價研究,以實現(xiàn)基于圖像數(shù)據(jù)的巖性識別。本次訓練環(huán)境為Win10,CPU為i5-8100h,所用的圖形加速硬件為RTX2060。
數(shù)據(jù)采集是該類型任務中最重要的部分,數(shù)據(jù)的數(shù)量、質(zhì)量直接影響到基于圖像的巖性識別結果。原則上,采集的數(shù)據(jù)應該包含目標關鍵詞,圖像分辨率不宜過小,圖像非拼接,數(shù)據(jù)分布均勻和圖像內(nèi)只存在同一種類巖石等。
本次巖性圖像數(shù)據(jù)主要是借助百度、谷歌等搜索引擎從網(wǎng)絡采集,輸入巖石或礦物關鍵詞搜索圖片,再利用Python編寫爬蟲腳本解析網(wǎng)頁內(nèi)容,尋找圖片內(nèi)容的范式,以模擬人類完成下載。最終獲取了約1200張、共8個分類的圖片數(shù)據(jù)集。
網(wǎng)絡本身是一個超級大的數(shù)據(jù)庫,通過搜索引擎獲取的圖片同樣遵循大數(shù)據(jù)特性。但需要說明的是,在圖片的爬取過程中,由于價值密度的不斷降低,后半過程爬取的圖片常發(fā)生內(nèi)容與關鍵詞偏離,甚至可能出現(xiàn)廣告圖片及不完整圖片等問題。即圖像的質(zhì)量和數(shù)量呈反比關系,爬取的圖片越多,質(zhì)量越差(混入錯誤的圖片越多)。為此,本文最終爬取了約1200張圖片。
圖1 網(wǎng)絡爬取的圖像數(shù)據(jù)Fig.1 Images crawled from Web source
針對所采集的圖片數(shù)據(jù)存在重復、不完整及與關鍵詞無關等問題(圖2),需要進行必要的預處理。對于重復圖片(圖片編號不同,但內(nèi)容相同)只能人工刪除,或者不處理; 對于數(shù)據(jù)不完整圖片,可以編寫腳本檢查圖片完整性,對不完整圖像重新下載即可; 而對于圖片數(shù)據(jù)與關鍵詞不符(即出現(xiàn)不符合標簽的錯誤圖片數(shù)據(jù)),目前未找到較好的解決方法,也只能通過人工檢查后刪除??梢姡瑘D像數(shù)據(jù)的預處理目前大多通過人工審查來完成,若要使用機器進行預處理,就要先訓練機器,而訓練機器又需要圖片數(shù)據(jù)這就形成了悖論。
圖2 網(wǎng)絡采集的問題圖像數(shù)據(jù)Fig.2 Diagrams of problem data編號28和編號33為重復圖片; 編號42為無效信息; 編號40和編號41為錯誤圖像
同時,數(shù)據(jù)預處理的另一項任務是規(guī)范圖片的存儲地址、大小等屬性,從而構造數(shù)據(jù)集并提高數(shù)據(jù)集的質(zhì)量。
本次處理中首先規(guī)范圖片的存儲地址為:
——Dataset Folder
——Train Data
——Data
——Test Data
——Data
即一級目錄為Dataset Folder,二級目錄為Train Data和Test Data,三級目錄為Data的各個分類文件夾。其目的是為了使用Pytorch(Python中的深度學習框架)中的ImageFolder函數(shù),以構造訓練和測試數(shù)據(jù)集。訓練數(shù)據(jù)集是網(wǎng)絡訓練所依賴的數(shù)據(jù)集,即網(wǎng)絡會查看到圖片的正確分類,以修正自己的錯誤,使得下一次預測更準確; 而測試數(shù)據(jù)集不會獲得圖片的正確分類,它是對網(wǎng)絡性能的一次測試。為了使測試集充分反應模型的能力,極為重要的一點是,網(wǎng)絡不能查看到測試集的正確分類。
構造完畢后,使用transforms函數(shù)將圖像數(shù)據(jù)集大小重新調(diào)整為448×448(根據(jù)機器性能決定,一般為2的倍數(shù)),再將圖片數(shù)據(jù)轉化為tensor(張量)數(shù)據(jù),以方便讀取和訓練,并對張量數(shù)據(jù)進行歸一化處理,加快模型的收斂速度。對于訓練數(shù)據(jù)集,在轉化為張量數(shù)據(jù)之前,可以利用數(shù)據(jù)集增大(Dataset Aggregation)操作,如對圖像翻轉、隨機裁剪等等,增加訓練數(shù)據(jù)集的多樣性。
圖3是處理完成后, 36張訓練數(shù)據(jù)集的可視化效果。
圖3 可視化的訓練樣本Fig.3 Visualized training data
為使網(wǎng)絡模型擁有不錯的性能,同時又不消耗過多的訓練時間,選擇了預訓練的Resnet50模型進行遷移訓練。
Resnet模型是廣大神經(jīng)網(wǎng)絡模型家族中的一員,擁有神經(jīng)網(wǎng)絡模型的普遍特性,即模型是由模塊(Block)所堆疊組成的,每個模塊通常由不同功能的神經(jīng)層(Layer)所連接而成(圖4、圖5)。其中輸入層(Input Layer)負責數(shù)據(jù)的輸入,輸出層(Output Layer)負責數(shù)據(jù)的輸出,卷積層(Convolution Layer)負責數(shù)據(jù)的卷積運算以獲得圖像的特征信息,非線性層(Non-linearity Layer)負責對特征信息進行非線性擬合,池化層(Pooling Layer)負責對數(shù)據(jù)降維、壓縮參數(shù)數(shù)量等。
圖4 網(wǎng)絡訓練流程圖Fig.4 Flow path for network training
圖5 網(wǎng)絡模型示意圖Fig.5 General view of a network model
經(jīng)過上述一系列功能層的組合與堆疊,模型能夠學習圖像中物體的特征信息。特征信息獲取的多少與網(wǎng)絡模型的深度有關。以任意一張巖石圖像為例,圖6是輸入圖像經(jīng)不同模塊處理后的特征可視化圖,其中圖6a是輸入的原始圖片; 圖6b是經(jīng)第1個模塊(block)的處理結果。從藍到紅,提取特征的相關程度依次上升,每一張小圖表示該神經(jīng)層對圖像特征學習/提取的激活程度,可以看到淺層的神經(jīng)層更多地關注巖石物體自身的特征(特別是左側螢石的特征),同時對于背景圖像(右側光亮區(qū))也賦予了較多的關注; 圖6c是經(jīng)第3個模塊處理后的結果。到此深度時,機器所提取特征的激活程度變低,同時所提取的特征變得抽象(人類難以理解),多數(shù)情況下,特征呈離散的點狀分布,當然依然有特征與巖石和背景相關。利用這些在模型訓練過程中所學習到的特征,模型可以很好地對目標物體進行分類??傊摼W(wǎng)絡已經(jīng)被證明擁有良好的圖片分類能力(He et al., 2016)。
圖6 網(wǎng)絡模型學習/提取中的圖像特征結果Fig.6 Visualization of part of feature maps of network model a.輸入圖像; b.第1個模塊的可視化結果; c.第3個模塊的可視化結果
理論上借助該網(wǎng)絡模型,輸入巖性圖片,便可輸出預測的巖性名稱。但實際操作過程中,預測的巖性名稱難免與實際巖性名稱之間會存在一定的誤差。為此,本文選擇了損失函數(shù)(Cost Function)來衡量網(wǎng)絡預測值和實際值之間的誤差??紤]到圖片識別屬于分類問題,故這里選擇常用于分類問題的交叉信息熵(Cross Entropy Loss)作為衡量誤差的函數(shù)。
同時,為使網(wǎng)絡預測值最接近真實值,需要選用一個優(yōu)化器,以使衡量誤差的損失函數(shù)最小化。為此,本文選擇常用的隨機梯度下降法(Stochastic Gradient Descent)作為優(yōu)化器。
完成搭建的網(wǎng)絡需要進行必要的訓練,以保證模型的有效性。實際網(wǎng)絡訓練過程中,需要手動選擇兩個參數(shù),即訓練批次大小(Batch size)和學習率(lr, Learning rate)。前者主要受硬件設備制約,一般選取2的次方,如32、64等,這里選取了8,即一次同時訓練8張圖像。學習率對于最后的訓練結果影響較大,因而本文依次嘗試了10-2,10-3,10-4,10-5情況下的學習率,結果如圖7所示。圖7結果表明,當學習率為10-2時,訓練誤差下降太快, 20個輪次后,就已經(jīng)開始收斂,再進行訓練將會過擬合,從而導致模型的實際預測能力不足; 當學習率為10-5時,訓練誤差下降過慢(圖中紅色曲線幾乎為一直線),模型學習能力不足,故舍棄; 當學習率為10-3,10-4時,訓練誤差下降正常(綠色與橙色曲線性能良好),準確率穩(wěn)步上升,再出于訓練時間考量,本文選擇了前者。
圖7 學習率試驗曲線Fig.7 Learning rate curvesa.訓練誤差與訓練輪次關系曲線; b.測試誤差與訓練輪次關系曲線
至此,網(wǎng)絡訓練參數(shù)設置如下:訓練批次為8,學習率為0.001,同時利用stepLR函數(shù)(Pytorch深度學習框架下的函數(shù))來控制學習率大小變化,使得學習率隨著訓練過程逐漸減小,直至訓練誤差或訓練準確率收斂。
根據(jù)設定的參數(shù),對整個模型經(jīng)過50輪次(Epoch)的訓練,獲得訓練準確率及測試準確率等參數(shù)隨訓練次數(shù)變化關系如圖8所示。
圖8 模型網(wǎng)絡訓練過程Fig.8 Network training processes該圖為訓練準確率與測試準確率隨訓練輪次變化關系
從圖8可以看到,隨著訓練次數(shù)的增加,訓練準確率穩(wěn)定增加,且經(jīng)約40 Epochs以后逐漸收斂,訓練準確率在約94%波動,表明訓練基本穩(wěn)定,網(wǎng)絡模型已經(jīng)學習到了圖片的分類特征; 同時,對應的測試準確率盡管伴有數(shù)值上的波動,但總體趨勢變化與訓練準確率曲線相同,網(wǎng)絡整體訓練完畢。
圖8網(wǎng)絡訓練表明,測試準確率在75%左右波動,且在第46個輪次達到最高值0.895 833 3,即約90%。選取最高準確率下的網(wǎng)絡參數(shù)權重值,輸入經(jīng)最優(yōu)配置的網(wǎng)絡模型,開展基于圖像的巖性識別,并部分巖樣圖像及其識別結果見圖9。
圖9 巖樣圖像及其巖性識別結果Fig.9 Rock images and lithological recognition results
圖9中,左圖為圖像數(shù)據(jù)及其對應的巖樣正確名稱,右圖為模型識別獲取的巖性數(shù)值圖(按數(shù)值降序排列),其中最值對應的巖性類別即為預測的巖性名稱。圖9a中,輸入的為方解石圖像,按識別值降序依次為:方解石、螢石與片麻巖等,說明對于待識別圖像,這些巖性具有相似的特征,根據(jù)最大值對應的巖性,方解石應為待識別圖像的巖性名稱; 輸出數(shù)值為負值時,表明對應的巖性相關性更低; 圖9b和9c識別的巖性與圖像數(shù)據(jù)對應的巖性同樣一致。
然而,圖9d識別結果表明,模型將“礫巖”識別成了“方鉛礦”。產(chǎn)生識別錯誤的原因,可能是由于用于模型學習與識別訓練的圖像數(shù)據(jù)數(shù)有限,未能達到“大數(shù)據(jù)”的程度。同時,巖石圖像的背景也會對最后的識別結果產(chǎn)生一定的影響,這點理論上可以通過增加數(shù)據(jù)集數(shù)量、使用更高分辨率的圖像以及剝離物體和背景來彌補。因此,此類模型要想在實際應用中具有良好表現(xiàn),就必須收集大量的巖性圖片、構建合理的數(shù)據(jù)集供模型進行訓練。此外,巖性分類識別過程中,巖石圖片的一些非常相近的特征,譬如宏觀的形狀、顏色等,都會誤導機器給出正相關評分,導致網(wǎng)絡產(chǎn)生錯誤判斷。
因此,只有輸入足夠數(shù)量、足夠高清的巖性圖像數(shù)據(jù),機器才能識別出微小的特征差異,完成正確識別。但高清原圖數(shù)據(jù)不易獲取、對硬件顯存要求高,以及需要的計算資源成倍增長等又成了必須面對的問題。理論上采用BCNN(Bilinear Convolutional Neural Network)等能夠捕捉更精細細節(jié)的網(wǎng)絡模型,對于這類在計算機視覺中被稱為細粒度識別問題的解決,應該是今后的一個研究方向。
本文基于深度學習理論,通過網(wǎng)絡搜索的數(shù)據(jù)采集、數(shù)據(jù)預處理、網(wǎng)絡搭建、網(wǎng)絡訓練及結果/評價等,探討了基于深度學習的地質(zhì)圖像巖性識別問題。
借助深度學習技術,分別從數(shù)據(jù)采集、數(shù)據(jù)預處理、網(wǎng)絡搭建、訓練網(wǎng)絡、評價和結果等方面闡述了巖性圖像數(shù)據(jù)的識別過程,構建了識別率約90%的圖像識別模型,完成了不同圖像的巖性識別,分析了結果誤差及其產(chǎn)生的原因。
構建數(shù)量多、質(zhì)量好、數(shù)據(jù)分布均勻的數(shù)據(jù)集,是提高識別準確率的有效保證,但由此可能會帶來計算資源成倍增長等問題。開發(fā)使用能夠捕捉更精細細節(jié)的網(wǎng)絡模型,應該是解決相似特征區(qū)分難(細粒度識別問題)的一個研究方向。