SpiderClassification / test_ds.py
Spidartist's picture
Upload 13 files
961d213
import tensorflow as tf
from keras.models import load_model
from keras.layers import Layer, Softmax
import numpy as np
test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1. / 255)
test_dir = "./dataset/test"
batch_size = 1
test_data = test_datagen.flow_from_directory(
test_dir,
target_size=(224, 224),
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=True,
seed=42
)
class_names = ['Black Widow',
'Blue Tarantula',
'Bold Jumper',
'Brown Grass Spider',
'Brown Recluse Spider',
'Deinopis Spider',
'Golden Orb Weaver',
'Hobo Spider',
'Huntsman Spider',
'Ladybird Mimic Spider',
'Peacock Spider',
'Red Knee Tarantula',
'Spiny-backed Orb-weaver',
'White Kneed Tarantula',
'Yellow Garden Spider']
class Normalization(Layer):
def __init__(self, name=None, **kwargs):
super(Normalization, self).__init__()
self.mean = [0.485, 0.456, 0.406]
self.std = [0.229, 0.224, 0.225]
def call(self, inputs):
return (inputs - self.mean) / self.std
cnn_model = load_model("./spider.h5", custom_objects={'Normalization': Normalization})
image, label = next(iter(test_data))
cnt = 0
max_num = 0
for (image, label) in test_data:
max_num += 1
y_hat = np.argmax(cnn_model.predict(image)[0])
y_true = np.argmax(label)
if y_true == y_hat:
cnt += 1
print("{:30s}{:30s}{}".format(class_names[y_hat], class_names[y_true], y_true == y_hat))
if max_num == 200:
break
print("Accuracy: ", cnt/max_num)