Skip to content

aleenh/rcnn-ml-project

Repository files navigation

Object Detection with Classical Classifiers

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.

projet_2026.pdf


Structure du projet

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

Récupération des données

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 :

  1. images.zip — à décompresser, avec toutes les images placées dans coco_filtered/images/ :

    coco_filtered/images/000000000009.jpg
    coco_filtered/images/000000000025.jpg
    ...
    
  2. features_train.npz et features_val.npz — à placer directement dans coco_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.


Installation

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.txt

Si pycocotools échoue à s'installer à cause d'une erreur de compilation, utiliser cette alternative :

pip install faster-coco-eval

Utilisation

Exé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.py

Chaque 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.


Description des tâches

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

Auteur

Projet réalisé dans le cadre du cours Fundamentals of Machine Learning — Université Jean Monnet (UJM), 2025/2026.

About

Pipeline de détection d'objets basé sur R-CNN utilisant des classificateurs classiques (SVM, Decision Tree) sur des features extraites de régions d'images COCO. Comprend la gestion du déséquilibre des classes, la comparaison de kernels SVM et l'analyse de la profondeur des arbres de décision.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages