|
|
import numpy as np |
|
|
from tensorflow.keras.models import load_model |
|
|
from PIL import Image |
|
|
import gradio as gr |
|
|
|
|
|
|
|
|
model = load_model("unet_model.h5", compile=False) |
|
|
|
|
|
|
|
|
def preprocess_image(image, target_size=(192, 176)): |
|
|
image = image.resize((target_size[1], target_size[0])) |
|
|
image = np.array(image) / 255.0 |
|
|
if image.ndim == 2: |
|
|
image = np.expand_dims(image, axis=-1) |
|
|
return np.expand_dims(image, axis=0) |
|
|
|
|
|
|
|
|
def predict(img): |
|
|
|
|
|
img = img.convert("L") |
|
|
|
|
|
|
|
|
input_data = preprocess_image(img) |
|
|
|
|
|
|
|
|
pred = model.predict(input_data)[0] |
|
|
|
|
|
|
|
|
if pred.ndim == 3 and pred.shape[-1] == 1: |
|
|
pred = np.squeeze(pred, axis=-1) |
|
|
|
|
|
|
|
|
pred_img = (pred * 255).astype(np.uint8) |
|
|
pred_img = Image.fromarray(pred_img) |
|
|
|
|
|
return pred_img |
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
fn=predict, |
|
|
inputs=gr.Image(type="pil", label="Upload Image"), |
|
|
outputs=gr.Image(type="pil", label="Denoised Output"), |
|
|
title="U-Net Image Denoising", |
|
|
description="Upload a grayscale image and get the denoised result using a U-Net model." |
|
|
) |
|
|
|
|
|
interface.launch() |