Spaces:
Sleeping
Sleeping
File size: 1,991 Bytes
d2454ee 417a04e d2454ee 52f9526 417a04e d2454ee 52f9526 d2454ee 52f9526 417a04e 52f9526 417a04e d2454ee 417a04e d2454ee 52f9526 c3b16a7 417a04e c3b16a7 52f9526 c3b16a7 417a04e c3b16a7 d2454ee 52f9526 d2454ee 52f9526 d2454ee 7ddf71b |
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 65 |
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)
|