File size: 1,295 Bytes
9f9b2fc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import gradio as gr
import tensorflow as tf
import numpy as np

# 1. Load your model
model = tf.keras.models.load_model("face_forgery_detector.keras")

# 2. Define your inference function
def detect_forgery(image):
    # Preprocess the image to match your model’s input requirements
    img = tf.image.resize(image, (160, 160))  # Example size; adjust for your model
    img = tf.expand_dims(img, axis=0)
    img = img / 255.0  # Example normalization; adapt as needed

    # Run inference
    predictions = model.predict(img)[0]  # e.g., [Real_prob, Fake_prob]
    # Suppose predictions = [prob_real, prob_fake]
    prob_real = predictions[0]
    prob_fake = predictions[1]

    # Format output
    # You can return a dictionary or a string. For example:
    if prob_fake > prob_real:
        return f"Forged (Fake) with confidence {prob_fake:.2f}"
    else:
        return f"Real with confidence {prob_real:.2f}"

# 3. Build your Gradio interface
demo = gr.Interface(
    fn=detect_forgery,
    inputs=gr.Image(type="numpy"),  # 'type="numpy"' gives a NumPy array
    outputs="text",
    title="Face Forgery Detector",
    description="Upload a face image to check if it's likely forged or real."
)

# 4. Launch the app (Gradio handles the rest)
if __name__ == "__main__":
    demo.launch()