Ce projet a été réalisé par :
Nous tenons à remercier l'équipe pédagogique de TSE pour leur accompagnement
Avez-vous déjà fixé un marshmallow en vous demandant : "Mais quel est son degré exact de cuisson ??" Nous aussi ! C'est pourquoi nous avons consacré des années de recherche intensive (bon, peut-être quelques semaines) à résoudre ce problème crucial qui empêchait l'humanité d'avancer.
MallowMeter est né d'une question existentielle : pourquoi certains marshmallows sont parfaitement dorés tandis que d'autres finissent carbonisés comme s'ils avaient tenté de voyager trop près du soleil ? Notre équipe de "mallowlogues" a donc développé un système révolutionnaire capable de classifier automatiquement les marshmallows en 4 catégories cruciales (de 0 "blanc comme neige" à 3 "carbonisé").
En utilisant des algorithmes de computer vision plus sophistiqués que nécessaire, nous analysons méticuleusement la couleur et la texture des marshmallows. Pourquoi ? Parce que la science des marshmallows est une affaire sérieusement pas sérieuse !
Notre mission : sauver les soirées camping d'une catastrophe marshmallowesque et offrir enfin à l'humanité l'outil qu'elle ignorait désespérément attendre.
- Python 3.7 ou supérieur
- Pour les librairies, voir
requirements.txt
- Clonez ce dépôt :
git clone https://github.com/ASionville/MallowMeter.git
cd MallowMeter- Installez les dépendances :
pip install -r [`requirements.txt`](requirements.txt)python verif_bdd.pyCette commande analysera la base de données et générera des visualisations des caractéristiques extraites.
Le programme principal supporte désormais les arguments en ligne de commande, ce qui permet de configurer facilement les tests sans modifier le code source.
python main.py --model [knn|cnn] --seed INT --ratio_test FLOAT --log--model: Spécifie le modèle à utiliser (knn ou cnn)--seed: Graine pour la reproductibilité des résultats (défaut: 42)--ratio_test: Proportion des données pour l'ensemble de test (défaut: 0.2)--log: Active les logs détaillés pendant l'exécution
python main.py --model knn --seed 42 --ratio_test 0.2 --k 5 --force_recomputeOptions spécifiques au KNN:
--k: Nombre de voisins à considérer (défaut: 5)--force_recompute: Force le recalcul des caractéristiques même si elles existent déjà
python main.py --model cnn --seed 42 --ratio_test 0.2 --enrichissement 10 --num_epochs 50 --patience 5 --min_delta 0.001 --batch_size 16 --learning_rate 0.001Options spécifiques au CNN:
--enrichissement: Niveau d'enrichissement des données (défaut: 10)--num_epochs: Nombre maximum d'époques d'entraînement (défaut: 50)--patience: Nombre d'époques sans amélioration avant arrêt (défaut: 5)--min_delta: Amélioration minimale considérée significative (défaut: 0.001)--batch_size: Taille des batchs (défaut: 16)--learning_rate: Taux d'apprentissage (défaut: 0.001)
Exécuter KNN avec 7 voisins sur 30% de données de test:
python main.py --model knn --k 7 --ratio_test 0.3Exécuter CNN avec un fort enrichissement et plus de patience:
python main.py --model cnn --enrichissement 30 --patience 10 --num_epochs 100Le modèle KNN utilise des caractéristiques extraites des images en Lab :
- Skewness b : Asymétrie de la composante b
- Écart-type L : Variabilité de la composante L
- Moyenne b : Moyenne de la composante b
- Écart-type b : Variabilité de la composante b
- Contraste b : Contraste de la composante b
- Homogénéité L : Homogénéité de la composante L
- Homogénéité b : Homogénéité de la composante b
- Entropie L : Mesure de désordre de la composante L
- Entropie b : Mesure de désordre de la composante b
- Énergie L : Uniformité de la composante L
- Énergie b : Uniformité de la composante b
Architecture :
- 4 couches de convolution avec batch normalization et max pooling
- 3 couches fully connected avec dropout pour éviter le surapprentissage
- Entrée : images converties en espace colorimétrique Lab
- Early stopping pour optimiser l'apprentissage
Les résultats sont générés dans les dossiers :
evaluation/boites_a_moustaches/: Visualisations des caractéristiques extraitesevaluation/knn/: Résultats du KNNevaluation/cnn/: Résultats du CNNevaluation/results_knn.csvetevaluation/results_cnn.csv: Résultats quantitatifs
Les performances varient selon les paramètres utilisés :
- KNN : Les meilleures performances sont généralement obtenues avec k=5
- CNN : L'enrichissement des données améliore considérablement les performances, surtout avec un enrichissement de niveau 20 ou 30
Nos meilleurs résultats sont les suivants :
- KNN : 76% de bonnes prédictions
- CNN : 87% de bonnes prédictions
