Spaces:
Runtime error
Runtime error
import gradio as gr | |
from fawkes.protection import Fawkes | |
def run_protection_interface(uploaded_image, mode='low', sd=1e6, format='png', separate_target=False, no_align=False, | |
debug=False): | |
""" | |
Gradio compatible function for running protection. | |
""" | |
if uploaded_image is None: | |
return None, "No image uploaded." | |
# Run the protection process | |
protector = Fawkes(gpu="0", batch_size=1, mode=mode) | |
processed_image = protector.run_protection(uploaded_image, sd=sd, batch_size=1, format=format, | |
separate_target=separate_target, debug=debug, no_align=no_align) | |
if processed_image is not None: | |
return processed_image, "Protection process completed." | |
else: | |
return None, "Protection process failed or no cloaked image generated." | |
intro_md = """ | |
# Fawkes Utility | |
This is an app that uses a really cool project from the SAND Lab at University of Chicago called | |
[Fawkes](https://sandlab.cs.uchicago.edu/fawkes/). | |
> Fawkes, an algorithm and software tool (running locally on your computer) that gives individuals the ability to limit | |
how unknown third parties can track them by building facial recognition models out of their publicly available photos. | |
At a high level, Fawkes "poisons" models that try to learn what you look like, by putting hidden changes into your photos, | |
and using them as Trojan horses to deliver that poison to any facial recognition models of you. | |
Fawkes takes your personal images and makes tiny, pixel-level changes that are invisible to the human eye, | |
in a process we call image cloaking. | |
""" | |
with gr.Blocks() as demo: | |
gr.Markdown(intro_md) | |
with gr.Row(): | |
with gr.Column(): | |
gr.Markdown("### Upload Image") | |
uploaded_image = gr.Image(type="pil", label="Upload Image") | |
with gr.Column(): | |
gr.Markdown("### Configuration Options") | |
mode = gr.Radio(label="Mode", choices=['low', 'mid', 'high'], value='low') | |
format = gr.Radio(label="Output Format", choices=['png', 'jpg', 'jpeg'], value='png') | |
separate_target = gr.Checkbox(label="Separate Target") | |
no_align = gr.Checkbox(label="No Align") | |
with gr.Accordion(label='Advanced Config', open=False): | |
sd = gr.Slider(label="Penalty Number (SD)", minimum=1e5, maximum=1e7, value=1e6) | |
run_button = gr.Button("Run Protection") | |
output_image = gr.Image(label="Processed Image") | |
output_text = gr.Textbox(label="Output Message") | |
run_button.click( | |
fn=run_protection_interface, | |
inputs=[uploaded_image, mode, sd, format, separate_target, no_align], | |
outputs=[output_image, output_text] | |
) | |
if __name__ == "__main__": | |
demo.launch() | |