## Imported Modules ##
import streamlit as st
from tensorflow import keras
from keras.models import load_model
from keras.utils import load_img, img_to_array
import numpy as np
import cv2
from PIL import Image, ImageOps
import matplotlib.pyplot as plt
from matplotlib.image import imread
## Functions ##
@st.cache(allow_output_mutation = True)
def load_VGG():
model= load_model('model.h5')
return model
@st.cache(allow_output_mutation = True)
def load_Inception():
model= load_model('inception_v3_model.h5')
return model
def import_and_predict(image_data, model):
size = (224,224)
image = ImageOps.fit(image_data, size, Image.ANTIALIAS)
image = np.asarray(image)
img = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
img_reshape = img[np.newaxis,...]
prediction = model.predict(img_reshape)
if prediction[0]>=0.5:
final_result= 'Real'
else:
final_result= 'AI Generated'
return final_result,prediction[0]
## Layout##
rad = st.sidebar.radio("Navigation",["Home","Predict AI/Real"])
if rad=="Home":
st.title("AI_Image_Classifier")
st.subheader("By Hardik Pahwa")
st.markdown("""Differentiating between AI-generated content and real content is crucial in today's digital era.
As AI algorithms and deepfake technology advance, it becomes increasingly difficult to discern authenticity.
This ability is essential for preserving information integrity, combating misinformation, and maintaining trust in various fields.
Reliable tools and techniques are necessary to identify AI-generated content, ensuring transparency and protecting against manipulation.""",True)
st.markdown("Infact the text above and image below was also generated using AI :wink:")
st.image("sample.jpg")
elif rad=="Predict AI/Real":
st.write("""
# Image Classification
""")
v1 = st.radio("Choose Model",["VGG16","Inceptionv3"],index=0)
with st.spinner("Loading Model..."):
if v1=="VGG16":
model = load_VGG()
else:
model = load_Inception()
file = st.file_uploader("Upload an Image")
st.write(file)
st.set_option('deprecation.showfileUploaderEncoding', False)
if file != None:
image = Image.open(file)
st.image(file,use_column_width=True)
final_result= import_and_predict(image,model)[0]
result = import_and_predict(image,model)[1]
st.write("The image is :")
st.write(final_result)
st.write(result)
else:
st.write("No file uploaded")