Major Term Project β Airbus Ship Detection Challenge (Kaggle)
This repository contains our final solution for the Deep Learning in Practice course. Our project tackles the Airbus Ship Detection Challenge on Kaggle, focusing on detecting ships in satellite images using a robust Two-Stage Deep Learning Pipeline.
In addition to the research notebooks, we have deployed the model as a Full-Stack Web Application allowing users to upload satellite images and receive real-time detection overlays.
Team Name: 99_Problems_but_a_Batch_Aint_One
| Name | Neptun Code | Role |
|---|---|---|
| Bologa Eduard | DAM4AV | Documentation, GitHub integration, pipeline architecture design, final report |
| Kozma Szabolcs AndrΓ‘s | TKGQWN | Data loading optimization, loss function tuning (Tversky), metric implementation |
| PΓΌnkΓΆsti GyΓΆrk | VCV3N5 | Model training (Classifier & Segmenter), inference pipeline, visualizations, Dockerization |
Due to the extreme class imbalance (most satellite images contain only sea), a single segmentation model often produces false positives (βghost shipsβ) on waves or clouds. We solved this with a two-step approach:
We implemented several key optimizations to improve performance and training speed:
| Metric | Score | Description |
|---|---|---|
| F2 Score | 0.8977 | (Primary Metric) Harmonic mean of precision and recall, weighing recall higher. |
| Precision | 81.58% | Percentage of predicted ships that are actually ships. |
| Recall | 92.08% | Percentage of real ships that were successfully detected. |
We have containerized the application using Docker for easy deployment.
best_classifier.pth and best_ship_segmenter.pth).git clone https://github.com/99ProblemsButABatchAint1/Ship_Detection.git
cd Ship_Detection
.pth files into the backend/models/ directory.docker compose up --build
(Note: If you run into network errors on University WiFi/VPN, try disconnecting the VPN or setting the MTU in Docker settings to 1300).
βββ LICENSE
βββ notebooks
βΒ Β βββ milestone1.ipynb
βΒ Β βββ milestone2.ipynb
βΒ Β βββ milestone.ipynb
βΒ Β βββ notebook.ipynb
βΒ Β βββ ship_detection_work_notebook
βΒ Β βββ ship_detection_work_notebook.ipynb
βΒ Β βββ unet_ship_detection.pth
βββ project
βΒ Β βββ backend
βΒ Β βΒ Β βββ app
βΒ Β βΒ Β βΒ Β βββ deps.py
βΒ Β βΒ Β βΒ Β βββ main.py
βΒ Β βΒ Β βΒ Β βββ __pycache__
βΒ Β βΒ Β βΒ Β βΒ Β βββ deps.cpython-313.pyc
βΒ Β βΒ Β βΒ Β βΒ Β βββ main.cpython-313.pyc
βΒ Β βΒ Β βΒ Β βββ routes
βΒ Β βΒ Β βΒ Β βΒ Β βββ detect.py
βΒ Β βΒ Β βΒ Β βΒ Β βββ health.py
βΒ Β βΒ Β βΒ Β βΒ Β βββ __pycache__
βΒ Β βΒ Β βΒ Β βΒ Β βββ detect.cpython-313.pyc
βΒ Β βΒ Β βΒ Β βΒ Β βββ health.cpython-313.pyc
βΒ Β βΒ Β βΒ Β βββ services
βΒ Β βΒ Β βΒ Β βββ detector.py
βΒ Β βΒ Β βΒ Β βββ detector_stub.py
βΒ Β βΒ Β βΒ Β βββ __pycache__
βΒ Β βΒ Β βΒ Β βββ detector.cpython-313.pyc
βΒ Β βΒ Β βΒ Β βββ detector_stub.cpython-313.pyc
βΒ Β βΒ Β βββ Dockerfile
βΒ Β βΒ Β βββ models
βΒ Β βΒ Β βΒ Β βββ best_classifier.pth
βΒ Β βΒ Β βΒ Β βββ best_ship_segmenter.pth
βΒ Β βΒ Β βββ __pycache__
βΒ Β βΒ Β βββ requirements
βΒ Β βββ docker-compose.yml
βΒ Β βββ Dockerfile.dev
βΒ Β βββ eslint.config.js
βΒ Β βββ index.html
βΒ Β βββ package.json
βΒ Β βββ package-lock.json
βΒ Β βββ public
βΒ Β βΒ Β βββ vite.svg
βββ README.md
βββ final_milestone_documentation.pdf
βββ src
βΒ Β βββ best_classifier.pth
βΒ Β βββ best_ship_segmenter.pth
βΒ Β βββ dataset.py
βΒ Β βββ inference.py
βΒ Β βββ losses.py
βΒ Β βββ metrics.py
βΒ Β βββ model.py
βΒ Β βββ __pycache__
βΒ Β βΒ Β βββ dataset.cpython-313.pyc
βΒ Β βΒ Β βββ losses.cpython-313.pyc
βΒ Β βΒ Β βββ metrics.cpython-313.pyc
βΒ Β βΒ Β βββ model.cpython-313.pyc
βΒ Β βΒ Β βββ rle.cpython-313.pyc
βΒ Β βΒ Β βββ transforms.cpython-313.pyc
βΒ Β βββ rle.py
βΒ Β βββ train.py
βΒ Β βββ transforms.py
βΒ Β βββ tune_thresholds.py
βββ unet_ship_detection.pth
βββ weights
βββ best_classifier.pth
βββ best_ship_segmenter.pth