DHEIVER commited on
Commit
305f60c
·
verified ·
1 Parent(s): 6861c56

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -51
app.py CHANGED
@@ -1,9 +1,9 @@
1
  import gradio as gr
2
  from transformers import (
3
- AutoProcessor,
4
- AutoModelForVision2Seq,
5
- BlipProcessor,
6
- BlipForQuestionAnswering
7
  )
8
  from PIL import Image
9
  import torch
@@ -15,72 +15,84 @@ class IridologyAnalyzer:
15
  # Inicializar modelos
16
  print("Carregando modelos...")
17
 
18
- # GIT model
19
- self.git_processor = AutoProcessor.from_pretrained("microsoft/git-base-vqa")
20
- self.git_model = AutoModelForVision2Seq.from_pretrained("microsoft/git-base-vqa")
21
 
22
- # BLIP model
23
- self.blip_processor = BlipProcessor.from_pretrained("Salesforce/blip-vqa-base")
24
- self.blip_model = BlipForQuestionAnswering.from_pretrained("Salesforce/blip-vqa-base")
25
 
26
- # Perguntas predefinidas para análise de iridologia
27
- self.iridology_questions = [
28
- "What is the color pattern of the iris?",
29
- "Are there any dark spots or marks in the iris?",
30
- "What is the texture of the iris?",
31
- "Are there any rings or circles in the iris?",
32
- "What is the condition of the pupil?",
33
- "Are there any lines radiating from the pupil?",
34
- "Is there any discoloration in specific areas?",
35
- "What is the overall clarity of the iris?",
36
- "Describe any notable features in the iris tissue",
37
- "Are there any white marks or spots?",
38
- "Describe the structure of the iris fibers",
39
- "What is the condition of the iris border?"
40
  ]
41
 
42
  print("Modelos carregados com sucesso!")
43
 
44
- def analyze_with_git(self, image, question):
45
- inputs = self.git_processor(images=image, text=question, return_tensors="pt")
46
- outputs = self.git_model.generate(
47
- **inputs,
48
- max_length=50,
49
- num_beams=4,
50
- early_stopping=True
51
- )
52
- return self.git_processor.batch_decode(outputs, skip_special_tokens=True)[0]
53
 
