import gradio as gr from demo import VideoCLSModel sample_videos = [ [ "data/svitt-ego-demo/0/video/2d560d56-dc47-4c76-8d41-889c8aa55d66-converted.mp4", "data/svitt-ego-demo/0/video/eb5cb2b0-59e6-45da-af1b-ba86c7ab0b54-converted.mp4", "data/svitt-ego-demo/0/video/0a3097fc-baed-4d11-a4c9-30f07eb91af6-converted.mp4", "data/svitt-ego-demo/0/video/1a870d5d-5787-4098-ad8d-fe7343c43698-converted.mp4", "data/svitt-ego-demo/0/video/014b473f-aec0-49c7-b394-abc7309ca3c7-converted.mp4", ], [ "data/svitt-ego-demo/1/video/029eeb9a-8853-48a4-a1dc-e8868b58adf3-converted.mp4", "data/svitt-ego-demo/1/video/968139e2-987e-4615-a2d4-fa2e683bae8a-converted.mp4", "data/svitt-ego-demo/1/video/fb9fda68-f264-465d-9208-19876f5ef90f-converted.mp4", "data/svitt-ego-demo/1/video/53da674a-089d-428a-a719-e322b2de002b-converted.mp4", "data/svitt-ego-demo/1/video/060e07d8-e818-4f9c-9d6b-6504f5fd42a3-converted.mp4", ], [ "data/svitt-ego-demo/2/video/fa2f1291-3796-41a6-8f7b-6e7c1491b9b2-converted.mp4", "data/svitt-ego-demo/2/video/8d83478f-c5d2-4ac3-a823-e1b2ac7594d7-converted.mp4", "data/svitt-ego-demo/2/video/5f6f87ea-e1c3-4868-bb60-22c9e874d056-converted.mp4", "data/svitt-ego-demo/2/video/77718528-2de9-48b4-b6b8-e7c602032afb-converted.mp4", "data/svitt-ego-demo/2/video/9abbf7f4-68f0-4f52-812f-df2a3df48f7b-converted.mp4", ], [ "data/svitt-ego-demo/3/video/2a6b3d10-8da9-4f0e-a681-59ba48a55dbf-converted.mp4", "data/svitt-ego-demo/3/video/5afd7421-fb6b-4c65-a09a-716f79a7a935-converted.mp4", "data/svitt-ego-demo/3/video/f7aec252-bd4f-4696-8de5-ef7b871e2194-converted.mp4", "data/svitt-ego-demo/3/video/84d6855a-242b-44a6-b48d-2db302b5ea7a-converted.mp4", "data/svitt-ego-demo/3/video/81fff27c-97c0-483a-ad42-47fa947977a9-converted.mp4", ], ] sample_text = [ "drops the palm fronds on the ground", "stands up", "throws nuts in a bowl", "puts the speaker and notepad in both hands on a seat", ] sample_text_dict = { "drops the palm fronds on the ground": 0, "stands up": 1, "throws nuts in a bowl": 2, "puts the speaker and notepad in both hands on a seat": 3, } num_samples = len(sample_videos[0]) labels = [f"video-{i}" for i in range(num_samples)] def main(): svitt = VideoCLSModel( "configs/ego_mcq/svitt.yml", sample_videos, ) def predict(text): idx = sample_text_dict[text] ft_action, gt_action = svitt.predict(idx, text) return labels[gt_action], labels[ft_action] with gr.Blocks() as demo: gr.Markdown( """ # SViTT-Ego for Multiple Choice Question Choose a sample query and click predict to view the results. """ ) with gr.Row(): videos = [ gr.Video(label=labels[i], format='mp4', height=256, width=256, autoplay=True) for i in range(num_samples) ] with gr.Row(): text = gr.Text(label="Query", visible=False) label = gr.Text(label="Ground Truth") ours = gr.Text(label="SViTT-Ego prediction") btn = gr.Button("Predict", variant="primary") btn.click(predict, inputs=[text], outputs=[label, ours]) inputs = [text] inputs.extend(videos) gr.Examples(examples=[[sample_text[i], x[0], x[1], x[2], x[3], x[4]] for i, x in enumerate(sample_videos)], inputs=inputs) demo.launch() if __name__ == "__main__": main()