在前面的課程中,我們講解了通過構造斷層標籤數據來訓練神經網絡模型。但在實際應用中,當我們拿到一個目標工區數據體資料,怎樣自動進行斷層識別呢?今天給大家進行一次全流程的講解。
01 實驗數據情況
這次我們使用一個模仿真實地震工區程度比較高的合成三維數據,來講解拿到一個真實地震資料數據怎樣來做斷層自動識別。地震三維圖像如圖所示。
這是一個尺寸為(141,311,251)的三維數據體,有比較明顯的斷層結構,可以較好體現程序的斷層識別能力。
02 斷層自動識別
1.訓練模型導入
我們使用前面訓練好的UNet神經網絡模型,具體訓練方法見課程《深度學習斷層實戰(三)——UNet神經網絡模型建立》。
從上面導入模型的代碼來看,導入模型需要導入json文件和h5模型文件。
2.預測地震數據體
首先是讀取地震數據,如圖所示。
這裡使用了obspy庫的_read_segy方法來讀取了三維地震數據。
接下來是地震數據的預測,主要代碼如圖所示。
代碼的主要原理是先將整個數據體切分為模型的可以處理的大小(這裡是128*128*128),然後使用模型對每個數據分塊進行預測,最後再將模型預測結果進行重構組裝為整個工區的預測結果。預測的結果以二進制的格式保存到了磁盤。
這裡要注意:
對於數據體預測的運算量很大,對於普通的電腦配置(如CPU運行模型,內存8G以內),最好每次處理400*400*400以下的數據體。否則很容易內存資源耗盡,導致死機。
當然,如果你是GPU運行模型,或是內存資源比較大,可以一次處理比較大的數據體。
03 斷層結果展示
斷層識別後,我們就需要觀察處理的效果了。
1.二維剖面斷層效果顯示
我們如果要觀察二維剖面與對應的斷層對比圖。比如我們想看左邊是剖面,右邊是對應斷層的效果,如圖所示。
主要程序是這樣寫的:
這裡展示了xiline為29的地震剖面效果。如果賦值三維數組的其它位置,可以顯示xline, tline等不同維度的剖面效果。
我們將斷層線設置為了紅色,更容易觀察。
如果希望觀察剖面和斷層疊加的圖像,如圖所示。
可以這樣寫程序:
其中alpha參數設置透明度,實現了地震剖面和斷層的疊加。
2.三維數據體斷層效果顯示
如果我們想從三維視野來整體觀察斷層的識別結果,可以使用mayavi來繪製圖形,如圖所示。
主要原理和程序在前面課程《深度學習斷層實戰(五)——預測結果定性分析》有詳細的講解,大家可以移步過去學習。
從上面二維和三維的斷層識別效果來看,UNet模型對比較主要斷層識別效果還是比較好的,大的斷層結構都能識別出來。
不過由於這個地震資料數據與實際情況相似,不是所有的斷層結構都是非常規律的,識別出來的斷層結果比仿真數據要差一些。
從圖中可以看到,不管是斷層的連續性還、準確性還是斷層線條精細程度,都沒有識別簡單仿真數據那麼理想。當然這裡的模型結構和顯示圖像的參數都有進一步優化的空間,需要大家深入的研究和探索。
今天的課程就到這裡。這節課講解了非常實用的內容,教會大家使用真實數據做斷層識別的整個流程。相信不管是做斷層算法研究,還是做資料解釋,都能給大家帶來比較大的幫助。如果對文中的程序和數據感興趣,歡迎聯繫我獲取。再見。
相關閱讀: