Spaces:
Sleeping
Sleeping
File size: 1,565 Bytes
e73e2a2 3a2cd79 e73e2a2 3a2cd79 e6fe7fe 3a2cd79 e73e2a2 eaa1a24 e3fbc7a e73e2a2 3a2cd79 3378d00 abc9bfa e3fbc7a abc9bfa b26c2e5 abc9bfa b26c2e5 abc9bfa b26c2e5 abc9bfa e3fbc7a b26c2e5 e3fbc7a b26c2e5 6ac5675 b26c2e5 f8b37ec efb1c5d e3fbc7a b26c2e5 efb1c5d e3fbc7a |
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 41 42 43 44 45 46 |
import os
import cv2
import numpy as np
import gradio as gr
import tensorflow as tf
from tensorflow.keras.models import load_model
from tensorflow.keras.applications.xception import preprocess_input as xcp_pre
from tensorflow.keras.applications.efficientnet import preprocess_input as eff_pre
from huggingface_hub import hf_hub_download
# Load models from Hugging Face Hub
xcp_path = hf_hub_download(repo_id="Zeyadd-Mostaffa/deepfake-image-detector_final", filename="xception_model.h5")
eff_path = hf_hub_download(repo_id="Zeyadd-Mostaffa/deepfake-image-detector_final", filename="efficientnet_model.h5")
xcp_model = load_model(xcp_path)
eff_model = load_model(eff_path)
def predict(image_path): # receives filepath from gr.Image(type="filepath")
image = cv2.imread(image_path)
if image is None:
return "Invalid image"
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
xcp_img = cv2.resize(image, (299, 299))
eff_img = cv2.resize(image, (224, 224))
xcp_tensor = xcp_pre(xcp_img.astype(np.float32))[np.newaxis, ...]
eff_tensor = eff_pre(eff_img.astype(np.float32))[np.newaxis, ...]
xcp_pred = xcp_model.predict(xcp_tensor, verbose=0).flatten()[0]
eff_pred = eff_model.predict(eff_tensor, verbose=0).flatten()[0]
avg_pred = (xcp_pred + eff_pred) / 2
label = "Real" if avg_pred > 0.5 else "Fake"
return label
iface = gr.Interface(
fn=predict,
inputs=gr.Image(type="filepath", label="image_path"),
outputs=gr.Text(label="output"), # <-- FIXED HERE
allow_flagging="never"
)
iface.launch()
|