Skip to content

Computer Vision project for segmenting food instances and estimating their nutritional values ​​via image analysis.

Notifications You must be signed in to change notification settings

P4ST4S/ai_computer_vision

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍎 NutriScan - Segmentation d'Aliments & Estimation Nutritionnelle

Projet de Computer Vision pour la segmentation d'instances d'aliments et l'estimation de leurs valeurs nutritionnelles via analyse d'images.

Tester l'application en ligne : https://app-computer-vision.vercel.app/

📊 Résultats Clés

Modèle actuel : YOLOv8m-seg Fusion (32 classes)

  • Modèle : YOLOv8m-seg fine-tuné sur dataset fusionné
  • Performance : mAP50 = 0.672, mAP50-95 = 0.565 (Mask)
  • Dataset : FoodSeg103 + UEC-FoodPix (15 994 images, 32 classes alimentaires)
  • Entraînement : 150 époques, batch=16

Ancien modèle : YOLOv8m-seg FoodSeg103 (12 classes)

  • Performance : mAP50 = 0.617, mAP50-95 = 0.511 (Mask)
  • Dataset : FoodSeg103 (4 526 images, 12 classes)

Gain Fusion : +8.9% mAP50, +10.6% mAP50-95, 2.7x plus de classes, 3.5x plus de données.

  • Stack ML : PyTorch + YOLOv8 + OpenCV + MLflow
  • Stack App : Next.js 16.1 + React 19.2 + ONNX Runtime Web 1.24 + Tailwind CSS 4

🖼️ Aperçu Visuel

Ancien modèle (12 classes) Modèle Fusion (32 classes)
Ancien Fusion

Comparaison des prédictions entre l'ancien modèle FoodSeg103 et le nouveau modèle Fusion

🚀 Application Web (Edge AI)

L'application NutriScan fonctionne entièrement dans le navigateur de l'utilisateur. Il n'y a aucun serveur backend — le modèle ONNX est chargé et exécuté côté client grâce à ONNX Runtime Web (WebAssembly).

Fonctionnalités :

  • Caméra temps réel et upload d'image
  • Segmentation d'instances alimentaires (32 classes)
  • Estimation nutritionnelle automatique (calories, protéines, glucides, lipides, fibres)
  • Suppression manuelle des faux positifs

Architecture :

Navigateur (client)
├─ Main Thread (React / Next.js)
│   ├─ Capture caméra / Upload image
│   ├─ Affichage résultats (cards + nutrient bars)
│   └─ Suppression manuelle des faux positifs
└─ Web Worker (inference.worker.ts)
    ├─ ONNX Runtime WASM (best.onnx)
    ├─ NMS per-class + cross-class
    ├─ Masques segmentation (160×160 → 640×640)
    └─ Calcul nutritionnel (pixels → cm² → g → kcal)

URL : https://app-computer-vision.vercel.app/

📚 Documentation Complète

🌐 Version Web (Recommandée)

Documentation interactive disponible en ligne : https://documentation-computer-vision.vercel.app/

📄 Version Locale

Pour la documentation locale, consulter : docs/README.md

La documentation complète comprend :

  • Vue d'ensemble et proposition de valeur
  • Analyse technique approfondie (architecture YOLOv8, pipeline de prétraitement)
  • Architecture logicielle (Python + Edge AI)
  • Guide d'installation et reproduction
  • Résultats expérimentaux détaillés
  • Limitations et travaux réalisés/futurs
  • Annexes et ressources

🛠️ Quick Start

Entraînement du modèle

# Installation
python3 -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt

# Préparation du dataset fusionné (32 classes)
jupyter notebook notebooks/02_data_fusion_and_cleaning.ipynb

# Entraînement du modèle Fusion
jupyter notebook notebooks/03_train_yolov8_fusion.ipynb

# Visualiser les métriques MLflow
mlflow ui

Application Web

cd app
pnpm install
pnpm dev

Auteur : Antoine ROSPARS, Yann LEBIB, Jean-Pierre JANOPOULOS
Module : G-AIA-910 - Computer Vision
Date : Janvier - Février 2026

About

Computer Vision project for segmenting food instances and estimating their nutritional values ​​via image analysis.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages