DHEIVER commited on
Commit
9e58ea4
·
verified ·
1 Parent(s): 2092c30

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -25
app.py CHANGED
@@ -47,7 +47,7 @@ class ModelManager:
47
  return "GIT carregado com sucesso!"
48
 
49
  def analyze_image(self, image, question, model_choice):
50
- """Analisa imagem com o modelo selecionado"""
51
  try:
52
  # Carrega o modelo apropriado se necessário
53
  if model_choice == "BLIP-2" and (self.model_name != "Salesforce/blip2-opt-2.7b"):
@@ -57,6 +57,17 @@ class ModelManager:
57
  elif model_choice == "GIT" and (self.model_name != "microsoft/git-base-coco"):
58
  status = self.load_git()
59
 
 
 
 
 
 
 
 
 
 
 
 
60
  # Prepara a imagem
61
  if isinstance(image, str):
62
  image = Image.open(image)
@@ -66,21 +77,23 @@ class ModelManager:
66
  # Processa a entrada
67
  inputs = self.current_processor(
68
  images=image,
69
- text=question,
70
  return_tensors="pt"
71
  ).to(self.current_model.device)
72
 
73
  # Gera a resposta
74
  outputs = self.current_model.generate(
75
  **inputs,
76
- max_new_tokens=150,
77
  num_beams=5,
78
  temperature=0.7,
79
  top_p=0.9
80
  )
81
 
 
82
  response = self.current_processor.decode(outputs[0], skip_special_tokens=True)
83
- return response
 
84
 
85
  except Exception as e:
86
  return f"Erro na análise: {str(e)}"
@@ -91,8 +104,8 @@ model_manager = ModelManager()
91
  # Interface Gradio
92
  with gr.Blocks(theme=gr.themes.Soft()) as iface:
93
  gr.Markdown("""
94
- # 🤖 Análise Visual Multi-Modelo
95
- Escolha o modelo que deseja usar para analisar sua imagem
96
  """)
97
 
98
  with gr.Row():
@@ -109,29 +122,29 @@ with gr.Blocks(theme=gr.themes.Soft()) as iface:
109
  ### 📝 Características dos Modelos:
110
 
111
  **BLIP-2:**
112
- - Melhor para análise técnica
113
- - Mais preciso em detalhes
114
- - Respostas estruturadas
115
 
116
  **LLaVA:**
117
- - Mais conversacional
118
- - Respostas naturais
119
- - Bom para perguntas abertas
120
 
121
  **GIT:**
122
- - Mais rápido e leve
123
- - Bom para descrições simples
124
- - Menor uso de memória
125
  """)
126
 
127
  image_input = gr.Image(
128
  type="pil",
129
- label="Imagem para Análise"
130
  )
131
 
132
  question_input = gr.Textbox(
133
  label="Sua Pergunta",
134
- placeholder="Faça uma pergunta sobre a imagem..."
135
  )
136
 
137
  analyze_btn = gr.Button("🔍 Analisar", variant="primary")
@@ -144,14 +157,14 @@ with gr.Blocks(theme=gr.themes.Soft()) as iface:
144
 
145
  with gr.Accordion("💡 Sugestões de Perguntas", open=False):
146
  gr.Markdown("""
147
- 1. Quais alimentos você identifica na imagem?
148
- 2. Como os alimentos estão preparados?
149
- 3. Descreva a apresentação do prato.
150
- 4. Que tipo de culinária parece ser?
151
- 5. Quais são os ingredientes principais?
152
- 6. Como está a disposição dos elementos no prato?
153
- 7. algum detalhe de decoração ou finalização?
154
- 8. Qual parece ser o método de cocção utilizado?
155
  """)
156
 
157
  # Eventos
 
47
  return "GIT carregado com sucesso!"
48
 
49
  def analyze_image(self, image, question, model_choice):
50
+ """Analisa imagem com foco nutricional"""
51
  try:
52
  # Carrega o modelo apropriado se necessário
53
  if model_choice == "BLIP-2" and (self.model_name != "Salesforce/blip2-opt-2.7b"):
 
57
  elif model_choice == "GIT" and (self.model_name != "microsoft/git-base-coco"):
58
  status = self.load_git()
59
 
60
+ # Adiciona contexto nutricional à pergunta
61
+ nutritional_prompt = (
62
+ "Como nutricionista, analise este prato considerando: "
63
+ "1. Lista de ingredientes principais\n"
64
+ "2. Estimativa calórica total\n"
65
+ "3. Sugestões para uma versão mais saudável\n"
66
+ "4. Análise de grupos alimentares\n"
67
+ f"Pergunta do usuário: {question}"
68
+ "\nPor favor, responda em português com detalhes nutricionais."
69
+ )
70
+
71
  # Prepara a imagem
72
  if isinstance(image, str):
73
  image = Image.open(image)
 
77
  # Processa a entrada
78
  inputs = self.current_processor(
79
  images=image,
80
+ text=nutritional_prompt,
81
  return_tensors="pt"
82
  ).to(self.current_model.device)
83
 
84
  # Gera a resposta
85
  outputs = self.current_model.generate(
86
  **inputs,
87
+ max_new_tokens=200, # Aumentado para respostas mais completas
88
  num_beams=5,
89
  temperature=0.7,
90
  top_p=0.9
91
  )
92
 
93
+ # Decodifica e formata a resposta
94
  response = self.current_processor.decode(outputs[0], skip_special_tokens=True)
95
+ formatted_response = response.replace(". ", ".\n").replace("; ", ";\n")
96
+ return f"**Análise Nutricional:**\n{formatted_response}"
97
 
98
  except Exception as e:
99
  return f"Erro na análise: {str(e)}"
 
104
  # Interface Gradio
105
  with gr.Blocks(theme=gr.themes.Soft()) as iface:
106
  gr.Markdown("""
107
+ # 🥗 Analisador Nutricional Inteligente
108
+ Escolha o modelo que deseja usar para analisar seu prato e obter recomendações nutricionais.
109
  """)
110
 
111
  with gr.Row():
 
122
  ### 📝 Características dos Modelos:
123
 
124
  **BLIP-2:**
125
+ - Análise detalhada de ingredientes
126
+ - Estimativas calóricas mais precisas
127
+ - Recomendações técnicas
128
 
129
  **LLaVA:**
130
+ - Explicações mais conversacionais
131
+ - Sugestões práticas para o dia a dia
132
+ - Foco em hábitos alimentares
133
 
134
  **GIT:**
135
+ - Respostas rápidas e diretas
136
+ - Ideal para análises simples
137
+ - Menor consumo de recursos
138
  """)
139
 
140
  image_input = gr.Image(
141
  type="pil",
142
+ label="Foto do Prato"
143
  )
144
 
145
  question_input = gr.Textbox(
146
  label="Sua Pergunta",
147
+ placeholder="Ex: Quantas calorias tem este prato? Como posso torná-lo mais saudável?"
148
  )
149
 
150
  analyze_btn = gr.Button("🔍 Analisar", variant="primary")
 
157
 
158
  with gr.Accordion("💡 Sugestões de Perguntas", open=False):
159
  gr.Markdown("""
160
+ 1. Quantas calorias tem este prato?
161
+ 2. Quais são os ingredientes principais?
162
+ 3. Como posso tornar este prato mais saudável?
163
+ 4. Este prato é adequado para uma dieta low-carb?
164
+ 5. Quais nutrientes estão presentes neste prato?
165
+ 6. Este prato é rico em proteínas?
166
+ 7. Como posso substituir ingredientes para reduzir calorias?
167
+ 8. Este prato é indicado para quem tem restrição a glúten/lactose?
168
  """)
169
 
170
  # Eventos