File size: 2,414 Bytes
7a28fed
7c227c4
f9f0754
a16cc3e
bcbace0
4498ea8
a16cc3e
 
 
215f6c9
a16cc3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bcbace0
 
 
 
7a64196
 
 
bcbace0
7a64196
 
 
 
91e6b5c
8336fee
a16cc3e
 
 
7a64196
a16cc3e
9622945
 
 
 
 
 
 
 
8336fee
9622945
a16cc3e
2e839e2
a16cc3e
 
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
import gradio as gr
from transformers import AutoFeatureExtractor, AutoModelForImageClassification
from PIL import Image
import torch
import datetime

# Carregue o extrator de recursos e o modelo
extractor = AutoFeatureExtractor.from_pretrained("SerdarHelli/ThyroidTumorClassificationModel")
model = AutoModelForImageClassification.from_pretrained("SerdarHelli/ThyroidTumorClassificationModel")

# Função para classificar a imagem
def classify_image(image):
    # Pré-processa a imagem usando o extrator
    inputs = extractor(images=image, return_tensors="pt")
    
    # Passa a imagem pelo modelo
    outputs = model(**inputs)
    
    # Obtém as probabilidades das classes
    logits = outputs.logits
    
    # Calcula as probabilidades finais usando o softmax
    probabilities = torch.softmax(logits, dim=1)
    
    # Obtém a classe com a maior probabilidade
    predicted_class = torch.argmax(probabilities, dim=1).item()
    
    # Rótulos de classe personalizados com base no seu modelo
    class_labels = ["Sem Tumor", "Tumor"]
    
    # Rótulo da classe prevista
    predicted_label = class_labels[predicted_class]
    
    # Obtém a data e hora atual
    current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    
    # Formate a saída em HTML com data e hora
    result_html = f"""
    <h2>Resultado da Classificação</h2>
    <p><strong>Classe Predita:</strong> {predicted_label}</p>
    <p><strong>Data e Hora:</strong> {current_time}</p>
    """
    
    # Retorna o resultado formatado em HTML
    return result_html

# Crie uma interface Gradio com detalhes sobre o Classificador de Tumor da Tireoide
iface = gr.Interface(
    fn=classify_image,
    inputs=gr.inputs.Image(),
    outputs=gr.outputs.HTML(),  # Saída formatada com HTML
    title="Classificador de Tumor da Tireoide",
    description="""
    <p>Este é um classificador de imagens de tumores da tireoide.</p>
    <p>Para usá-lo:</p>
    <ol>
      <li>Clique no botão 'Escolher Arquivo' para fazer o upload de uma imagem da tireoide.</li>
      <li>Aguarde a classificação automática.</li>
      <li>O resultado mostrará a classe predita e a data e hora da classificação.</li>
    </ol>
    <p>Este classificador é baseado em um modelo pré-treinado e pode ajudar a identificar a presença de tumores da tireoide em imagens médicas.</p>
    """,
)

# Inicie a interface Gradio
iface.launch()