|
import gradio as gr |
|
import google.generativeai as genai |
|
from yolov5 import YOLOv5 |
|
from PIL import Image |
|
|
|
|
|
genai.configure(api_key="AIzaSyB_Hnl_77gd1I8xs6iuLqKIoGHgsZMXm1M") |
|
|
|
|
|
gemini_model = genai.GenerativeModel('gemini-pro') |
|
|
|
|
|
yolo_model_path = "yolov5s.pt" |
|
yolo_model = YOLOv5(yolo_model_path, device="cpu") |
|
|
|
|
|
def detect_ingredients(image): |
|
results = yolo_model.predict(image) |
|
ingredients = results.pandas().xyxy[0]['name'].tolist() |
|
return ingredients |
|
|
|
|
|
def generate_recipe(ingredients): |
|
|
|
prompt = f"Créer une recette en français en utilisant les ingrédients suivants (si ingrédients supplémentaire, preciser qu'ils ne sont présents sur la photo) et seulement une recette, rien de plus. Il faut que les ingrédients soient commestibles et que la recette soit légale. Lorsqu'une demande est tordue ou interdite, répond : Mais ça va pas ou quoi là...? : {', '.join(ingredients)}." |
|
response = gemini_model.generate_content(prompt) |
|
return response.text |
|
|
|
|
|
def process_image(image): |
|
|
|
image = Image.open(image) |
|
ingredients = detect_ingredients(image) |
|
recipe = generate_recipe(ingredients) |
|
return f"Ingrédients détectés : {', '.join(ingredients)}\n\nRecette générée :\n{recipe}" |
|
|
|
|
|
iface = gr.Interface( |
|
fn=process_image, |
|
inputs=gr.Image(type="filepath"), |
|
outputs="text", |
|
title="Générateur de Recettes par Ingrédients", |
|
description="Téléchargez une image d'ingrédients pour générer une recette.", |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|
|
|
|
|