|
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() |