| """ |
| 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 gradio as gr |
|
|
| |
| from app.description import DESCRIPTION_STATIC, DESCRIPTION_DYNAMIC |
| from app.authors import AUTHORS |
| from app.app_utils import preprocess_image_and_predict, preprocess_video_and_predict |
|
|
|
|
| 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), |
| ) |
|
|
| with gr.Blocks(css="app.css") as demo: |
| with gr.Tab("่ง้ขไธ้ข้จๅๆ"): |
| gr.Markdown(value=DESCRIPTION_DYNAMIC) |
| with gr.Row(): |
| with gr.Column(scale=2): |
| input_video = gr.Video(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" |
| ) |
| with gr.Column(scale=2, elem_classes="dl4"): |
| |
| |
| |
| |
| output_statistics = gr.Plot(label="ๆ
ๆๆฐๆฎ", elem_classes="stat") |
| gr.Examples( |
| ["videos/video1.mp4", |
| "videos/video2.mp4", |
| ], |
| [input_video], |
| ) |
|
|
|
|
|
|
| submit_dynamic.click( |
| fn=preprocess_video_and_predict, |
| inputs=input_video, |
| outputs=[ |
| |
| |
| |
| output_statistics |
| ], |
| queue=True, |
| ) |
| clear_btn_dynamic.click( |
| fn=clear_dynamic_info, |
| inputs=[], |
| outputs=[ |
| input_video, |
| |
| |
| |
| output_statistics |
| ], |
| queue=True, |
| ) |
|
|
| if __name__ == "__main__": |
| demo.queue(api_open=False).launch(share=False) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |