|
import streamlit as st
|
|
import tensorflow as tf
|
|
from tensorflow.keras.preprocessing import image
|
|
import numpy as np
|
|
from PIL import Image
|
|
|
|
|
|
model = tf.keras.models.load_model('deepfake_detection.h5')
|
|
|
|
|
|
def load_and_preprocess_image(uploaded_image):
|
|
img = Image.open(uploaded_image)
|
|
img = img.resize((150, 150))
|
|
img_array = image.img_to_array(img)
|
|
img_array = np.expand_dims(img_array, axis=0)
|
|
img_array = img_array / 255.0
|
|
return img_array
|
|
|
|
|
|
def predict_image(uploaded_image):
|
|
img_array = load_and_preprocess_image(uploaded_image)
|
|
prediction = model.predict(img_array)
|
|
|
|
if prediction < 0.5:
|
|
return "Fake"
|
|
else:
|
|
return "Real"
|
|
|
|
|
|
st.title("Deepfake Image Classification")
|
|
st.write("Upload an image and the model will predict whether it's Real or Fake.")
|
|
|
|
|
|
uploaded_image = st.file_uploader("Choose an image...", type=["jpg", "jpeg"])
|
|
|
|
|
|
if uploaded_image is not None:
|
|
st.image(uploaded_image, caption="Uploaded Image", use_column_width=True)
|
|
st.write("")
|
|
|
|
if st.button("Predict"):
|
|
result = predict_image(uploaded_image)
|
|
if result == "Fake":
|
|
st.write("The image is **<span style='color:red;'>Fake</span>**", unsafe_allow_html=True)
|
|
else:
|
|
st.write("The image is **<span style='color:blue;'>Real</span>**", unsafe_allow_html=True)
|
|
|