|
|
import tensorflow as tf |
|
|
import numpy as np |
|
|
import gradio as gr |
|
|
from PIL import Image |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
model = tf.keras.models.load_model("CModel.h5") |
|
|
print(model.input_shape) |
|
|
|
|
|
|
|
|
IMG_SIZE = (224, 224) |
|
|
|
|
|
CLASS_NAMES = [ |
|
|
"Normal", |
|
|
"Monkeypox" |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def predict_image(image): |
|
|
image = image.convert("RGB") |
|
|
image = image.resize(IMG_SIZE) |
|
|
|
|
|
img_array = np.array(image) / 255.0 |
|
|
img_array = np.expand_dims(img_array, axis=0) |
|
|
|
|
|
pred = model.predict(img_array) |
|
|
|
|
|
if pred.shape[1] == 1: |
|
|
confidence = float(pred[0][0]) |
|
|
label = CLASS_NAMES[1] if confidence > 0.5 else CLASS_NAMES[0] |
|
|
return label, confidence |
|
|
else: |
|
|
class_index = int(np.argmax(pred)) |
|
|
confidence = float(pred[0][class_index]) |
|
|
return CLASS_NAMES[class_index], confidence |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
fn=predict_image, |
|
|
inputs=gr.Image(type="pil"), |
|
|
outputs=[ |
|
|
gr.Label(label="Prediction"), |
|
|
gr.Number(label="Confidence") |
|
|
], |
|
|
title="Monkeypox Classification using CNN", |
|
|
description="Upload a skin image to classify Monkeypox using a CNN model." |
|
|
) |
|
|
|
|
|
interface.launch() |
|
|
|