import os import gradio as gr import json from gradio_client import Client, handle_file # Initialize backend client with error handling try: backend = Client(os.getenv("BACKEND"), hf_token=os.getenv("TOKEN")) except Exception as e: raise Exception(f"Failed to initialize backend client: {str(e)}") def detect(image): """Detect deepfake content in an image with comprehensive error handling""" if image is None: raise gr.Error("Please upload an image to analyze") try: result_text = backend.predict( image=handle_file(image), api_name="/detect" ) result = json.loads(result_text) if not result or result.get("status") != "ok": raise gr.Error("Analysis failed: Invalid response from backend") # Format results professionally overall = f"{result['overall']}% Confidence" aigen = f"{result['aigen']}% (AI-Generated Content Likelihood)" deepfake = f"{result['deepfake']}% (Face Manipulation Likelihood)" return overall, aigen, deepfake except json.JSONDecodeError: raise gr.Error("Error processing analysis results") except Exception as e: raise gr.Error(f"Analysis error: {str(e)}") # Enhanced professional CSS custom_css = """ .container { max-width: 1200px; margin: 0 auto; padding: 20px; font-family: 'Arial', sans-serif; } .header { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; } .button-gradient { background: linear-gradient(45deg, #3498db, #2ecc71, #9b59b6); background-size: 400% 400%; border: none; padding: 12px 24px; font-size: 16px; font-weight: 600; color: white; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; animation: gradientAnimation 3s ease infinite; box-shadow: 0 2px 8px rgba(52, 152, 219, 0.3); } .button-gradient:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(52, 152, 219, 0.5); } @keyframes gradientAnimation { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .label { font-weight: 600; color: #34495e; background: #f8f9fa; padding: 10px; border-radius: 5px; margin: 5px 0; } .footer { color: #7f8c8d; font-size: 14px; margin-top: 20px; } """ # Professional content MARKDOWN0 = """

DeepFake Detection System

Advanced AI-powered analysis for identifying manipulated media

Learn About Our Technology
""" MARKDOWN3 = """ """ with gr.Blocks(css=custom_css, theme=gr.themes.Default()) as demo: gr.Markdown(MARKDOWN0) with gr.Row(elem_classes="container"): with gr.Column(scale=1): image = gr.Image( type='filepath', height=400, label="Upload Image for Analysis", interactive=True ) detect_button = gr.Button( "Analyze Image", elem_classes="button-gradient" ) gr.Examples( examples=['examples 1.jpg', 'examples 2.jpg'], inputs=image, outputs=['overall', 'aigen', 'deepfake'], fn=detect, cache_examples=True ) with gr.Column(scale=2): overall = gr.Label(label="Confidence Score", elem_classes="label") with gr.Row(): aigen = gr.Label(label="AI-Generated Content", elem_classes="label") deepfake = gr.Label(label="Face Manipulation", elem_classes="label") gr.Markdown(MARKDOWN3) # Visitor badge gr.HTML("""
""") detect_button.click( fn=detect, inputs=[image], outputs=[overall, aigen, deepfake], _js="() => {return [document.querySelector('input[type=file]').files[0]]}" ) demo.queue(api_open=False, concurrency_count=8).launch( server_name="0.0.0.0", show_api=False, debug=True )