Spaces:
Running
Running
import gradio as gr | |
from utils import encoder, decoder, decoder_noise | |
title = "**Playing with kNN for denoising**" | |
description = """The encoder takes any image (on the top left) and remove a fraction of the pixels producing a noisy image (on the top right). | |
The decoder takes a noisy image (on the bottom left) and achieves denoising using kNN where you can choose the number of neighbors k. | |
You can directly use the decoder on the encoded image (if you used the encoder first!). | |
If you want to use the webcam (instead of upload), click on the webcam Tab. | |
""" | |
demo = gr.Blocks() | |
with demo: | |
gr.Markdown(title) | |
gr.Markdown(description) | |
with gr.Tab("upload"): | |
with gr.Row(): | |
with gr.Column(): | |
source_img = gr.Image(source="upload", type="filepath", label="init_img") | |
noise = gr.Slider(label='noise', minimum = 0.5, maximum = 1, step = .005, value = .95) | |
with gr.Row(): | |
b1 = gr.Button("Encoder") | |
examples_encoder = gr.Examples([["images/joconde.png"], ["images/braque.png"], ["images/Voronoy.jpg"]], inputs=[source_img]) | |
with gr.Column(): | |
encoded_img = gr.Image() | |
with gr.Row(): | |
bt = gr.Button("Decoder noisy image above") | |
with gr.Row(): | |
with gr.Column(): | |
noise_img = gr.Image(source="upload", type="filepath", label="init_img") | |
k = gr.Slider(label='k', minimum = 1, maximum = 10, step = 1, value = 1) | |
with gr.Row(): | |
b2 = gr.Button("Decoder") | |
examples_decoder = gr.Examples([["images/afghan_coded.png"], ["images/wave_coded.png"], ["images/spider_coded.png"]], inputs=[noise_img]) | |
#bt = gr.Button("Decoder noisy image above") | |
with gr.Column(): | |
decoded_img = gr.Image() | |
with gr.Tab("webcam"): | |
with gr.Row(): | |
with gr.Column(): | |
source_img_w = gr.Image(source="webcam", type="filepath", label="init_img") | |
noise_w = gr.Slider(label='noise', minimum = 0.5, maximum = 1, step = .005, value = .95) | |
with gr.Row(): | |
b1_w = gr.Button("Encoder") | |
examples_encoder_w = gr.Examples([["images/joconde.png"], ["images/Voronoy.jpg"]], inputs=[source_img_w]) | |
with gr.Column(): | |
encoded_img_w = gr.Image() | |
k_w = gr.Slider(label='k', minimum = 1, maximum = 10, step = 1, value = 1) | |
with gr.Row(): | |
bt_w = gr.Button("Decoder") | |
examples_decoder_w = gr.Examples([["images/afghan_coded.png"], ["images/spider_coded.png"]], inputs=[encoded_img_w]) | |
#bt = gr.Button("Decoder noisy image above") | |
with gr.Column(): | |
decoded_img_w = gr.Image() | |
b1.click(encoder, inputs=[source_img, noise], outputs=encoded_img) | |
b2.click(decoder, inputs=[noise_img,k], outputs=decoded_img) | |
bt.click(decoder_noise, inputs=[encoded_img,k], outputs=decoded_img) | |
b1_w.click(encoder, inputs=[source_img_w, noise_w], outputs=encoded_img_w) | |
bt_w.click(decoder_noise, inputs=[encoded_img_w,k_w], outputs=decoded_img_w) | |
demo.launch() |