實際資料斷層識別實戰—教你用Python自動識別地震斷層(附程序)



在前面的課程中,我們講解了通過構造斷層標籤數據來訓練神經網路模型。但在實際應用中,當我們拿到一個目標工區數據體資料,怎樣自動進行斷層識別呢?今天給大家進行一次全流程的講解。


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模型對比較主要斷層識別效果還是比較好的,大的斷層結構都能識別出來。


不過由於這個地震資料數據與實際情況相似,不是所有的斷層結構都是非常規律的,識別出來的斷層結果比模擬數據要差一些。


從圖中可以看到,不管是斷層的連續性還、準確性還是斷層線條精細程度,都沒有識別簡單模擬數據那麼理想。當然這裡的模型結構和顯示圖像的參數都有進一步優化的空間,需要大家深入的研究和探索。


今天的課程就到這裡。這節課講解了非常實用的內容,教會大家使用真實數據做斷層識別的整個流程。相信不管是做斷層演算法研究,還是做資料解釋,都能給大家帶來比較大的幫助。如果對文中的程序和數據感興趣,歡迎聯繫我獲取。再見。


相關閱讀:

如何在地震勘探研究更上一層樓?帶你一起深度學習識別斷層

怎樣輕鬆入門地震勘探研究:先從地震數據處理開始

深度學習地震去噪實戰:教你如何從0開啟地震深度學習科研之路