|
import gradio as gr |
|
from helpers import load_video_from_url, detect_deepfake |
|
|
|
theme = gr.themes.Default( |
|
primary_hue="stone", |
|
secondary_hue="blue", |
|
neutral_hue="zinc", |
|
spacing_size="md", |
|
text_size="md", |
|
font=[gr.themes.GoogleFont("IBM Plex Mono"), "system-ui"] |
|
) |
|
|
|
callback = gr.CSVLogger() |
|
|
|
with gr.Blocks(theme=theme) as demo: |
|
|
|
|
|
|
|
urlInput = gr.Textbox( |
|
label="YOUTUBE VIDEO URL", |
|
value="https://www.youtube.com/watch?v=BmrUJhY9teE" |
|
) |
|
|
|
|
|
loadVideoBtn = gr.Button("Load Video") |
|
|
|
|
|
videoTitle = gr.Textbox( |
|
label="VIDEO TITLE", |
|
lines=1, |
|
interactive=False |
|
) |
|
|
|
|
|
sampleFrames = gr.Gallery( |
|
label="SAMPLE FRAMES", |
|
elem_id="gallery", |
|
columns=[3], |
|
rows=[1], |
|
object_fit="contain", |
|
height="auto" |
|
) |
|
|
|
|
|
predVideoBtn = gr.Button(value="Classify Video", visible=False) |
|
|
|
|
|
predOutput = gr.Label( |
|
label="DETECTED LABEL (AND CONFIDENCE LEVEL)", |
|
num_top_classes=2, |
|
visible=False |
|
) |
|
|
|
|
|
flagBtn = gr.Button(value="Flag Output", visible=False) |
|
|
|
|
|
|
|
loadVideoBtn.click(fn=load_video_from_url, inputs=[urlInput], outputs=[videoTitle, sampleFrames, predVideoBtn, predOutput]) |
|
|
|
|
|
predVideoBtn.click(fn=detect_deepfake, outputs=[predOutput, flagBtn]) |
|
|
|
|
|
callback.setup([urlInput], "flagged_data_points") |
|
|
|
|
|
flagBtn.click(fn=lambda *args: callback.flag(args), inputs=[urlInput], outputs=None) |
|
|
|
demo.launch() |
|
|