Last active
July 6, 2019 10:43
-
-
Save ZER-0-NE/e16e1ee4d03cb4d51de12bc14f34a572 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// The model overfits around 20 epochs. The saved checkpoint model works well on the test set by giving just 18 false positives | |
// as compared to 36 in other cases. The model is shallow as compared to other researchers. The batch size=128 and small lr | |
// were significant factor in getting low losses. Next try would be to increase lr and dropout. | |
// This was trained on the new dataset | |
train_data_path = 'detection_data_1/train/' | |
validation_data_path = 'detection_data_1/val/' | |
test_data_path = 'detection_data_1/test/' | |
#Parametres | |
img_width, img_height = 150, 250 | |
nb_train_samples = sum(len(files) for _, _, files in os.walk(train_data_path)) | |
nb_validation_samples = sum(len(files) for _, _, files in os.walk(validation_data_path)) | |
# print(nb_train_samples) | |
epochs = 100 | |
batch_size = 128 | |
if K.image_data_format() == 'channels_first': | |
input_shape = (3, img_width, img_height) | |
else: | |
input_shape = (img_width, img_height, 3) | |
# K.set_image_dim_ordering('th') | |
model = Sequential() | |
model.add(Conv2D(64, (7, 7), padding = 'same', input_shape=input_shape)) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.4)) | |
model.add(Conv2D(64, (7, 7), padding = 'same')) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.4)) | |
model.add(Conv2D(64, (7, 7), padding = 'same')) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.4)) | |
model.add(Conv2D(128, (7, 7), padding = 'same')) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.5)) | |
model.add(Conv2D(128, (7, 7), padding = 'same')) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.5)) | |
model.add(Conv2D(128, (7, 7), padding = 'same')) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.5)) | |
model.add(Conv2D(256, (7, 7), padding = 'same')) | |
model.add(Activation('relu')) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.5)) | |
model.add(Flatten()) | |
model.add(Dense(256)) | |
model.add(Activation('relu')) | |
model.add(Dense(1)) | |
model.add(Activation('sigmoid')) | |
model.compile(loss='binary_crossentropy', | |
optimizer=optimizers.Adam(lr=3e-4), | |
metrics=['accuracy']) | |
from keras.callbacks import ReduceLROnPlateau, ModelCheckpoint | |
checkpoint = ModelCheckpoint(filepath='checkpointORCA_adam-{epoch:02d}-{val_loss:.2f}.h5', monitor='val_loss', verbose=0, save_best_only=True) | |
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, | |
patience=20, min_lr=1e-8) | |
train_datagen = ImageDataGenerator(rescale=1. / 255, | |
shear_range=0.2, | |
zoom_range=0.2) | |
# this is the augmentation configuration we will use for testing: | |
# only rescaling | |
test_datagen = ImageDataGenerator(rescale=1. / 255) | |
# Change the batchsize according to your system RAM | |
train_batchsize = 128 | |
val_batchsize = 128 | |
train_generator = train_datagen.flow_from_directory( | |
train_data_path, | |
target_size=(img_width, img_height), | |
batch_size=train_batchsize, | |
class_mode='binary', | |
shuffle=True) | |
# train_generator.reset() | |
# validation_generator.reset() | |
validation_generator = test_datagen.flow_from_directory( | |
validation_data_path, | |
target_size=(img_width, img_height), | |
batch_size=val_batchsize, | |
class_mode='binary', | |
shuffle=False) | |
# validation_generator.reset() | |
history = model.fit_generator( | |
train_generator, | |
steps_per_epoch=nb_train_samples // batch_size, | |
epochs=epochs, | |
validation_data=validation_generator, | |
validation_steps=nb_validation_samples // batch_size, | |
callbacks=[checkpoint, reduce_lr]) | |
# model.save_weights('orca_detection_3.h5') | |
model.save('OrcaCNN_detection_adam_15x25.h5') | |
Found 22790 images belonging to 2 classes. | |
Found 16574 images belonging to 2 classes. | |
Epoch 1/100 | |
178/178 [==============================] - 431s 2s/step - loss: 0.4748 - acc: 0.7393 - val_loss: 0.2205 - val_acc: 0.9122 | |
Epoch 2/100 | |
178/178 [==============================] - 401s 2s/step - loss: 0.2067 - acc: 0.9208 - val_loss: 0.1519 - val_acc: 0.9383 | |
Epoch 3/100 | |
178/178 [==============================] - 404s 2s/step - loss: 0.1670 - acc: 0.9355 - val_loss: 0.1493 - val_acc: 0.9413 | |
Epoch 4/100 | |
178/178 [==============================] - 403s 2s/step - loss: 0.1567 - acc: 0.9405 - val_loss: 0.1545 - val_acc: 0.9440 | |
Epoch 5/100 | |
178/178 [==============================] - 402s 2s/step - loss: 0.1401 - acc: 0.9467 - val_loss: 0.1239 - val_acc: 0.9508 | |
Epoch 6/100 | |
178/178 [==============================] - 400s 2s/step - loss: 0.1303 - acc: 0.9494 - val_loss: 0.1279 - val_acc: 0.9509 | |
Epoch 7/100 | |
178/178 [==============================] - 401s 2s/step - loss: 0.1286 - acc: 0.9505 - val_loss: 0.1196 - val_acc: 0.9536 | |
Epoch 8/100 | |
178/178 [==============================] - 400s 2s/step - loss: 0.1317 - acc: 0.9492 - val_loss: 0.1193 - val_acc: 0.9542 | |
Epoch 9/100 | |
178/178 [==============================] - 401s 2s/step - loss: 0.1213 - acc: 0.9534 - val_loss: 0.1264 - val_acc: 0.9519 | |
Epoch 10/100 | |
178/178 [==============================] - 400s 2s/step - loss: 0.1133 - acc: 0.9552 - val_loss: 0.1113 - val_acc: 0.9566 | |
Epoch 11/100 | |
178/178 [==============================] - 399s 2s/step - loss: 0.1126 - acc: 0.9572 - val_loss: 0.1048 - val_acc: 0.9594 | |
Epoch 12/100 | |
178/178 [==============================] - 399s 2s/step - loss: 0.1133 - acc: 0.9550 - val_loss: 0.1201 - val_acc: 0.9556 | |
Epoch 13/100 | |
178/178 [==============================] - 399s 2s/step - loss: 0.1121 - acc: 0.9564 - val_loss: 0.1085 - val_acc: 0.9579 | |
Epoch 14/100 | |
178/178 [==============================] - 399s 2s/step - loss: 0.1045 - acc: 0.9599 - val_loss: 0.1072 - val_acc: 0.9594 | |
Epoch 15/100 | |
178/178 [==============================] - 399s 2s/step - loss: 0.1036 - acc: 0.9590 - val_loss: 0.1111 - val_acc: 0.9579 | |
Epoch 16/100 | |
178/178 [==============================] - 396s 2s/step - loss: 0.1018 - acc: 0.9602 - val_loss: 0.1133 - val_acc: 0.9576 | |
Epoch 17/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.1016 - acc: 0.9589 - val_loss: 0.1139 - val_acc: 0.9555 | |
Epoch 18/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.1024 - acc: 0.9602 - val_loss: 0.1109 - val_acc: 0.9575 | |
Epoch 19/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0962 - acc: 0.9624 - val_loss: 0.1094 - val_acc: 0.9590 | |
Epoch 20/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0979 - acc: 0.9619 - val_loss: 0.1052 - val_acc: 0.9602 | |
Epoch 21/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.1014 - acc: 0.9611 - val_loss: 0.1063 - val_acc: 0.9589 | |
Epoch 22/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0963 - acc: 0.9629 - val_loss: 0.1000 - val_acc: 0.9632 | |
Epoch 23/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0918 - acc: 0.9642 - val_loss: 0.1106 - val_acc: 0.9601 | |
Epoch 24/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0920 - acc: 0.9633 - val_loss: 0.1088 - val_acc: 0.9583 | |
Epoch 25/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0942 - acc: 0.9632 - val_loss: 0.1140 - val_acc: 0.9568 | |
Epoch 26/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0877 - acc: 0.9661 - val_loss: 0.1025 - val_acc: 0.9599 | |
Epoch 27/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0848 - acc: 0.9660 - val_loss: 0.1240 - val_acc: 0.9566 | |
Epoch 28/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0917 - acc: 0.9644 - val_loss: 0.1186 - val_acc: 0.9573 | |
Epoch 29/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0841 - acc: 0.9679 - val_loss: 0.1086 - val_acc: 0.9568 | |
Epoch 30/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0827 - acc: 0.9671 - val_loss: 0.1054 - val_acc: 0.9594 | |
Epoch 31/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0859 - acc: 0.9671 - val_loss: 0.1010 - val_acc: 0.9619 | |
Epoch 32/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0861 - acc: 0.9658 - val_loss: 0.1034 - val_acc: 0.9587 | |
Epoch 33/100 | |
178/178 [==============================] - 396s 2s/step - loss: 0.0792 - acc: 0.9702 - val_loss: 0.0979 - val_acc: 0.9613 | |
Epoch 34/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0786 - acc: 0.9697 - val_loss: 0.1149 - val_acc: 0.9571 | |
Epoch 35/100 | |
178/178 [==============================] - 396s 2s/step - loss: 0.0805 - acc: 0.9686 - val_loss: 0.1038 - val_acc: 0.9601 | |
Epoch 36/100 | |
178/178 [==============================] - 397s 2s/step - loss: 0.0825 - acc: 0.9684 - val_loss: 0.1026 - val_acc: 0.9594 | |
Epoch 37/100 | |
178/178 [==============================] - 396s 2s/step - loss: 0.0874 - acc: 0.9654 - val_loss: 0.1283 - val_acc: 0.9556 | |
Epoch 38/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0789 - acc: 0.9695 - val_loss: 0.1031 - val_acc: 0.9608 | |
Epoch 39/100 | |
178/178 [==============================] - 396s 2s/step - loss: 0.0727 - acc: 0.9728 - val_loss: 0.1166 - val_acc: 0.9571 | |
Epoch 40/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0743 - acc: 0.9705 - val_loss: 0.1040 - val_acc: 0.9617 | |
Epoch 41/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0706 - acc: 0.9708 - val_loss: 0.1103 - val_acc: 0.9577 | |
Epoch 42/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0809 - acc: 0.9691 - val_loss: 0.1044 - val_acc: 0.9606 | |
Epoch 43/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0733 - acc: 0.9718 - val_loss: 0.1070 - val_acc: 0.9591 | |
Epoch 44/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0733 - acc: 0.9732 - val_loss: 0.1142 - val_acc: 0.9571 | |
Epoch 45/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0715 - acc: 0.9724 - val_loss: 0.0987 - val_acc: 0.9642 | |
Epoch 46/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0770 - acc: 0.9702 - val_loss: 0.1067 - val_acc: 0.9605 | |
Epoch 47/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0667 - acc: 0.9745 - val_loss: 0.1050 - val_acc: 0.9596 | |
Epoch 48/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0704 - acc: 0.9717 - val_loss: 0.1079 - val_acc: 0.9607 | |
Epoch 49/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0701 - acc: 0.9717 - val_loss: 0.1074 - val_acc: 0.9601 | |
Epoch 50/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0678 - acc: 0.9738 - val_loss: 0.1088 - val_acc: 0.9601 | |
Epoch 51/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0659 - acc: 0.9743 - val_loss: 0.1066 - val_acc: 0.9587 | |
Epoch 52/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0637 - acc: 0.9735 - val_loss: 0.1080 - val_acc: 0.9588 | |
Epoch 53/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0599 - acc: 0.9768 - val_loss: 0.1099 - val_acc: 0.9614 | |
Epoch 54/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0604 - acc: 0.9765 - val_loss: 0.1128 - val_acc: 0.9595 | |
Epoch 55/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0614 - acc: 0.9765 - val_loss: 0.1093 - val_acc: 0.9605 | |
Epoch 56/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0513 - acc: 0.9799 - val_loss: 0.1062 - val_acc: 0.9605 | |
Epoch 57/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0519 - acc: 0.9803 - val_loss: 0.1151 - val_acc: 0.9593 | |
Epoch 58/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0623 - acc: 0.9770 - val_loss: 0.1097 - val_acc: 0.9603 | |
Epoch 59/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0517 - acc: 0.9788 - val_loss: 0.1201 - val_acc: 0.9580 | |
Epoch 60/100 | |
178/178 [==============================] - 393s 2s/step - loss: 0.0485 - acc: 0.9801 - val_loss: 0.1154 - val_acc: 0.9606 | |
Epoch 61/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0514 - acc: 0.9799 - val_loss: 0.1190 - val_acc: 0.9601 | |
Epoch 62/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0503 - acc: 0.9803 - val_loss: 0.1159 - val_acc: 0.9590 | |
Epoch 63/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0466 - acc: 0.9826 - val_loss: 0.1105 - val_acc: 0.9606 | |
Epoch 64/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0481 - acc: 0.9805 - val_loss: 0.1188 - val_acc: 0.9607 | |
Epoch 65/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0454 - acc: 0.9822 - val_loss: 0.1147 - val_acc: 0.9616 | |
Epoch 66/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0495 - acc: 0.9811 - val_loss: 0.1160 - val_acc: 0.9587 | |
Epoch 67/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0472 - acc: 0.9816 - val_loss: 0.1106 - val_acc: 0.9620 | |
Epoch 68/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0442 - acc: 0.9830 - val_loss: 0.1161 - val_acc: 0.9598 | |
Epoch 69/100 | |
178/178 [==============================] - 394s 2s/step - loss: 0.0426 - acc: 0.9835 - val_loss: 0.1163 - val_acc: 0.9594 | |
Epoch 70/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0459 - acc: 0.9816 - val_loss: 0.1200 - val_acc: 0.9553 | |
Epoch 71/100 | |
178/178 [==============================] - 395s 2s/step - loss: 0.0406 - acc: 0.9841 - val_loss: 0.1301 - val_acc: 0.9541 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment