DHEIVER commited on
Commit
94cd887
·
verified ·
1 Parent(s): 43fabe7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -58
app.py CHANGED
@@ -1,25 +1,11 @@
1
  import gradio as gr
2
  import torch
3
- from transformers import AutoModelForCausalLM, AutoTokenizer, AutoProcessor
4
  import pandas as pd
5
  import numpy as np
6
  from PIL import Image
7
-
8
- def load_model():
9
- """Inicializa o modelo DeepSeek Multimodal"""
10
- device = "cuda" if torch.cuda.is_available() else "cpu"
11
- model_name = "deepseek-ai/deepseek-vl-7b-base"
12
-
13
- processor = AutoProcessor.from_pretrained(model_name)
14
- model = AutoModelForCausalLM.from_pretrained(
15
- model_name,
16
- torch_dtype=torch.float16 if device == "cuda" else torch.float32,
17
- device_map="auto",
18
- trust_remote_code=True
19
- )
20
- tokenizer = AutoTokenizer.from_pretrained(model_name)
21
-
22
- return model, processor, tokenizer, device
23
 
24
  # Base de dados nutricional
25
  NUTRITION_DB = {
@@ -34,43 +20,6 @@ NUTRITION_DB = {
34
  "ovo": {"calorias": 155, "proteinas": 13, "carboidratos": 1.1, "gorduras": 11},
35
  }
36
 
37
- def process_image(image, progress=gr.Progress()):
38
- """Processa a imagem usando DeepSeek Multimodal"""
39
- try:
40
- progress(0.3, desc="Inicializando modelo...")
41
- model, processor, tokenizer, device = load_model()
42
-
43
- progress(0.5, desc="Processando imagem...")
44
- # Prepara a imagem
45
- if isinstance(image, np.ndarray):
46
- image = Image.fromarray(image)
47
-
48
- # Prompt específico para identificação de alimentos
49
- prompt = "Analise esta imagem e liste todos os alimentos visíveis. Para cada alimento, informe o tipo e estado (ex: cozido, cru, grelhado)."
50
-
51
- # Processa a imagem
52
- inputs = processor(images=image, text=prompt, return_tensors="pt").to(device)
53
-
54
- progress(0.7, desc="Gerando descrição...")
55
- # Gera a descrição
56
- with torch.no_grad():
57
- outputs = model.generate(
58
- **inputs,
59
- max_new_tokens=150,
60
- do_sample=True,
61
- temperature=0.7,
62
- top_p=0.9,
63
- )
64
-
65
- # Decodifica a saída
66
- description = processor.decode(outputs[0], skip_special_tokens=True)
67
-
68
- progress(1.0, desc="Concluído!")
69
- return description.strip()
70
-
71
- except Exception as e:
72
- raise gr.Error(f"Erro no processamento da imagem: {str(e)}")
73
-
74
  def analyze_foods(description):
75
  """Analisa a descrição e retorna informações nutricionais"""
76
  try:
@@ -139,8 +88,8 @@ def analyze_foods(description):
139
  def analyze_image(image):
140
  """Função principal que coordena o processo de análise"""
141
  try:
142
- # Processa a imagem
143
- description = process_image(image)
144
 
145
  # Analisa os alimentos
146
  analysis, table_data, plot_data = analyze_foods(description)
@@ -153,7 +102,7 @@ def analyze_image(image):
153
  # Interface Gradio
154
  with gr.Blocks(theme=gr.themes.Soft()) as iface:
155
  gr.Markdown("""
156
- # 🍽️ Análise Nutricional com DeepSeek
157
  Faça upload de uma foto do seu prato para análise nutricional detalhada.
158
  """)
159
 
@@ -206,4 +155,4 @@ with gr.Blocks(theme=gr.themes.Soft()) as iface:
206
 
207
  if __name__ == "__main__":
208
  print(f"Usando dispositivo: {'CUDA' if torch.cuda.is_available() else 'CPU'}")
209
- iface.launch()
 
1
  import gradio as gr
2
  import torch
3
+ from transformers import AutoModelForCausalLM, AutoTokenizer
4
  import pandas as pd
5
  import numpy as np
6
  from PIL import Image
7
+ from huggingface_hub import hf_hub_download
8
+ import os
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  # Base de dados nutricional
11
  NUTRITION_DB = {
 
20
  "ovo": {"calorias": 155, "proteinas": 13, "carboidratos": 1.1, "gorduras": 11},
21
  }
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  def analyze_foods(description):
24
  """Analisa a descrição e retorna informações nutricionais"""
25
  try:
 
88
  def analyze_image(image):
89
  """Função principal que coordena o processo de análise"""
90
  try:
91
+ # Simula a resposta do modelo (temporário até resolvermos o erro do DeepSeek)
92
+ description = "Na imagem é possível ver um prato contendo arroz branco cozido, feijão, um pedaço de frango grelhado e uma pequena porção de salada com alface e tomate."
93
 
94
  # Analisa os alimentos
95
  analysis, table_data, plot_data = analyze_foods(description)
 
102
  # Interface Gradio
103
  with gr.Blocks(theme=gr.themes.Soft()) as iface:
104
  gr.Markdown("""
105
+ # 🍽️ Análise Nutricional com IA
106
  Faça upload de uma foto do seu prato para análise nutricional detalhada.
107
  """)
108
 
 
155
 
156
  if __name__ == "__main__":
157
  print(f"Usando dispositivo: {'CUDA' if torch.cuda.is_available() else 'CPU'}")
158
+ iface.launch(share=False)