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