Ce projet utilise MobileNetV2 pour une tâche de détection de masques faciaux à partir d'images. Nous appliquons le transfert d'apprentissage en utilisant un modèle pré-entraîné sur ImageNet pour classifier les images en deux catégories : compliant (avec masque) et non-compliant (sans masque).
- Transfert d'apprentissage : Utilisation de MobileNetV2 pour tirer parti des connaissances acquises sur ImageNet.
- Sous-échantillonnage du dataset : Possibilité de travailler avec un sous-ensemble des données (par exemple, 33 % du dataset de base).
- Enregistrement des résultats :
- Fichiers JSON : Les métriques d'entraînement (perte, précision, temps, etc.) sont stockées dans
training_metrics.json. - Graphiques : Les courbes de perte (loss) et de précision (accuracy) sont sauvegardées au format PNG/HTML dans le dossier
training. - Modèle sauvegardé : Les poids du modèle sont enregistrés dans un fichier
.pthavec un nom horodaté.
- Fichiers JSON : Les métriques d'entraînement (perte, précision, temps, etc.) sont stockées dans
Le dataset utilisé pour l'entraînement et les tests est contenu dans le dossier SF-MASK-padded. Ce dataset a subi des modifications spécifiques pour améliorer les performances des modèles :
-
Structure : Le dataset est organisé en deux sous-dossiers :
compliant/: Contient les images de personnes portant correctement un masque.non-compliant/: Contient les images de personnes ne portant pas de masque ou le portant de manière incorrecte.
-
Préprocessing effectué :
- Toutes les images ont été préalablement redimensionnées et centrées pour faciliter leur traitement par les modèles.
- Les marges autour des objets principaux ont été ajustées pour une meilleure homogénéité dans la taille et l'alignement.
Dans le notebook fourni avec ce projet, seul le dataset SF-MASK-padded est utilisé pour :
- L'entraînement : Les images sont transformées et utilisées pour entraîner le modèle MobileNetV2.
- Les tests : Les images du même dataset sont utilisées pour valider les performances du modèle.
- Python 3.10+
- Conda pour la gestion des dépendances
-
Clonez le dépôt GitHub :
git clone git@github.com:WacimN/SF-mask-detection.git cd SF-mask-detection -
Configurez l'environnement avec Conda :
conda env create -f environment.yml conda activate sf-mask-detection
-
Assurez-vous que PyTorch est installé correctement avec le GPU activé (si disponible).
-
Exécutez l'entraînement avec un sous-ensemble des données :
- Par défaut, 33 % des images du dataset sont utilisées pour l'entraînement et le test.
- Les tailles des sous-ensembles sont affichées automatiquement.
Exemple de configuration :
proportion = 0.33 # Pourcentage du dataset à utiliser
-
À la fin de l'entraînement, vous obtiendrez :
- Fichier des poids :
mobilenetv2_trained_<date_heure>.pth - Métriques d'entraînement dans
training_metrics.json - Graphiques de perte et précision dans
training/
- Fichier des poids :
Pour tester une image, exécutez le script de prédiction dans la partie ## Prediction by hand du Notebook.
Pour chaque session d'entraînement, les fichiers suivants sont créés avec un horodatage unique :
- Graphiques : Courbes de perte et précision (PNG/HTML)
- Poids du modèle : Fichier
.pthcontenant les paramètres entraînés - Fichier JSON : Résumé des métriques d'entraînement avec détails (nombre d'epochs, temps total, etc.)
Les contributions sont les bienvenues ! Si vous trouvez des bugs ou souhaitez proposer des améliorations, ouvrez une issue ou soumettez une pull request.