地震相是儲層表徵的方法之一,通過對目標區域有利層序內地震相的研究,可以確定儲層的沉積相及橫向的分布範圍,從而為儲層的綜合預測奠定基礎。
01 地震相介紹
地震相是指沉積相在地震資料上的響應,地震相一詞來源於沉積相,可以理解為沉積相在地震剖面上表現的總和。地震相包括在地震剖面上的響應,在水平切片或層振幅平面圖上的響應,在反演速度剖面上或正演模型上的響應等。地震相分析的方法就是識別每個層序內獨特的地震反射波組特徵及其形態組合,並將其賦予一定的地質含義,進而進行沉積相的解釋,這一過程稱為地震相分析。
地震相分類是儲層表徵的步驟之一,三維地震和地震屬性等油氣儲層表徵技術的進步豐富了專家對地下的描述。然而,對這一巨大數據量的分析卻成了一項複雜的任務,人工分析已經不能適應工程上的需要。本文後續將帶領大家探索使用深度學習在地震相分類中的應用。
02 項目實戰
1.實驗數據介紹
本次實戰項目使用荷蘭F3的數據。荷蘭北海區域富含碳氫化合物沉積物,北海大陸架位於荷蘭海岸附近,被劃分為不同的地理區域,用字母表的不同字母來描述;在這些區域內是標有數字的較小區域。其中一個區域是尺寸為16km x 24km的矩形,稱為F3區塊,見圖。
根據區塊的層位和斷層解釋情況,對該區塊進行了三維建模,最終的3D地質模型如圖所示:
2.深度學習實現地震相預測
數據構建:
我們用來訓練和測試網絡模型的最終地震模型並不是F3的全部區域。為了滿足網絡運算,我們還從目標訓練數據切割小塊數據進行訓練。對於非常大的地震體數據,這種方法比使用整個剖面進行訓練更可行。在訓練時,從訓練集的inlines和crosslines線中隨機抽取地震數據塊及其相關標籤。在測試階段,模型在inlines和crosslines方向上對重疊的小塊數據進行採樣,並對結果進行平均,以生成inlines或crosslines的二維標記測試集。
結合工區的整體數據存在缺失等情況,我們使用的數據在inline100至701、crossline300至1201之間,以及1005至1877之間深度的範圍,。Inline 300和crossline 1000將整個區域分為四個部分。其中西北區域用於訓練,而西南區域構成測試集1。
整個地震相分為了6類:
生成訓練集
訓練集數據包括:train_seismic.npy和train_seismic.npy,分別為地震數據體和對應的地震相分類標籤。
在機器學習的應用程式中,仔細選擇訓練集和測試集都是至關重要的,在地震數據中尤其如此。因為相鄰的剖面高度相關,隨機選擇訓練和測試區域將實現更好的測試結果,而這些結果並不代表測試模型的實際泛化性能。因此,儘可能減少訓練集和測試集之間的相關性非常重要。確保訓練集和測試集對數據集中的所有類都有足夠的表示也很重要。
本文隨機選擇7個測井的數據來生成訓練集。這樣相當於模擬在工區打下了7口測試井,然後搞清楚測井的地震相情況。
選取坐標點包括:
通過將數據切割為32×32的小塊和標籤來生成訓練集數據。這裡為了適應模型的訓練,使用小塊的尺寸是32×32。
上面程序的X_train和Y_train就是供模擬訓練的數據集。
生成測試集
同樣的原理,使用測試集1的數據test1_seismic.npy和test1_labels.npy來生成測試集數據。不過如果測試數據區域較大,生成的測試集數據量將很大,普通計算資源無法承受。因此我們切割了部分區域的測試集數據。
訓練/測試集數據分離
在大多數情況下,準備的訓練數據分類不會平衡,會影響模型的泛化性。
比如本實驗的訓練數據分類情況如下:
從統計結果來看,分類的樣本數量很不均勻。
為了提升訓練數據均衡性,可以使用隨機採樣的方法。
通過上面程序隨機採用後,訓練數據分類就成了下面的情況:
這樣就均衡了很多。
然後按照20%的比例,分割訓練數據和驗證數據。
模型訓練
模型參數:
本次使用的神經網絡模型如圖所示。這裡主要是用的二維卷積神經網絡,中間激活函數使用relu,使用2×2的最大池化層來提取特徵。使用Dropout(0.2)來降低過擬合風險。對於多分類問題,最後一層使用softmax來激活,loss函數使用categorical_crossentropy,優化器使用rmsprop。
預設使用30個疊代來訓練數據,並且設置連續3次驗證Loss值低於0.01時退出訓練。這是為了防止過擬合發生。在實際訓練過程中,到14個疊代就退出訓練了。訓練曲線如下:
測試驗證
為了測試模型的預測能力。我們把訓練好的模型用於測試集地震數據的地震相預測,再與真實標籤數據進行對比。
訓練集數據用的是:test1_seismic.npy和test1_labels.npy,這是與訓練數據不同的另外一個區域。
首先看看預測數據集的分類情況。
可以看到預測數據集的分類是嚴重不平衡的,這給模型預測帶來了較大的挑戰。
這裡評價模型優劣的量化參數可以使用平均準確率、查准率、召回率、F1-Score等進行計算。
本實驗的量化參數結果如下:
從結果來看,本文模型的準確率達到了近90%,說明整體預測能力比較好。但是其它幾個參數較低,說明在細節的預測能力上還有改進空間。當然,這個結果與預測數據集不均衡性有較大關係。
除了上述參數,還可以使用混淆矩陣來查看效果,結果如下:
從混淆矩陣結果來看,Lower North的預測準確性較高,這是因為這個類別數量最多。
最後,通過圖形化來直觀看看模型對地震剖面預測的效果圖。
從上圖來看,最左邊是地震剖面圖,中間是地震相的標籤,右邊是預測結果。從整體來看,預測的分類結果與標籤數據大致吻合,大部分地震相邊界也比較接近。不過也出現了較多的雜亂數據,這些需要在後續進行優化。
全工區地震相預測
最後,可以將訓練好的模型對整個工區地震數據進行地震相的預測。這部操作和前面測試驗證相似。
全工區的預測主要流程包括:一是將地震體數據抽樣為網絡模型可以預測的小塊數據。二是使用網絡模型對小塊數據進行預測。三是對預測結果進行三維重構,就形成了與原始地震體數據對應的地震相預測標籤。
今天的課程就到這裡。這節課程通過一個真實地震項目的講解,給大家完整呈現了對地震工區數據進行地震相分類預測的全過程。如果對程序和數據感興趣,請聯繫我獲取,再見。