DHEIVER commited on
Commit
ef7a048
·
verified ·
1 Parent(s): 95627ea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -12
app.py CHANGED
@@ -1,11 +1,14 @@
1
  import gradio as gr
2
- from transformers import BlipProcessor, BlipForConditionalGeneration
3
  from PIL import Image
4
  import requests
5
 
6
- # Carregar o modelo e o processador BLIP
7
  processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
8
- model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
 
 
 
9
 
10
  def interpret_image(image):
11
  # Converter a imagem para o formato PIL se necessário
@@ -14,21 +17,50 @@ def interpret_image(image):
14
 
15
  # Processar a imagem e gerar a descrição
16
  inputs = processor(image, return_tensors="pt")
17
- out = model.generate(**inputs)
18
 
19
  # Decodificar a saída para texto
20
  description = processor.decode(out[0], skip_special_tokens=True)
21
 
22
  return description
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  # Interface Gradio
25
- iface = gr.Interface(
26
- fn=interpret_image,
27
- inputs=gr.Image(type="pil", label="Upload uma imagem"),
28
- outputs=gr.Textbox(label="Descrição da Imagem"),
29
- title="Interpretação de Imagens com BLIP",
30
- description="Carregue uma imagem e o modelo BLIP irá gerar uma descrição."
31
- )
 
 
 
 
 
 
 
 
 
 
32
 
33
  # Iniciar o aplicativo
34
- iface.launch()
 
1
  import gradio as gr
2
+ from transformers import BlipProcessor, BlipForConditionalGeneration, pipeline
3
  from PIL import Image
4
  import requests
5
 
6
+ # Carregar o modelo BLIP para geração de descrições de imagens
7
  processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
8
+ model_blip = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
9
+
10
+ # Carregar um modelo de linguagem para análise nutricional (exemplo: GPT-Neo)
11
+ nutrition_model = pipeline("text-generation", model="EleutherAI/gpt-neo-125M")
12
 
13
  def interpret_image(image):
14
  # Converter a imagem para o formato PIL se necessário
 
17
 
18
  # Processar a imagem e gerar a descrição
19
  inputs = processor(image, return_tensors="pt")
20
+ out = model_blip.generate(**inputs)
21
 
22
  # Decodificar a saída para texto
23
  description = processor.decode(out[0], skip_special_tokens=True)
24
 
25
  return description
26
 
27
+ def nutritional_analysis(image):
28
+ # Passo 1: Gerar descrição da imagem usando BLIP
29
+ description = interpret_image(image)
30
+
31
+ # Passo 2: Criar um prompt para análise nutricional
32
+ prompt = (
33
+ f"Com base na descrição do prato de comida abaixo, forneça uma análise nutricional detalhada, "
34
+ f"incluindo estimativas de calorias, macronutrientes (carboidratos, proteínas, gorduras), "
35
+ f"e recomendações para melhorar o prato, se necessário.\n\n"
36
+ f"Descrição do prato: {description}\n\n"
37
+ f"Análise nutricional:"
38
+ )
39
+
40
+ # Passo 3: Usar o modelo de linguagem para gerar a análise nutricional
41
+ analysis = nutrition_model(prompt, max_length=300, num_return_sequences=1)[0]['generated_text']
42
+
43
+ # Retornar a descrição e a análise nutricional
44
+ return description, analysis
45
+
46
  # Interface Gradio
47
+ with gr.Blocks() as demo:
48
+ gr.Markdown("# Agente Nutricionista com Análise de Imagens")
49
+ gr.Markdown("Carregue uma imagem de um prato de comida e receba uma descrição e uma análise nutricional detalhada.")
50
+
51
+ with gr.Row():
52
+ image_input = gr.Image(type="pil", label="Upload de Imagem")
53
+ with gr.Column():
54
+ description_output = gr.Textbox(label="Descrição do Prato")
55
+ analysis_output = gr.Textbox(label="Análise Nutricional")
56
+
57
+ submit_button = gr.Button("Analisar")
58
+
59
+ def process_image(image):
60
+ description, analysis = nutritional_analysis(image)
61
+ return description, analysis
62
+
63
+ submit_button.click(process_image, inputs=image_input, outputs=[description_output, analysis_output])
64
 
65
  # Iniciar o aplicativo
66
+ demo.launch()