Skip to content

Taws-Espol/FoodTrack-EC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FoodTrack-EC: Módulo de detección de platos (YOLO / VGG / RAG / GPT)

Este directorio contiene el motor de visión y análisis inteligente utilizado por FoodTrack-EC para detectar automáticamente platos ecuatorianos, clasificarlos, obtener su información nutricional real y generar un análisis contextual con IA.

El módulo integra cuatro componentes principales:

  • YOLOv11 → detección de platos en la imagen.
  • VGG16 → clasificación refinada del plato.
  • RAG (CSV + búsqueda inteligente) → obtención de macros reales.
  • GPT → análisis nutricional explicado en lenguaje natural.

📂 Estructura del Proyecto

  • models/yolo/best.pt
    Modelo YOLO entrenado para detectar los 21 platos ecuatorianos.

  • models/vgg/vgg16_food_ec_best_tf.h5
    Clasificador basado en VGG16 para reconocer platos en recortes o imágenes directas.

  • src/pipeline/api.py
    Pipeline principal que une YOLO → VGG → RAG → GPT y devuelve un JSON completo.

  • src/rag/
    Motor RAG que usa CSV + fuzzy matching + alias para extraer macros reales.

  • src/common/paths.py
    Rutas internas del proyecto (modelos, datos, outputs temporales).

  • data/nutrition/*.csv
    Datasets nutricionales procesados utilizados por el motor RAG.


🚀 Guía de Integración para Backend

Estas son las funciones principales que deben usar los servicios REST (Django/FastAPI).

1. Pipeline Completo (YOLO → VGG → RAG → GPT)

Ubicación: src/pipeline/api.py

Este pipeline procesa cualquier imagen (ruta o bytes) y devuelve un JSON listo para frontend o almacenamiento.

Función: process_image_json(image_path, with_rag=True)

Procesa la imagen desde su ruta local.

Ejemplo:

from src.pipeline.api import process_image_json result = process_image_json("data/images/test8.jpg", with_rag=True)


Ejemplo de Output (JSON):

{
  "mode": "yolo+vgg",
  "image": "data/images/test8.jpg",
  "yolo": {
    "labels": ["guatita_ecuatoriana"],
    "raw": [
      {
        "bbox": [17, 3, 640, 640],
        "conf": 0.57,
        "class_name": "guatita_ecuatoriana",
        "vgg_label": "guatita_ecuatoriana",
        "vgg_score": 0.89
      }
    ]
  },
  "rag": {
    "source": "rag+gpt",
    "name": "Guatita",
    "macros": {
      "calorias": 438,
      "proteina": 28.5,
      "carbohidratos": 51.82,
      "grasas": 13.01,
      "fibra": 2.1
    },
    "analysis": "1) La guatita aporta 438 calorías... etc."
  }
}

2. Procesar Imágenes desde Bytes (para Apps / Móvil)

Función: process_image_bytes_json(image_bytes, with_rag=True)

Ejemplo:

from src.pipeline.api import process_image_bytes_json result = process_image_bytes_json(file_bytes, with_rag=True)


3. Motor YOLO (detección pura)

Ubicación: src/yolo/index.py

Ejecutar desde terminal:

python -m src.yolo.index --image data/images/test3.jpg

4. Motor VGG (clasificación)

Ubicación: src/vgg/vgg_classifier.py

from src.vgg.vgg_classifier import VGGClassifier

clf = VGGClassifier("models/vgg/vgg16_food_ec_best_tf.h5") clf.topk("data/images/test4.jpg", k=3)


5. Motor RAG (macros reales)

Ubicación: src/rag/rag_integration.py

from src.rag.rag_integration import rag_analyze rag_analyze("ceviche_manabita", 0.82)

Usos principales:

  • autocompletado
  • nutrición para historial
  • recomendaciones
  • consulta directa de macros

⚙️ Configuración

1. Variables de Entorno

Crear archivo .env en la raíz:

OPENAI_API_KEY=sk-...

Si no se define → el sistema funciona sin GPT, pero con RAG solamente.


2. Dependencias

pip install -r requirements.txt


3. Rutas de Modelos

Debe existir esta estructura:

models/ yolo/best.pt vgg/vgg16_food_ec_best_tf.h5

No subir modelos al repo.


🧪 Testing del Pipeline

Ejecutar:

python -m src.pipeline.api --image data/images/test8.jpg --with-rag

🧩 Qué devuelve cada componente

YOLO → Detección del plato
VGG → Refinamiento por recortes
RAG → Macros reales desde CSV
GPT → Explicación nutricional (opcional)


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors