File size: 1,215 Bytes
af9162a
52893ae
 
501b516
a983c72
af9162a
501b516
 
 
a983c72
501b516
 
a983c72
501b516
a983c72
501b516
a983c72
 
501b516
af9162a
a983c72
 
501b516
c771378
a983c72
 
501b516
 
 
7f74cd7
 
 
 
501b516
a983c72
 
744ad2f
 
 
a983c72
501b516
 
744ad2f
 
 
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
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):
    image = pil_to_torch(image)
    denoiser = dinv.models.MedianFilter()
    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')


demo = gr.Interface(
    image_mod,
    inputs=[input_image, noise_levels],
    outputs=[noise_image, output_images],
    title="Image Denoising with DeepInverse",
)

demo.launch()