File size: 2,623 Bytes
e352c58 64e5dc2 51e2247 61fdb4f 68c4602 3bb084b 51e2247 21e2e72 64e5dc2 21e2e72 64e5dc2 21e2e72 64e5dc2 21e2e72 c8d4c05 51e2247 3bb084b 61fdb4f c26ef06 0f6c5c3 e352c58 64e5dc2 21e2e72 61fdb4f 83750bd e9d1268 0f6c5c3 70a751e 21e2e72 c8d4c05 |
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 |
import gradio as gr
from transformers import ViTFeatureExtractor, ViTForImageClassification
import numpy as np
import datetime
# Mapeamento de classe ID para rótulo
id2label = {
"0": "dyed-lifted-polyps",
"1": "dyed-resection-margins",
"2": "esophagitis",
"3": "normal-cecum",
"4": "normal-pylorus",
"5": "normal-z-line",
"6": "polyps",
"7": "ulcerative-colitis"
}
# Carregue o modelo ViT
model_name = "mrm8488/vit-base-patch16-224_finetuned-kvasirv2-colonoscopy"
feature_extractor = ViTFeatureExtractor.from_pretrained(model_name)
model = ViTForImageClassification.from_pretrained(model_name)
# Função para classificar a imagem
def classify_image(input_image):
# Pré-processar a imagem usando o extrator de características
inputs = feature_extractor(input_image, return_tensors="pt")
# Realizar inferência com o modelo
outputs = model(**inputs)
# Obter a classe prevista
predicted_class_id = np.argmax(outputs.logits[0].detach().numpy())
# Obter o rótulo da classe a partir do mapeamento id2label
predicted_class_label = id2label.get(str(predicted_class_id), "Desconhecido")
# Obter a data e hora atual
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Formatar a saída em HTML com rótulo da classe e data/hora
result_html = f"""
<h2>Resultado da Classificação</h2>
<p><strong>Rótulo da Classe:</strong> {predicted_class_label}</p>
<p><strong>Data e Hora:</strong> {current_time}</p>
"""
# Retornar o resultado formatado em HTML
return result_html
# Informações de como usar o aplicativo em HTML
instructions_html = """
<h2>Como Usar o Aplicativo</h2>
<ol>
<li>Clique no botão 'Escolher Arquivo' para fazer o upload de uma imagem colonoscópica.</li>
<li>Aguarde a classificação automática.</li>
<li>O resultado mostrará o rótulo da classe e a data e hora da classificação.</li>
</ol>
"""
# Criar uma interface Gradio com informações de diagnóstico, HTML e instruções
interface = gr.Interface(
fn=classify_image,
inputs=gr.inputs.Image(type="numpy", label="Carregar uma imagem"),
outputs=gr.outputs.HTML(),
title="Classificador de Imagem ViT para Colonoscopia",
description="""
<h3>Classifique imagens colonoscópicas usando um modelo Vision Transformer (ViT).</h3>
<p>O modelo identificará a condição ou diagnóstico da imagem, como 'polyps', 'esophagitis', etc.</p>
""",
article=instructions_html
)
# Iniciar a aplicação Gradio
interface.launch(share=True) # Compartilhar a interface com um link público
|