Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement