File size: 1,480 Bytes
0f186b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import gradio as gr
import random

from details import get_celebrity_details
from model import class_names, predict_celebrity

def get_new_target_celebrity():
    return random.choice(class_names)


target_celebrity = get_new_target_celebrity()


def game_mode(image):
    global target_celebrity
    celebrity_name = predict_celebrity(image)
    details = get_celebrity_details(celebrity_name)
    if celebrity_name == target_celebrity:
        return f"Congratulations! You uploaded the correct celebrity: {celebrity_name}", details["meme"]
    else:
        details["meme"] = None
        return f"Sorry, try again! another image The target celebrity was {target_celebrity}.", details["meme"]


def reset_game():
    global target_celebrity
    target_celebrity = get_new_target_celebrity()
    return gr.update(value=f"{target_celebrity}"), None


with gr.Blocks() as game_block:
    image_input = gr.Image(type="numpy", label="Upload Celebrity Image")
    result_text = gr.Textbox(label=f"Target Celebrity:")
    result_text.value = target_celebrity
    meme_output = gr.Image(type="filepath", label=" ")

    game_interface = gr.Interface(
        fn=game_mode,
        inputs=image_input,
        outputs=[result_text, meme_output],
        live=True
    )

    reset_btn = gr.Button("Reset")
    reset_btn.click(fn=reset_game, inputs=[], outputs=[result_text, meme_output])

if __name__ == "__main__":
    game_block.launch()