import gradio as gr | |
gr.load("models/dima806/facial_emotions_image_detection").launch() | |
# import gradio as gr | |
# import tensorflow as tf | |
# from transformers import pipeline | |
# def process_image(image): | |
# try: | |
# # Initialize emotion classifier | |
# classifier = pipeline("image-classification", model="dima806/facial_emotions_image_detection") | |
# # Get predictions | |
# result = classifier(image) | |
# # Convert results to required format | |
# emotions = {item['label']: float(item['score']) * 100 for item in result} | |
# # Generate analysis and report | |
# analysis = generate_analysis(emotions) | |
# report = generate_report(emotions, analysis) | |
# return [(k, v) for k, v in emotions.items()], analysis['detailed_analysis'], report | |
# except Exception as e: | |
# return [("error", 0)], f"Error: {str(e)}", "Error generating report" | |
# def generate_analysis(emotions): | |
# descriptions = { | |
# 'happy': 'indicates joy and positive mood', | |
# 'angry': 'suggests frustration or displeasure', | |
# 'surprise': 'shows astonishment', | |
# 'fear': 'reflects anxiety or concern', | |
# 'neutral': 'displays a balanced state' | |
# } | |
# top_emotion = max(emotions.items(), key=lambda x: x[1]) | |
# return { | |
# "primary_emotion": top_emotion[0], | |
# "detailed_analysis": f"Primary emotion detected is {top_emotion[0]} ({top_emotion[1]:.1f}%), which {descriptions.get(top_emotion[0], '')}." | |
# } | |
# def generate_report(emotions, analysis): | |
# return f"""Emotion Analysis Report | |
# Primary Emotion: {analysis['primary_emotion'].upper()} | |
# Confidence: {emotions[analysis['primary_emotion']]:.1f}% | |
# All Detected Emotions: | |
# """ + '\n'.join(f"- {k}: {v:.1f}%" for k, v in sorted( | |
# emotions.items(), | |
# key=lambda x: x[1], | |
# reverse=True)) | |
# # Create Gradio interface | |
# with gr.Blocks(theme=gr.themes.Soft()) as app: | |
# gr.Markdown("# Facial Emotion Analysis System") | |
# with gr.Row(): | |
# with gr.Column(scale=1): | |
# input_image = gr.Image(type="numpy") | |
# submit_btn = gr.Button("Analyze", variant="primary") | |
# with gr.Column(scale=1): | |
# emotion_scores = gr.Label(label="Emotion Scores") | |
# analysis_text = gr.Textbox(label="Analysis", lines=3) | |
# report_text = gr.Textbox(label="Full Report", lines=10) | |
# download_btn = gr.Button("Download Report") | |
# submit_btn.click( | |
# fn=process_image, | |
# inputs=[input_image], | |
# outputs=[emotion_scores, analysis_text, report_text] | |
# ) | |
# download_btn.click( | |
# fn=lambda x: x, | |
# inputs=[report_text], | |
# outputs=[gr.File(label="Download Report")] | |
# ) | |
# app.launch() |