Git Product home page Git Product logo

seismic-facies-identification's Introduction

Seismic Facies Identification Challenge - 3rd place solution

Seismic Facies Identification challenge: https://www.aicrowd.com/challenges/seismic-facies-identification-challenge
The goal of the challenge is to create a machine-learning algorithm which, working from the raw 3D image, can reproduce an expert pixel-by-pixel facies identification.
Annoncement of the winners
This 3rd place solution uses image segmentation, Pytorch, DeepLabV3+, efficientnet-b3 to solve the challenge.


There are 4 scripts: "train_inference_class0123.ipynb", "train_inference_class4.ipynb", "train_inference_class5.ipynb" and "binary_ensemble.ipynb".

I used Google Colab to run the scripts (with GPU option enabled). The training data was put in the directory "data".

Note that the initial labels were from 1 to 6. I added -1 for each label. So in my script, labels become from 0 to 5.

Since the metric is weighted F1 score with much more weight on class 4 and class 5, I used the script "train_inference_class0123.ipynb" to train class 0, 1, 2 and 3, and 2 other scripts to train class 4 and class 5. "train_inference_class0123.ipynb", "train_inference_class4.ipynb" and "train_inference_class5.ipynb" are very similar, with 2 differences: the number of classes in image segmentation, and the class weights given to each class during training.

  • "train_inference_class0123.ipynb" merges classes 4 and 5 into class 1, so the number of classes is 4. The 4 classes have the same weight.
  • "train_inference_class4.ipynb" keeps all of the classes during training, so the number of classes is 6. Class 4 has more class weight than other classes.
  • "train_inference_class5.ipynb" keeps all of the classes during training, so the number of classes is 6. Class 5 has more class weight than other classes.
  • "binary_ensemble.ipynb" combines the inference results of the first 3 scripts and generates the final submission file.

I added utils.set_global_seed(SEED) and utils.prepare_cudnn(deterministic=True) at the beginning of the scripts to decrease training randomness. Nevertheless, there are still other randomness in training. At each run, the training result may be slightly different.

To replicate the results:

  1. Run "train_inference_class0123.ipynb". It will train an image segmentation model, do inference and save inference results in a .npz file in the folder of "binary_predictions".
  2. Run "train_inference_class4.ipynb". It will train an image segmentation model, do inference and save inference results in a .npz file in the folder of "binary_predictions".
  3. Run "train_inference_class5.ipynb". It will train an image segmentation model, do inference and save inference results in a .npz file in the folder of "binary_predictions".
  4. Run "binary_ensemble.ipynb". It will use the 3 .npz files previously generated to generate the final submission.

seismic-facies-identification's People

Contributors

big-lazy-cat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

prajjwal294

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.