Détection de zones brûlées sur images satellites

Présentation du projet
Ce projet a pour objectif de développer un modèle de détection d’objets capable d’identifier et de localiser des zones brûlées sur des images satellites.
L’idée est de détecter automatiquement les zones potentiellement touchées par un incendie à partir d’images annotées afin de :
- suivre l’évolution des incendies,
- faciliter l’analyse post-incendie,
- contribuer à la prévention,
- explorer un cas concret d’usage de la vision par ordinateur.
Entrée / Sortie
Entrée
- Images satellites
Sortie attendue
- Bounding boxes autour des zones brûlées détectées
Objectif technique
Ce projet relève de la vision par ordinateur et plus précisément de la détection d’objets.
Contrairement à une simple classification, le modèle doit également localiser précisément les zones brûlées dans l’image.
Structure du projet
.
├── data/
│ ├── _annotations.coco.json
│ ├── clean_annotations.coco.json
│ └── images/
│
├── data_prepared/
│ ├── train/
│ │ ├── images/
│ │ └── labels/
│ ├── val/
│ │ ├── images/
│ │ └── labels/
│ ├── test/
│ │ ├── images/
│ │ └── labels/
│ └── data.yaml
│
├── prepare_data/
│ ├── data_loader.py
│ ├── data_explorer.py
│ └── data_cleaner.py
│
├── evaluation/
│ ├── comparaisons_models.md
│ └── metrics_analysis.md
│
├── pipeline.py
├── data_preparation.py
├── train.py
├── train_mlflow.py
├── mlflow.db
└── README.md
Dataset
Le dataset contient : - des images satellites, - un fichier d’annotations au format COCO JSON.
Les annotations permettent de localiser les zones brûlées via des bounding boxes.
Nettoyage des données
Étapes réalisées :
- lecture du fichier COCO,
- vérification des images et annotations,
- suppression des images sans annotation,
- correction des bounding boxes invalides,
- génération d’un dataset propre,
- conversion au format YOLO.
Fichier généré :
data/clean_annotations.coco.json
Préparation YOLO
Le dataset est converti au format YOLO :
classe x_center y_center width height
Le dataset est séparé en : - train - validation - test
Modèles utilisés
YOLOv8n
Version légère et rapide.
YOLOv8s
Version plus robuste avec de meilleures performances.
Suivi MLflow
MLflow est utilisé pour : - suivre les expériences, - comparer les essais, - enregistrer les hyperparamètres, - sauvegarder les métriques et artefacts.
Artefacts suivis : - results.csv - results.png - confusion_matrix.png - best.pt - last.pt
Métriques d’évaluation
- Precision
- Recall
- IoU
- mAP50
- mAP50-95
Technologies utilisées
- Python
- YOLOv8
- Ultralytics
- OpenCV
- NumPy
- Pandas
- MLflow
- Matplotlib
Lancer le pipeline
Nettoyage des données
python pipeline.py
Préparation du dataset YOLO
python data_preparation.py
Entraînement simple
python train.py
Entraînement avec MLflow
python train_mlflow.py
Interface MLflow
mlflow ui --backend-store-uri sqlite:///mlflow.db
Puis ouvrir :
http://127.0.0.1:5000
Conclusion
Ce projet couvre une chaîne complète de vision par ordinateur :
- nettoyage des données,
- préparation YOLO,
- entraînement de modèles,
- évaluation des performances,
- suivi expérimental avec MLflow.
Le projet montre également l’importance de la qualité des données dans les performances finales d’un modèle de détection.
Liens
-
Dépôt GitLab :
https://gitlab.com/ahmada7602212/detection-incendies/-/tree/main?ref_type=heads -
Portfolio :
https://ahmadaboalola.com/
Auteur
Ahmad Abo-Alola — Student Project (AI Developer Training)