Spaces:
Sleeping
Sleeping
| 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() |