Spaces:
Build error
Build error
| import gradio as gr | |
| import os | |
| import json | |
| from filelock import Timeout, FileLock | |
| from random import sample, choice | |
| def random_images(gen_images): | |
| return choice(gen_images) | |
| def vote(method): | |
| lock_path = "votes.lock" | |
| file_path = "votes.json" | |
| lock = FileLock(lock_path, timeout=10) | |
| with lock: | |
| # Check if the votes file exists, create if not | |
| if not os.path.exists(file_path): | |
| with open(file_path, 'w') as file: | |
| json.dump({}, file) | |
| # Read the current votes | |
| with open(file_path, 'r') as file: | |
| votes = json.load(file) | |
| # Update the vote count | |
| try: | |
| option = (method) | |
| if option in votes: | |
| votes[option] += 1 | |
| else: | |
| votes[option] = 1 | |
| except: | |
| return "Error" | |
| # Write the updated votes back to the file | |
| with open(file_path, 'w') as file: | |
| json.dump(votes, file) | |
| def vote_fn(method): | |
| vote(method) | |
| image_1, image_2, first_method, second_method = refresh() | |
| return image_1, image_2, first_method, second_method | |
| css = """ | |
| .gradio-container { | |
| width: 50%; /* Set the width of the container to 50% of the parent element */ | |
| margin-left: auto; /* Set the left margin to auto to enable horizontal centering */ | |
| margin-right: auto;/* Set the right margin to auto to enable horizontal centering */ | |
| } | |
| .gen_images { | |
| padding: 30px; | |
| } | |
| """ | |
| METHODS = ["baseline", "lora"] | |
| baseline_imgs = [f"gen_images/baseline/{path}" for path in os.listdir("gen_images/baseline")] | |
| lora_imgs = [f"gen_images/lora/{path}" for path in os.listdir("gen_images/lora")] | |
| og_images = [os.path.join("og_images", path) for path in os.listdir("og_images")] | |
| print(baseline_imgs) | |
| def refresh(): | |
| random_baseline_img = random_images(baseline_imgs) | |
| random_lora_img = random_images(lora_imgs) | |
| first_method = choice(METHODS) | |
| if first_method == "baseline": | |
| image1 = random_baseline_img | |
| image2 = random_lora_img | |
| second_method = "lora" | |
| else: | |
| image1 = random_lora_img | |
| image2 = random_baseline_img | |
| second_method = "baseline" | |
| return image1, image2, first_method, second_method | |
| with gr.Blocks(css=css) as demo: | |
| first_method = gr.State() | |
| first_method.value = "baseline" | |
| second_method = gr.State() | |
| second_method.value = "lora" | |
| # show the title of the demo | |
| gr.components.HTML("<h1>Image Scoring</h1>") | |
| # show the description of the demo | |
| gr.components.HTML("<p>Select the best image among the proposed.</p>") | |
| # show the images to be scored on the same row | |
| with gr.Blocks() as selection: | |
| with gr.Row(scale=3): | |
| random_baseline_img = random_images(baseline_imgs) | |
| random_lora_img = random_images(lora_imgs) | |
| with gr.Row(scale=6, elem_id="gen_images"): | |
| if first_method.value == "baseline": | |
| with gr.Column(scale=6): | |
| image_1 = gr.Image(random_baseline_img, container=False, show_label=False) | |
| button1 = gr.Button(value="First Image π") | |
| with gr.Column(scale=6): | |
| image_2 = gr.Image(random_lora_img, container=False, show_label=False) | |
| button2 = gr.Button(value="Second Image π") | |
| else: | |
| with gr.Column(scale=6): | |
| image_1 = gr.Image(random_baseline_img, container=False, show_label=False) | |
| button1 = gr.Button(value="First Image π") | |
| with gr.Column(scale=6): | |
| image_2 = gr.Image(random_lora_img, container=False, show_label=False) | |
| button2 = gr.Button(value="Second Image π") | |
| button1.click(vote_fn, inputs=[first_method], outputs=[image_1, image_2, first_method, second_method]) | |
| button2.click(vote_fn, inputs=[second_method], outputs=[image_1, image_2, first_method, second_method]) | |
| demo.launch() |