Spaces:
Sleeping
Sleeping
File size: 5,005 Bytes
7b945e6 305f60c 7b945e6 305f60c 7b945e6 305f60c 7b945e6 305f60c 7b945e6 305f60c 7b945e6 305f60c 7b945e6 305f60c 7b945e6 305f60c ba0694b 305f60c ba0694b 305f60c ba0694b 305f60c ba0694b 7b945e6 305f60c 7b945e6 305f60c 7b945e6 ba0694b 7b945e6 ba0694b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
import gradio as gr
from transformers import (
ViTImageProcessor,
ViTForImageClassification,
AutoImageProcessor,
Swin2ForImageClassification
)
from PIL import Image
import torch
import warnings
warnings.filterwarnings("ignore")
class IridologyAnalyzer:
def __init__(self):
# Inicializar modelos
print("Carregando modelos...")
# ViT model - Modelo público para análise de imagens
self.vit_processor = ViTImageProcessor.from_pretrained("google/vit-base-patch16-224")
self.vit_model = ViTForImageClassification.from_pretrained("google/vit-base-patch16-224")
# Swin2 model - Outro modelo público para análise de imagens
self.swin_processor = AutoImageProcessor.from_pretrained("microsoft/swin-base-patch4-window7-224")
self.swin_model = Swin2ForImageClassification.from_pretrained("microsoft/swin-base-patch4-window7-224")
# Características de iridologia para análise
self.iris_features = [
"Textura da íris",
"Coloração",
"Marcas ou manchas",
"Anéis ou círculos",
"Condição da pupila",
"Linhas radiais",
"Pigmentação",
"Clareza geral",
"Estrutura do tecido",
"Marcas brancas",
"Fibras da íris",
"Borda da íris"
]
print("Modelos carregados com sucesso!")
def analyze_with_vit(self, image):
"""Analisa a imagem usando o modelo ViT."""
inputs = self.vit_processor(images=image, return_tensors="pt")
outputs = self.vit_model(**inputs)
probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
confidence = probs.max().item()
return confidence
def analyze_with_swin(self, image):
"""Analisa a imagem usando o modelo Swin."""
inputs = self.swin_processor(images=image, return_tensors="pt")
outputs = self.swin_model(**inputs)
probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
confidence = probs.max().item()
return confidence
def analyze_feature(self, image, feature):
"""Analisa uma característica específica da íris."""
vit_conf = self.analyze_with_vit(image)
swin_conf = self.analyze_with_swin(image)
# Combina os resultados dos dois modelos
avg_conf = (vit_conf + swin_conf) / 2
# Gera uma análise baseada na confiança
if avg_conf > 0.8:
return "Alta presença"
elif avg_conf > 0.5:
return "Presença moderada"
else:
return "Baixa presença"
def comprehensive_analysis(self, image):
"""Realiza uma análise completa da íris."""
results = []
for feature in self.iris_features:
try:
analysis = self.analyze_feature(image, feature)
results.append({
"feature": feature,
"analysis": analysis
})
except Exception as e:
print(f"Erro ao analisar '{feature}': {str(e)}")
continue
# Formatar resultados
formatted_results = "Análise Detalhada de Iridologia:\n\n"
for result in results:
formatted_results += f"Característica: {result['feature']}\n"
formatted_results += f"Análise: {result['analysis']}\n"
formatted_results += "-" * 50 + "\n"
return formatted_results
def create_gradio_interface():
analyzer = IridologyAnalyzer()
def process_image(image):
if image is None:
return "Por favor, faça o upload de uma imagem."
# Converter para PIL Image se necessário
if not isinstance(image, Image.Image):
image = Image.fromarray(image)
# Realizar análise
try:
return analyzer.comprehensive_analysis(image)
except Exception as e:
return f"Erro durante a análise: {str(e)}"
# Interface Gradio
iface = gr.Interface(
fn=process_image,
inputs=gr.Image(type="pil", label="Upload da Imagem do Olho"),
outputs=gr.Textbox(label="Resultados da Análise", lines=20),
title="Analisador de Iridologia com IA",
description="""
Este sistema analisa imagens de íris usando modelos de IA para identificar padrões relevantes para iridologia.
Faça o upload de uma imagem clara do olho para análise.
Recomendações para melhores resultados:
1. Use imagens bem iluminadas
2. Garanta que a íris esteja em foco
3. Evite reflexos excessivos
4. Enquadre apenas o olho na imagem
""",
examples=[],
cache_examples=True
)
return iface
if __name__ == "__main__":
iface = create_gradio_interface()
iface.launch() |