segmenting-subsurface

Deep Learning solution for multi-layer seismic data segmentation using Meta's SAM, trained on a dataset of 9,000 volumes for improved subsurface mapping.

https://github.com/association-rosia/segmenting-subsurface

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.1%) to scientific vocabulary

Keywords

3d-seismic-data-analysis challenge co2-sequestration data-interpretation deep-learning earth-sciences geological-mapping geophysics groundwater-management machine-learning meta-sam multi-layer-segmentation oil-gas-exploration reservoir-identification
Last synced: 6 months ago · JSON representation ·

Repository

Deep Learning solution for multi-layer seismic data segmentation using Meta's SAM, trained on a dataset of 9,000 volumes for improved subsurface mapping.

Basic Info
Statistics
  • Stars: 7
  • Watchers: 0
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Topics
3d-seismic-data-analysis challenge co2-sequestration data-interpretation deep-learning earth-sciences geological-mapping geophysics groundwater-management machine-learning meta-sam multi-layer-segmentation oil-gas-exploration reservoir-identification
Created about 2 years ago · Last pushed almost 2 years ago
Metadata Files
Readme License Citation

README.md

🌋 Every Layer, Everywhere, All at Once: Segmenting Subsurface

This project is part of a competition aiming to expand the capabilities of Meta's Segment Anything Model (SAM) to perform multi-layer segmentation in 3D seismic data. The challenge involves creating machine learning models that can identify and map multiple geological layers simultaneously, thereby streamlining the interpretation process of seismic datasets. With a large training set of around 9,000 labeled seismic volumes representing a wide range of geological conditions, the goal is to develop generalizable and efficient algorithms that can cope with the inherent complexities of seismic data. The models will be evaluated against a complex holdout dataset to ensure robust performance across diverse geological features. This repository documents the development and implementation of our solution to this advanced pattern recognition and data analysis challenge.

This project was made possible by our compute partners 2CRSi and NVIDIA.

🏆 Challenge ranking

The score of the challenge was a custom DICE coefficient.
Our solution was the best one (out of 225 teams) on the Prediction Leaderboard with a DICE coefficient equal to 0.65 🎉.

Prediction Leaderboard podium:
🥇 RosIA - 0.65
🥈 Kyle Peters - 0.64
🥉 Harshit Sheoran - 0.62

Our solution was the best one (out of the 10 best teams) on the Final Leaderboard with a DICE coefficient equal to 0.67 🎉.

Final Leaderboard podium:
🥇 RosIA - 0.67
🥈 Kyle Peters
🥉 Jie Tian

🖼️ Result example

Raw seismic slice | Predicted binary mask | Predicted layers :--------------------:|:--------------------:|:--------------------:| | |

🏛️ Proposed solution

#️⃣ Command lines

Launch a training

bash python src/models/<nom du model>/train_model.py <hyperparams args>

View project's runs on WandB.

Create a submission

bash python src/models/predict_model.py -n {model.ckpt}

🔬 References

Kirillov, A., Mintun, E., Ravi, N., Mao, H., Rolland, C., Gustafson, L., ... & Girshick, R. (2023). Segment anything. arXiv preprint arXiv:2304.02643.

Cheng, B., Misra, I., Schwing, A. G., Kirillov, A., & Girdhar, R. (2022). Masked-attention mask transformer for universal image segmentation. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp. 1290-1299).

Xie, E., Wang, W., Yu, Z., Anandkumar, A., Alvarez, J. M., & Luo, P. (2021). SegFormer: Simple and efficient design for semantic segmentation with transformers. Advances in Neural Information Processing Systems, 34, 12077-12090.

📝 Citing