54
- def analyze_with_blip(self, image, question):
55
- inputs = self.blip_processor(image, question, return_tensors="pt")
56
- outputs = self.blip_model.generate(**inputs)
57
- return self.blip_processor.decode(outputs[0], skip_special_tokens=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  def comprehensive_analysis(self, image):
60
- """Realiza uma análise completa usando todos os modelos e questões predefinidas."""
61
  results = []
62
 
63
- for question in self.iridology_questions:
64
- # Análise com cada modelo
65
  try:
66
- git_result = self.analyze_with_git(image, question)
67
- blip_result = self.analyze_with_blip(image, question)
68
-
69
  results.append({
70
- "question": question,
71
- "git_analysis": git_result,
72
- "blip_analysis": blip_result
73
  })
74
  except Exception as e:
75
- print(f"Erro ao processar questão '{question}': {str(e)}")
76
  continue
77
 
78
  # Formatar resultados
79
  formatted_results = "Análise Detalhada de Iridologia:\n\n"
80
  for result in results:
81
- formatted_results += f"Pergunta: {result['question']}\n"
82
- formatted_results += f"Análise 1 (GIT): {result['git_analysis']}\n"
83
- formatted_results += f"Análise 2 (BLIP): {result['blip_analysis']}\n"
84
  formatted_results += "-" * 50 + "\n"
85
 
86
  return formatted_results
@@ -109,7 +121,7 @@ def create_gradio_interface():
109
  outputs=gr.Textbox(label="Resultados da Análise", lines=20),
110
  title="Analisador de Iridologia com IA",
111
  description="""
112
- Este sistema analisa imagens de íris usando múltiplos modelos de IA para identificar padrões relevantes para iridologia.
113
  Faça o upload de uma imagem clara do olho para análise.
114
 
115
  Recomendações para melhores resultados:
 
1
  import gradio as gr
2
  from transformers import (
3
+ ViTImageProcessor,
4
+ ViTForImageClassification,
5
+ AutoImageProcessor,
6
+ Swin2ForImageClassification
7
  )
8
  from PIL import Image
9
  import torch
 
15
  # Inicializar modelos
16
  print("Carregando modelos...")
17
 
18
+ # ViT model - Modelo público para análise de imagens
19
+ self.vit_processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224")
20
+ self.vit_model = ViTForImageClassification.from_pretrained("google/vit-base-patch16-224")
21
 
22
+ # Swin2 model - Outro modelo público para análise de imagens
23
+ self.swin_processor = AutoImageProcessor.from_pretrained("microsoft/swin-base-patch4-window7-224")
24
+ self.swin_model = Swin2ForImageClassification.from_pretrained("microsoft/swin-base-patch4-window7-224")
25
 
26
+ # Características de iridologia para análise
27
+ self.iris_features = [
28
+ "Textura da íris",
29
+ "Coloração",
30
+ "Marcas ou manchas",
31
+ "Anéis ou círculos",
32
+ "Condição da pupila",
33
+ "Linhas radiais",
34
+ "Pigmentação",
35
+ "Clareza geral",
36
+ "Estrutura do tecido",
37
+ "Marcas brancas",
38
+ "Fibras da íris",
39
+ "Borda da íris"
40
  ]
41
 
42
  print("Modelos carregados com sucesso!")
43
 
44
+ def analyze_with_vit(self, image):
45
+ """Analisa a imagem usando o modelo ViT."""
46
+ inputs = self.vit_processor(images=image, return_tensors="pt")
47
+ outputs = self.vit_model(**inputs)
48
+ probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
49
+ confidence = probs.max().item()
50
+ return confidence
 
 
51
 
52
+ def analyze_with_swin(self, image):
53
+ """Analisa a imagem usando o modelo Swin."""
54
+ inputs = self.swin_processor(images=image, return_tensors="pt")
55
+ outputs = self.swin_model(**inputs)
56
+ probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
57
+ confidence = probs.max().item()
58
+ return confidence
59
+
60
+ def analyze_feature(self, image, feature):
61
+ """Analisa uma característica específica da íris."""
62
+ vit_conf = self.analyze_with_vit(image)
63
+ swin_conf = self.analyze_with_swin(image)
64
+
65
+ # Combina os resultados dos dois modelos
66
+ avg_conf = (vit_conf + swin_conf) / 2
67
+
68
+ # Gera uma análise baseada na confiança
69
+ if avg_conf > 0.8:
70
+ return "Alta presença"
71
+ elif avg_conf > 0.5:
72
+ return "Presença moderada"
73
+ else:
74
+ return "Baixa presença"
75
 
76
  def comprehensive_analysis(self, image):
77
+ """Realiza uma análise completa da íris."""
78
  results = []
79
 
80
+ for feature in self.iris_features:
 
81
  try:
82
+ analysis = self.analyze_feature(image, feature)
 
 
83
  results.append({
84
+ "feature": feature,
85
+ "analysis": analysis
 
86
  })
87
  except Exception as e:
88
+ print(f"Erro ao analisar '{feature}': {str(e)}")
89
  continue
90
 
91
  # Formatar resultados
92
  formatted_results = "Análise Detalhada de Iridologia:\n\n"
93
  for result in results:
94
+ formatted_results += f"Característica: {result['feature']}\n"
95
+ formatted_results += f"Análise: {result['analysis']}\n"
 
96
  formatted_results += "-" * 50 + "\n"
97
 
98
  return formatted_results
 
121
  outputs=gr.Textbox(label="Resultados da Análise", lines=20),
122
  title="Analisador de Iridologia com IA",
123
  description="""
124
+ Este sistema analisa imagens de íris usando modelos de IA para identificar padrões relevantes para iridologia.
125
  Faça o upload de uma imagem clara do olho para análise.
126
 
127
  Recomendações para melhores resultados: