|
""" |
|
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 |
|
from app.app_utils import preprocess_and_predict |
|
|
|
|
|
def clear(): |
|
return ( |
|
gr.Image(value=None, type="pil"), |
|
gr.Image(value=None, scale=1, elem_classes="dl2"), |
|
gr.Label(value=None, num_top_classes=3, scale=1, elem_classes="dl3"), |
|
) |
|
|
|
md = """ |
|
App developers: ``Elena Ryumina`` and ``Dmitry Ryumin`` |
|
|
|
Methodology developers: ``Elena Ryumina``, ``Denis Dresvyanskiy`` and ``Alexey Karpov`` |
|
|
|
Model developer: ``Elena Ryumina`` |
|
|
|
TensorFlow to PyTorch model converter: ``Maxim Markitantov`` and ``Elena Ryumina`` |
|
|
|
Citation |
|
|
|
If you are using EMO-AffectNetModel in your research, please consider to cite research [paper](https://www.sciencedirect.com/science/article/pii/S0925231222012656). Here is an example of BibTeX entry: |
|
|
|
<div class="highlight highlight-text-bibtex notranslate position-relative overflow-auto" dir="auto"><pre><span class="pl-k">@article</span>{<span class="pl-en">RYUMINA2022</span>, |
|
<span class="pl-s">title</span> = <span class="pl-s"><span class="pl-pds">{</span>In Search of a Robust Facial Expressions Recognition Model: A Large-Scale Visual Cross-Corpus Study<span class="pl-pds">}</span></span>, |
|
<span class="pl-s">author</span> = <span class="pl-s"><span class="pl-pds">{</span>Elena Ryumina and Denis Dresvyanskiy and Alexey Karpov<span class="pl-pds">}</span></span>, |
|
<span class="pl-s">journal</span> = <span class="pl-s"><span class="pl-pds">{</span>Neurocomputing<span class="pl-pds">}</span></span>, |
|
<span class="pl-s">year</span> = <span class="pl-s"><span class="pl-pds">{</span>2022<span class="pl-pds">}</span></span>, |
|
<span class="pl-s">doi</span> = <span class="pl-s"><span class="pl-pds">{</span>10.1016/j.neucom.2022.10.013<span class="pl-pds">}</span></span>, |
|
<span class="pl-s">url</span> = <span class="pl-s"><span class="pl-pds">{</span>https://www.sciencedirect.com/science/article/pii/S0925231222012656<span class="pl-pds">}</span></span>, |
|
}</div> |
|
""" |
|
|
|
|
|
with gr.Blocks(css="app.css") as demo: |
|
with gr.Tab("App"): |
|
gr.Markdown(value=DESCRIPTION) |
|
with gr.Row(): |
|
with gr.Column(scale=2, elem_classes="dl1"): |
|
input_image = gr.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"): |
|
output_image = gr.Image(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=md) |
|
|
|
submit.click( |
|
fn=preprocess_and_predict, |
|
inputs=[input_image], |
|
outputs=[output_image, output_label], |
|
queue=True, |
|
) |
|
clear_btn.click( |
|
fn=clear, |
|
inputs=[], |
|
outputs=[input_image, output_image, output_label], |
|
queue=True, |
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.queue(api_open=False).launch(share=False) |
|
|