saritha5's picture
Update app.py
d459273
import gradio as gr
from tensorflow.keras.models import load_model
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from sklearn.metrics import roc_curve,auc,classification_report,confusion_matrix
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from PIL import Image
import cv2
import keras
from keras.utils import np_utils
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D,MaxPooling2D,Dense,Flatten,Dropout
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint,ReduceLROnPlateau
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam,SGD,RMSprop,Adamax
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.callbacks import ReduceLROnPlateau
from sklearn.model_selection import StratifiedKFold
from tensorflow.keras.applications import MobileNetV2
from random import shuffle
from tqdm import tqdm
import scipy
import skimage
from skimage.transform import resize
import random
import os
from io import BytesIO
import h5py
model_file_path = "mobile_net_occ.h5"
plt. figure(figsize=(10,9))
def occ_predict(img_content):
im = []
image=cv2.imread(img_content)
print(type(image))
imgplot = plt.imshow(image)
plt.show()
img = Image.fromarray(image, 'RGB')
resize_image = img.resize((50, 50))
im.append(np.array(resize_image))
fv = np.array(im)
np_array_img = fv.astype('float32') / 255
model_gcs = h5py.File(model_file_path, 'r')
print(model_file_path)
myModel = load_model(model_gcs)
prediction = myModel.predict(np_array_img)
score = prediction[0][0].item()
thresh = 0.5
if score > thresh:
return "The house is "+"Not Occluded "+" and the occlusion Score is "+str(round(score,2))
else:
return "The house is "+"Occluded "+"and the occlusion Score is "+str(round(score,2))
#predicted_label, score = occ_predict("img1.jpg")
inputs = gr.inputs.Image(type = 'filepath')
#label = gr.outputs.Label(num_top_classes=2)
EXAMPLES = ["img1.png","img2.png","img3.png","img15.png","img11.png","img12.png","img18.png","img20.png"]
DESCRIPTION = """An image is occluded if the image is blocked by any object.
For example if an electric pole is filled with bushes,the image is occluded since it is not clear and blocked.
Mobil-net is used to train a model with occluded and non occluded images, so that it can correctly classify the images.
Occlusion detection can be used to filter unclear images and take safety measures."""
demo_app = gr.Interface(
fn=occ_predict,
inputs=inputs,
outputs= "text",
title = "Prediction of Occluded or not Occluded Image",
description = DESCRIPTION,
examples = EXAMPLES,
#cache_example = True,
#live = True,
theme = 'huggingface'
)
demo_app.launch()