Spaces:
Sleeping
Sleeping
import gradio as gr | |
import yaml | |
from src.utils import load_words, save_results, load_global_variable, load_saliencies | |
from src.style import css | |
import random | |
random_images = [ | |
"https://picsum.photos/200", | |
"https://picsum.photos/201", | |
"https://picsum.photos/202", | |
"https://picsum.photos/203", | |
"https://picsum.photos/204", | |
"https://picsum.photos/205", | |
"https://picsum.photos/206", | |
"https://picsum.photos/207", | |
"https://picsum.photos/208", | |
"https://picsum.photos/209", | |
"https://picsum.photos/210", | |
"https://picsum.photos/211", | |
"https://picsum.photos/212", | |
"https://picsum.photos/213", | |
"https://picsum.photos/214", | |
] | |
def update_img_count(state): | |
count = state | |
print('oooooooo', count) | |
return gr.State(count + 1) | |
def main(): | |
config = yaml.safe_load(open("config/config.yaml")) | |
global_var = load_global_variable() | |
#images = load_images(global_var) | |
#saliency = load_saliencies(global_var) | |
words = ['grad-cam', 'lime', 'sidu', 'rise'] | |
options = ['1', '2', '3', '4'] | |
with gr.Blocks(theme=gr.themes.Glass(), css=css) as demo: | |
# Main App Components | |
title = gr.Markdown("# Saliency evaluation - experiment 1") | |
user_state = gr.State(0) | |
print('user_state', user_state) | |
#user_counter = gr.Textbox(str(global_var), visible=False) | |
#img_counter = gr.Textbox(str(0), visible=False) | |
with gr.Row(): | |
gr.Markdown("### Target image") | |
gr.Markdown("### Grad-cam") | |
gr.Markdown("### Lime") | |
gr.Markdown("### Sidu") | |
gr.Markdown("### Rise") | |
with gr.Row(): | |
# generate random integer value | |
target_img = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_gradcam = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_lime = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_rise = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_sidu = gr.Image(random_images[random.randint(0, 5)]) | |
with gr.Row(): | |
dropdown1 = gr.Dropdown(choices=options, label="grad-cam") | |
dropdown2 = gr.Dropdown(choices=options, label="lime") | |
dropdown3 = gr.Dropdown(choices=options, label="sidu") | |
dropdown4 = gr.Dropdown(choices=options, label="rise") | |
gr.Markdown("### Image examples of the same class") | |
with gr.Row(): | |
# generate random integer value | |
img1 = gr.Image(random_images[random.randint(0, 5)]) | |
img2 = gr.Image(random_images[random.randint(0, 5)]) | |
img3 = gr.Image(random_images[random.randint(0, 5)]) | |
img4 = gr.Image(random_images[random.randint(0, 5)]) | |
img5 = gr.Image(random_images[random.randint(0, 5)]) | |
img6 = gr.Image(random_images[random.randint(0, 5)]) | |
img7 = gr.Image(random_images[random.randint(0, 5)]) | |
img8 = gr.Image(random_images[random.randint(0, 5)]) | |
img9 = gr.Image(random_images[random.randint(0, 5)]) | |
img10 = gr.Image(random_images[random.randint(0, 5)]) | |
img11 = gr.Image(random_images[random.randint(0, 5)]) | |
img12 = gr.Image(random_images[random.randint(0, 5)]) | |
img13 = gr.Image(random_images[random.randint(0, 5)]) | |
img14 = gr.Image(random_images[random.randint(0, 5)]) | |
img15 = gr.Image(random_images[random.randint(0, 5)]) | |
img16 = gr.Image(random_images[random.randint(0, 5)]) | |
img17 = gr.Image(random_images[random.randint(0, 5)]) | |
img18 = gr.Image(random_images[random.randint(0, 5)]) | |
submit_button = gr.Button("Submit") | |
finish_button = gr.Button("Finish", visible=False) | |
def update_images(dropdown1, dropdown2, dropdown3, dropdown4, user_state): | |
#print('dropdowns', dropdowns) | |
#str_dropdowns = str(dropdowns) | |
# remove the curly braces | |
#dropdowns = str_dropdowns[1:-1] | |
#dropdowns = [r.split(":")[1].strip().replace("'", "") for r in dropdowns.split(",")] | |
print('dropdowns', dropdown1, dropdown2, dropdown3, dropdown4) | |
rank = [dropdown1,dropdown2,dropdown3,dropdown4] | |
print('rank', rank) | |
# image target and saliency images | |
target_img = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_gradcam = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_lime = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_rise = gr.Image(random_images[random.randint(0, 5)]) | |
saliency_sidu = gr.Image(random_images[random.randint(0, 5)]) | |
# image examples | |
img1 = gr.Image(random_images[random.randint(0, 5)]) | |
img2 = gr.Image(random_images[random.randint(0, 5)]) | |
img3 = gr.Image(random_images[random.randint(0, 5)]) | |
img4 = gr.Image(random_images[random.randint(0, 5)]) | |
img5 = gr.Image(random_images[random.randint(0, 5)]) | |
img6 = gr.Image(random_images[random.randint(0, 5)]) | |
img7 = gr.Image(random_images[random.randint(0, 5)]) | |
img8 = gr.Image(random_images[random.randint(0, 5)]) | |
img9 = gr.Image(random_images[random.randint(0, 5)]) | |
img10 = gr.Image(random_images[random.randint(0, 5)]) | |
img11 = gr.Image(random_images[random.randint(0, 5)]) | |
img12 = gr.Image(random_images[random.randint(0, 5)]) | |
img13 = gr.Image(random_images[random.randint(0, 5)]) | |
img14 = gr.Image(random_images[random.randint(0, 5)]) | |
img15 = gr.Image(random_images[random.randint(0, 5)]) | |
img16 = gr.Image(random_images[random.randint(0, 5)]) | |
img17 = gr.Image(random_images[random.randint(0, 5)]) | |
img18 = gr.Image(random_images[random.randint(0, 5)]) | |
if not isinstance(user_state, int): | |
if user_state.value == 5: | |
finish_button.visible = True | |
submit_button.visible = False | |
else: | |
finish_button.visible = False | |
submit_button.visible = True | |
return target_img, saliency_gradcam, saliency_lime, saliency_rise, saliency_sidu, img1, img2, img3, img4, img5, img6, img7, img8, img9, img10, img11, img12, img13, img14, img15, img16, img17, img18 | |
def update_state(state): | |
count = state if isinstance(state, int) else state.value | |
print('\n\ncount', count) | |
return gr.State(count + 1) | |
def update_buttons(state): | |
count = state if isinstance(state, int) else state.value | |
finish_button, submit_button = None, None | |
if count == 5: | |
finish_button = gr.Button("Finish", visible=True) | |
submit_button = gr.Button("Submit", visible=False) | |
else: | |
finish_button = gr.Button("Finish", visible=False) | |
submit_button = gr.Button("Submit", visible=True) | |
return submit_button, finish_button | |
submit_button.click( | |
update_state, | |
inputs=user_state, | |
outputs=user_state | |
).then( | |
update_buttons, | |
inputs=user_state, | |
outputs={submit_button, finish_button} | |
).then( | |
update_images, | |
inputs=[dropdown1, dropdown2, dropdown3, dropdown4, user_state], | |
outputs={target_img, saliency_gradcam, saliency_lime, saliency_rise, saliency_sidu, img1, img2, img3, img4, img5, img6, img7, img8, img9, img10, img11, img12, img13, img14, img15, img16, img17, img18}, | |
) | |
def redirect(): | |
pass | |
finish_button.click(redirect, js="window.location = 'https://marcoparola.github.io/saliency-evaluation-app/end'") | |
demo.load() | |
demo.launch() | |
if __name__ == "__main__": | |
main() | |