Spaces:
Running
Running
File size: 1,990 Bytes
d2454ee 1f28202 d2454ee 1f28202 d2454ee 1f28202 d2454ee 52f9526 d2454ee 52f9526 417a04e 1f28202 52f9526 417a04e d2454ee 1f28202 52f9526 c3b16a7 1f28202 ca7c2fa 1f28202 417a04e 1f28202 52f9526 1f28202 417a04e 1f28202 c3b16a7 1f28202 d2454ee 1f28202 d2454ee 52f9526 90a4b4f 1f28202 d2454ee 1f28202 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import gradio as gr
from transformers import pipeline
from PIL import Image
import torch
from torchvision import transforms
# MODELES
INGREDIENT_MODEL_ID = "stchakman/Fridge_Items_Model"
RECIPE_MODEL_ID = "flax-community/t5-recipe-generation"
# PIPELINES
ingredient_classifier = pipeline(
"image-classification",
model=INGREDIENT_MODEL_ID,
device=0 if torch.cuda.is_available() else -1,
top_k=4
)
recipe_generator = pipeline(
"text2text-generation",
model=RECIPE_MODEL_ID,
device=0 if torch.cuda.is_available() else -1
)
# AUGMENTATION
augment = transforms.Compose([
transforms.RandomHorizontalFlip(p=0.5),
transforms.RandomRotation(10),
transforms.ColorJitter(brightness=0.2, contrast=0.2),
])
# FONCTION PRINCIPALE
def generate_recipe(image: Image.Image):
try:
yield "🔄 Traitement de l'image..."
image_aug = image
yield "📸 Classification en cours..."
results = ingredient_classifier(image_aug)
ingredients = [res["label"] for res in results]
ingredient_str = ", ".join(ingredients)
yield f"🥕 Ingrédients détectés : {ingredient_str}\n\n🍳 Génération de la recette..."
prompt = f"Ingredients: {ingredient_str}. Recipe:"
recipe = recipe_generator(prompt, max_new_tokens=256, do_sample=True)[0]["generated_text"]
yield f"### 🥕 Ingrédients détectés :\n{ingredient_str}\n\n### 🍽️ Recette générée :\n{recipe}"
except Exception as e:
yield f"❌ Une erreur est survenue : {str(e)}"
# INTERFACE
interface = gr.Interface(
fn=generate_recipe,
inputs=gr.Image(type="pil", label="📷 Image de vos ingrédients"),
outputs=gr.Markdown(),
title="🥕 Générateur de Recettes 🧑🍳",
description="Dépose une image d'ingrédients pour obtenir une recette automatiquement générée à partir d'un modèle IA.",
allow_flagging="never"
)
if __name__ == "__main__":
interface.launch(share=True) |