Projet final — Fundamentals of Machine Learning 2025/2026 (UJM)
Ce dépôt contient le code du projet final du cours Fundamentals of Machine Learning. L'objectif est d'implémenter les composants de classification et d'évaluation d'un pipeline R-CNN (Region-based Convolutional Neural Network) en utilisant des SVM et des Decision Trees à la place d'un réseau de neurones profond pour la classification des régions.
project/
├── coco_filtered/
│ ├── images/ ← à télécharger depuis Moodle et décompresser ici
│ ├── regions.csv ← annotations ground truth
│ ├── selected_images.csv ← liste des images sélectionnées avec split train/val
│ ├── features_train.npz ← à télécharger depuis Moodle
│ └── features_val.npz ← à télécharger depuis Moodle
├── utils/
│ ├── __init__.py
│ ├── nms.py ← fourni, à ne pas modifier
│ └── eval_detection.py ← fourni, à ne pas modifier
├── outputs/
│ ├── task1/ ← résultats sauvegardés par task1.py
│ ├── task2/ ← résultats sauvegardés par task2.py
│ ├── task3/ ← résultats sauvegardés par task3.py
│ └── task4/ ← résultats sauvegardés par task4.py
├── extract_features.py ← fourni, à exécuter une seule fois (Tâche 2a uniquement)
├── task1.py ← Tâche 1 : baseline SVM et Decision Tree
├── task2.py ← Tâche 2 : gestion du déséquilibre des classes
├── task3.py ← Tâche 3 : comparaison des kernels SVM
├── task4.py ← Tâche 4 : analyse de la profondeur du Decision Tree
├── compare.py ← comparaison des résultats de toutes les tâches
├── requirements.txt
└── README.md
Les fichiers de données étant volumineux, ils ne sont pas versionnés dans ce dépôt. Ils sont disponibles sur Moodle → Final Project → Data.
Deux éléments à télécharger :
-
images.zip— à décompresser, avec toutes les images placées danscoco_filtered/images/:coco_filtered/images/000000000009.jpg coco_filtered/images/000000000025.jpg ... -
features_train.npzetfeatures_val.npz— à placer directement danscoco_filtered/:coco_filtered/features_train.npz coco_filtered/features_val.npz
ℹ️ Il n'est pas nécessaire d'exécuter
extract_features.py, sauf si vous traitez la Tâche 2a (augmentation au niveau des régions), qui nécessite de relancer l'extraction des features avec des crops augmentés.
Créer un environnement virtuel et installer les dépendances :
python -m venv venv
source venv/bin/activate # sous Windows : venv\Scripts\activate
pip install -r requirements.txtSi pycocotools échoue à s'installer à cause d'une erreur de compilation, utiliser cette alternative :
pip install faster-coco-evalExécuter chaque script depuis la racine du projet :
python task1.py --data_dir ./coco_filtered
python task2.py --data_dir ./coco_filtered
python task3.py --data_dir ./coco_filtered
python task4.py --data_dir ./coco_filtered
python compare.pyChaque script sauvegarde automatiquement ses résultats dans le sous-dossier correspondant de outputs/. Exécuter compare.py une fois toutes les tâches terminées pour générer la comparaison finale entre les modèles.
| Tâche | Description |
|---|---|
| Task 1 | Baseline : classification des régions avec un SVM et un Decision Tree |
| Task 2 | Gestion du déséquilibre des classes (ex. class weighting, oversampling, augmentation) |
| Task 3 | Comparaison de différents kernels SVM (linéaire, RBF, polynomial, etc.) |
| Task 4 | Analyse de l'impact de la profondeur du Decision Tree sur les performances |
Projet réalisé dans le cadre du cours Fundamentals of Machine Learning — Université Jean Monnet (UJM), 2025/2026.