|
import tensorflow as tf |
|
from tensorflow.keras.models import load_model |
|
from PIL import Image |
|
import requests |
|
from io import BytesIO |
|
from matplotlib import pyplot as plt |
|
import numpy as np |
|
import gradio as gr |
|
import json |
|
|
|
model = load_model('real-fake-best.h5') |
|
|
|
def index(image_url): |
|
response = requests.get(image_url) |
|
img = Image.open(BytesIO(response.content)) |
|
img = np.array(img) |
|
|
|
resize = tf.image.resize(img, (32, 32)) |
|
|
|
y_pred = model.predict(np.expand_dims(resize / 255, 0)) |
|
|
|
predictions = {"Fake": y_pred[0][0]*100, "Real": y_pred[0][1]*100} |
|
|
|
print("Predictions:", y_pred) |
|
predicted_class = np.argmax(y_pred) |
|
print("Predicted Class:", predicted_class) |
|
|
|
return json.dumps(predictions) |
|
|
|
inputs_image_url = [ |
|
gr.Textbox(type="text", label="Image URL"), |
|
] |
|
|
|
outputs_result_dict = [ |
|
gr.Textbox(type="text", label="Result Dictionary"), |
|
] |
|
|
|
interface_image_url = gr.Interface( |
|
fn=index, |
|
inputs=inputs_image_url, |
|
outputs=outputs_result_dict, |
|
title="AI Image Detection", |
|
cache_examples=False, |
|
) |
|
|
|
gr.TabbedInterface( |
|
[interface_image_url], |
|
tab_names=['Image inference'] |
|
).queue().launch() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|