|
|
import gradio as gr |
|
|
import tensorflow as tf |
|
|
import numpy as np |
|
|
from PIL import Image |
|
|
import json |
|
|
|
|
|
|
|
|
model = tf.keras.models.load_model("model_acc_0.7240.h5") |
|
|
|
|
|
|
|
|
with open("categories.json", "r") as json_file: |
|
|
categories_data = json.load(json_file) |
|
|
|
|
|
categories = [entry["category"] for entry in categories_data] |
|
|
diagnoses = [entry["diagnosis"] for entry in categories_data] |
|
|
|
|
|
|
|
|
model_description = ( |
|
|
"Este modelo foi treinado para classificar imagens médicas do trato gastrointestinal humano em várias categorias " |
|
|
"com diagnósticos associados. Ele pode ajudar a identificar condições médicas a partir de imagens." |
|
|
) |
|
|
|
|
|
|
|
|
def classify_image(image): |
|
|
try: |
|
|
|
|
|
image = Image.fromarray(image.astype('uint8')) |
|
|
image = image.resize((100, 100)) |
|
|
image = np.array(image) |
|
|
|
|
|
|
|
|
prediction = model.predict(image[None, ...]) |
|
|
|
|
|
|
|
|
class_idx = np.argmax(prediction) |
|
|
class_label = categories[class_idx] |
|
|
diagnosis = diagnoses[class_idx] |
|
|
|
|
|
return f"Classe prevista: {class_label}\nDiagnóstico: {diagnosis}" |
|
|
except Exception as e: |
|
|
return str(e) |
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=classify_image, |
|
|
inputs=gr.inputs.Image(), |
|
|
outputs="text", |
|
|
title="Sistema de Classificação de Anomalias Gastrointestinais por Imagem", |
|
|
description=model_description |
|
|
) |
|
|
|
|
|
|
|
|
iface.launch() |
|
|
|