|
import gradio as gr |
|
from transformers import ViTFeatureExtractor, ViTForImageClassification |
|
import numpy as np |
|
import datetime |
|
|
|
|
|
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" |
|
} |
|
|
|
|
|
model_name = "mrm8488/vit-base-patch16-224_finetuned-kvasirv2-colonoscopy" |
|
feature_extractor = ViTFeatureExtractor.from_pretrained(model_name) |
|
model = ViTForImageClassification.from_pretrained(model_name) |
|
|
|
|
|
def classify_image(input_image): |
|
|
|
inputs = feature_extractor(input_image, return_tensors="pt") |
|
|
|
outputs = model(**inputs) |
|
|
|
predicted_class_id = np.argmax(outputs.logits[0].detach().numpy()) |
|
|
|
predicted_class_label = id2label.get(str(predicted_class_id), "Desconhecido") |
|
|
|
|
|
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") |
|
|
|
|
|
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> |
|
""" |
|
|
|
|
|
return result_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> |
|
""" |
|
|
|
|
|
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 |
|
) |
|
|
|
|
|
interface.launch(share=True) |
|
|