Vision par Ordinateur · API Flask · JWT

VisionRec

Classification & Analyse IA

Plateforme de tri intelligent des déchets avec authentification JWT, historique utilisateur, et analyse visuelle enrichie (CNN + LLaVA)

Flask Flask-RESTful TensorFlow/Keras PostgreSQL SQLAlchemy JWT Swagger

Vue d'ensemble

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émonstration

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.

Architecture

🔌 Backend Flask

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.

🧠 Modèle CNN

Chargement au démarrage de `waste_classifier_model.h5` (TensorFlow/Keras). Classes cibles : électroniques, automobiles, batterie, verre, ampoules, plastiques, organiques, papier, métalliques.

🗄️ Données & ORM

SQLAlchemy + Alembic pour la persistance (historique des prédictions par utilisateur). Config PostgreSQL via variables d'environnement et migrations incluses.

🖼️ Analyse avancée

Pipeline LLaVA disponible pour `/analyze` et `/remote/analyze`, permettant une description textuelle détaillée à partir d'une image ou d'une URL distante.

Endpoints REST

🔐 Auth

`/auth/login`, `/auth/register`, `/auth/logout`, `/auth/ressetpass`, `/auth/confirm/passwordchange`, `/auth/changepassword`.

🧪 Classification

`/waste/classify` (upload multipart, JWT) renvoie la classe prédite + score. `/waste/history` expose l'historique utilisateur (JWT).

🛰️ Analyse IA

`/analyze` (fichier) et `/remote/analyze` (URL) exploitent le processeur LLaVA avec paramètres `prompt`, `max_tokens`, `temperature`.

❤️ Santé

`/health` et `/api` pour vérifier l'état de l'API et la disponibilité du service.

Frontend statique

🎨 UI Démo

Page principale servie depuis `app/static/templates/index.html` : login/register, upload d'image, affichage JSON, switch clair/sombre, copie de token, déconnexion.

⚡ Page rapide

`app/static/demo/index.html` pour tester rapidement les endpoints via fetch sans authentification préalable.

🚦 Erreurs brandées

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.

Modèle & Données

📚 Dataset

Jeu Kaggle Waste Classification (9 classes). Prétraitement : redimensionnement, normalisation; split train/val décrit dans le notebook `models/notebooks/presentation_notebook.ipynb`.

🧰 Notebook

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.

🔒 Sécurité

JWT longue durée (15 jours) et validations côté auth. Alignement des extensions autorisées entre backend et frontend (`ALLOWED_EXTENSIONS`).

Captures d'écran

Page de connexion VisionRec
Classification automobile
Historique des prédictions
Documentation Swagger

Ressources

Envie de déployer VisionRec ou d'adapter le modèle à vos données ?