Switch to side-by-side view

--- a
+++ b/classifier/getPrediction.py
@@ -0,0 +1,92 @@
+import pickle
+
+import cv2
+import numpy as np
+import tensorflow as tf
+from tensorflow.keras.models import load_model
+# Process image and predict label
+from tensorflow.python.keras.preprocessing.image import img_to_array
+
+from class_names import prediction_classs
+
+IMG_SIZE = 256
+LEARNING_RATE = 0.001
+COLOUR_MAP = 3
+classes = prediction_classs
+
+
+# Evaluate the model
+def evaluate_image(model_path, class_path, valididation_path, image_size):
+    # Load the model
+    model = tf.keras.models.load_model(model_path)
+    # Load classes
+    with open(class_path, 'rb') as file:
+        classes = pickle.load(file)
+    # Get a list of categories
+
+    image = cv2.imread(valididation_path)
+    # Get input reshaped and rescaled
+    image = cv2.resize(image, (image_size, image_size))
+    image_f = image.astype("float") / 255.0
+    image_a = img_to_array(image_f)
+    image_p = np.expand_dims(image_a, axis=0)
+    # Get predictions
+    predictions = model.predict(image_p).ravel()
+    # Print predictions
+    print(predictions)
+    # Get the class with the highest probability
+    prediction = np.argmax(predictions)
+    # Check if the prediction is correct
+    return classes[prediction]
+
+
+def processImg(img_path):
+    return evaluate_image(model_path=r'/Users/sikarwar07/PycharmProjects/MLPredictModelFlask/models'
+                                     r'/NASNet_32B_331x331.h5',
+                          class_path=r'/Users/sikarwar07/PycharmProjects/MLPredictModelFlask/models'
+                                     r'/NASNet_32B_331x331.pkl',
+                          valididation_path=img_path,
+                          image_size=331)
+
+# TODO Future implantation
+# Create image prediction in tabular format
+#     # Read image
+#     model = load_model("models/resnet152_class_23_epoch_50.h5")
+#     loss = tf.keras.losses.CategoricalCrossentropy()
+#     optimizer = tf.keras.optimizers.Adam(learning_rate=LEARNING_RATE)
+#     model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy'])
+#     image = cv2.imread(r"D:\test_data/" + category + '/' + name)
+#     # Preprocess image
+#     image = cv2.imread(IMG_PATH, 1)
+#     image = cv2.resize(image, (IMG_SIZE, IMG_SIZE))
+#     image = image.astype("float") / 255.0
+#     image = img_to_array(image)
+#     image = np.expand_dims(image, axis=0)
+#     predictions = model.predict(image).ravel()
+#     # Print predictions
+#     print(predictions)
+#     # Get the class with the highest probability
+#     prediction = np.argmax(predictions)
+#     # Check if the prediction is correct
+#     correct = True if classes[prediction].lower() == category else False
+#     # Draw the image and show the best prediction
+#     image = cv2.resize(image, (256, 256))
+#     cv2.putText(image, '{0}: {1} %'.format(classes[prediction], str(round(predictions[prediction] * 100, 2))),
+#                 (12, 22), cv2.FONT_HERSHEY_DUPLEX, 0.7, (0, 0, 0), 2)
+#     cv2.putText(image, '{0}: {1} %'.format(classes[prediction], str(round(predictions[prediction] * 100, 2))),
+#                 (10, 20), cv2.FONT_HERSHEY_DUPLEX, 0.7, (65, 105, 225), 2)
+#     cv2.putText(image, '{0}'.format('CORRECT!' if correct else 'WRONG!'), (12, 50), cv2.FONT_HERSHEY_DUPLEX, 0.7,
+#                 (0, 0, 0), 2)
+#     cv2.putText(image, '{0}'.format('CORRECT!' if correct else 'WRONG!'), (10, 48), cv2.FONT_HERSHEY_DUPLEX, 0.7,
+#                 (0, 255, 0) if correct else (0, 0, 255), 2)
+#
+#     # Append the image
+#     blocks.append(image)
+#
+#
+# # Display images and predictions
+# row1 = np.concatenate(blocks[0:3], axis=1)
+# row2 = np.concatenate(blocks[3:6], axis=1)
+# # cv2.imshow('Predictions', np.concatenate((row1, row2), axis=0))
+# cv2.imwrite('D:/New folder/New folderpredictions_renet50.jpg', np.concatenate((row1, row2), axis=0))
+# cv2.waitKey(0)