Spaces:
Runtime error
Runtime error
""" | |
File: app.py | |
Author: Elena Ryumina and Dmitry Ryumin | |
Description: Description: Main application file for Facial_Expression_Recognition. | |
The file defines the Gradio interface, sets up the main blocks, | |
and includes event handlers for various components. | |
License: MIT License | |
""" | |
import os | |
import gradio as gr | |
from app_utils import preprocess_image_and_predict, preprocess_video_and_predict, preprocess_video_and_rank | |
from authors import AUTHORS | |
# Importing necessary components for the Gradio app | |
from description import DESCRIPTION_DYNAMIC, DESCRIPTION_STATIC | |
os.environ["no_proxy"] = "localhost,127.0.0.1,::1" | |
# def clear_static_info(): | |
# return ( | |
# gr.Image(value=None, type="pil"), | |
# gr.Image(value=None, scale=1, elem_classes="dl5"), | |
# gr.Image(value=None, scale=1, elem_classes="dl2"), | |
# gr.Label(value=None, num_top_classes=3, scale=1, elem_classes="dl3"), | |
# ) | |
# def clear_dynamic_info(): | |
# return ( | |
# gr.Video(value=None), | |
# gr.Video(value=None), | |
# gr.Video(value=None), | |
# gr.Video(value=None), | |
# gr.Plot(value=None), | |
# #gr.Textbox(Value=None) | |
# ) | |
def clear_dynamic_info(): | |
return ( | |
gr.Video(value=None), | |
gr.Plot(value=None), | |
gr.Textbox(""), | |
) | |
with gr.Blocks(css="app.css") as demo: | |
with gr.Tab("Dynamic App"): | |
gr.Markdown(value=DESCRIPTION_DYNAMIC) | |
with gr.Row(): | |
with gr.Column(scale=2): | |
input_video = gr.Video(sources=["webcam", "upload"], elem_classes="video1") | |
with gr.Row(): | |
clear_btn_dynamic = gr.Button( | |
value="Clear", interactive=True, scale=1 | |
) | |
# submit_dynamic = gr.Button( | |
# value="Submit", interactive=True, scale=1, elem_classes="submit" | |
# ) | |
submit_and_rank=gr.Button(value="Score", interactive=True, scale=1,elem_classes="submit") | |
with gr.Column(scale=2, elem_classes="dl4"): | |
with gr.Row(): | |
# output_video = gr.Video( | |
# label="Original video", scale=1, elem_classes="video2",visible=False, | |
# ) | |
# output_face = gr.Video( | |
# label="Pre-processed video", scale=1, elem_classes="video3",visible=False, | |
# ) | |
# output_heatmaps = gr.Video( | |
# label="Heatmaps", scale=1, elem_classes="video4",visible=False, | |
# ) | |
# debug_texts = gr.Textbox(lines=3,label='debug') | |
output_score=gr.Textbox(label='scores') | |
output_statistics = gr.Plot( | |
label="Statistics of emotions", elem_classes="stat" | |
) | |
gr.Examples( | |
[ | |
"videos/video1.mp4", | |
"videos/video2.mp4", | |
"videos/sample.webm", | |
"videos/cnm.mp4", | |
], | |
[input_video], | |
) | |
# with gr.Tab("Static App"): | |
# gr.Markdown(value=DESCRIPTION_STATIC) | |
# with gr.Row(): | |
# with gr.Column(scale=2, elem_classes="dl1"): | |
# input_image = gr.Image(label="Original image", type="pil") | |
# with gr.Row(): | |
# clear_btn = gr.Button( | |
# value="Clear", interactive=True, scale=1, elem_classes="clear" | |
# ) | |
# submit = gr.Button( | |
# value="Submit", interactive=True, scale=1, elem_classes="submit" | |
# ) | |
# with gr.Column(scale=1, elem_classes="dl4"): | |
# with gr.Row(): | |
# output_image = gr.Image(label="Face", scale=1, elem_classes="dl5") | |
# output_heatmap = gr.Image( | |
# label="Heatmap", scale=1, elem_classes="dl2" | |
# ) | |
# output_label = gr.Label(num_top_classes=3, scale=1, elem_classes="dl3") | |
# gr.Examples( | |
# [ | |
# "images/fig7.jpg", | |
# "images/fig1.jpg", | |
# "images/fig2.jpg", | |
# "images/fig3.jpg", | |
# "images/fig4.jpg", | |
# "images/fig5.jpg", | |
# "images/fig6.jpg", | |
# ], | |
# [input_image], | |
# ) | |
with gr.Tab("Authors"): | |
gr.Markdown(value=AUTHORS) | |
# submit.click( | |
# fn=preprocess_image_and_predict, | |
# inputs=[input_image], | |
# outputs=[output_image, output_heatmap, output_label], | |
# queue=True, | |
# ) | |
# clear_btn.click( | |
# fn=clear_static_info, | |
# inputs=[], | |
# outputs=[input_image, output_image, output_heatmap, output_label], | |
# queue=True, | |
# ) | |
# submit_dynamic.click( | |
# fn=preprocess_video_and_predict, | |
# inputs=input_video, | |
# outputs=[output_video, output_face, output_heatmaps, output_statistics], | |
# queue=True, | |
# ) | |
clear_btn_dynamic.click( | |
fn=clear_dynamic_info, | |
inputs=[], | |
outputs=[ | |
# input_video, | |
# output_video, | |
# output_face, | |
# output_heatmaps, | |
# output_statistics, | |
#debug_texts, | |
input_video, | |
output_statistics, | |
output_score, | |
], | |
queue=True, | |
) | |
submit_and_rank.click( | |
fn=preprocess_video_and_rank, | |
inputs=input_video, | |
outputs=[ | |
output_statistics, | |
output_score, | |
] | |
) | |
if __name__ == "__main__": | |
demo.queue(api_open=False).launch(share=False) | |