|
import gradio as gr |
|
from visualization_gary import* |
|
|
|
|
|
def choose_mode(selected_mode): |
|
if selected_mode == "get interpretable Result ": |
|
return gr.update(visible=True), gr.update(visible=False), gr.update(visible=False), "in Mode 1" |
|
elif selected_mode == "To give Feedbacks": |
|
return gr.update(visible=False), gr.update(visible=True), gr.update(visible=False), "in Mode 2" |
|
else: |
|
return gr.update(visible=False), gr.update(visible=False), gr.update(visible=False), "please choose a mode" |
|
|
|
|
|
def reset_state_mod1(): |
|
return None, None, "State has been reset." |
|
|
|
def reset_state_mod2(): |
|
return None, None,None,gr.update(interactive=True),gr.update(interactive=True),gr.update(interactive=True),gr.update(interactive=True),gr.update(interactive=True) |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# please choose a mode") |
|
|
|
|
|
mode_selector = gr.Radio(["get interpretable Result ", "To give Feedbacks"], label="Mode Selection") |
|
|
|
|
|
with gr.Column(visible=False) as mode1_ui: |
|
gr.Markdown("### Please keep the object in the center of your image, click the Button to get interpretebale Result") |
|
mode1_button = gr.Button("get interpretable Classification") |
|
mode1_input_img=gr.Image() |
|
mode1_output_img= gr.Image() |
|
mode1_output_txt=gr.Markdown() |
|
|
|
|
|
mode1_state = gr.State() |
|
mode1_input_img.upload(fn=reset_state_mod1, outputs=[mode1_output_img, mode1_state, mode1_output_txt]) |
|
|
|
|
|
|
|
mode1_button.click(fn=direct_inference,inputs=mode1_input_img, outputs=[mode1_output_img,mode1_output_txt]) |
|
|
|
|
|
with gr.Column(visible=False) as mode2_ui: |
|
gr.Markdown("### Please keep the object in the center of your image, click the Button 'Get some interpretable Features' to get options") |
|
image_input=gr.Image() |
|
gallery_output = gr.Gallery(label="Initial Label") |
|
text_output=gr.Markdown() |
|
but_generate=gr.Button("Get some interpretable Features") |
|
but_feedback_A=gr.Button("A") |
|
but_feedback_B=gr.Button("B") |
|
but_feedback_C=gr.Button("C") |
|
but_feedback_D=gr.Button("D") |
|
|
|
key_op = gr.State() |
|
A= gr.State("A") |
|
B= gr.State("B") |
|
C= gr.State("C") |
|
D= gr.State("D") |
|
|
|
|
|
image_input.upload( |
|
fn=reset_state_mod2, |
|
outputs=[gallery_output, key_op, text_output,but_generate,but_feedback_A,but_feedback_B,but_feedback_C,but_feedback_D] |
|
) |
|
|
|
|
|
|
|
|
|
|
|
but_generate.click(fn=get_features_on_interface, inputs=image_input, outputs=[gallery_output,key_op,text_output,but_generate]) |
|
|
|
but_feedback_A.click(fn=post_next_image, inputs=[A,key_op], outputs=[text_output,but_feedback_A,but_feedback_B,but_feedback_C,but_feedback_D]) |
|
but_feedback_B.click(fn=post_next_image, inputs=[B,key_op], outputs=[text_output,but_feedback_A,but_feedback_B,but_feedback_C,but_feedback_D]) |
|
but_feedback_C.click(fn=post_next_image, inputs=[C,key_op], outputs=[text_output,but_feedback_A,but_feedback_B,but_feedback_C,but_feedback_D]) |
|
but_feedback_D.click(fn=post_next_image, inputs=[D,key_op], outputs=[text_output,but_feedback_A,but_feedback_B,but_feedback_C,but_feedback_D]) |
|
|
|
|
|
|
|
|
|
|
|
status_output = gr.Textbox(label="Status") |
|
|
|
|
|
mode_selector.change(choose_mode, inputs=mode_selector, outputs=[mode1_ui, mode2_ui, status_output]) |
|
|
|
demo.launch() |
|
|