| import tensorflow as tf |
| import numpy as np |
| from PIL import Image |
| import os |
|
|
| MODEL_PATH = os.path.join( |
| os.path.dirname(__file__), |
| "saved_model", |
| "Inception_V3_Animals_Classification.h5" |
| ) |
|
|
| model = tf.keras.models.load_model(MODEL_PATH) |
|
|
| CLASS_NAMES = ["Cat", "Dog", "Snake"] |
|
|
| def preprocess_image(img: Image.Image, target_size=(256, 256)): |
| img = img.convert("RGB") |
| img = img.resize(target_size) |
| img = np.array(img).astype("float32") / 255.0 |
| img = np.expand_dims(img, axis=0) |
| return img |
|
|
| def predict(img: Image.Image): |
| input_tensor = preprocess_image(img) |
| preds = model.predict(input_tensor)[0] |
|
|
| class_idx = int(np.argmax(preds)) |
| confidence = float(np.max(preds)) |
|
|
| prob_dict = {CLASS_NAMES[i]: float(preds[i]) for i in range(len(CLASS_NAMES))} |
|
|
| return CLASS_NAMES[class_idx], confidence, prob_dict |