khhamid's picture
Upload folder using huggingface_hub
e2a99cd verified
import numpy as np
from sklearn.metrics import classification_report, confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
from keras.utils import image_dataset_from_directory
train_dir="/media/data/plants_diseases_dataset/train"
val_dir="/media/data/plants_diseases_dataset/valid"
img_size=(224,224)
batch_size=32
train_ds=image_dataset_from_directory(train_dir,
image_size=img_size,
batch_size=batch_size,
label_mode="categorical")
val_ds=image_dataset_from_directory(val_dir,
image_size=img_size,
batch_size=batch_size,
label_mode="categorical")
def evaluate_model(model, dataset, class_names):
"""
Evaluate a trained Keras model on a dataset.
Args:
model: Trained Keras model
dataset: tf.data.Dataset (e.g. val_ds)
class_names: list of class names
"""
# Get predictions and true labels
y_true = []
y_pred = []
for batch in dataset:
images, labels = batch
preds = model.predict(images)
y_true.extend(np.argmax(labels.numpy(), axis=1))
y_pred.extend(np.argmax(preds, axis=1))
# Classification report
print("\n--- Classification Report ---")
print(classification_report(y_true, y_pred, target_names=class_names))
# Confusion matrix
cm = confusion_matrix(y_true, y_pred)
plt.figure(figsize=(10, 8))
sns.heatmap(cm, annot=False, cmap="Blues", xticklabels=class_names, yticklabels=class_names)
plt.title("Confusion Matrix")
plt.xlabel("Predicted")
plt.ylabel("True")
plt.show()
# Overall accuracy
acc = np.mean(np.array(y_true) == np.array(y_pred))
print(f"\n Accuracy: {acc*100:.2f}%")
from keras.models import load_model
from keras.applications import mobilenet_v3
model = load_model("models/mobileNet_1.keras")
evaluate_model(model, val_ds, class_names=train_ds.class_names)