This Github repo is based on the AICrowd Facies Identification Challenge in which we need to create a ML/DL Model to do pixel classification by taking 3D images.
My main motivation to work on this project is that it was 3D image dataset rather than 2D image dataset. And yes, I actually make this a 2D problem because 3D convolutions are very inefficient & computationally expeensive.
In my last project which was Water Segmentation ๐, i used FastAI to build UNet to classifty pixel based on water/no water. But this is muli class pixel classification where there is total of 6 pixel labels. And instead of making UNet in fastai, i used Tensorflow 2.0 & Keras to make UNet from scratch, ( mainly because of wating to get a bit more experience on how UNet works ).
The ๐ Seismic Facies Identification Challange.ipynb
contains everything from Data Exploration to submitting the predictions.
Also you can find the google colab notebook here - https://colab.research.google.com/drive/1t1hF_Vs4xIyLGMw_B9l1G6qzLBxLB5eG?usp=sharing
Here are the tabels on content -
- Setting our Workspace ๐ผ
- Data Exploration :face_with_monocle:
- Image Preprocessing Techniqes ๐งน
- Creating our Dataset ๐จ
- Creating our Model ๐ญ
- Training the Model ๐
- Evaluating the model ๐งช
- Testing on test Data ๐ฏ
- Generate More Data + Some tips & tricks ๐ก
I also made an Application using Streamlit which contains the Data Visualisation ( Interactive ) and Image Preprocessing ( Interactive, you can change every settings ).
The Application is also deployed on Heroku!, check this out! https://seismic-facies-identification.herokuapp.com/
We have 3D dataset both ( features X, and labels Y ) with shape for X is 1006 ร 782 ร 590, in axis corresponding Z, X, Y and Y in 1006 ร 782 ร 590 in also axis corresponsing Z, X, Y.
We can say that we have total of 2,378 2D trainig images with their corresponsing labels and we also have same number of 2,378 2D testing images which we will predict labels for.
The evaluation metrics are the F1 score and accuracy.
Below are the steps to run the application in your PC or laptop, whatever.
- Python 3.x - You can download python in Official Python Site.
- Clone the repo using
git clone https://github.com/Shubhamai/seismic-facies-identification.git
- Run
pip install -r requirements.txt
- Run
jupyter notebook
and open๐_Seismic_Facies_Identification_Challange.ipynb
OR - Run the streamlit application using
streamlit run ./app/app.py
- Enjoy ๐
Distributed under the GNU General Public License v3.0. See LICENSE
for more information.