Plateforme de tri intelligent des déchets avec authentification JWT, historique utilisateur, et analyse visuelle enrichie (CNN + LLaVA)
VisionRec combine une API Flask sécurisée et un modèle de vision par ordinateur entraîné sur le dataset Kaggle Waste Classification. Les utilisateurs s'authentifient via JWT, téléversent une image (multipart), obtiennent la classe prédite (9 catégories de déchets) et consultent leur historique persistant en base PostgreSQL. Une page statique fournie sert de démonstrateur UI avec upload, login/register et toasts temps réel.
Découvrez VisionRec en action sur la démo publique : téléversez une image de déchet et obtenez une classification instantanée, accompagnée d'une analyse IA détaillée grâce à LLaVA. Explorez les fonctionnalités d'authentification, de gestion d'historique et d'analyse avancée dans une interface intuitive.
Routes organisées avec Flask-RESTful, Swagger pour la documentation, CORS ouvert pour la démo, gestion d'erreurs custom (400/401/404/500) avec rendu JSON ou pages HTML brandées.
Chargement au démarrage de `waste_classifier_model.h5` (TensorFlow/Keras). Classes cibles : électroniques, automobiles, batterie, verre, ampoules, plastiques, organiques, papier, métalliques.
SQLAlchemy + Alembic pour la persistance (historique des prédictions par utilisateur). Config PostgreSQL via variables d'environnement et migrations incluses.
Pipeline LLaVA disponible pour `/analyze` et `/remote/analyze`, permettant une description textuelle détaillée à partir d'une image ou d'une URL distante.
`/auth/login`, `/auth/register`, `/auth/logout`, `/auth/ressetpass`, `/auth/confirm/passwordchange`, `/auth/changepassword`.
`/waste/classify` (upload multipart, JWT) renvoie la classe prédite + score. `/waste/history` expose l'historique utilisateur (JWT).
`/analyze` (fichier) et `/remote/analyze` (URL) exploitent le processeur LLaVA avec paramètres `prompt`, `max_tokens`, `temperature`.
`/health` et `/api` pour vérifier l'état de l'API et la disponibilité du service.
Page principale servie depuis `app/static/templates/index.html` : login/register, upload d'image, affichage JSON, switch clair/sombre, copie de token, déconnexion.
`app/static/demo/index.html` pour tester rapidement les endpoints via fetch sans authentification préalable.
Pages 400/401/404/500 stylées pour la démo publique et les réponses HTML lorsqu'une requête n'est pas acceptée.
Jeu Kaggle Waste Classification (9 classes). Prétraitement : redimensionnement, normalisation; split train/val décrit dans le notebook `models/notebooks/presentation_notebook.ipynb`.
Notebook d'exploration, d'entraînement et de visualisation (matrices de confusion, courbes d'apprentissage, exemples prédits). Sert de référence pour réentraîner et exporter un nouveau modèle.
JWT longue durée (15 jours) et validations côté auth. Alignement des extensions autorisées entre backend et frontend (`ALLOWED_EXTENSIONS`).
Envie de déployer VisionRec ou d'adapter le modèle à vos données ?