Skip to content

About

Computer vision project to detect safety equipments in both construction and laboratory

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SafetyVision — Détection d'Équipements de Protection Individuelle (EPI)

Projet de Deep Learning for Computer Vision — SISE 2025/2026

Détection automatique d'équipements de protection individuelle (EPI) par finetuning de YOLOv8n sur un dataset annoté de scènes industrielles et de chantier.


Contexte

L'objectif est de détecter automatiquement 5 types d'EPI dans des images de scènes industrielles ou de chantier. Le modèle est entraîné par transfert d'apprentissage (COCO → EPI) sur un petit dataset de ~400 images.


Structure du projet

SISE_Safety_Vision_Detection/
├── SafetyVision/               # Dataset (format YOLOv8)
│   ├── train/                  # 358 images + annotations
│   ├── valid/                  # 19 images + annotations
│   ├── test/                   # 30 images + annotations
│   └── data.yaml               # Configuration Roboflow
├── notebook1_training.ipynb    # EDA + entraînement + validation
├── notebook2_evaluation.ipynb  # Évaluation test + analyse qualitative
├── model/
│   └── best_model.pt           # Meilleur modèle (généré après notebook 1)
├── graph/                      # Figures sauvegardées (générées à l'exécution)
└── runs/detect/                # Logs et poids Ultralytics (générés à l'exécution)

Dataset — SafetyVision v2

  • Source : Roboflow Universe — Licence CC BY 4.0
  • 407 images au total (358 train / 19 val / 30 test)
  • Format : YOLOv8 XYWH normalisé
  • Preprocessing Roboflow : auto-orientation EXIF + resize 512×512 + augmentation de luminosité ±15%
ID Classe Description Annotations (train)
0 Gloves Gants de protection 350
1 Safety-Helmet Casque de chantier 480
2 Safety-Vest Gilet de sécurité fluorescent 327
3 lab-coat Blouse de laboratoire 177
4 safety_goggles Lunettes de protection 149

Architecture — YOLOv8n

Modèle one-stage anchor-free, pré-entraîné sur COCO (118k images, 80 classes).

Innovations clés par rapport à YOLOv5 :

  • Blocs C2f : meilleur flux de gradient qu'un bloc C3 classique
  • Tête découplée : branches séparées pour classification et régression
  • Anchor-Free + DFL Loss : prédit la distribution de distance aux bords — pas de tuning d'ancres
  • Neck PAN-FPN : fusion multi-échelle pour détecter gants (petits) et gilets (grands)

Pourquoi la variante nano (3.2M paramètres) ? Avec 358 images d'entraînement, une capacité faible est préférable pour éviter le sur-apprentissage. YOLOv8m (25.9M params) sur-apprendrait inévitablement sur un tel dataset.


Hyperparamètres d'entraînement

Hyperparamètre Valeur Justification
epochs 100 Convergence assurée par early stopping (patience=20)
imgsz 512 Correspond à la résolution native du dataset
batch 16 Compromis mémoire / stabilité du gradient
optimizer AdamW Convergence plus rapide que SGD sur petit dataset
lr0 0.001 Faible pour préserver les poids pré-entraînés
lrf 0.01 Décroissance cosine : lr_final = lr0 × lrf
warmup_epochs 3 Montée progressive du LR
patience 20 Early stopping si pas d'amélioration pendant 20 epochs
weight_decay 0.0005 Régularisation L2 contre le sur-apprentissage
mosaic 1.0 Augmentation mosaïque (4 images collées)
mixup 0.1 Interpolation légère pour la robustesse

Résultats

Validation (meilleur modèle)

Métrique Valeur
Précision (P) 0.8041
Rappel (R) 0.7663
mAP@0.50 0.8400
mAP@0.50:0.95 0.6205
Classe P R mAP@0.50 mAP@0.50:0.95
Gloves 0.888 0.440 0.637 0.446
Safety-Helmet 0.951 0.876 0.966 0.641
Safety-Vest 0.928 0.682 0.771 0.581
lab-coat 0.699 1.000 0.995 0.865
safety_goggles 0.555 0.833 0.831 0.570

Test (évaluation finale)

Métrique Valeur
Précision (P) 0.8768
Rappel (R) 0.6498
F1-Score 0.7464
mAP@0.50 0.7667
mAP@0.50:0.95 0.4867
Classe P R mAP@0.50 F1
Gloves 0.888 0.208 0.452 0.337
Safety-Helmet 0.959 0.822 0.912 0.885
Safety-Vest 0.765 0.692 0.778 0.727
lab-coat 0.873 0.526 0.706 0.657
safety_goggles 0.900 1.000 0.986 0.947

Observations :

  • Safety-Helmet et safety_goggles sont bien détectés (mAP > 0.90)
  • Gloves est la classe la plus difficile : recall faible dû à la petite taille et aux occlusions
  • lab-coat bénéficie du transfer learning (formes similaires à des vêtements dans COCO)

Notebooks

notebook1_training.ipynb

  1. Installation des dépendances
  2. Exploration du dataset (EDA) : distribution des classes, visualisation des annotations, tailles des bounding boxes
  3. Justification de l'architecture YOLOv8n et des hyperparamètres
  4. Entraînement par transfert d'apprentissage depuis COCO
  5. Analyse des courbes d'apprentissage (loss, mAP, P, R)
  6. Métriques sur le jeu de validation par classe
  7. Recherche du seuil de confiance optimal (maximisation du F1 macro)
  8. Visualisation des prédictions sur la validation
  9. Sauvegarde du meilleur modèle (model/best_model.pt)

notebook2_evaluation.ipynb

  1. Chargement du meilleur modèle
  2. Évaluation quantitative sur le jeu de test (P, R, F1, mAP@0.50, mAP@0.50:0.95)
  3. Matrice de confusion et courbes PR / F1
  4. Analyse qualitative : cas réussis (recall élevé) et erreurs (GT manqués / faux positifs)
  5. Vue d'ensemble des 30 images de test
  6. Analyse TP / FP / FN par classe
  7. Distribution des scores de confiance
  8. Analyse du seuil optimal sur le jeu de test
  9. Rapport final

Installation

pip install ultralytics==8.3.0 matplotlib seaborn pandas numpy PyYAML

Prérequis hardware : GPU recommandé (testé sur NVIDIA RTX 4070 SUPER). Fonctionne aussi sur CPU (plus lent) et Apple MPS.


Utilisation

Exécuter les notebooks dans l'ordre :

1. notebook1_training.ipynb   → génère model/best_model.pt
2. notebook2_evaluation.ipynb → évaluation complète sur le jeu de test

Les graphiques sont sauvegardés dans graph/ et les logs Ultralytics dans runs/detect/.


Licence

Le dataset SafetyVision est distribué sous licence CC BY 4.0 (Roboflow Universe). Le code des notebooks est fourni à des fins pédagogiques dans le cadre du cours SISE 2025/2026.

About

Computer vision project to detect safety equipments in both construction and laboratory

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages