pgt_toy_problem / app.py
CraigDroke's picture
Updated
8aaa2c1
import gradio as gr
import sys
from toy_problem_pgt import toy_problem
help_guide = """
## Help Guide
This demo allows you to experiment with the toy problem from the Plausibility Guided Training (PGT) paper.
### Input Parameters:
- **PGT Coefficient**: Choose a number between 0.1 and 10. This determines the emphasis given to the PGT loss function in the training process.
- **Focus Coefficient**: Choose a number between 0.01 and 1. This determines the concentration of pixels around the object that will be rewarded. Higher coefficient results in a more focused reward.
- **X Coord**: Choose a number between 0 and 1. This sets the X coordinate of the target.
- **Y Coord**: Choose a number between 0 and 1. This sets the Y coordinate of the target.
### Outputs:
1. **First 2 images**: Displays the distance regulaization map and the first atrribution map step.
2. **Second 8 images**: Displays each other attribution map steps.
3. **PGT Losses**: Visualizes the plausibility losses over each step.
4. **PGT Scores**: Displays the plausibility scores over each step.
"""
if __name__ == "__main__":
with gr.Blocks(title="toy problem demo", theme=gr.themes.Base()) as demo:
gr.Markdown(
"""
# Toy Problem Demo
This is a demo of the toy problem implementation.
"""
)
with gr.Accordion("Help", open=False):
gr.Markdown(help_guide)
with gr.Row() as file_settings:
pgt_coeff = gr.Number(label="PGT Coefficent",info="choose a number between 0.1 and 10",
minimum=0.1,maximum=10,value=1,interactive=True,step=1,show_label=True)
focus_coeff = gr.Number(label="Focus Coefficent",info="Choose a number between 0.1 and 1",
minimum=0.01,maximum=1,value=0.2,interactive=True,step=1,show_label=True)
#TODO - Target info (this is where we can adjust)
#We are just going to give the user access to the number of bounding boxes, and the xy coords
# num_bb = gr.Number(label="Number of Bounding Boxes",info="Choose a number",
# minimum=0,maximum=0,value=0,interactive=True,step=1,show_label=True)
x_coord = gr.Number(label="X Coord",info="Choose a number between 0 and 1",
minimum=0,maximum=1,value=0.8,interactive=True,step=1,show_label=True)
y_coord = gr.Number(label="Y Coord",info="Choose a number between 0 and 1",
minimum=0,maximum=1,value=0.76,interactive=True,step=1,show_label=True)
with gr.Row() as outputs:
output_img1 = gr.Image(type='filepath',label="First 2 images",
show_download_button=True,show_share_button=True,interactive=False,visible=True)
output_img2 = gr.Image(type='filepath',label="9 images",
show_download_button=True,show_share_button=True,interactive=False,visible=True, scale=4)
with gr.Row() as outputs_2:
output_img3 = gr.Image(type='filepath',label="PGT Losses",
show_download_button=True,show_share_button=True,interactive=False,visible=True)
output_img4 = gr.Image(type='filepath',label="PGT Scores",
show_download_button=True,show_share_button=True,interactive=False,visible=True)
# List of components for clearing
clear_comp_list = [output_img1, output_img2, output_img3, output_img4]
# Row for start, clear and demo buttons
with gr.Row() as buttons:
start = gr.Button(value="Start")
clear = gr.ClearButton(value='Clear All',components=clear_comp_list,
interactive=True,visible=True)
# List of gradio components that are input into the run_all method (when start button is clicked)
run_inputs = [pgt_coeff, focus_coeff, x_coord, y_coord]
# List of gradio components that are output from the run_all method (when start button is clicked)
run_outputs = [output_img1, output_img2, output_img3, output_img4]
start.click(toy_problem, inputs=run_inputs, outputs=run_outputs)
demo.queue().launch()