Spaces:
Starting
on
T4
Starting
on
T4
File size: 1,483 Bytes
077a255 b6d8eef 0e089a6 c472fe6 077a255 eb570bb 0e089a6 c472fe6 0e089a6 c472fe6 0e089a6 c472fe6 0e089a6 c472fe6 0e089a6 077a255 c472fe6 eb570bb 0e089a6 eb570bb c472fe6 0e089a6 f964bf0 0e089a6 c472fe6 eb570bb 288f88f eb570bb 0e089a6 288f88f |
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 |
import gradio as gr
import deepinv as dinv
import torch
import numpy as np
import PIL.Image
def pil_to_torch(image):
image = np.array(image)
image = image.transpose((2, 0, 1))
image = torch.tensor(image).float() / 255
return image.unsqueeze(0)
def torch_to_pil(image):
image = image.squeeze(0).cpu().detach().numpy()
image = image.transpose((1, 2, 0))
image = (image * 255).astype(np.uint8)
image = PIL.Image.fromarray(image)
return image
def image_mod(image, noise_level, denoiser):
image = pil_to_torch(image)
if denoiser == 'DnCNN':
denoiser = dinv.models.DnCNN()
elif denoiser == 'MedianFilter':
denoiser = dinv.models.MedianFilter()
else:
raise ValueError("Invalid denoiser")
noisy = image + torch.randn_like(image) * noise_level
estimated = denoiser(image, noise_level)
return torch_to_pil(noisy), torch_to_pil(estimated)
input_image = gr.Image(label='Input Image')
output_images = gr.Image(label='Denoised Image')
noise_image = gr.Image(label='Noisy Image')
input_image_output = gr.Image(label='Input Image')
noise_levels = gr.Dropdown(choices=[0.1, 0.2, 0.3, 0.4, 0.5], value=0.1, label='Noise Level')
denoiser = gr.Dropdown(choices=['DnCNN', 'MedianFilter'], value=0.1, label='DnCNN')
demo = gr.Interface(
image_mod,
inputs=[input_image, noise_levels, denoiser],
outputs=[noise_image, output_images],
title="Image Denoising with DeepInverse",
)
demo.launch() |