54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import numpy as np
|
|
import tensorflow as tf
|
|
from tensorflow import keras
|
|
|
|
|
|
def norm_pix(image, label):
|
|
return image / 255, label
|
|
|
|
|
|
directoryTRAIN = "D:/Image_dataset/Image_datasetJPGnewBnW/Image_datasetJPGnewBnW/train"
|
|
directoryVALIDATION = "D:/Image_dataset/Image_datasetJPGnewBnW/Image_datasetJPGnewBnW/validation"
|
|
|
|
train_ds = tf.keras.utils.image_dataset_from_directory(directoryTRAIN,
|
|
seed=123, batch_size=16,
|
|
image_size=(200, 200), color_mode='rgb')#color_mode='grayscale')
|
|
|
|
|
|
val_ds = tf.keras.utils.image_dataset_from_directory(directoryVALIDATION,
|
|
seed=123, batch_size=16,
|
|
image_size=(200, 200), color_mode='rgb')#color_mode='grayscale')
|
|
|
|
|
|
train_ds = train_ds.map(norm_pix)
|
|
val_ds = val_ds.map(norm_pix)
|
|
|
|
model = keras.Sequential([
|
|
#keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(200, 200, 1)),
|
|
keras.layers.Conv2D(64, (3, 3), activation='relu', input_shape=(200, 200, 3)),
|
|
keras.layers.MaxPool2D((2, 2)),
|
|
|
|
keras.layers.Conv2D(128, (3, 3), activation='relu'),
|
|
keras.layers.MaxPool2D((2, 2)),
|
|
|
|
keras.layers.Conv2D(256, (3, 3), activation='relu'),
|
|
keras.layers.MaxPool2D((2, 2)),
|
|
|
|
keras.layers.Flatten(),
|
|
keras.layers.Dense(1024, activation='relu'),
|
|
keras.layers.Dense(4, activation='softmax')
|
|
])
|
|
|
|
print(model.summary())
|
|
|
|
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
|
|
|
|
trainHistory = model.fit(train_ds, epochs=8, validation_data=val_ds)
|
|
|
|
#model.save("model.h5")
|
|
model.save("model_color.h5")
|
|
|
|
(loss, accuracy) = model.evaluate(val_ds)
|
|
print(loss)
|
|
print(accuracy)
|