Spaces:
Sleeping
Sleeping
# Imporiting Necessary Libraries | |
import tensorflow as tf | |
import numpy as np | |
from PIL import Image | |
# Cleanig image | |
def clean_image(image): | |
image = np.array(image) | |
# Resizing the image | |
image = np.array(Image.fromarray( | |
image).resize((512, 512), Image.ANTIALIAS)) | |
# Adding batch dimensions to the image | |
# YOu are seeting :3, that's becuase sometimes user upload 4 channel image, | |
image = image[np.newaxis, :, :, :3] | |
# So we just take first 3 channels | |
return image | |
def get_prediction(model, image): | |
datagen = tf.keras.preprocessing.image.ImageDataGenerator( | |
rescale=1./255) | |
# Inputting the image to keras generators | |
test = datagen.flow(image) | |
# Predict from the image | |
predictions = model.predict(test) | |
predictions_arr = np.array(np.argmax(predictions)) | |
return predictions, predictions_arr | |
# Making the final results | |
def make_results(predictions, predictions_arr): | |
result = {} | |
if int(predictions_arr) == 0: | |
result = {"status": " is Healthy ", | |
"prediction": f"{int(predictions[0][0].round(2)*100)}%"} | |
if int(predictions_arr) == 1: | |
result = {"status": ' has Multiple Diseases ', | |
"prediction": f"{int(predictions[0][1].round(2)*100)}%"} | |
if int(predictions_arr) == 2: | |
result = {"status": ' has Rust ', | |
"prediction": f"{int(predictions[0][2].round(2)*100)}%"} | |
if int(predictions_arr) == 3: | |
result = {"status": ' has Scab ', | |
"prediction": f"{int(predictions[0][3].round(2)*100)}%"} | |
return result | |