Image classification code
Image classification code
import tensorflow as tf
import os # os is used for joining the data like connecting data_dir with image Class(happy)
tf.config.list_physical_devices('GPU')
import cv2
import imghdr
plt.imshow(cv2.cvtColor(image,cv2.COLOR_BGR2RGB ))
data_dir = 'data'
try:
img = cv2.imread(image_path)
tip = imghdr.what(image_path)
os.remove(image_path)
except Exception as e:
# os.remove(image_path)
# 3. Load Data
import numpy as np
cons this don’t pre load in mem but we need to grab data using numpt iterator
data_iterator = data.as_numpy_iterator()
batch = data_iterator.next()
ax[idx].imshow(img.astype(int))
ax[idx].title.set_text(batch[1][idx])
# 4. Scale Data
data.as_numpy_iterator().next()
# 5. Split Data
train_size = int(len(data)*.7)
val_size = int(len(data)*.2)
test_size = int(len(data)*.1)
train_size
train = data.take(train_size)
val = data.skip(train_size).take(val_size)
test = data.skip(train_size+val_size).take(test_size)
train
model = Sequential()
model.add(MaxPooling2D())
model.add(MaxPooling2D())
model.add(MaxPooling2D())
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.summary()
# 7. Train
logdir='logs'
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)
# 8. Plot Performance
fig = plt.figure()
fig.suptitle('Loss', fontsize=20)
plt.legend(loc="upper left")
plt.show()
fig = plt.figure()
fig.suptitle('Accuracy', fontsize=20)
plt.legend(loc="upper left")
plt.show()
# 9. Evaluate
pre = Precision()
re = Recall()
acc = BinaryAccuracy()
X, y = batch
yhat = model.predict(X)
pre.update_state(y, yhat)
re.update_state(y, yhat)
acc.update_state(y, yhat)
# 10. Test
import cv2
img = cv2.imread('154006829.jpg')
plt.imshow(img)
plt.show()
plt.imshow(resize.numpy().astype(int))
plt.show()
yhat
else:
model.save(os.path.join('models','imageclassifier.h5'))
new_model = load_model('imageclassifier.h5')
new_model.predict(np.expand_dims(resize/255, 0))