@misc{RebergaUrgell:2024, Author = {Louis Reberga and Baptiste Urgell}, Title = {Segmenting Subsurface}, Year = {2024}, Publisher = {GitHub}, Journal = {GitHub repository}, Howpublished = {\url{https://github.com/association-rosia/segmenting-subsurface}} }

🛡️ License

Project is distributed under MIT License

👨🏻‍💻 Contributors

Louis REBERGA

Baptiste URGELL

Owner

  • Name: RosIA
  • Login: association-rosia
  • Kind: organization
  • Location: France

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "REBERGA"
  given-names: "Louis"
- family-names: "URGELL"
  given-names: "Baptiste"
title: "Segmenting Subsurface"
publisher: "Github"
year: "2024"
version: 1.0
date-released: 2024-2-10
url: "https://github.com/association-rosia/segmenting-subsurface"
data: "Every Layer, Everywhere, All at Once: Segmenting Subsurface"

GitHub Events

Total
  • Watch event: 4
Last Year
  • Watch event: 4

Dependencies

environment.yml pypi
  • jupyter *
  • matplotlib *
  • numpy *
  • opencv-python *
  • pandas *
  • plotly *
  • pytorch-lightning *
  • pyyaml *
  • scikit-learn *
  • torch *
  • torchvision *
  • tqdm *
  • transformers *
  • wandb *
requirements.txt pypi
  • Babel ==2.14.0
  • Cython ==3.0.6
  • GitPython ==3.1.40
  • Jinja2 ==3.1.2
  • Markdown ==3.5.1
  • MarkupSafe ==2.1.3
  • PyYAML ==6.0.1
  • Pygments ==2.17.2
  • QtPy ==2.4.1
  • SQLAlchemy ==2.0.23
  • Send2Trash ==1.8.2
  • Werkzeug ==3.0.1
  • absl-py ==2.0.0
  • accelerate ==0.26.1
  • aiofiles ==23.2.1
  • aiohttp ==3.9.1
  • aiosignal ==1.3.1
  • altair ==5.2.0
  • annotated-types ==0.6.0
  • anyio ==3.7.1
  • appdirs ==1.4.4
  • argon2-cffi ==23.1.0
  • argon2-cffi-bindings ==21.2.0
  • arrow ==1.3.0
  • asttokens ==2.4.1
  • async-lru ==2.0.4
  • async-timeout ==4.0.3
  • attrs ==23.1.0
  • beautifulsoup4 ==4.12.2
  • bitsandbytes ==0.42.0
  • bleach ==6.1.0
  • cachetools ==5.3.2
  • certifi ==2023.11.17
  • cffi ==1.16.0
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • comm ==0.2.1
  • contourpy ==1.2.0
  • cycler ==0.12.1
  • dataclasses-json ==0.6.3
  • debugpy ==1.8.0
  • decorator ==5.1.1
  • defusedxml ==0.7.1
  • docker-pycreds ==0.4.0
  • et-xmlfile ==1.1.0
  • exceptiongroup ==1.2.0
  • executing ==2.0.1
  • faiss-cpu ==1.7.4
  • fastapi ==0.109.0
  • fastjsonschema ==2.19.1
  • ffmpy ==0.3.1
  • filelock ==3.13.1
  • fonttools ==4.47.2
  • fqdn ==1.5.1
  • frozenlist ==1.4.0
  • fsspec ==2023.12.2
  • gitdb ==4.0.11
  • google-auth ==2.25.2
  • google-auth-oauthlib ==1.2.0
  • gradio ==4.16.0
  • gradio_client ==0.8.1
  • greenlet ==3.0.2
  • grpcio ==1.60.0
  • h11 ==0.14.0
  • httpcore ==1.0.2
  • httpx ==0.25.2
  • huggingface-hub ==0.19.4
  • idna ==3.6
  • importlib-resources ==6.1.1
  • interegular ==0.3.3
  • ipykernel ==6.29.0
  • ipython ==8.20.0
  • ipywidgets ==8.1.1
  • isoduration ==20.11.0
  • jedi ==0.19.1
  • joblib ==1.3.2
  • json5 ==0.9.14
  • jsonpatch ==1.33
  • jsonpointer ==2.4
  • jsonschema ==4.21.1
  • jsonschema-specifications ==2023.12.1
  • jupyter ==1.0.0
  • jupyter-console ==6.6.3
  • jupyter-events ==0.9.0
  • jupyter-lsp ==2.2.2
  • jupyter_client ==8.6.0
  • jupyter_core ==5.7.1
  • jupyter_server ==2.12.5
  • jupyter_server_terminals ==0.5.2
  • jupyterlab ==4.0.12
  • jupyterlab-widgets ==3.0.9
  • jupyterlab_pygments ==0.3.0
  • jupyterlab_server ==2.25.2
  • kaleido ==0.2.1
  • kiwisolver ==1.4.5
  • lightning-utilities ==0.10.0
  • llama-index ==0.8.23.post1
  • lm-format-enforcer ==0.8.2
  • markdown-it-py ==3.0.0
  • marshmallow ==3.20.1
  • matplotlib ==3.8.2
  • matplotlib-inline ==0.1.6
  • mdurl ==0.1.2
  • mistune ==3.0.2
  • mpmath ==1.3.0
  • multidict ==6.0.4
  • mypy-extensions ==1.0.0
  • nbclient ==0.9.0
  • nbconvert ==7.14.2
  • nbformat ==5.9.2
  • nest-asyncio ==1.5.8
  • networkx ==3.2.1
  • nltk ==3.8.1
  • notebook ==7.0.7
  • notebook_shim ==0.2.3
  • numpy ==1.26.3
  • nvidia-cublas-cu12 ==12.1.3.1
  • nvidia-cuda-cupti-cu12 ==12.1.105
  • nvidia-cuda-nvrtc-cu12 ==12.1.105
  • nvidia-cuda-runtime-cu12 ==12.1.105
  • nvidia-cudnn-cu12 ==8.9.2.26
  • nvidia-cufft-cu12 ==11.0.2.54
  • nvidia-curand-cu12 ==10.3.2.106
  • nvidia-cusolver-cu12 ==11.4.5.107
  • nvidia-cusparse-cu12 ==12.1.0.106
  • nvidia-nccl-cu12 ==2.18.1
  • nvidia-nvjitlink-cu12 ==12.3.101
  • nvidia-nvtx-cu12 ==12.1.105
  • openai ==0.28.0
  • opencv-python ==4.9.0.80
  • openpyxl ==3.1.2
  • orjson ==3.9.12
  • overrides ==7.7.0
  • packaging ==23.2
  • pandas ==2.1.4
  • pandocfilters ==1.5.1
  • parso ==0.8.3
  • pexpect ==4.9.0
  • pillow ==10.2.0
  • pip ==23.3.1
  • platformdirs ==4.1.0
  • plotly ==5.18.0
  • prometheus-client ==0.19.0
  • prompt-toolkit ==3.0.43
  • protobuf ==4.23.4
  • psutil ==5.9.7
  • ptyprocess ==0.7.0
  • pure-eval ==0.2.2
  • pyasn1 ==0.5.1
  • pyasn1-modules ==0.3.0
  • pycparser ==2.21
  • pydantic ==2.5.2
  • pydantic_core ==2.14.5
  • pydub ==0.25.1
  • pyparsing ==3.1.1
  • python-dateutil ==2.8.2
  • python-json-logger ==2.0.7
  • python-multipart ==0.0.6
  • pytorch-lightning ==2.1.3
  • pytz ==2023.3.post1
  • pyzmq ==25.1.2
  • qtconsole ==5.5.1
  • rank-bm25 ==0.2.2
  • referencing ==0.33.0
  • regex ==2023.10.3
  • requests ==2.31.0
  • requests-oauthlib ==1.3.1
  • rfc3339-validator ==0.1.4
  • rfc3986-validator ==0.1.1
  • rich ==13.7.0
  • rpds-py ==0.17.1
  • rsa ==4.9
  • ruff ==0.1.14
  • safetensors ==0.4.1
  • scikit-learn ==1.3.2
  • scipy ==1.11.4
  • semantic-version ==2.10.0
  • sentence-transformers ==2.2.2
  • sentencepiece ==0.1.99
  • sentry-sdk ==1.39.0
  • setproctitle ==1.3.3
  • setuptools ==68.2.2
  • shellingham ==1.5.4
  • six ==1.16.0
  • smmap ==5.0.1
  • sniffio ==1.3.0
  • soupsieve ==2.5
  • stack-data ==0.6.3
  • starlette ==0.35.1
  • sympy ==1.12
  • tenacity ==8.2.3
  • tensorboard ==2.15.1
  • tensorboard-data-server ==0.7.2
  • terminado ==0.18.0
  • threadpoolctl ==3.2.0
  • tiktoken ==0.5.2
  • tinycss2 ==1.2.1
  • tokenizers ==0.15.0
  • tomli ==2.0.1
  • tomlkit ==0.12.0
  • toolz ==0.12.1
  • torch ==2.1.2
  • torchmetrics ==1.3.0
  • torchvision ==0.16.2
  • tornado ==6.4
  • tqdm ==4.66.1
  • traitlets ==5.14.1
  • transformers ==4.37.1
  • triton ==2.1.0
  • typer ==0.9.0
  • types-python-dateutil ==2.8.19.20240106
  • typing-inspect ==0.9.0
  • typing_extensions ==4.9.0
  • tzdata ==2023.3
  • uri-template ==1.3.0
  • urllib3 ==1.26.18
  • uvicorn ==0.27.0.post1
  • wandb ==0.16.2
  • wcwidth ==0.2.13
  • webcolors ==1.13
  • webencodings ==0.5.1
  • websocket-client ==1.7.0
  • websockets ==11.0.3
  • wheel ==0.41.2
  • widgetsnbextension ==4.0.9
  • yarl ==1.9.4
setup.py pypi
  • Babel ==2.14.0
  • Cython ==3.0.6
  • GitPython ==3.1.40
  • Jinja2 ==3.1.2
  • Markdown ==3.5.1
  • MarkupSafe ==2.1.3
  • PyYAML ==6.0.1
  • Pygments ==2.17.2
  • QtPy ==2.4.1
  • SQLAlchemy ==2.0.23
  • Send2Trash ==1.8.2
  • Werkzeug ==3.0.1
  • absl-py ==2.0.0
  • accelerate ==0.26.1
  • aiofiles ==23.2.1
  • aiohttp ==3.9.1
  • aiosignal ==1.3.1
  • altair ==5.2.0
  • annotated-types ==0.6.0
  • anyio ==3.7.1
  • appdirs ==1.4.4
  • argon2-cffi ==23.1.0
  • argon2-cffi-bindings ==21.2.0
  • arrow ==1.3.0
  • asttokens ==2.4.1
  • async-lru ==2.0.4
  • async-timeout ==4.0.3
  • attrs ==23.1.0
  • beautifulsoup4 ==4.12.2
  • bitsandbytes ==0.42.0
  • bleach ==6.1.0
  • cachetools ==5.3.2
  • certifi ==2023.11.17
  • cffi ==1.16.0
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • comm ==0.2.1
  • contourpy ==1.2.0
  • cycler ==0.12.1
  • dataclasses-json ==0.6.3
  • debugpy ==1.8.0
  • decorator ==5.1.1
  • defusedxml ==0.7.1
  • docker-pycreds ==0.4.0
  • et-xmlfile ==1.1.0
  • exceptiongroup ==1.2.0
  • executing ==2.0.1
  • faiss-cpu ==1.7.4
  • fastapi ==0.109.0
  • fastjsonschema ==2.19.1
  • ffmpy ==0.3.1
  • filelock ==3.13.1
  • fonttools ==4.47.2
  • fqdn ==1.5.1
  • frozenlist ==1.4.0
  • fsspec ==2023.12.2
  • gitdb ==4.0.11
  • google-auth ==2.25.2
  • google-auth-oauthlib ==1.2.0
  • gradio ==4.16.0
  • gradio_client ==0.8.1
  • greenlet ==3.0.2
  • grpcio ==1.60.0
  • h11 ==0.14.0
  • httpcore ==1.0.2
  • httpx ==0.25.2
  • huggingface-hub ==0.19.4
  • idna ==3.6
  • importlib-resources ==6.1.1
  • interegular ==0.3.3
  • ipykernel ==6.29.0
  • ipython ==8.20.0
  • ipywidgets ==8.1.1
  • isoduration ==20.11.0
  • jedi ==0.19.1
  • joblib ==1.3.2
  • json5 ==0.9.14
  • jsonpatch ==1.33
  • jsonpointer ==2.4
  • jsonschema ==4.21.1
  • jsonschema-specifications ==2023.12.1
  • jupyter ==1.0.0
  • jupyter-console ==6.6.3
  • jupyter-events ==0.9.0
  • jupyter-lsp ==2.2.2
  • jupyter_client ==8.6.0
  • jupyter_core ==5.7.1
  • jupyter_server ==2.12.5
  • jupyter_server_terminals ==0.5.2
  • jupyterlab ==4.0.12
  • jupyterlab-widgets ==3.0.9
  • jupyterlab_pygments ==0.3.0
  • jupyterlab_server ==2.25.2
  • kaleido ==0.2.1
  • kiwisolver ==1.4.5
  • lightning-utilities ==0.10.0
  • llama-index ==0.8.23.post1
  • lm-format-enforcer ==0.8.2
  • markdown-it-py ==3.0.0
  • marshmallow ==3.20.1
  • matplotlib ==3.8.2
  • matplotlib-inline ==0.1.6
  • mdurl ==0.1.2
  • mistune ==3.0.2
  • mpmath ==1.3.0
  • multidict ==6.0.4
  • mypy-extensions ==1.0.0
  • nbclient ==0.9.0
  • nbconvert ==7.14.2
  • nbformat ==5.9.2
  • nest-asyncio ==1.5.8
  • networkx ==3.2.1
  • nltk ==3.8.1
  • notebook ==7.0.7
  • notebook_shim ==0.2.3
  • numpy ==1.26.3
  • nvidia-cublas-cu12 ==12.1.3.1
  • nvidia-cuda-cupti-cu12 ==12.1.105
  • nvidia-cuda-nvrtc-cu12 ==12.1.105
  • nvidia-cuda-runtime-cu12 ==12.1.105
  • nvidia-cudnn-cu12 ==8.9.2.26
  • nvidia-cufft-cu12 ==11.0.2.54
  • nvidia-curand-cu12 ==10.3.2.106
  • nvidia-cusolver-cu12 ==11.4.5.107
  • nvidia-cusparse-cu12 ==12.1.0.106
  • nvidia-nccl-cu12 ==2.18.1
  • nvidia-nvjitlink-cu12 ==12.3.101
  • nvidia-nvtx-cu12 ==12.1.105
  • openai ==0.28.0
  • opencv-python ==4.9.0.80
  • openpyxl ==3.1.2
  • orjson ==3.9.12
  • overrides ==7.7.0
  • packaging ==23.2
  • pandas ==2.1.4
  • pandocfilters ==1.5.1
  • parso ==0.8.3
  • pexpect ==4.9.0
  • pillow ==10.2.0
  • pip ==23.3.1
  • platformdirs ==4.1.0
  • plotly ==5.18.0
  • prometheus-client ==0.19.0
  • prompt-toolkit ==3.0.43
  • protobuf ==4.23.4
  • psutil ==5.9.7
  • ptyprocess ==0.7.0
  • pure-eval ==0.2.2
  • pyasn1 ==0.5.1
  • pyasn1-modules ==0.3.0
  • pycparser ==2.21
  • pydantic ==2.5.2
  • pydantic_core ==2.14.5
  • pydub ==0.25.1
  • pyparsing ==3.1.1
  • python-dateutil ==2.8.2
  • python-json-logger ==2.0.7
  • python-multipart ==0.0.6
  • pytorch-lightning ==2.1.3
  • pytz ==2023.3.post1
  • pyzmq ==25.1.2
  • qtconsole ==5.5.1
  • rank-bm25 ==0.2.2
  • referencing ==0.33.0
  • regex ==2023.10.3
  • requests ==2.31.0
  • requests-oauthlib ==1.3.1
  • rfc3339-validator ==0.1.4
  • rfc3986-validator ==0.1.1
  • rich ==13.7.0
  • rpds-py ==0.17.1
  • rsa ==4.9
  • ruff ==0.1.14
  • safetensors ==0.4.1
  • scikit-learn ==1.3.2
  • scipy ==1.11.4
  • semantic-version ==2.10.0
  • sentence-transformers ==2.2.2
  • sentencepiece ==0.1.99
  • sentry-sdk ==1.39.0
  • setproctitle ==1.3.3
  • setuptools ==68.2.2
  • shellingham ==1.5.4
  • six ==1.16.0
  • smmap ==5.0.1
  • sniffio ==1.3.0
  • soupsieve ==2.5
  • stack-data ==0.6.3
  • starlette ==0.35.1
  • sympy ==1.12
  • tenacity ==8.2.3
  • tensorboard ==2.15.1
  • tensorboard-data-server ==0.7.2
  • terminado ==0.18.0
  • threadpoolctl ==3.2.0
  • tiktoken ==0.5.2
  • tinycss2 ==1.2.1
  • tokenizers ==0.15.0
  • tomli ==2.0.1
  • tomlkit ==0.12.0
  • toolz ==0.12.1
  • torch ==2.1.2
  • torchmetrics ==1.3.0
  • torchvision ==0.16.2
  • tornado ==6.4
  • tqdm ==4.66.1
  • traitlets ==5.14.1
  • transformers ==4.37.1
  • triton ==2.1.0
  • typer ==0.9.0
  • types-python-dateutil ==2.8.19.20240106
  • typing-inspect ==0.9.0
  • typing_extensions ==4.9.0
  • tzdata ==2023.3
  • uri-template ==1.3.0
  • urllib3 ==1.26.18
  • uvicorn ==0.27.0.post1
  • wandb ==0.16.2
  • wcwidth ==0.2.13
  • webcolors ==1.13
  • webencodings ==0.5.1
  • websocket-client ==1.7.0
  • websockets ==11.0.3
  • wheel ==0.41.2
  • widgetsnbextension ==4.0.9
  • yarl ==1.9.4