Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

MalenoV – User Guide chaosgeology

chaosgeology

chaosgeology

Machine learnining of Voxels

Using 3D SEGY seismic and 3D convolutional neural networks to map


and classify seismic facies

Charles Rutherford Ildstad


Peter Bormann
Q2/2017
Multi facies classification (F3 dataset)

One annotated inline with 9 facies classes Auto-classified cube with 9 facies classes

chaosgeology
chaosgeology

2
Background
• MalenoV was created as part of the Summer project of Charles Rutherford Ildstad in
ConocoPhillips in July 2017.
• The tool was inspired by the work of Anders U. Waldeland who showed at that he was
successfully classifying the seismic facies of salt using 3D convolutional networks
(http://earthdoc.eage.org/publication/publicationdetails/?publication=88635).
chaosgeology
chaosgeology

• MalenoV reads standard 3D SEGY seismic and performs a 3D neural network architecture of
choice on a given set of classification data points (facies annotation /supervision). It then
uses the learned weights and filters of the neural network to classify seismic at any other
location in the seismic cube into the facies classes that have been previously been defined by
the user. Finally the facies classification is written out as a SEGY cube with the same
dimensions as the input cube

• Currently a 5 layer basic 3D convolutional network is implemented but this can be changed by
the users at liberty

• The tool is public with a GNU Lesser General Public License v3.0

3
Free seismic data - to test MalenoV and other software
Since there is a limited number of free seismic dataset publicly available we decided to make available the
Poseidon (3500km2) seismic dataset acquired for ConocoPhillips Australia including Near, Mid, Far stacks,
well data and velocity data

The seismic data is available here: https://goo.gl/wb145Z


BEAWRE one 32 bit SEGY File is 100 GB of data
chaosgeology
chaosgeology

There is also inline ,xline, z training data for fault identification

The Dutch government F3 seismic dataset can also be downloaded from the same location including
This data is only 1 GB
Training data for multi facies prediction, faults and steep dips
Trained neural network models for steep dips and multi facies

4
Requirements
• In order to run the tool you need
• A good/ high performance, Cuda enabled graphics card
• A PC with more than 32GB memory (best 128 GB)
• Install Atom and Anaconda
chaosgeology
chaosgeology

Install Visual C++ compiler from Microsoft - https://www.microsoft.com/en-us/download/details.aspx?id=48145


Install NVIDIA Cuda toolkit - https://developer.nvidia.com/cuda-downloads (version 7, exe (local))
Create a new environment in Anaconda and import the packages:
Numpy
Scipy
Yaml
Hdf5
H5py
Cudnn
Tensorflow-gpu
Tensorflow
Matplotlib
Start a terminal from the new environment
Install keras in the terminal - $ pip install keras
Install segyio in the terminal - $ pip install segyio==1.3.0 (version 1.3.0 – later version sometimes have issues)

5
Training a neural network
• Implement a neural network architecture and
optimizer
• The currently architecture is a variant from Anders
Waldeland Eage Paper
• This architecture works on seismic data cubelets
(Voxels) of 65x65x65 chaosgeology
chaosgeology

6
Training a neural network - Training data locations
• Create at least two sets of inline, crossline, Z (twt) training data point sets of the
seismic facies you want to classify.
• The tool also allows for classification of n number of facies at the same time. In
this case one needs n data point sets for the training
• One easy way to make il, xl, z point data is using the paintbrush in GEOPROBE
(Landmark) and then using the GEOPROBE utilities to convert the binary file into
chaosgeology
chaosgeology

an Ascii file
• Il, xl, x data can also be made in Petrel
• Training data point sets and seismic needs to be one folder (best C:)

No steep foreset facies

Steep foreset facies

7
Training a neural network - Setting up the tool
Input seismic survey

(Cubelet size = cube incr *2 +1) in this case 65x65x65

Training data facies locations files (min 2, max= unlimited)


How many time are new training cubes being made with a
random draw from the training data locations
How many times the entire created training cubes are fed
through the neuronal network
chaosgeology
chaosgeology

Number of created training cubes per iteration. This is strongly dependent on your
machine memory. 35000 cubelets works well for 64GB memory.
Data augmentation is currently not implemented. Leave at False

Enter the name of an already trained model here if you want to train
the model more or one other classification training data. In this case
type keras.models.load_model(´F3_two_facies_steep_dip.h5´)

Set this to False in case you are doing multiclass (>2)


prediction. Set it to true for 2 facies classes

Set this to train for training.

8
Training a neural network - Setting up the tool
• After the first iteration has been run on the cubelets
the tool will estimate how long training will take
• It has been shown than training all the classification
points at least 5 times and 5 epochs per iteration is
a good starting point.
• If you have a lot more classification points than you
chaosgeology
chaosgeology

can make cubelets in memory make sure to increase


the number of iterations such that each
classification point has a chance to be run through
the neural network at least once
• Training progress is shown
• Press Ctrl+c to abort any calculations

9
Classifying seismic with a trained model
Input seismic survey

chaosgeology
chaosgeology

Enter trained model here


Where should the seismic be classified. Here we choose one inline and all xlines
Show the filters before the fully connected layer

Name of the saved SEGY file with the classification


Watch your memory. 50-100 is a good compromise

Set this to predict

10
Classifying seismic with a trained model
• The tool will show allowable inline, xline, z range for
classification. Values outside this array will lead to
abortion of the classification
• During the classification (prediction) the tool will
update how long it will take to classify the rest of
the user defined array chaosgeology
chaosgeology

• BE AWARE prediction /classification is currently


slow at 200-300 seismic samples per second.
(Depending on your graphics card /Memory
/location of seismic data)
• Limit your classification to where you really need it
• Press Ctrl+c to abort any calculations

11
Load classified segy into petrel

• Scan the imported segy for


values before displaying it

chaosgeology
chaosgeology

12
Future work

It was beyond the scope of this project to develop the tool further than the current in/out function
Please share your extensions and experiences

• Future work hot list:


chaosgeology

• Implement data augmentation (flip/ squeeze/ rotate/ etc)


chaosgeology

• Implement other well proven architectures (ResNet-50, U-nets, harmonic nets, GAN, etc)
• Change input cube sizes by user
• Make the tool work with near, mid, far offset data simultaneously
• Use tool for seismic noise recognition and prediction
• Improve classification speed
• …
• …
• …

13
Some examples
• We successfully trained models to recognize sandstone and shale facies in the Heimdal Formation, identify faults,
identify salt domes and various other interesting seismic facies. This is despite the simple network architecture and lack
of augmentation implemented at the moment.
• He we show a crude classification example from the public F3 dataset by the Dutch government (segy is in the raw data folder)
• All the data to make your own classification are uploaded on the repository in in Google Drive
chaosgeology
chaosgeology

14
Multi facies classification (F3 dataset)
Input data classes

• Labeled seismic
inline 339 with
8 facies types
• Else facies for
chaosgeology
chaosgeology

non specific
facies
• Trained model
for 8 hours

15
Multi facies classification (F3 dataset)
Input data classes

• Labeled seismic
inline 339 with
8 facies types
• Else facies for
chaosgeology
chaosgeology

non specific
facies
• Trained model
for 8 hours

16
Multi facies classification (F3 dataset)

One annotated inline with 9 facies classes Auto-classified cube with 9 facies classes

chaosgeology
chaosgeology

Trained model: multi_facies_F3_10ep10it_35ksamples.h5

17
Multi facies classification (inline)

Low coherency

else

chaosgeology
chaosgeology
High amp continuous

low amp dips high amp dips


high amp dips

else

grizzly

Low amplitude
High_amp

else
salt

18
Multi facies classification (xline)

Low coherency

else

High amp continuous


chaosgeology
chaosgeology

low amp dips else

high amp dips

else
else

grizzly

High_amp_

Low amplitude

salt

19
Faults classification on the F3 dataset

• Faults used for


training the
neural network
chaosgeology
chaosgeology

• Classified area
of fault
presence

• Classified area
of fault absence

The neural network does a great job in mapping faults but the spatial
resolution is not optimal. This is a function of the neural network architecture
chosen with the 5 layer CNN and 65 sample input cubes. U-nets and resnet
may be more appropriate. Training a GAN could be an optimal solution to
map more detailed faults.

20
Classifying faults on the F3 dataset

chaosgeology
chaosgeology

21
Classifying faults using a 5 layer CNN on the F3 dataset

chaosgeology
chaosgeology

22
Seismic facies classification (Grid Fm facies)
• Trained CNN on one x-line
• Predicted on multiple in-lines
and x-lines

chaosgeology
chaosgeology

Training

prediction
Seismic data courteously from PGS
23
Multi-facies prediction
Else Facies

Channel Facies

Else Facies
chaosgeology
chaosgeology

Grizzly Facies

Coherent 2 Facies

Coherent 1 Facies

Faulted Facies
Training

prediction

Grid Facies
Seismic data courteously from PGS
24
Multi-facies prediction

chaosgeology
chaosgeology

Training

Predict

Seismic data courteously from PGS

25
Lithology classification: Using the wells only for training
• Very crude approach:
• Take the well lithologies (TGS facies browser)
• Time convert them using a very regional model (AkerBP)
• Make 5 facies (limestone , volcanic, shale , sand, else)
• Train on fullstack seismic (10hrs) chaosgeology
chaosgeology

• Predict /classify

• No proper well ties


• Poor architecture for high
resolution purpose
• Log vs /seismic frequency

26
Sand /shale classification unnamed dataset

Seismic data courteously from PGS

chaosgeology
chaosgeology

Top Chalk
Sandstone
Shale
Volcanics

27
Getting inline, xline, z data file from Petrel faults polygons
Faults /or any polygon data:
Interpret faults/polygon convert to polygon equal space polygon point every 15 meters convert back to faults
create one new fault stick with new name on seismic line move previously converted faults to the newly created fault
stick export as Charisma fault sticks Ascii massage in Excel or similar to get space separated inline, xline, z file
feed into MalenoV
chaosgeology
chaosgeology

Creating a point cloud of training data


Create a grid with the seismic resolution (or a multiple of that) Create a lithofacies attribute use the facies painter
to paint a point cloud of data export facies attribute to point x,y,z convert points to polygons append polygon to
an polygon that was converted from a fault stick and follow steps from above

Or simply call your Petrel Helpdesk

It would of course be much better if somebody had a script to convert UTM x,y,z to inline/xline/z data based on a
specific seismic survey. SEGYIO from Statoil could help.

In Geoprobe us the utilities to import x,y,z data convert to points snap points to seismic do check if inline is first
column use in MalenoV

28
Want to learn more about Convolutional networks:

This is a good introduction to what convolution neural network does


https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/

there are tons of really good and free courses out there. Here some of the material I read
• Understanding neural networks easily
chaosgeology
chaosgeology

• https://www.youtube.com/watch?v=ILsA4nyG7I0 How neural networks work


• https://www.youtube.com/watch?v=FmpDIaiMIeA how convolutional neural
networks work
• Free online courses
• http://cs231n.github.io/ one of many good online courses that can be followed for
free
• Nice series of easily understandable blog posts
https://medium.com/@ageitgey/machine-learning-is-fun-80ea3ec3c471
• Lots and lots of free information.. Just google

29

You might also like