├── .DS_Store ├── .gitignore ├── .ipynb_checkpoints ├── PreProcessingModule-checkpoint.ipynb └── main-checkpoint.ipynb ├── CNN.py ├── CNN.pyc ├── Constants.py ├── Constants.pyc ├── Helper.py ├── ObjectDetection.py ├── PreProcessingModule.ipynb ├── PreProcessingModule.py ├── PreProcessingModule.pyc ├── README.md ├── Report Folder ├── 1.png ├── Img1.png ├── Img10.png ├── Img2.png ├── Img3.png ├── Img4.png ├── Img5.png ├── Img7.png ├── Img8.png ├── Img9.png ├── ObjectDetectionWithImageSegmentation.png ├── image-pipeline │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5-comp.png │ └── 5-ours.png ├── object-detection-classification.pdf └── report.txt ├── Tuning_CNN.py ├── __pycache__ ├── CNN.cpython-35.pyc ├── CNN.cpython-36.pyc ├── Constants.cpython-35.pyc ├── Constants.cpython-36.pyc ├── Helper.cpython-36.pyc ├── ObjectDetection.cpython-35.pyc ├── ObjectDetection.cpython-36.pyc ├── PreProcessingModule.cpython-35.pyc └── PreProcessingModule.cpython-36.pyc ├── logs ├── Fold #0 │ ├── events.out.tfevents.1525479917.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525479920.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480085.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480087.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480396.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480398.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480473.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480475.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480660.DESKTOP-8GOVN1C │ └── events.out.tfevents.1525480662.DESKTOP-8GOVN1C └── Fold #1 │ ├── events.out.tfevents.1525479946.DESKTOP-8GOVN1C │ ├── events.out.tfevents.1525480114.DESKTOP-8GOVN1C │ └── events.out.tfevents.1525480688.DESKTOP-8GOVN1C ├── main.ipynb ├── main.py ├── object_detection_test ├── Original Image 0.png ├── Original Image 1.png ├── Pretrained Version 1 Image 0.png ├── Pretrained Version 1 Image 1.png ├── Pretrained Version 2 Image 0.png ├── Pretrained Version 2 Image 1.png ├── Pretrained Version 3 Image 0.png ├── Pretrained Version 3 Image 1.png ├── Pretrained Version 4 Image 0.png ├── Pretrained Version 4 Image 1.png ├── Pretrained Version 5 Image 0.png ├── Pretrained Version 5 Image 1.png ├── Pretrained Version 6 Image 0.png ├── Pretrained Version 6 Image 1.png ├── Version 3 Image 0.png ├── Version 3 Image 1.png ├── Version 5 Image 0.png ├── Version 5 Image 1.png ├── Version 6 Image 0.png ├── Version 6 Image 1.png └── test.png └── text_logs ├── Fold #0.txt ├── Fold #1.txt ├── Fold #2.txt ├── Fold #3.txt ├── Fold #4.txt ├── average.txt ├── pretrained_attempt_4.txt ├── pretrained_attempt_5.txt └── pretrained_attempt_6.txt /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | images/ 2 | small_images/ 3 | smallShipData.json 4 | small_test_data.txt 5 | small_training_data.txt 6 | other_small_test_data.json 7 | other_small_training_data.json 8 | *.h5 -------------------------------------------------------------------------------- /.ipynb_checkpoints/PreProcessingModule-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Define Preprocessing Methods" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "from PIL import Image, ImageEnhance, ImageOps\n", 17 | "import numpy as np\n", 18 | "import Constants\n", 19 | "import os\n", 20 | "import cv2\n", 21 | "import pdb\n", 22 | "\n", 23 | "##############################################################################\n", 24 | "#Returns a list of file names for the images\n", 25 | "##############################################################################\n", 26 | "def get_unprocessed_image_files():\n", 27 | " \n", 28 | " #Stores all of the big images in this list\n", 29 | " image_file_list = None\n", 30 | " \n", 31 | " #Retrieve image paths\n", 32 | " for root, dirs, files in os.walk(Constants.IMAGE_FILE_LOCATION):\n", 33 | " image_file_list = files;\n", 34 | " \n", 35 | " return image_file_list;\n" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 2, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "#Erosion followed by dilation to remove/reduce noise in an image\n", 45 | "def cv_opening(img, kernel) :\n", 46 | " opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)\n", 47 | " return opening\n", 48 | "\n", 49 | "#Dilation followed by erosion to plug in holes in the image\n", 50 | "def cv_closing(img, kernel) :\n", 51 | " closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)\n", 52 | " return closing\n", 53 | "\n", 54 | "#Cleans the image and combines spaces on the image\n", 55 | "def clean_image(img, kernel) :\n", 56 | " img = cv_opening(img, kernel)\n", 57 | " #Dilate the image in order to fill in empty spots\n", 58 | " dilation_kernel = np.ones((3,3), np.uint8) \n", 59 | " img = cv2.dilate(img, dilation_kernel, iterations = 2)\n", 60 | " #Attempt to return the objects to closer to their normal sizes\n", 61 | " erosion_kernel = np.ones((2,2), np.uint8)\n", 62 | " img = cv2.erode(img, erosion_kernel, iterations = 1)\n", 63 | " \n", 64 | " return img\n" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 3, 70 | "metadata": {}, 71 | "outputs": [], 72 | "source": [ 73 | "##############################################################################\n", 74 | "#Return a list of preprocessed image files where each image is greyscaled\n", 75 | "#the contrast is increased by a large margin to reduce the number of \n", 76 | "#color variation\n", 77 | "#############################################################################\n", 78 | "def get_pr_images(max_images = 1, greyscale=None, greyscale_threshhold = 80):\n", 79 | " #Retrieve image file list\n", 80 | " image_file_list = get_unprocessed_image_files()\n", 81 | " #Turn each image file item into an Image object\n", 82 | " image_list = []\n", 83 | " #Create a kernel to move through the image\n", 84 | " kernel = np.ones((3,3), np.uint8)\n", 85 | " \n", 86 | " #Counter to see how many images we are working on and break once we reach image_count\n", 87 | " counter = 0\n", 88 | " \n", 89 | " #Iterate through each file name and turn them into Image objects\n", 90 | " #then, preprocess them before appending it to the list\n", 91 | " for file_name in image_file_list:\n", 92 | " counter += 1\n", 93 | " image = None\n", 94 | " if greyscale != None: \n", 95 | " #The Image object obtained from the file in greyscale mode\n", 96 | " image = cv2.imread(Constants.IMAGE_FILE_LOCATION + file_name, cv2.IMREAD_GRAYSCALE)\n", 97 | " #Check if the Image should be a binary grey scale with only 0 and 255 values\n", 98 | " if greyscale == 'binary':\n", 99 | " image[image < greyscale_threshhold] = 0\n", 100 | " image[image > greyscale_threshhold] = 255 \n", 101 | " else :\n", 102 | " #The Image object obtained from the file in normal mode\n", 103 | " image = cv2.imread(Constants.IMAGE_FILE_LOCATION + file_name, cv2.IMREAD_UNCHANGED)\n", 104 | " #Clean the image\n", 105 | " image = clean_image(image, kernel)\n", 106 | " #Append the object onto the list\n", 107 | " image_list.append(image)\n", 108 | " \n", 109 | " #Break if we pre-processed enough images\n", 110 | " if counter == max_images:\n", 111 | " break;\n", 112 | " \n", 113 | " #Return the list of Image objects\n", 114 | " return image_list\n", 115 | " " 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 4, 121 | "metadata": {}, 122 | "outputs": [], 123 | "source": [ 124 | "##############################################################################\n", 125 | "#Displays an image until the user presses a key\n", 126 | "#############################################################################\n", 127 | "def displayImage(image):\n", 128 | " #Create a window object\n", 129 | " cv2.namedWindow(\"image_window\", cv2.WINDOW_NORMAL)\n", 130 | " #Show the image within that window\n", 131 | " cv2.imshow(\"image_window\", image)\n", 132 | " #Makes the window show the image until the user presses a value\n", 133 | " cv2.waitKey()\n", 134 | " #User has pressed a value\n", 135 | " cv2.destroyAllWindows()" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": 5, 141 | "metadata": {}, 142 | "outputs": [], 143 | "source": [ 144 | "##############################################################################\n", 145 | "#Saves an image inside of the object detection test folder\n", 146 | "#############################################################################\n", 147 | "def saveImage(image, file_name = \"test.png\"):\n", 148 | " cv2.imwrite(Constants.PR_SAVE_LOCATION + file_name, image)" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 6, 154 | "metadata": {}, 155 | "outputs": [], 156 | "source": [ 157 | "##############################################################################\n", 158 | "#Creates a binary matrix of 0 and 1 values\n", 159 | "#############################################################################\n", 160 | "def normalize_image(image, reverse = False) :\n", 161 | " if reverse == False:\n", 162 | " image /= 255\n", 163 | " else:\n", 164 | " image *= 255\n", 165 | "\n", 166 | " return image" 167 | ] 168 | }, 169 | { 170 | "cell_type": "code", 171 | "execution_count": 7, 172 | "metadata": {}, 173 | "outputs": [], 174 | "source": [ 175 | "def create_bbox(image, bbox_locations, box_thickness = 3):\n", 176 | " for x, y, width, height in bbox_locations:\n", 177 | " cv2.rectangle(image, (x,y), (x+width, y+height), (255, 0, 0), box_thickness)\n", 178 | " return image" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 8, 184 | "metadata": {}, 185 | "outputs": [], 186 | "source": [ 187 | "image_list = get_pr_images(max_images=2, greyscale='binary', greyscale_threshhold=104)" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 9, 193 | "metadata": {}, 194 | "outputs": [], 195 | "source": [ 196 | "displayImage(image_list[1])" 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "execution_count": null, 202 | "metadata": {}, 203 | "outputs": [], 204 | "source": [ 205 | "saveImage(image_list[1])" 206 | ] 207 | }, 208 | { 209 | "cell_type": "code", 210 | "execution_count": null, 211 | "metadata": {}, 212 | "outputs": [], 213 | "source": [] 214 | } 215 | ], 216 | "metadata": { 217 | "kernelspec": { 218 | "display_name": "Python 3", 219 | "language": "python", 220 | "name": "python3" 221 | }, 222 | "language_info": { 223 | "codemirror_mode": { 224 | "name": "ipython", 225 | "version": 3 226 | }, 227 | "file_extension": ".py", 228 | "mimetype": "text/x-python", 229 | "name": "python", 230 | "nbconvert_exporter": "python", 231 | "pygments_lexer": "ipython3", 232 | "version": "3.5.2" 233 | } 234 | }, 235 | "nbformat": 4, 236 | "nbformat_minor": 2 237 | } 238 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/main-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Main" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 2, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "#Begin Program\n", 17 | "import PreProcessingModule as ppm\n", 18 | "import CNN\n", 19 | "import ObjectDetection as od\n", 20 | "import Constants as const\n", 21 | "import pdb\n", 22 | "\n", 23 | "GREYSCALE_THRESHHOLD = 104\n", 24 | "IMAGE_COUNT = 2\n", 25 | "\n", 26 | "#Get a list of pre-processed images\n", 27 | "pr_image_list = ppm.get_pr_images(max_images = IMAGE_COUNT, greyscale='binary',\n", 28 | " greyscale_threshhold = GREYSCALE_THRESHHOLD);\n", 29 | "#Get a list of nomral images\n", 30 | "norm_image_list = ppm.get_upr_images(max_images = IMAGE_COUNT)\n", 31 | "#Stores the cropped images whose shape is 80x80x3\n", 32 | "cropped_image_list = []\n", 33 | "#Stores the boxes for later referall to redraw the bounding boxes on \n", 34 | "#items that are ships, where each item is x,y,width,height\n", 35 | "opt_bbox = None\n", 36 | "bbox_image = None\n", 37 | "\n", 38 | "#Create probable bounding boxes around items in the image and put them in a list\n", 39 | "for curr_image_index in range(len(pr_image_list)) :\n", 40 | " #Retrieve a processed and an unprocessed image\n", 41 | " curr_pr_image = pr_image_list[curr_image_index]\n", 42 | " curr_upr_image = norm_image_list[curr_image_index]\n", 43 | " #Get the height and width of the whole image\n", 44 | " image_height = curr_upr_image.shape[0]\n", 45 | " image_width = curr_upr_image.shape[1]\n", 46 | " #Retrieve the locations of all of the objects\n", 47 | " object_locations = od.detect(curr_pr_image)\n", 48 | " #Optimize the bounding boxes\n", 49 | " opt_bbox = ppm.scale_bbox(image_width, image_height, object_locations)\n", 50 | " bbox_image = ppm.create_bbox(curr_pr_image, opt_bbox)\n", 51 | " #Create the bounding box around the original image\n", 52 | " cropped_image_list = ppm.crop(curr_upr_image, opt_bbox)\n", 53 | "\n", 54 | "ppm.display_image(bbox_image)\n" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": null, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": null, 67 | "metadata": {}, 68 | "outputs": [], 69 | "source": [] 70 | } 71 | ], 72 | "metadata": { 73 | "kernelspec": { 74 | "display_name": "Python 3", 75 | "language": "python", 76 | "name": "python3" 77 | }, 78 | "language_info": { 79 | "codemirror_mode": { 80 | "name": "ipython", 81 | "version": 3 82 | }, 83 | "file_extension": ".py", 84 | "mimetype": "text/x-python", 85 | "name": "python", 86 | "nbconvert_exporter": "python", 87 | "pygments_lexer": "ipython3", 88 | "version": "3.5.2" 89 | } 90 | }, 91 | "nbformat": 4, 92 | "nbformat_minor": 2 93 | } 94 | -------------------------------------------------------------------------------- /CNN.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import os 3 | os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' 4 | from keras.models import Model, Sequential 5 | from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Input 6 | from keras.optimizers import SGD 7 | from keras import metrics 8 | from keras.models import load_model 9 | from keras.applications.vgg16 import VGG16 10 | from keras.preprocessing.image import ImageDataGenerator 11 | import h5py 12 | import json 13 | 14 | #Creates and returns a CNN model with a given architecture 15 | #Structure is a boolean array of size 5, if a given index of structure is False it turns off the cooresponding pooling layer 16 | def build_CNN(learning_rate, decay_rate, momentum_value, structure): 17 | 18 | #Build the CNN model by modifying VGGNet to fit the image size 19 | model = Sequential() 20 | 21 | model.add(Conv2D(64, (3, 3), activation='relu', padding = 'same', input_shape = (80, 80, 3))) 22 | model.add(Conv2D(64, (3, 3), activation='relu', padding = 'same')) 23 | if structure[0]: 24 | model.add(MaxPooling2D((2, 2))) 25 | 26 | model.add(Conv2D(128, (3, 3), activation='relu', padding = 'same')) 27 | model.add(Conv2D(128, (3, 3), activation='relu', padding = 'same')) 28 | if structure[1]: 29 | model.add(MaxPooling2D((2, 2))) 30 | 31 | model.add(Conv2D(256, (3, 3), activation='relu', padding = 'same')) 32 | model.add(Conv2D(256, (3, 3), activation='relu', padding = 'same')) 33 | if structure[2]: 34 | model.add(MaxPooling2D((2, 2))) 35 | 36 | model.add(Conv2D(512, (3, 3), activation='relu', padding = 'same')) 37 | model.add(Conv2D(512, (3, 3), activation='relu', padding = 'same')) 38 | model.add(Conv2D(512, (3, 3), activation='relu', padding = 'same')) 39 | if structure[3]: 40 | model.add(MaxPooling2D((2, 2))) 41 | 42 | model.add(Conv2D(512, (3, 3), activation='relu', padding = 'same')) 43 | model.add(Conv2D(512, (3, 3), activation='relu', padding = 'same')) 44 | model.add(Conv2D(512, (3, 3), activation='relu', padding = 'same')) 45 | if structure[4]: 46 | model.add(MaxPooling2D((2, 2))) 47 | 48 | #add a fully connected layer 49 | model.add(Flatten()) 50 | model.add(Dense(4096, activation='relu')) 51 | model.add(Dense(4096, activation='relu')) 52 | model.add(Dense(1, activation='sigmoid')) 53 | 54 | #Set up the input size 55 | img_input = Input(shape=(80, 80, 3)) 56 | output = model(img_input) 57 | 58 | #Set up optimizer along with the loss function 59 | sgd = SGD(lr = learning_rate, decay = decay_rate, momentum = momentum_value, nesterov = True) 60 | model.compile(loss = 'binary_crossentropy', optimizer = sgd, metrics=[metrics.binary_accuracy]) 61 | 62 | return model 63 | 64 | #Trains a given model with given data and labels 65 | # Batch is the number of samples per gradient update 66 | #Epoch size is how many epochs to train the model 67 | def train_CNN(model, data, labels, batch, epoch_size): 68 | 69 | model.fit(data, labels, batch_size=batch, epochs=epoch_size) 70 | 71 | return model 72 | 73 | #Trains a given model using a generator object (which augments the data) 74 | #Steps defines how many batches of augmented data the model should be trained on per epoch 75 | #Epoch size is how many epochs to train the model 76 | def train_generator_CNN(model, generator, steps, epoch_size, validation, run): 77 | 78 | history = model.fit_generator(generator, steps_per_epoch=steps, epochs=epoch_size, validation_data=validation).history 79 | 80 | #Reformat history 81 | pretty_history = "" 82 | for i in range(len(history["binary_accuracy"])): 83 | pretty_history_format = "Epoch #{4:<3}: Training Accuracy: {0:.16f} Training Loss: {1:.16f} Epoch #{5:<3}: Validation Accuracy: {2:.16f} Validation Loss: {3:.16f}" 84 | pretty_history += pretty_history_format.format(history["binary_accuracy"][i], history["loss"][i], history["val_binary_accuracy"][i], history["val_loss"][i], str(i+1), str(i+1)) + "\n" 85 | if i%5 == 4: 86 | pretty_history += "\n" 87 | 88 | #Log file save location 89 | file_location = "text_logs" + "\\" + run + ".txt" 90 | print(file_location) 91 | 92 | #Save a text file with training information 93 | log_file = open(file_location, 'w') 94 | log_file.write(pretty_history) 95 | log_file.close() 96 | 97 | return model 98 | 99 | #Tests the given model on the data and labels on a given batch size 100 | def test_CNN(model, data, labels, batch): 101 | 102 | loss, accuracy = model.evaluate(data, labels, batch_size=batch) 103 | print("Loss: ", loss, " Accuracy: ", accuracy) 104 | 105 | return loss, accuracy 106 | 107 | #Saves the model passed in to the given file location 108 | def save_CNN(model, location): 109 | model.save(location) 110 | 111 | #Loads and returns a trained model from the given file location 112 | def load_CNN(location): 113 | return load_model(location) 114 | 115 | #Takes in a trained CNN model and data and outputs predicted values for every datapoint 116 | def predict_CNN(model, x): 117 | y = model.predict(x, 50) 118 | return y 119 | 120 | #Loads and freezes the weights of VGG16's convolutional layers and adds trainable fully connected layers 121 | def load_pretrained_VGG16(learning_rate, decay_rate, momentum_value, input_shape): 122 | #Get vgg16 weights 123 | vgg16_model = VGG16(weights="imagenet", include_top=False) 124 | 125 | #Freeze all convolutional layers 126 | # for layer in vgg16_model.layers: 127 | # layer.trainable = False 128 | 129 | #Choose input format 130 | input = Input(shape=input_shape, name="image_input") 131 | 132 | #Use generated model 133 | vgg16_output = vgg16_model(input) 134 | 135 | #Add fully connected layers 136 | x = Flatten(name ='flatten')(vgg16_output) 137 | x = Dense(4096, activation='relu', name='fc1')(x) 138 | x = Dense(4096, activation='relu', name='fc2')(x) 139 | x = Dense(1, activation='sigmoid', name='predications')(x) 140 | 141 | #Create the model 142 | sgd = SGD(lr = learning_rate, decay = decay_rate, momentum = momentum_value, nesterov = True) 143 | pretrained_model = Model(inputs=input, outputs=x) 144 | pretrained_model.compile(loss = 'binary_crossentropy', optimizer = sgd, metrics=[metrics.binary_accuracy]) 145 | 146 | return pretrained_model 147 | 148 | #Returns an object that augments the dataset during training 149 | def data_augmentation(x, y, batches=50): 150 | datagen = ImageDataGenerator( 151 | rotation_range=45, 152 | width_shift_range=0.2, 153 | height_shift_range=0.2, 154 | zoom_range = 0.2, 155 | horizontal_flip=True, 156 | vertical_flip=True, 157 | fill_mode='nearest' 158 | ) 159 | 160 | return datagen.flow(x, y, batch_size=batches) -------------------------------------------------------------------------------- /CNN.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/CNN.pyc -------------------------------------------------------------------------------- /Constants.py: -------------------------------------------------------------------------------- 1 | #Image File Location 2 | IMAGE_FILE_LOCATION = './images/' 3 | PR_SAVE_LOCATION = "./object_detection_test/" 4 | SMALL_IMAGES_LOCATION = "./small_images/" 5 | 6 | #Small Ship Data File Names 7 | FULL_SMALL_IMAGE_DATASET = './smallShipData.json' 8 | TEST_SMALL_IMAGE_DATASET = 'small_test_data.txt' 9 | TRAINING_SMALL_IMAGE_DATASET = 'small_training_data.txt' 10 | TRAINED_CNN_MODEL = 'trained_CNN.h5' 11 | 12 | #New Small Ship Data File Names 13 | OTHER_TEST_SMALL_IMAGE_DATASET = 'other_small_test_data.json' 14 | OTHER_TRAINING_SMALL_IMAGE_DATASET = 'other_small_training_data.json' 15 | OTHER_TRAINED_CNN_MODEL = 'other_trained_CNN.h5' 16 | #Same as version4 (This one sucked) 17 | OTHER_GENERATOR_TRAINED_CNN_MODEL = 'other_generated_trained_CNN.h5' 18 | 19 | #Models after data augmentation 20 | #Unless otherwise specified, learing rate = 00.1, momentum = 1e-6, decay = 0.9 21 | #Default value I saw on website with 50 samples 22 | GENERATOR_TRAINED_CNN_MODEL = 'generated_trained_CNN.h5' 23 | #Same but with 100 samples 24 | GENERATOR_TRAINED_CNN_MODEL_TWO = 'generated_version2_trained_CNN.h5' 25 | #Adding rotational augmentation 26 | GENERATOR_TRAINED_CNN_MODEL_THREE = 'generated_version3_trained_CNN.h5' 27 | #Adding featurewise_center (Not very good) 28 | GENERATOR_TRAINED_CNN_MODEL_FOUR = 'generated_version4_trained_CNN.h5' 29 | #Added 2 fully connected layers 100/100 30 | GENERATOR_TRAINED_CNN_MODEL_FIVE = 'generated_version5_trained_CNN.h5' 31 | #Same as version 5 but 200/100 (Best for the final object detection ship predictions) 32 | GENERATOR_TRAINED_CNN_MODEL_SIX = 'generated_version6_trained_CNN.h5' 33 | 34 | 35 | 36 | #Models with transfer learning 37 | # Learning rate = 0.001, decay = 0.9, epoch = 10 38 | # Training Values loss: 0.0160 - binary_accuracy: 0.9990 39 | # Validation Values Loss: 0.1450024089826009 Accuracy: 0.9860000014305115 40 | PRETRAINED_CNN_MODEL_ONE = "pretrained_attempt_1.h5" 41 | 42 | #Learning rate = 0.0001, decay = 0.75, epoch = 10 43 | # Training Values loss: 0.0042 - binary_accuracy: 0.9995 44 | # Validation Values Loss: 0.06005835090763867 Accuracy: 0.977999997138977 45 | PRETRAINED_CNN_MODEL_TWO = "pretrained_attempt_2.h5" 46 | 47 | # Learning rate = 0.00001, decay = 0.65, epoch = 30 48 | # Training Values loss: 0.0239 - binary_accuracy: 0.9945 49 | # Validation Values Loss: 0.1274039216339588 Accuracy: 0.9580000042915344 50 | PRETRAINED_CNN_MODEL_THREE = "pretrained_attempt_3.h5" 51 | 52 | # Learning rate = 0.001, decay = 0.9, epoch = 10 with data aumentation 53 | # Training Values loss: 4.1746 - binary_accuracy: 0.7410 54 | # Validation Values val_loss: 3.7394 - val_binary_accuracy: 0.7680 55 | PRETRAINED_CNN_MODEL_FOUR = "pretrained_attempt_4.h5" 56 | 57 | #Learning rate = 0.0001, decay = 0.75, epoch = 10 with data augmentation 58 | # Training Values loss: 0.0434 - binary_accuracy: 0.9853 59 | # Validation Values val_loss: 0.0395 - val_binary_accuracy: 0.9860 60 | PRETRAINED_CNN_MODEL_FIVE = "pretrained_attempt_5.h5" 61 | 62 | # Learning rate = 0.00001, decay = 0.65, epoch = 30 with data augmentation 63 | # Training Values loss: 0.0779 - binary_accuracy: 0.9732 64 | # Validation Values val_loss: 0.0575 - val_binary_accuracy: 0.9700 65 | PRETRAINED_CNN_MODEL_SIX = "pretrained_attempt_6.h5" 66 | -------------------------------------------------------------------------------- /Constants.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Constants.pyc -------------------------------------------------------------------------------- /Helper.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import json 3 | import glob 4 | import os 5 | import Constants 6 | import numpy as np 7 | from PreProcessingModule import reshape_data 8 | from keras.preprocessing.image import array_to_img, img_to_array, load_img 9 | 10 | #Extracts the data from the small ship images along with their labels, divdes the data into training and testing data, and saves these into two seperate files 11 | def extract_images(): 12 | os.chdir(Constants.SMALL_IMAGES_LOCATION) 13 | full_data = [] 14 | full_labels = [] 15 | 16 | #Iterate through all images in the small image folder 17 | for file in glob.glob("*.png"): 18 | #Extract data from individual images 19 | img = load_img(file) 20 | img_array = img_to_array(img) 21 | 22 | #Add data to arrays 23 | full_data.append(img_array.astype(int)) 24 | full_labels.append(int(file[0])) 25 | 26 | full_data = np.asarray(full_data) 27 | 28 | #Shuffle data 29 | concatenated_data = np.asarray(list(zip(full_data, full_labels))) 30 | np.random.shuffle(concatenated_data) 31 | 32 | #Divide dataset 33 | test_dataset = concatenated_data[2500:] 34 | training_dataset = concatenated_data[:2500] 35 | 36 | test_data, test_labels = zip(*test_dataset) 37 | training_data, training_labels = zip(*training_dataset) 38 | 39 | #Create json objects to be exported to a file 40 | json_test = {} 41 | json_test["data"]=np.array(test_data) 42 | json_test["labels"]=np.array(test_labels) 43 | json_training = {} 44 | json_training["data"]=np.array(training_data) 45 | json_training["labels"]=np.array(training_labels) 46 | 47 | #Save json objects into their respective files 48 | test_file = open(Constants.OTHER_TEST_SMALL_IMAGE_DATASET, 'w') 49 | training_file = open(Constants.OTHER_TRAINING_SMALL_IMAGE_DATASET, 'w') 50 | 51 | np.set_printoptions(threshold=np.inf) 52 | test_file.write(str(json_test)) 53 | training_file.write(str(json_training)) 54 | 55 | test_file.close() 56 | training_file.close() 57 | 58 | #Divides the original small ship dataset in the json file 59 | def divide_data(): 60 | 61 | #Load full dataset from file 62 | json_dataset = json.load(open(Constants.FULL_SMALL_IMAGE_DATASET)) 63 | 64 | #Extract necessary information from json 65 | full_data = np.array(json_dataset['data']) 66 | full_labels = np.array(json_dataset['labels']) 67 | 68 | #Shuffle data 69 | concatenated_data = np.asarray(list(zip(full_data, full_labels))) 70 | np.random.shuffle(concatenated_data) 71 | 72 | #Divide dataset 73 | test_dataset = concatenated_data[2500:] 74 | training_dataset = concatenated_data[:2500] 75 | 76 | test_data, test_labels = zip(*test_dataset) 77 | training_data, training_labels = zip(*training_dataset) 78 | 79 | #Create json objects to be exported to a file 80 | json_test = {} 81 | json_test["data"]=np.array(test_data) 82 | json_test["labels"]=np.array(test_labels) 83 | json_training = {} 84 | json_training["data"]=np.array(training_data) 85 | json_training["labels"]=np.array(training_labels) 86 | 87 | 88 | #Save json objects into their respective files 89 | test_file = open(Constants.TEST_SMALL_IMAGE_DATASET, 'w') 90 | training_file = open(Constants.TRAINING_SMALL_IMAGE_DATASET, 'w') 91 | 92 | np.set_printoptions(threshold=np.inf) 93 | test_file.write(str(json_test)) 94 | training_file.write(str(json_training)) 95 | 96 | test_file.close() 97 | training_file.close() 98 | 99 | #Returns the image data along with their respective labels 100 | def load_data(data_location, data_size=(80,80)): 101 | 102 | #Load data from file 103 | json_dataset = json.load(open(data_location)) 104 | 105 | labels = json_dataset['labels'] 106 | data = [] 107 | 108 | #Turn data into a usuable format for a cnn 109 | for img in json_dataset['data']: 110 | data.append(np.transpose(np.resize(img, (3,80,80)))) 111 | 112 | data = reshape_data(data, data_size) 113 | data = np.asarray(data) 114 | 115 | return np.array(data), np.array(labels) 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /ObjectDetection.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import PreProcessingModule as ppm 3 | 4 | test_weight = 0 5 | 6 | def detect(original_img, activation_weight_threshhold = 3000, max_weight_threshhold = 8000, 7 | stride_size = 100): 8 | curr_img = ppm.normalize_image(original_img) 9 | #Store the position of all of the bounding boxes 10 | objectList = [] 11 | global MAX_X_AXIS 12 | global MAX_Y_AXIS 13 | global test_weight 14 | #Initialize the max index for the X axis 15 | MAX_X_AXIS = curr_img.shape[1] 16 | #Initialize the max index for the Y axis 17 | MAX_Y_AXIS = curr_img.shape[0] 18 | #The starting and ending position of where the sliding windows is at 19 | start_x = 0; 20 | start_y = 0; 21 | end_x = 0; 22 | end_y = 0; 23 | #Start sliding windows 24 | while(start_y < MAX_Y_AXIS): 25 | #Check to make sure that start_y is smaller than the largest y index 26 | if(start_y + stride_size < MAX_Y_AXIS): 27 | end_y += stride_size 28 | else: 29 | end_y += (MAX_Y_AXIS - start_y) 30 | while(start_x < MAX_X_AXIS): 31 | #Check to make sure that start_x is smaller than the largest x index 32 | if(end_x + stride_size < MAX_X_AXIS): 33 | end_x += stride_size 34 | else: 35 | end_x += (MAX_X_AXIS - start_x); 36 | #Calculate the current weight for the current sliding window position 37 | curr_weight = find_weight(curr_img, start_x, end_x, start_y, end_y) 38 | if(curr_weight < activation_weight_threshhold): 39 | objectList.extend(find_object(original_img, curr_img, max_weight_threshhold, start_x, end_x, start_y, end_y)) 40 | objectList.remove([]) 41 | #Set the start X position to the end poistion of the previous iteration 42 | start_x = end_x 43 | #Reset start_x and end_x back to 0 44 | start_x = 0 45 | end_x = 0 46 | #Set the start_y position to end_y 47 | start_y = end_y 48 | return objectList 49 | 50 | #Find the weight for the specific poistion 51 | def find_weight(img, start_x, end_x, start_y, end_y): 52 | return np.sum(img[start_y:end_y,start_x:end_x]) 53 | 54 | #Check if there a possible object within the given position 55 | def find_object(original_img, curr_img, max_weight_threshhold, start_x, end_x, start_y, end_y): 56 | possible_locations = [[]] 57 | global test_weight 58 | x = 0 59 | y = 0 60 | width = 0 61 | length = 0 62 | for curr_y_axis in range(start_y, end_y): 63 | if(find_weight(curr_img, start_x, end_x, curr_y_axis, curr_y_axis + 1) > 0): 64 | for curr_x in range(start_x, end_x): 65 | if(curr_img[curr_y_axis][curr_x] == 1): 66 | all_positions = find_y_axis_down(curr_img, curr_x, curr_y_axis) 67 | all_positions.extend(find_y_axis_up(curr_img, curr_x, curr_y_axis)) 68 | if(test_weight < max_weight_threshhold): 69 | x, y, width, length, curr_img = remove_object(original_img, curr_img, all_positions) 70 | possible_locations.append([x,y,width,length]) 71 | test_weight = 0 72 | else: 73 | remove_object(original_img, curr_img, all_positions) 74 | test_weight = 0 75 | 76 | return possible_locations 77 | 78 | #Find the rest of the object below the starting y position 79 | def find_y_axis_down(curr_img, start_x, start_y): 80 | curr_y = start_y 81 | curr_x_start = start_x 82 | curr_x_end = get_end_x_position(curr_img, start_x, curr_y) 83 | indexList = [[curr_y, curr_x_start, curr_x_end]] 84 | while True: 85 | curr_y += 1 86 | if(curr_y + 1 < MAX_Y_AXIS and np.sum(curr_img[curr_y][curr_x_start:curr_x_end]) > 0): 87 | curr_x_start = get_start_x_position(curr_img, curr_x_start, curr_x_end, curr_y) 88 | curr_x_end = get_end_x_position(curr_img, curr_x_start, curr_y) + 1 89 | indexList.append([curr_y, curr_x_start, curr_x_end]) 90 | else: 91 | break 92 | return indexList 93 | 94 | #Find the rest of the object above the starting y position 95 | def find_y_axis_up(curr_img, start_x, start_y): 96 | curr_y = start_y 97 | curr_x_start = start_x 98 | curr_x_end = get_end_x_position(curr_img, start_x, curr_y) 99 | indexList = [[curr_y, curr_x_start, curr_x_end]] 100 | while True: 101 | curr_y -= 1 102 | if(curr_y > 0 and np.sum(curr_img[curr_y][curr_x_start:curr_x_end]) > 0): 103 | curr_x_start = get_start_x_position(curr_img, curr_x_start, curr_x_end, curr_y) 104 | curr_x_end = get_end_x_position(curr_img, curr_x_end, curr_y) 105 | indexList.append([curr_y, curr_x_start, curr_x_end]) 106 | else: 107 | break 108 | return indexList 109 | 110 | #Get the starting X position 111 | def get_start_x_position(curr_img, start_x, end_x, curr_y): 112 | curr_x_position = start_x 113 | if(curr_img[curr_y][curr_x_position] == 1): 114 | while True: 115 | #Check to make sure is in a valid index 116 | if(curr_x_position - 1 > 0): 117 | if(curr_img[curr_y][curr_x_position - 1] == 0): 118 | break; 119 | else: 120 | curr_x_position -= 1 121 | else: 122 | break 123 | elif(np.sum(curr_img[curr_y][start_x:end_x]) > 0): 124 | while True: 125 | #Check to make sure is in a valid index 126 | if(curr_x_position + 1 < MAX_X_AXIS): 127 | if(curr_img[curr_y][curr_x_position + 1] == 1): 128 | curr_x_position += 1 129 | break; 130 | else: 131 | curr_x_position += 1 132 | else: 133 | break 134 | 135 | return curr_x_position 136 | 137 | #Get the ending X position 138 | def get_end_x_position(curr_img, curr_x_end, curr_y): 139 | global test_weight 140 | curr_x_position = curr_x_end 141 | #Try to find where the X axis will end 142 | while True: 143 | if(curr_x_position == MAX_X_AXIS - 1 or curr_img[curr_y][curr_x_position + 1] == 0): 144 | break 145 | else: 146 | curr_x_position += 1 147 | test_weight += curr_x_position - curr_x_end 148 | return curr_x_position 149 | 150 | #Remove the object form the current image 151 | def remove_object(original_img, curr_img, index_list): 152 | y_list, start_x_list, end_x_list = zip(*index_list) 153 | smallestX = np.min(start_x_list) 154 | biggestX = np.max(end_x_list) 155 | smallestY = np.min(y_list) 156 | biggestY = np.max(y_list) 157 | for y, start_x, end_x in index_list: 158 | temp_end_x = end_x 159 | if(np.sum(curr_img[y][end_x:biggestX]) != 0): 160 | if(y > 0 and y < MAX_Y_AXIS - 1): 161 | while(True): 162 | if(temp_end_x == MAX_X_AXIS - 1): 163 | break; 164 | elif(original_img[y + 1][temp_end_x] == 0 or original_img[y-1][temp_end_x] == 0): 165 | temp_end_x +=1 166 | else: 167 | break; 168 | else: 169 | temp_end_x = biggestX 170 | 171 | curr_img[y][start_x:temp_end_x + 1] = curr_img[y][start_x:temp_end_x + 1] * 0 172 | 173 | if(smallestX > 5): 174 | smallestX -= 5 175 | if(smallestY > 5): 176 | smallestY -= 5 177 | 178 | return smallestX, smallestY, biggestX - smallestX + 10, biggestY - smallestY + 10, curr_img 179 | -------------------------------------------------------------------------------- /PreProcessingModule.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Define Preprocessing Methods" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "from PIL import Image, ImageEnhance, ImageOps\n", 17 | "import numpy as np\n", 18 | "import Constants\n", 19 | "import os\n", 20 | "import cv2\n", 21 | "import pdb\n", 22 | "\n", 23 | "##############################################################################\n", 24 | "#Returns a list of file names for the images\n", 25 | "##############################################################################\n", 26 | "def get_unprocessed_image_files():\n", 27 | " \n", 28 | " #Stores all of the big images in this list\n", 29 | " image_file_list = None\n", 30 | " \n", 31 | " #Retrieve image paths\n", 32 | " for root, dirs, files in os.walk(Constants.IMAGE_FILE_LOCATION):\n", 33 | " image_file_list = files;\n", 34 | " \n", 35 | " return image_file_list;\n" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 34, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "#Erosion followed by dilation to remove/reduce noise in an image\n", 45 | "def cv_opening(img, kernel) :\n", 46 | " opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)\n", 47 | " return opening\n", 48 | "\n", 49 | "#Dilation followed by erosion to plug in holes in the image\n", 50 | "def cv_closing(img, kernel) :\n", 51 | " closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)\n", 52 | " return closing\n", 53 | "\n", 54 | "#Cleans the image and combines spaces on the image\n", 55 | "def clean_image(img, kernel) :\n", 56 | " img = cv_opening(img, kernel)\n", 57 | " #Dilate the image in order to fill in empty spots\n", 58 | " dilation_kernel = np.ones((7,7), np.uint8) \n", 59 | " img = cv2.dilate(img, dilation_kernel, iterations = 2)\n", 60 | " #Attempt to return the objects to closer to their normal sizes\n", 61 | " erosion_kernel = np.ones((2,2), np.uint8)\n", 62 | " img = cv2.erode(img, erosion_kernel, iterations = 1)\n", 63 | " \n", 64 | " return img\n" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 35, 70 | "metadata": {}, 71 | "outputs": [], 72 | "source": [ 73 | "##############################################################################\n", 74 | "#Return a list of preprocessed image files where each image is greyscaled\n", 75 | "#the contrast is increased by a large margin to reduce the number of \n", 76 | "#color variation\n", 77 | "#############################################################################\n", 78 | "def get_pr_images(max_images = 1, greyscale=None, greyscale_threshhold = 80):\n", 79 | " #Retrieve image file list\n", 80 | " image_file_list = get_unprocessed_image_files()\n", 81 | " #Turn each image file item into an Image object\n", 82 | " image_list = []\n", 83 | " #Create a kernel to move through the image\n", 84 | " kernel = np.ones((3,3), np.uint8)\n", 85 | " \n", 86 | " #Counter to see how many images we are working on and break once we reach image_count\n", 87 | " counter = 0\n", 88 | " \n", 89 | " #Iterate through each file name and turn them into Image objects\n", 90 | " #then, preprocess them before appending it to the list\n", 91 | " for file_name in image_file_list:\n", 92 | " counter += 1\n", 93 | " image = None\n", 94 | " if greyscale != None: \n", 95 | " #The Image object obtained from the file in greyscale mode\n", 96 | " image = cv2.imread(Constants.IMAGE_FILE_LOCATION + file_name, cv2.IMREAD_GRAYSCALE)\n", 97 | " #Check if the Image should be a binary grey scale with only 0 and 255 values\n", 98 | " if greyscale == 'binary':\n", 99 | " image[image < greyscale_threshhold] = 0\n", 100 | " image[image > greyscale_threshhold] = 255 \n", 101 | " else :\n", 102 | " #The Image object obtained from the file in normal mode\n", 103 | " image = cv2.imread(Constants.IMAGE_FILE_LOCATION + file_name, cv2.IMREAD_UNCHANGED)\n", 104 | " #Clean the image\n", 105 | " image = clean_image(image, kernel)\n", 106 | " #Append the object onto the list\n", 107 | " image_list.append(image)\n", 108 | " \n", 109 | " #Break if we pre-processed enough images\n", 110 | " if counter == max_images:\n", 111 | " break;\n", 112 | " \n", 113 | " #Return the list of Image objects\n", 114 | " return image_list\n", 115 | " " 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 36, 121 | "metadata": {}, 122 | "outputs": [], 123 | "source": [ 124 | "##############################################################################\n", 125 | "#Displays an image until the user presses a key\n", 126 | "#############################################################################\n", 127 | "def displayImage(image):\n", 128 | " #Create a window object\n", 129 | " cv2.namedWindow(\"image_window\", cv2.WINDOW_NORMAL)\n", 130 | " #Show the image within that window\n", 131 | " cv2.imshow(\"image_window\", image)\n", 132 | " #Makes the window show the image until the user presses a value\n", 133 | " cv2.waitKey()\n", 134 | " #User has pressed a value\n", 135 | " cv2.destroyAllWindows()" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": 37, 141 | "metadata": {}, 142 | "outputs": [], 143 | "source": [ 144 | "##############################################################################\n", 145 | "#Saves an image inside of the object detection test folder\n", 146 | "#############################################################################\n", 147 | "def saveImage(image, file_name = \"test.png\"):\n", 148 | " cv2.imwrite(Constants.PR_SAVE_LOCATION + file_name, image)" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 38, 154 | "metadata": {}, 155 | "outputs": [], 156 | "source": [ 157 | "##############################################################################\n", 158 | "#Creates a binary matrix of 0 and 1 values\n", 159 | "#############################################################################\n", 160 | "def normalize_image(image, reverse = False) :\n", 161 | " if reverse == False:\n", 162 | " image /= 255\n", 163 | " else:\n", 164 | " image *= 255\n", 165 | "\n", 166 | " return image" 167 | ] 168 | }, 169 | { 170 | "cell_type": "code", 171 | "execution_count": 39, 172 | "metadata": {}, 173 | "outputs": [], 174 | "source": [ 175 | "def create_bbox(image, bbox_locations, box_thickness = 3):\n", 176 | " for x, y, width, height in bbox_locations:\n", 177 | " cv2.rectangle(image, (x,y), (x+width, y+height), (255, 0, 0), box_thickness)\n", 178 | " return image" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 40, 184 | "metadata": {}, 185 | "outputs": [], 186 | "source": [ 187 | "image_list = get_pr_images(max_images=2, greyscale='binary', greyscale_threshhold=104)" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 41, 193 | "metadata": {}, 194 | "outputs": [], 195 | "source": [ 196 | "displayImage(image_list[1])" 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "execution_count": null, 202 | "metadata": {}, 203 | "outputs": [], 204 | "source": [ 205 | "saveImage(image_list[1])" 206 | ] 207 | }, 208 | { 209 | "cell_type": "code", 210 | "execution_count": null, 211 | "metadata": {}, 212 | "outputs": [], 213 | "source": [] 214 | } 215 | ], 216 | "metadata": { 217 | "kernelspec": { 218 | "display_name": "Python 3", 219 | "language": "python", 220 | "name": "python3" 221 | }, 222 | "language_info": { 223 | "codemirror_mode": { 224 | "name": "ipython", 225 | "version": 3 226 | }, 227 | "file_extension": ".py", 228 | "mimetype": "text/x-python", 229 | "name": "python", 230 | "nbconvert_exporter": "python", 231 | "pygments_lexer": "ipython3", 232 | "version": "3.5.2" 233 | } 234 | }, 235 | "nbformat": 4, 236 | "nbformat_minor": 2 237 | } 238 | -------------------------------------------------------------------------------- /PreProcessingModule.py: -------------------------------------------------------------------------------- 1 | from PIL import Image, ImageEnhance, ImageOps 2 | import numpy as np 3 | import Constants 4 | import os 5 | import cv2 6 | 7 | ############################################################################## 8 | #Returns a list of file names for the images 9 | ############################################################################## 10 | def get_unprocessed_image_files(): 11 | 12 | #Stores all of the big images in this list 13 | image_file_list = None 14 | 15 | #Retrieve image paths 16 | for root, dirs, files in os.walk(Constants.IMAGE_FILE_LOCATION): 17 | image_file_list = files 18 | 19 | return image_file_list 20 | 21 | 22 | ############################################################################# 23 | #Erosion followed by dilation to remove/reduce noise in an image 24 | ############################################################################# 25 | def cv_opening(img, kernel) : 26 | opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) 27 | return opening 28 | 29 | 30 | ############################################################################# 31 | #Cleans the image by plugging holes and removing noise 32 | ############################################################################# 33 | #Cleans the image and combines spaces on the image 34 | def clean_image(img, kernel) : 35 | img = cv_opening(img, kernel) 36 | #Dilate the image in order to fill in empty spots 37 | dilation_kernel = np.ones((5,5), np.uint8) 38 | img = cv2.dilate(img, dilation_kernel, iterations = 2) 39 | #Attempt to return the objects to their normal sizes 40 | erosion_kernel = np.ones((3,3), np.uint8) 41 | img = cv2.erode(img, erosion_kernel, iterations = 1) 42 | 43 | return img 44 | 45 | ############################################################################## 46 | #Return a list of preprocessed image files where each image is greyscaled 47 | #the contrast is increased by a large margin to reduce the number of 48 | #color variation 49 | ############################################################################# 50 | def get_pr_images(max_images = 1,greyscale=None, greyscale_threshhold = 80): 51 | #Retrieve image file list 52 | image_file_list = get_unprocessed_image_files() 53 | #Place to store the Image objects 54 | image_list = [] 55 | #Create a kernel to move through the image 56 | kernel = np.ones((3,3), np.uint8) 57 | 58 | #Counter to see how many images we are working on and break once we reach image_count 59 | counter = 0 60 | 61 | #Iterate through each file name and turn them into Image objects 62 | #then, preprocess them before appending it to the list 63 | for i in range(max_images): 64 | file_name = image_file_list[i] 65 | image = None 66 | if greyscale != None: 67 | #The Image object obtained from the file in greyscale mode 68 | image = cv2.imread(Constants.IMAGE_FILE_LOCATION + file_name, cv2.IMREAD_GRAYSCALE) 69 | #Check if the Image should be a binary grey scale with only 0 and 255 values 70 | if greyscale == 'binary': 71 | image[image < greyscale_threshhold] = 0 72 | image[image > greyscale_threshhold] = 255 73 | else : 74 | #The Image object obtained from the file in normal mode 75 | image = cv2.imread(Constants.IMAGE_FILE_LOCATION + file_name, cv2.IMREAD_UNCHANGED) 76 | #Clean the image 77 | image = clean_image(image, kernel) 78 | #Append the object onto the list 79 | image_list.append(image) 80 | 81 | #Break if we pre-processed enough images 82 | if counter == max_images: 83 | break 84 | 85 | #Return the list of Image objects 86 | return image_list 87 | 88 | def get_upr_images(max_images = 1) : 89 | #Retrieve image file list 90 | image_file_list = get_unprocessed_image_files() 91 | #Stores the image objects 92 | image_list = [] 93 | 94 | for i in range(max_images): 95 | file_name = image_file_list[i] 96 | #Instantiate the image 97 | image = cv2.imread(Constants.IMAGE_FILE_LOCATION + file_name, cv2.IMREAD_UNCHANGED) 98 | #Add the image to the file list 99 | image_list.append(image) 100 | 101 | return image_list 102 | 103 | ############################################################################## 104 | #Creates a binary matrix of 0 and 1 values 105 | ############################################################################# 106 | def normalize_image(image, reverse = False) : 107 | if reverse == False: 108 | image = image / 255 109 | else: 110 | image = image * 255 111 | 112 | return image 113 | 114 | ############################################################################## 115 | #Displays an image until the user presses a key 116 | ############################################################################# 117 | def display_image(image): 118 | #Create a window object 119 | cv2.namedWindow("image_window", cv2.WINDOW_NORMAL) 120 | #Show the image within that window 121 | cv2.imshow("image_window", image) 122 | #Makes the window show the image until the user presses a value 123 | cv2.waitKey() 124 | #User has pressed a value 125 | cv2.destroyAllWindows() 126 | 127 | ############################################################################## 128 | #Saves an image inside of the object detection test folder 129 | ############################################################################# 130 | def saveImage(image, file_name = "test.png"): 131 | cv2.imwrite(Constants.PR_SAVE_LOCATION + file_name, image) 132 | 133 | ############################################################################## 134 | #Creates a bounding box in the given image depending on the top left coordinates 135 | ############################################################################# 136 | def create_bbox(image, bbox_locations, box_thickness = 3): 137 | for x, y, width, height in bbox_locations: 138 | cv2.rectangle(image, (x,y), (x+width, y+height), (255, 255, 255), box_thickness) 139 | return image 140 | 141 | ############################################################################## 142 | #Scales the bounding boxes 143 | ############################################################################# 144 | def scale_bbox(image_width, image_height, bbox_locations, MAX_IMAGE_HEIGHT = 80, MAX_IMAGE_WIDTH = 80): 145 | new_bbox_locations = list() 146 | for x, y, width, height in bbox_locations: 147 | #Get the center of the image width wise 148 | horizontal_center = (2 * x + width) // 2 149 | #Get the center of the image height wise 150 | vertical_center = (2 * y + height) // 2 151 | if (width < MAX_IMAGE_WIDTH and height < MAX_IMAGE_HEIGHT) : 152 | x = horizontal_center - (MAX_IMAGE_WIDTH // 2) 153 | y = vertical_center - (MAX_IMAGE_HEIGHT // 2) 154 | #Check if the width wise boundary boxes go beyond the boundary 155 | if(x < 0) : 156 | #If the image goes behind the boundary, just set it as the boundary 157 | x = 0 158 | elif(x + MAX_IMAGE_WIDTH > image_width) : 159 | #If the image goes beyond the boundary, just set it as the boundary - MAX_IMAGE_WIDTH 160 | x = image_width - MAX_IMAGE_WIDTH 161 | #Check if the height wise boundary boxes go beyong the boundary 162 | if(y < 0) : 163 | #If the image goes behind the boundary 164 | y = 0 165 | elif(y + MAX_IMAGE_HEIGHT > image_height) : 166 | #If the image goes beyong the boundary, just set it as the boundary - MAX_IMAGE_HEIGHT 167 | y = image_height - MAX_IMAGE_HEIGHT 168 | #Set the new size of the images 169 | width = MAX_IMAGE_WIDTH 170 | height = MAX_IMAGE_HEIGHT 171 | else: 172 | #Here, either one side is greater than MAX, create a square to keep spatial details 173 | if(height > width): 174 | #Make the Width the same size as the height 175 | x = horizontal_center - (height // 2) 176 | if(x < 0): 177 | #If the image goes behind the boundary, set it as the boundary 178 | x = 0 179 | elif(x + height > image_width): 180 | #If the image goes beyond the boundary, set it as the boundary - height 181 | x = image_width - height 182 | width = height 183 | elif(width > height): 184 | #Make the height the same size as the width 185 | y = vertical_center - (width // 2) 186 | if(y < 0): 187 | #If the image goes behind the boundaryu, set it as the boundary 188 | y = 0 189 | elif(y + width > image_height): 190 | #If the image goes beyond the boundary, set is as the boundary - width 191 | y = image_height - width 192 | height = width 193 | #Store the newly created bounding box 194 | new_bbox_locations.append((x,y,width,height)) 195 | return new_bbox_locations 196 | 197 | ############################################################################## 198 | #Crop images from the original image 199 | ############################################################################# 200 | def crop(image, bbox_set, set_width = 80, set_height = 80) : 201 | images = list() 202 | #Iteratively crop the images and put them into a list 203 | for x, y, width, height in bbox_set: 204 | cropped_image = image[y: y+ height, x: x+width] 205 | resized_image = cv2.resize(cropped_image, (set_width, set_height), interpolation = cv2.INTER_CUBIC) 206 | images.append(resized_image) 207 | 208 | return images 209 | 210 | 211 | ############################################################################## 212 | #Reshapes all images to the specified shape 213 | ############################################################################# 214 | def reshape_data(data, new_shape): 215 | new_data = [] 216 | #Iteratively crop the images and put them into a list 217 | for i in range(len(data)): 218 | img = data[i] 219 | img = img.astype("uint8") 220 | resized_image = cv2.resize(img, new_shape, interpolation = cv2.INTER_CUBIC) 221 | 222 | new_data.append(resized_image) 223 | 224 | return new_data 225 | -------------------------------------------------------------------------------- /PreProcessingModule.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/PreProcessingModule.pyc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DeepLearningProject 2 | The goal for this project was to correctly detect and classify ships in large satellite images using a Convolutional Neural Network (CNN) that was trained on 80x80 images of ship and non-ship data in conjunction with a custom object detection algorithm. Our approach is able to efficiently and accurately detect ships in satellite images of varying size ratios. In comparison to an approach found on Kaggle.com that uses a sliding window across the entire image to detect the ships in 15 minutes, our pipeline is able to detect and output bounding boxes in under 5 seconds. 3 | 4 | ## Official Report 5 | [Project Report](https://github.com/PenguinDan/DeepLearningShipDetection/blob/master/Report%20Folder/object-detection-classification.pdf) 6 | 7 | ## Before you Run the Project 8 | Download the dataset from the following link:
9 | https://www.kaggle.com/rhammell/ships-in-satellite-imagery
10 | Make sure to add in the big images into a file named "images"
11 | Make sure to move the json file with small images and everything else to folder named "small_images" 12 | 13 | ## On Ubuntu, please do the following 14 | 15 | ### To install OpenCV packages for Python3 16 | * pip3 install opencv-python 17 | 18 | ## PreProcessing Module 19 | The main file used to preprocess the images 20 | * PreProcessingModule.py 21 | * Provides the following methods: 22 | * Create a bounding box around specific locations in the image 23 | * Denoise the image using OpenCV's kernel techniques 24 | * Scale the images in such a way that their dimensional features are not lost 25 | * Normalize image data to provide simpler data as an input to the Object Detection Algorithm 26 | * Binary greyscaling using a threshhold to provide simpler data as an input to the Object Detection Algorithm 27 | 28 | ## Object Detection Algorithm 29 | The main file used to output region proposals from the large satellite images 30 | * ObjectDetection.py 31 | * Ouputs a list of region proposals run on preprocessed data 32 | 33 | ## Working with the CNNs 34 | The main files used to create, train, test, and save the CNNs were: 35 | * CNN.py 36 | * For all function that manipulate the CNN model itself 37 | * Tuning_CNN.py 38 | * For training and testing the many possible CNN architectures and hyperparameters 39 | * Helper.py 40 | * Works with the raw image data, such as 41 | * Randomly dividing the data into training/validation and test data 42 | * Loading a given file of data 43 | * Constants.py 44 | * Contains the paths to where the different CNN models are saved as well as a short description on their differences 45 | 46 | ## Project Pipeline 47 | ### Original Image 48 | ![original image](https://github.com/PenguinDan/DeepLearningShipDetection/blob/master/Report%20Folder/image-pipeline/1.png) 49 | ### After Image Preprocessing 50 | ![preprocessed image](https://github.com/PenguinDan/DeepLearningShipDetection/blob/master/Report%20Folder/image-pipeline/2.png) 51 | ### Object Detection 52 | ![object detection](https://github.com/PenguinDan/DeepLearningShipDetection/blob/master/Report%20Folder/image-pipeline/3.png) 53 | ### After Second Image Preprocessing 54 | ![image preprocessing 2](https://github.com/PenguinDan/DeepLearningShipDetection/blob/master/Report%20Folder/image-pipeline/4.png) 55 | ### Our Output 56 | ![output](https://github.com/PenguinDan/DeepLearningShipDetection/blob/master/Report%20Folder/image-pipeline/5-ours.png) 57 | ### Kaggle Output 58 | ![comp output](https://github.com/PenguinDan/DeepLearningShipDetection/blob/master/Report%20Folder/image-pipeline/5-comp.png) 59 | -------------------------------------------------------------------------------- /Report Folder/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/1.png -------------------------------------------------------------------------------- /Report Folder/Img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img1.png -------------------------------------------------------------------------------- /Report Folder/Img10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img10.png -------------------------------------------------------------------------------- /Report Folder/Img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img2.png -------------------------------------------------------------------------------- /Report Folder/Img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img3.png -------------------------------------------------------------------------------- /Report Folder/Img4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img4.png -------------------------------------------------------------------------------- /Report Folder/Img5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img5.png -------------------------------------------------------------------------------- /Report Folder/Img7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img7.png -------------------------------------------------------------------------------- /Report Folder/Img8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img8.png -------------------------------------------------------------------------------- /Report Folder/Img9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/Img9.png -------------------------------------------------------------------------------- /Report Folder/ObjectDetectionWithImageSegmentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/ObjectDetectionWithImageSegmentation.png -------------------------------------------------------------------------------- /Report Folder/image-pipeline/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/image-pipeline/1.png -------------------------------------------------------------------------------- /Report Folder/image-pipeline/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/image-pipeline/2.png -------------------------------------------------------------------------------- /Report Folder/image-pipeline/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/image-pipeline/3.png -------------------------------------------------------------------------------- /Report Folder/image-pipeline/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/image-pipeline/4.png -------------------------------------------------------------------------------- /Report Folder/image-pipeline/5-comp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/image-pipeline/5-comp.png -------------------------------------------------------------------------------- /Report Folder/image-pipeline/5-ours.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/image-pipeline/5-ours.png -------------------------------------------------------------------------------- /Report Folder/object-detection-classification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/Report Folder/object-detection-classification.pdf -------------------------------------------------------------------------------- /Report Folder/report.txt: -------------------------------------------------------------------------------- 1 | Daniel in charge of data pre-processing module 2 | Visal in charge of object detection algorithm 3 | Luis in charge of CNN object classification 4 | 5 | Explain project architecture: 6 | Large Image -> Pre-processing Module -> Object Detection -> Pre-processing Module -> Binary CNN Classification -> Post-Processing Module 7 | 8 | Goal of first pre-processing module: 9 | Make the task of object detection easier for the object detection algorithm 10 | Inpired by Object detection with image segmentation (show image) 11 | Say that we tried Object Detection through Image Segmentation (Selective Search) 12 | Also tried Google's Faster-RCNN with ResNet CNN trained with Coco-Dataset 13 | Say that Visal will explain why these didnt work 14 | 15 | First pre-processing module attempt: 16 | Using Python Image Library : PIL 17 | Retrieve the image 18 | Greyscale the image 19 | Increase contrast to 300% so that the black colors get darker and white colors get whiter 20 | Show Img5.png 21 | Show Img1.png, was really happy until tried another image 22 | Show Img6.png, next slide 23 | Show Img2.png, image contained too much noise 24 | 25 | Second pre-processing module attempt: 26 | Using Open-CV2 Python API 27 | Retrieve the image 28 | Use a binary treshhold for binary color scheme in image 29 | Erosion followed by Dilation using a 5 x 5 kernel 30 | Patch minor holes in the image through dilation followed by erosion 31 | Force the image to be greyscale 32 | Show difference between pre-cleaned Img2.png and Img3.png 33 | Show threshold of 130 Img7, 100 Img8, 80 Img9 34 | Show Img9 and Img6 Side by side and show that all the ships were captured 35 | Divided the values by 255, so image is now a mask of 0 and 1 values, gave it to Visal 36 | 37 | Third pre-processing module attempt: 38 | Using Open-CV2 Python API 39 | Retrieve the image 40 | Use a binary threshhold with a high value (104) so that less whites show 41 | Erosion followed by Dilation using a 3x3 kernel 42 | Dilate the image again in order to fill in the empty spots using a 4x4 kernel and 2 iterations 43 | Erode the image to get reduce the now bloated size of ships using a 2x2 kernel and 1 iteration 44 | Show different between image 9 and image 10, it keeps alot more of the information and connects everything together 45 | Show image11 and then image 12 and the difference 46 | 47 | 48 | Object Detection: 49 | Based on your research, say why Selective Search doesn't work 50 | Faster-RCNN with ResNet CNN does not work because the network was not trained with satelite ship images 51 | Object detection should work on ships that are bigger than 80 by 80 too 52 | 53 | Show your attempts and report your image attempts based off on Img5.png 54 | 55 | Second Pre-Processing Module: 56 | Scale down the image sizes 57 | 58 | Binary CNN Classification: 59 | CNN tells us which bounding boxes to keep and throw away 60 | Draw bounding box on images using post-processing module 61 | 62 | Post-Processing Module: 63 | Draws bounding boxes 64 | 65 | -------------------------------------------------------------------------------- /Tuning_CNN.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from CNN import build_CNN, train_CNN, test_CNN, save_CNN, load_CNN, train_generator_CNN, load_pretrained_VGG16, data_augmentation 3 | from Helper import load_data 4 | import numpy as np 5 | import Constants 6 | 7 | def k_fold_cross_validation(k, learning_rate, decay_rate, momentum_value, structure, data, labels, batch_size, epoch): 8 | 9 | #initialize values 10 | val_size = int(len(data)/k) 11 | all_loss_scores = [] 12 | all_accuracy_scores = [] 13 | 14 | #run through k iterations 15 | for i in range(k): 16 | print('Fold #', i) 17 | 18 | #Divide the data into training and validation 19 | #Create the validation data 20 | val_data = data[i * val_size: (i+1) * val_size] 21 | val_labels = labels[i * val_size: (i+1) * val_size] 22 | model = build_CNN(learning_rate, decay_rate, momentum_value, structure) 23 | 24 | #Create the training dataset 25 | train_data = np.concatenate( 26 | [data[:i * val_size], 27 | data[(i+1) * val_size:]], 28 | axis = 0 29 | ) 30 | 31 | train_labels = np.concatenate( 32 | [labels[:i * val_size], 33 | labels[(i+1) * val_size:]], 34 | axis = 0 35 | ) 36 | 37 | #Train the model 38 | model = train_CNN(model, train_data, train_labels, batch_size, epoch) 39 | 40 | #test the model on the validation dataset 41 | loss, accuracy = test_CNN(model, val_data, val_labels, batch_size) 42 | 43 | #save the loss and accuracy values 44 | all_loss_scores.append(loss) 45 | all_accuracy_scores.append(accuracy) 46 | 47 | #average all the loss and accuracy values from all k folds 48 | average_loss = np.mean(all_loss_scores) 49 | average_accuracy = np.mean(all_accuracy_scores) 50 | 51 | #return the averages 52 | return model, average_loss, average_accuracy 53 | 54 | 55 | def k_fold_cross_validation_with_generator(k, learning_rate, decay_rate, momentum_value, structure, data, labels, steps, epoch): 56 | 57 | #initialize values 58 | val_size = int(len(data)/k) 59 | all_loss_scores = [] 60 | all_accuracy_scores = [] 61 | 62 | #run through k iterations 63 | for i in range(0,k): 64 | run = 'Fold #'+str(i) 65 | print(run) 66 | 67 | #Divide the data into training and validation 68 | #Create the validation data 69 | val_data = data[i * val_size: (i+1) * val_size] 70 | val_labels = labels[i * val_size: (i+1) * val_size] 71 | model = build_CNN(learning_rate, decay_rate, momentum_value, structure) 72 | 73 | #Create the training dataset 74 | train_data = np.concatenate( 75 | [data[:i * val_size], 76 | data[(i+1) * val_size:]], 77 | axis = 0 78 | ) 79 | 80 | train_labels = np.concatenate( 81 | [labels[:i * val_size], 82 | labels[(i+1) * val_size:]], 83 | axis = 0 84 | ) 85 | 86 | #Create generator 87 | generator = data_augmentation(train_data, train_labels) 88 | 89 | #Train the model 90 | model = train_generator_CNN(model, generator, steps, epoch, (val_data, val_labels), run) 91 | 92 | #test the model on the validation dataset 93 | loss, accuracy = test_CNN(model, val_data, val_labels, 50) 94 | 95 | #save the loss and accuracy values 96 | all_loss_scores.append(loss) 97 | all_accuracy_scores.append(accuracy) 98 | 99 | #average all the loss and accuracy values from all k folds 100 | average_loss = np.mean(all_loss_scores) 101 | average_accuracy = np.mean(all_accuracy_scores) 102 | 103 | #return the averages 104 | return model, average_loss, average_accuracy 105 | 106 | #Tests the 5 different possible variations of VGG-16 for our data using k-fold validation and outputs the results to the console 107 | def test_models(k, learning_rate, decay_rate, momentum_value, data, labels, batch_size, epoch): 108 | model_1, loss_1, accuracy_1 = k_fold_cross_validation(k, learning_rate, decay_rate, momentum_value, [False, True, True, True, True], data, labels, batch_size, epoch) 109 | model_2, loss_2, accuracy_2 = k_fold_cross_validation(k, learning_rate, decay_rate, momentum_value, [True, False, True, True, True], data, labels, batch_size, epoch) 110 | model_3, loss_3, accuracy_3 = k_fold_cross_validation(k, learning_rate, decay_rate, momentum_value, [True, True, False, True, True], data, labels, batch_size, epoch) 111 | model_4, loss_4, accuracy_4 = k_fold_cross_validation(k, learning_rate, decay_rate, momentum_value, [True, True, True, False, True], data, labels, batch_size, epoch) 112 | model_5, loss_5, accuracy_5 = k_fold_cross_validation(k, learning_rate, decay_rate, momentum_value, [True, True, True, True, False], data, labels, batch_size, epoch) 113 | 114 | #output results to the console 115 | print("\n\n\n\nModel 1 Loss: ", loss_1, " Accuracy: ", accuracy_1) 116 | print("Model 2 Loss: ", loss_2, " Accuracy: ", accuracy_2) 117 | print("Model 3 Loss: ", loss_3, " Accuracy: ", accuracy_3) 118 | print("Model 4 Loss: ", loss_4, " Accuracy: ", accuracy_4) 119 | print("Model 5 Loss: ", loss_5, " Accuracy: ", accuracy_5) 120 | 121 | 122 | x, y = load_data(Constants.TRAINING_SMALL_IMAGE_DATASET, (224,224)) 123 | 124 | 125 | # model_1, loss_1, accuracy_1 = k_fold_cross_validation_with_generator(5, 0.0010, 1e-6, 0.9, [False, True, True, True, True], x, y, 200, 100) 126 | 127 | model = load_pretrained_VGG16(0.0001, 1e-6, 0.75, (224,224,3)) 128 | generator = data_augmentation(x[500:], y[500:], 25) 129 | run = "pretrained_attempt_6" 130 | model = train_generator_CNN(model, generator, 400, 30, (x[0:500], y[0:500]), run) 131 | # train_CNN(model, x[500:], y[500:], 50, 30) 132 | save_CNN(model, Constants.PRETRAINED_CNN_MODEL_SIX) 133 | 134 | # model = load_CNN("pretrained_attempt_2.h5") 135 | # test_CNN(model, x[:500], y[:500], 50) 136 | 137 | 138 | -------------------------------------------------------------------------------- /__pycache__/CNN.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/CNN.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/CNN.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/CNN.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/Constants.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/Constants.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/Constants.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/Constants.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/Helper.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/Helper.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/ObjectDetection.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/ObjectDetection.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/ObjectDetection.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/ObjectDetection.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/PreProcessingModule.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/PreProcessingModule.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/PreProcessingModule.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/__pycache__/PreProcessingModule.cpython-36.pyc -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525479917.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525479917.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525479920.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525479920.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480085.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480085.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480087.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480087.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480396.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480396.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480398.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480398.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480473.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480473.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480475.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480475.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480660.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480660.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #0/events.out.tfevents.1525480662.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #0/events.out.tfevents.1525480662.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #1/events.out.tfevents.1525479946.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #1/events.out.tfevents.1525479946.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #1/events.out.tfevents.1525480114.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #1/events.out.tfevents.1525480114.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /logs/Fold #1/events.out.tfevents.1525480688.DESKTOP-8GOVN1C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/logs/Fold #1/events.out.tfevents.1525480688.DESKTOP-8GOVN1C -------------------------------------------------------------------------------- /main.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Main" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 2, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "#Begin Program\n", 17 | "import PreProcessingModule as ppm\n", 18 | "import CNN\n", 19 | "import ObjectDetection as od\n", 20 | "import Constants as const\n", 21 | "import pdb\n", 22 | "\n", 23 | "GREYSCALE_THRESHHOLD = 104\n", 24 | "IMAGE_COUNT = 2\n", 25 | "\n", 26 | "#Get a list of pre-processed images\n", 27 | "pr_image_list = ppm.get_pr_images(max_images = IMAGE_COUNT, greyscale='binary',\n", 28 | " greyscale_threshhold = GREYSCALE_THRESHHOLD);\n", 29 | "#Get a list of nomral images\n", 30 | "norm_image_list = ppm.get_upr_images(max_images = IMAGE_COUNT)\n", 31 | "#Stores the cropped images whose shape is 80x80x3\n", 32 | "cropped_image_list = []\n", 33 | "#Stores the boxes for later referall to redraw the bounding boxes on \n", 34 | "#items that are ships, where each item is x,y,width,height\n", 35 | "opt_bbox = None\n", 36 | "bbox_image = None\n", 37 | "\n", 38 | "#Create probable bounding boxes around items in the image and put them in a list\n", 39 | "for curr_image_index in range(len(pr_image_list)) :\n", 40 | " #Retrieve a processed and an unprocessed image\n", 41 | " curr_pr_image = pr_image_list[curr_image_index]\n", 42 | " curr_upr_image = norm_image_list[curr_image_index]\n", 43 | " #Get the height and width of the whole image\n", 44 | " image_height = curr_upr_image.shape[0]\n", 45 | " image_width = curr_upr_image.shape[1]\n", 46 | " #Retrieve the locations of all of the objects\n", 47 | " object_locations = od.detect(curr_pr_image)\n", 48 | " #Optimize the bounding boxes\n", 49 | " opt_bbox = ppm.scale_bbox(image_width, image_height, object_locations)\n", 50 | " bbox_image = ppm.create_bbox(curr_pr_image, opt_bbox)\n", 51 | " #Create the bounding box around the original image\n", 52 | " cropped_image_list = ppm.crop(curr_upr_image, opt_bbox)\n", 53 | "\n", 54 | "ppm.display_image(bbox_image)\n" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": null, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": null, 67 | "metadata": {}, 68 | "outputs": [], 69 | "source": [] 70 | } 71 | ], 72 | "metadata": { 73 | "kernelspec": { 74 | "display_name": "Python 3", 75 | "language": "python", 76 | "name": "python3" 77 | }, 78 | "language_info": { 79 | "codemirror_mode": { 80 | "name": "ipython", 81 | "version": 3 82 | }, 83 | "file_extension": ".py", 84 | "mimetype": "text/x-python", 85 | "name": "python", 86 | "nbconvert_exporter": "python", 87 | "pygments_lexer": "ipython3", 88 | "version": "3.5.2" 89 | } 90 | }, 91 | "nbformat": 4, 92 | "nbformat_minor": 2 93 | } 94 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | #Begin Program 2 | import PreProcessingModule as ppm 3 | import CNN 4 | import ObjectDetection as od 5 | import Constants as const 6 | import pdb 7 | import numpy as np 8 | import time 9 | 10 | GREYSCALE_THRESHHOLD = 104 11 | IMAGE_COUNT = 2 12 | 13 | #Get a list of pre-processed images 14 | pr_image_list = ppm.get_pr_images(max_images = IMAGE_COUNT, greyscale='binary', 15 | greyscale_threshhold = GREYSCALE_THRESHHOLD) 16 | #Get a list of nomral images 17 | norm_image_list = ppm.get_upr_images(max_images = IMAGE_COUNT) 18 | #Stores the cropped images whose shape is 80x80x3 19 | cropped_image_list = [] 20 | #Stores the boxes for later referall to redraw the bounding boxes on 21 | #items that are ships, where each item is x,y,width,height 22 | opt_bbox = None 23 | 24 | #Loads the stored CNN model 25 | model = CNN.load_CNN(const.PRETRAINED_CNN_MODEL_SIX) 26 | bounded_image_list = [] 27 | 28 | #Time how long the code takes 29 | t0 = time.time() 30 | 31 | #Create probable bounding boxes around items in the image and put them in a list 32 | for curr_image_index in range(len(pr_image_list)) : 33 | #Retrieve a processed and an unprocessed image 34 | curr_pr_image = pr_image_list[curr_image_index] 35 | curr_upr_image = norm_image_list[curr_image_index] 36 | #Get the height and width of the whole image 37 | image_height = curr_upr_image.shape[0] 38 | image_width = curr_upr_image.shape[1] 39 | #Retrieve the locations of all of the objects 40 | object_locations = od.detect(curr_pr_image) 41 | #Optimize the bounding boxes 42 | opt_bbox = ppm.scale_bbox(image_width, image_height, object_locations) 43 | #Create the bounding box around the original image 44 | cropped_image_list = ppm.crop(curr_upr_image, opt_bbox) 45 | 46 | ## Uncomment this line if working with a pretrained model 47 | ## as it reshapes the image_list to the proper input size 48 | ## for the pretrained model 49 | cropped_image_list = ppm.reshape_data(cropped_image_list, (224,224)) 50 | 51 | #Turn list of images into a usable format for the cnn 52 | array = np.asarray(cropped_image_list) 53 | #Get percentage possibilities whether the object is a ship 54 | predictions = CNN.predict_CNN(model, array) 55 | #Only save objects whose probability to be a ship is over 50% 56 | ships = [] 57 | for index in range(len(predictions)): 58 | if predictions[index] > 0.8: 59 | ships.append(object_locations[index]) 60 | 61 | #Create image with bounded boxes around predicted ships 62 | bounded_image = ppm.create_bbox(curr_upr_image, ships, box_thickness=3) 63 | bounded_image_list.append(bounded_image) 64 | 65 | #Finish timing code 66 | t1 = time.time() 67 | print(t1-t0) 68 | 69 | #Display one of the images 70 | ppm.display_image(bounded_image_list[0]) 71 | ppm.display_image(bounded_image_list[1]) 72 | 73 | ppm.saveImage(bounded_image_list[0], "Pretrained Version 6 Image 0.png") 74 | ppm.saveImage(bounded_image_list[1], "Pretrained Version 6 Image 1.png") 75 | -------------------------------------------------------------------------------- /object_detection_test/Original Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Original Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Original Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Original Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 1 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 1 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 1 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 1 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 2 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 2 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 2 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 2 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 3 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 3 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 3 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 3 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 4 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 4 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 4 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 4 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 5 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 5 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 5 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 5 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 6 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 6 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Pretrained Version 6 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Pretrained Version 6 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Version 3 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Version 3 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Version 3 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Version 3 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Version 5 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Version 5 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Version 5 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Version 5 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/Version 6 Image 0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Version 6 Image 0.png -------------------------------------------------------------------------------- /object_detection_test/Version 6 Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/Version 6 Image 1.png -------------------------------------------------------------------------------- /object_detection_test/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PenguinDan/DeepLearningShipDetection/6e0faa128b1a33f960a312d513c4b5c3e3aa346d/object_detection_test/test.png -------------------------------------------------------------------------------- /text_logs/Fold #0.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.8373999965190887 Training Loss: 0.3613034547492862 Epoch #1 : Validation Accuracy: 0.8360000014305115 Validation Loss: 0.3434012115001678 2 | Epoch #2 : Training Accuracy: 0.8796999952197075 Training Loss: 0.2759485376626253 Epoch #2 : Validation Accuracy: 0.9199999928474426 Validation Loss: 0.2126268237829208 3 | Epoch #3 : Training Accuracy: 0.8968999963998795 Training Loss: 0.2552603395655751 Epoch #3 : Validation Accuracy: 0.9060000061988831 Validation Loss: 0.2114711716771126 4 | Epoch #4 : Training Accuracy: 0.9218999972939491 Training Loss: 0.1998806979134679 Epoch #4 : Validation Accuracy: 0.9599999964237214 Validation Loss: 0.1021630782634020 5 | Epoch #5 : Training Accuracy: 0.9340999963879585 Training Loss: 0.1787866563349962 Epoch #5 : Validation Accuracy: 0.9259999930858612 Validation Loss: 0.1873138792812824 6 | 7 | Epoch #6 : Training Accuracy: 0.9254999947547913 Training Loss: 0.1809513449482620 Epoch #6 : Validation Accuracy: 0.9499999940395355 Validation Loss: 0.1233384698629379 8 | Epoch #7 : Training Accuracy: 0.9312999957799911 Training Loss: 0.1744651553407311 Epoch #7 : Validation Accuracy: 0.9500000059604645 Validation Loss: 0.1234218847006559 9 | Epoch #8 : Training Accuracy: 0.9348999950289726 Training Loss: 0.1646595595125109 Epoch #8 : Validation Accuracy: 0.9620000064373017 Validation Loss: 0.1066775780171156 10 | Epoch #9 : Training Accuracy: 0.9357999995350837 Training Loss: 0.1611387147288769 Epoch #9 : Validation Accuracy: 0.9480000078678131 Validation Loss: 0.1227798346430063 11 | Epoch #10 : Training Accuracy: 0.9383999967575073 Training Loss: 0.1560405443795025 Epoch #10 : Validation Accuracy: 0.9580000042915344 Validation Loss: 0.1040280058979988 12 | 13 | Epoch #11 : Training Accuracy: 0.9429999962449074 Training Loss: 0.1485753787215799 Epoch #11 : Validation Accuracy: 0.9700000107288360 Validation Loss: 0.0786229472607374 14 | Epoch #12 : Training Accuracy: 0.9415999969840050 Training Loss: 0.1523560517095029 Epoch #12 : Validation Accuracy: 0.9599999964237214 Validation Loss: 0.0860821260139346 15 | Epoch #13 : Training Accuracy: 0.9465999993681907 Training Loss: 0.1417446398548782 Epoch #13 : Validation Accuracy: 0.9619999945163726 Validation Loss: 0.1063024941831827 16 | Epoch #14 : Training Accuracy: 0.9459999990463257 Training Loss: 0.1400208853278309 Epoch #14 : Validation Accuracy: 0.9660000026226043 Validation Loss: 0.0886677704751491 17 | Epoch #15 : Training Accuracy: 0.9487999972701072 Training Loss: 0.1354600074514747 Epoch #15 : Validation Accuracy: 0.9699999988079071 Validation Loss: 0.0782060019671917 18 | 19 | Epoch #16 : Training Accuracy: 0.9525000000000000 Training Loss: 0.1280117859551683 Epoch #16 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0798772057518363 20 | Epoch #17 : Training Accuracy: 0.9461999985575676 Training Loss: 0.1364022445678711 Epoch #17 : Validation Accuracy: 0.9579999983310700 Validation Loss: 0.0937202425673604 21 | Epoch #18 : Training Accuracy: 0.9517999985814094 Training Loss: 0.1284205589722842 Epoch #18 : Validation Accuracy: 0.9680000066757202 Validation Loss: 0.0805169358849525 22 | Epoch #19 : Training Accuracy: 0.9533000001311303 Training Loss: 0.1244844510126859 Epoch #19 : Validation Accuracy: 0.9639999866485596 Validation Loss: 0.0811547150835395 23 | Epoch #20 : Training Accuracy: 0.9537999996542931 Training Loss: 0.1205355213116854 Epoch #20 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0593995405361056 24 | 25 | Epoch #21 : Training Accuracy: 0.9555999997258187 Training Loss: 0.1183353125676513 Epoch #21 : Validation Accuracy: 0.9680000007152557 Validation Loss: 0.0894563224166632 26 | Epoch #22 : Training Accuracy: 0.9598000010848046 Training Loss: 0.1131885521160439 Epoch #22 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0786348475143313 27 | Epoch #23 : Training Accuracy: 0.9583999994397163 Training Loss: 0.1133967156521976 Epoch #23 : Validation Accuracy: 0.9779999971389770 Validation Loss: 0.0590893112123013 28 | Epoch #24 : Training Accuracy: 0.9544999989867210 Training Loss: 0.1172488864790648 Epoch #24 : Validation Accuracy: 0.9660000026226043 Validation Loss: 0.0901919133961201 29 | Epoch #25 : Training Accuracy: 0.9591999998688698 Training Loss: 0.1106189618725330 Epoch #25 : Validation Accuracy: 0.9740000069141388 Validation Loss: 0.0888453129678965 30 | 31 | Epoch #26 : Training Accuracy: 0.9591999995708466 Training Loss: 0.1099715617671609 Epoch #26 : Validation Accuracy: 0.9699999988079071 Validation Loss: 0.0833641130477190 32 | Epoch #27 : Training Accuracy: 0.9596999996900558 Training Loss: 0.1043896827427670 Epoch #27 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0714523646980524 33 | Epoch #28 : Training Accuracy: 0.9602999991178512 Training Loss: 0.1084254149906337 Epoch #28 : Validation Accuracy: 0.9740000009536743 Validation Loss: 0.0638354383409023 34 | Epoch #29 : Training Accuracy: 0.9640999996662140 Training Loss: 0.0986467972956598 Epoch #29 : Validation Accuracy: 0.9680000007152557 Validation Loss: 0.0930416651070118 35 | Epoch #30 : Training Accuracy: 0.9621000006794930 Training Loss: 0.0999198011355475 Epoch #30 : Validation Accuracy: 0.9740000069141388 Validation Loss: 0.0639403978362680 36 | 37 | Epoch #31 : Training Accuracy: 0.9654999992251396 Training Loss: 0.0959347143024206 Epoch #31 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0575709318742156 38 | Epoch #32 : Training Accuracy: 0.9647000008821487 Training Loss: 0.0961675180820748 Epoch #32 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0568828165531158 39 | Epoch #33 : Training Accuracy: 0.9683000007271767 Training Loss: 0.0878107639774680 Epoch #33 : Validation Accuracy: 0.9760000109672546 Validation Loss: 0.0697914771735668 40 | Epoch #34 : Training Accuracy: 0.9650999996066093 Training Loss: 0.0935050829313695 Epoch #34 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0516459962353110 41 | Epoch #35 : Training Accuracy: 0.9683000010251999 Training Loss: 0.0879991381894797 Epoch #35 : Validation Accuracy: 0.9780000090599060 Validation Loss: 0.0490968232974410 42 | 43 | Epoch #36 : Training Accuracy: 0.9672000017762185 Training Loss: 0.0861708458571229 Epoch #36 : Validation Accuracy: 0.9720000088214874 Validation Loss: 0.0682704422622919 44 | Epoch #37 : Training Accuracy: 0.9688000002503395 Training Loss: 0.0857487516431138 Epoch #37 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0579367069527507 45 | Epoch #38 : Training Accuracy: 0.9679000020027161 Training Loss: 0.0866800724598579 Epoch #38 : Validation Accuracy: 0.9780000090599060 Validation Loss: 0.0610066143795848 46 | Epoch #39 : Training Accuracy: 0.9716000023484230 Training Loss: 0.0786316590243950 Epoch #39 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0548655722290277 47 | Epoch #40 : Training Accuracy: 0.9689000010490417 Training Loss: 0.0833205751306377 Epoch #40 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0407007794827223 48 | 49 | Epoch #41 : Training Accuracy: 0.9719000029563903 Training Loss: 0.0814381685014814 Epoch #41 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0760288659483194 50 | Epoch #42 : Training Accuracy: 0.9695999985933303 Training Loss: 0.0795459904242307 Epoch #42 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0413095491006970 51 | Epoch #43 : Training Accuracy: 0.9715000012516976 Training Loss: 0.0748126925411634 Epoch #43 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0569152618758380 52 | Epoch #44 : Training Accuracy: 0.9699000012874603 Training Loss: 0.0785666737472639 Epoch #44 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0644503694027662 53 | Epoch #45 : Training Accuracy: 0.9706000012159347 Training Loss: 0.0739382226532325 Epoch #45 : Validation Accuracy: 0.9740000069141388 Validation Loss: 0.0718324722722173 54 | 55 | Epoch #46 : Training Accuracy: 0.9726000028848648 Training Loss: 0.0753850401006639 Epoch #46 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0696011541411281 56 | Epoch #47 : Training Accuracy: 0.9744000026583671 Training Loss: 0.0711604908481240 Epoch #47 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0418332817964256 57 | Epoch #48 : Training Accuracy: 0.9758000016212464 Training Loss: 0.0681724677747115 Epoch #48 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0542137853801250 58 | Epoch #49 : Training Accuracy: 0.9755000016093254 Training Loss: 0.0684865301428363 Epoch #49 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0651565416716039 59 | Epoch #50 : Training Accuracy: 0.9747000017762184 Training Loss: 0.0704875546856783 Epoch #50 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0732629790902138 60 | 61 | Epoch #51 : Training Accuracy: 0.9758000034093857 Training Loss: 0.0682294616475701 Epoch #51 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0423135165125132 62 | Epoch #52 : Training Accuracy: 0.9765000024437904 Training Loss: 0.0678492775163613 Epoch #52 : Validation Accuracy: 0.9779999971389770 Validation Loss: 0.0656025080010295 63 | Epoch #53 : Training Accuracy: 0.9754000037908555 Training Loss: 0.0617519648815505 Epoch #53 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0525542004033923 64 | Epoch #54 : Training Accuracy: 0.9797000035643577 Training Loss: 0.0576690031564795 Epoch #54 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0370537620969117 65 | Epoch #55 : Training Accuracy: 0.9784000024199486 Training Loss: 0.0583726254943758 Epoch #55 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0671785365790129 66 | 67 | Epoch #56 : Training Accuracy: 0.9772000011801719 Training Loss: 0.0597093851253157 Epoch #56 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0493296696105972 68 | Epoch #57 : Training Accuracy: 0.9796000033617019 Training Loss: 0.0573275106694200 Epoch #57 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0267460404429585 69 | Epoch #58 : Training Accuracy: 0.9802000024914741 Training Loss: 0.0548383177327923 Epoch #58 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0418931725434959 70 | Epoch #59 : Training Accuracy: 0.9808000031113625 Training Loss: 0.0538397407962475 Epoch #59 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0533283105120063 71 | Epoch #60 : Training Accuracy: 0.9815000030398369 Training Loss: 0.0506716594897443 Epoch #60 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0392153716180474 72 | 73 | Epoch #61 : Training Accuracy: 0.9809000027179718 Training Loss: 0.0497969380614813 Epoch #61 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0463724986650050 74 | Epoch #62 : Training Accuracy: 0.9838000035285950 Training Loss: 0.0444012799908523 Epoch #62 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0431906070094556 75 | Epoch #63 : Training Accuracy: 0.9813000023365021 Training Loss: 0.0516466019069776 Epoch #63 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0399294041097164 76 | Epoch #64 : Training Accuracy: 0.9837000048160554 Training Loss: 0.0440355087828357 Epoch #64 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0440310244914144 77 | Epoch #65 : Training Accuracy: 0.9859000045061111 Training Loss: 0.0410500398185104 Epoch #65 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0362814618740231 78 | 79 | Epoch #66 : Training Accuracy: 0.9838000029325485 Training Loss: 0.0462698093568906 Epoch #66 : Validation Accuracy: 0.9860000133514404 Validation Loss: 0.0319531736895442 80 | Epoch #67 : Training Accuracy: 0.9847000044584274 Training Loss: 0.0437937939027324 Epoch #67 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0400868498021737 81 | Epoch #68 : Training Accuracy: 0.9863000050187111 Training Loss: 0.0381245950315497 Epoch #68 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0270833752816543 82 | Epoch #69 : Training Accuracy: 0.9861000046133995 Training Loss: 0.0381346620101249 Epoch #69 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0398468339815736 83 | Epoch #70 : Training Accuracy: 0.9870000025629997 Training Loss: 0.0366896491294028 Epoch #70 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0659609382506460 84 | 85 | Epoch #71 : Training Accuracy: 0.9866000041365623 Training Loss: 0.0368455608928343 Epoch #71 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0360803921357729 86 | Epoch #72 : Training Accuracy: 0.9902000039815902 Training Loss: 0.0312742481128953 Epoch #72 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0246908839326352 87 | Epoch #73 : Training Accuracy: 0.9853000032901764 Training Loss: 0.0384037066760357 Epoch #73 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0316230317577720 88 | Epoch #74 : Training Accuracy: 0.9879000028967857 Training Loss: 0.0333283378535998 Epoch #74 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0305289152078331 89 | Epoch #75 : Training Accuracy: 0.9913000041246414 Training Loss: 0.0251093849484459 Epoch #75 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0403397057554685 90 | 91 | Epoch #76 : Training Accuracy: 0.9897000035643577 Training Loss: 0.0305600053226226 Epoch #76 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0344657351961359 92 | Epoch #77 : Training Accuracy: 0.9891000026464463 Training Loss: 0.0299013676717004 Epoch #77 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0534528238466010 93 | Epoch #78 : Training Accuracy: 0.9908000031113624 Training Loss: 0.0264625390490983 Epoch #78 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0366704363259487 94 | Epoch #79 : Training Accuracy: 0.9905000042915344 Training Loss: 0.0262645086739212 Epoch #79 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0319282702403143 95 | Epoch #80 : Training Accuracy: 0.9910000035166741 Training Loss: 0.0249133152705326 Epoch #80 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0447656106669456 96 | 97 | Epoch #81 : Training Accuracy: 0.9913000047206879 Training Loss: 0.0252808434830513 Epoch #81 : Validation Accuracy: 0.9839999973773956 Validation Loss: 0.0687586113810539 98 | Epoch #82 : Training Accuracy: 0.9891000044345856 Training Loss: 0.0259222708130255 Epoch #82 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0817329377867281 99 | Epoch #83 : Training Accuracy: 0.9891000059247017 Training Loss: 0.0319430418207776 Epoch #83 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0312295109732077 100 | Epoch #84 : Training Accuracy: 0.9908000040054321 Training Loss: 0.0256480649128207 Epoch #84 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0493580558104441 101 | Epoch #85 : Training Accuracy: 0.9912000039219856 Training Loss: 0.0230723382810538 Epoch #85 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0480901571805589 102 | 103 | Epoch #86 : Training Accuracy: 0.9916000038385391 Training Loss: 0.0244124174150056 Epoch #86 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0430859793443233 104 | Epoch #87 : Training Accuracy: 0.9931000041961670 Training Loss: 0.0211479654215145 Epoch #87 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0267032987496350 105 | Epoch #88 : Training Accuracy: 0.9929000031948090 Training Loss: 0.0215449303971218 Epoch #88 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0443673150148243 106 | Epoch #89 : Training Accuracy: 0.9937000042200088 Training Loss: 0.0186834894951608 Epoch #89 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0473180385772139 107 | Epoch #90 : Training Accuracy: 0.9923000025749207 Training Loss: 0.0220897503182641 Epoch #90 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0437387086800300 108 | 109 | Epoch #91 : Training Accuracy: 0.9920000040531158 Training Loss: 0.0212880593345108 Epoch #91 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0350329919951037 110 | Epoch #92 : Training Accuracy: 0.9913000044226646 Training Loss: 0.0225855070207399 Epoch #92 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0728261083364487 111 | Epoch #93 : Training Accuracy: 0.9942000031471252 Training Loss: 0.0176522730932993 Epoch #93 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0640679252333939 112 | Epoch #94 : Training Accuracy: 0.9939000040292740 Training Loss: 0.0161883459510500 Epoch #94 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0267655147559708 113 | Epoch #95 : Training Accuracy: 0.9941000041365623 Training Loss: 0.0153762786454172 Epoch #95 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0431318128103158 114 | 115 | Epoch #96 : Training Accuracy: 0.9918000036478043 Training Loss: 0.0219611088615056 Epoch #96 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0331864252453670 116 | Epoch #97 : Training Accuracy: 0.9943000030517578 Training Loss: 0.0194483291848519 Epoch #97 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0479006526147714 117 | Epoch #98 : Training Accuracy: 0.9935000020265580 Training Loss: 0.0169786347322224 Epoch #98 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0308858926116955 118 | Epoch #99 : Training Accuracy: 0.9941000047326088 Training Loss: 0.0184592153070116 Epoch #99 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0484541928832186 119 | Epoch #100: Training Accuracy: 0.9952000027894974 Training Loss: 0.0148927247047959 Epoch #100: Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0417322629073169 120 | 121 | -------------------------------------------------------------------------------- /text_logs/Fold #1.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.8369999945163726 Training Loss: 0.3597753806412220 Epoch #1 : Validation Accuracy: 0.8779999911785126 Validation Loss: 0.2669319525361061 2 | Epoch #2 : Training Accuracy: 0.8825999963283538 Training Loss: 0.2661463842913508 Epoch #2 : Validation Accuracy: 0.9259999930858612 Validation Loss: 0.1948490835726261 3 | Epoch #3 : Training Accuracy: 0.9013999962806701 Training Loss: 0.2406676514446735 Epoch #3 : Validation Accuracy: 0.9500000000000000 Validation Loss: 0.1307991471141577 4 | Epoch #4 : Training Accuracy: 0.9144999989867211 Training Loss: 0.2100332050397992 Epoch #4 : Validation Accuracy: 0.9519999980926513 Validation Loss: 0.1281694311648607 5 | Epoch #5 : Training Accuracy: 0.9175999972224236 Training Loss: 0.2016954386048019 Epoch #5 : Validation Accuracy: 0.9540000021457672 Validation Loss: 0.1224916473031044 6 | 7 | Epoch #6 : Training Accuracy: 0.9319999980926513 Training Loss: 0.1818482429534197 Epoch #6 : Validation Accuracy: 0.9439999997615814 Validation Loss: 0.1290149219334125 8 | Epoch #7 : Training Accuracy: 0.9323999977111816 Training Loss: 0.1718044963106513 Epoch #7 : Validation Accuracy: 0.9580000042915344 Validation Loss: 0.1130945919081569 9 | Epoch #8 : Training Accuracy: 0.9318999972939491 Training Loss: 0.1698885359987617 Epoch #8 : Validation Accuracy: 0.9619999945163726 Validation Loss: 0.0998793318867683 10 | Epoch #9 : Training Accuracy: 0.9363999977707863 Training Loss: 0.1650987897999585 Epoch #9 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0853787980973721 11 | Epoch #10 : Training Accuracy: 0.9325999993085862 Training Loss: 0.1693540147785097 Epoch #10 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0816719494760036 12 | 13 | Epoch #11 : Training Accuracy: 0.9385999992489815 Training Loss: 0.1579454622603953 Epoch #11 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0531827055849135 14 | Epoch #12 : Training Accuracy: 0.9400999963283538 Training Loss: 0.1516768109798431 Epoch #12 : Validation Accuracy: 0.9599999964237214 Validation Loss: 0.0812975598499179 15 | Epoch #13 : Training Accuracy: 0.9451999992132187 Training Loss: 0.1385440564900637 Epoch #13 : Validation Accuracy: 0.9640000104904175 Validation Loss: 0.0903741139918566 16 | Epoch #14 : Training Accuracy: 0.9454999998211860 Training Loss: 0.1432760985940695 Epoch #14 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0600747576914728 17 | Epoch #15 : Training Accuracy: 0.9454999962449073 Training Loss: 0.1380854416266084 Epoch #15 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0745609548874199 18 | 19 | Epoch #16 : Training Accuracy: 0.9484999984502792 Training Loss: 0.1355227688513696 Epoch #16 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0433607208542526 20 | Epoch #17 : Training Accuracy: 0.9486000001430511 Training Loss: 0.1307325458526611 Epoch #17 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0516186492517591 21 | Epoch #18 : Training Accuracy: 0.9443999999761581 Training Loss: 0.1393279926199466 Epoch #18 : Validation Accuracy: 0.9700000047683716 Validation Loss: 0.0677915147505701 22 | Epoch #19 : Training Accuracy: 0.9507999998331070 Training Loss: 0.1275195618951693 Epoch #19 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0598726892378181 23 | Epoch #20 : Training Accuracy: 0.9532999995350838 Training Loss: 0.1227283492963761 Epoch #20 : Validation Accuracy: 0.9779999971389770 Validation Loss: 0.0591864533722401 24 | 25 | Epoch #21 : Training Accuracy: 0.9569999989867211 Training Loss: 0.1152496538963169 Epoch #21 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0472862172173336 26 | Epoch #22 : Training Accuracy: 0.9573999997973442 Training Loss: 0.1154763091774657 Epoch #22 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0543754284968600 27 | Epoch #23 : Training Accuracy: 0.9590999999642372 Training Loss: 0.1108099960722029 Epoch #23 : Validation Accuracy: 0.9759999930858612 Validation Loss: 0.0705946548841894 28 | Epoch #24 : Training Accuracy: 0.9607999995350838 Training Loss: 0.1087363399751484 Epoch #24 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0543593954993412 29 | Epoch #25 : Training Accuracy: 0.9617000004649162 Training Loss: 0.1068814020417631 Epoch #25 : Validation Accuracy: 0.9819999933242798 Validation Loss: 0.0482007805258036 30 | 31 | Epoch #26 : Training Accuracy: 0.9615000006556511 Training Loss: 0.1051560593070462 Epoch #26 : Validation Accuracy: 0.9839999973773956 Validation Loss: 0.0442440246697515 32 | Epoch #27 : Training Accuracy: 0.9618000015616417 Training Loss: 0.1044021398667246 Epoch #27 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0526329436572269 33 | Epoch #28 : Training Accuracy: 0.9608000001311302 Training Loss: 0.1044710582634434 Epoch #28 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0355768416542560 34 | Epoch #29 : Training Accuracy: 0.9615999999642372 Training Loss: 0.1019632879272103 Epoch #29 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0421792913810350 35 | Epoch #30 : Training Accuracy: 0.9611000001430512 Training Loss: 0.1016042502271012 Epoch #30 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0463350125937723 36 | 37 | Epoch #31 : Training Accuracy: 0.9648999983072281 Training Loss: 0.0965331510500982 Epoch #31 : Validation Accuracy: 0.9779999971389770 Validation Loss: 0.0525177254166920 38 | Epoch #32 : Training Accuracy: 0.9639999994635582 Training Loss: 0.0961207475233823 Epoch #32 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0289412691723555 39 | Epoch #33 : Training Accuracy: 0.9666999989748001 Training Loss: 0.0977156183915213 Epoch #33 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0395861331373453 40 | Epoch #34 : Training Accuracy: 0.9656000000238418 Training Loss: 0.0936597148980945 Epoch #34 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0389516056515276 41 | Epoch #35 : Training Accuracy: 0.9662000015377998 Training Loss: 0.0926746445102617 Epoch #35 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0429526042193174 42 | 43 | Epoch #36 : Training Accuracy: 0.9636000007390976 Training Loss: 0.0973694573622197 Epoch #36 : Validation Accuracy: 0.9740000009536743 Validation Loss: 0.0613752795266919 44 | Epoch #37 : Training Accuracy: 0.9681000012159348 Training Loss: 0.0890801079804078 Epoch #37 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0548646913608536 45 | Epoch #38 : Training Accuracy: 0.9682000011205674 Training Loss: 0.0875217777537182 Epoch #38 : Validation Accuracy: 0.9739999949932099 Validation Loss: 0.0740815870463848 46 | Epoch #39 : Training Accuracy: 0.9669999992847442 Training Loss: 0.0907293831137940 Epoch #39 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0350932588917203 47 | Epoch #40 : Training Accuracy: 0.9672000005841255 Training Loss: 0.0864813463680912 Epoch #40 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0446792696835473 48 | 49 | Epoch #41 : Training Accuracy: 0.9694999998807907 Training Loss: 0.0839887493918650 Epoch #41 : Validation Accuracy: 0.9839999973773956 Validation Loss: 0.0335644440725446 50 | Epoch #42 : Training Accuracy: 0.9698000019788742 Training Loss: 0.0784260367741808 Epoch #42 : Validation Accuracy: 0.9839999973773956 Validation Loss: 0.0344430748838931 51 | Epoch #43 : Training Accuracy: 0.9719000014662743 Training Loss: 0.0745718938135542 Epoch #43 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0414273479313124 52 | Epoch #44 : Training Accuracy: 0.9712000015377998 Training Loss: 0.0763663179078139 Epoch #44 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0413007038994692 53 | Epoch #45 : Training Accuracy: 0.9707000011205673 Training Loss: 0.0778236141812522 Epoch #45 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0399062861863058 54 | 55 | Epoch #46 : Training Accuracy: 0.9736000016331673 Training Loss: 0.0765794876636937 Epoch #46 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0204383328557014 56 | Epoch #47 : Training Accuracy: 0.9712000006437301 Training Loss: 0.0799758105911314 Epoch #47 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0508582583745010 57 | Epoch #48 : Training Accuracy: 0.9685000005364418 Training Loss: 0.0804472273425199 Epoch #48 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0369645752012730 58 | Epoch #49 : Training Accuracy: 0.9737000006437302 Training Loss: 0.0698109100852162 Epoch #49 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0538190300110728 59 | Epoch #50 : Training Accuracy: 0.9738000002503395 Training Loss: 0.0717217818391509 Epoch #50 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0528626635437831 60 | 61 | Epoch #51 : Training Accuracy: 0.9767000031471252 Training Loss: 0.0644975637621246 Epoch #51 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0291190324234776 62 | Epoch #52 : Training Accuracy: 0.9725000014901162 Training Loss: 0.0739348575472832 Epoch #52 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0226201375364326 63 | Epoch #53 : Training Accuracy: 0.9744000011682510 Training Loss: 0.0691709867655300 Epoch #53 : Validation Accuracy: 0.9779999971389770 Validation Loss: 0.0492525036679581 64 | Epoch #54 : Training Accuracy: 0.9779000031948090 Training Loss: 0.0608142425015103 Epoch #54 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0439826313406229 65 | Epoch #55 : Training Accuracy: 0.9770000031590462 Training Loss: 0.0598792812501779 Epoch #55 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0306321049225517 66 | 67 | Epoch #56 : Training Accuracy: 0.9775000026822090 Training Loss: 0.0636967089143582 Epoch #56 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0271270814351737 68 | Epoch #57 : Training Accuracy: 0.9791000041365624 Training Loss: 0.0566352159809321 Epoch #57 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0369547323323786 69 | Epoch #58 : Training Accuracy: 0.9786000022292137 Training Loss: 0.0599508971173782 Epoch #58 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0281311285449192 70 | Epoch #59 : Training Accuracy: 0.9783000034093857 Training Loss: 0.0599741948186420 Epoch #59 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0210134132066742 71 | Epoch #60 : Training Accuracy: 0.9801000028848648 Training Loss: 0.0520396275306121 Epoch #60 : Validation Accuracy: 0.9739999949932099 Validation Loss: 0.0664638597983867 72 | 73 | Epoch #61 : Training Accuracy: 0.9803000029921531 Training Loss: 0.0560088868450839 Epoch #61 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0386368802282959 74 | Epoch #62 : Training Accuracy: 0.9797000035643577 Training Loss: 0.0534621803881601 Epoch #62 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0209666208713315 75 | Epoch #63 : Training Accuracy: 0.9835000032186508 Training Loss: 0.0468863720784429 Epoch #63 : Validation Accuracy: 0.9920000016689301 Validation Loss: 0.0185182058368810 76 | Epoch #64 : Training Accuracy: 0.9830000036954880 Training Loss: 0.0478073071117979 Epoch #64 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0112753458670340 77 | Epoch #65 : Training Accuracy: 0.9843000036478042 Training Loss: 0.0423372763310908 Epoch #65 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0327487921458669 78 | 79 | Epoch #66 : Training Accuracy: 0.9839000043272972 Training Loss: 0.0423211375967367 Epoch #66 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0317480327037629 80 | Epoch #67 : Training Accuracy: 0.9834000036120415 Training Loss: 0.0447908810339868 Epoch #67 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0161904870881699 81 | Epoch #68 : Training Accuracy: 0.9860000041127205 Training Loss: 0.0405563343700487 Epoch #68 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0220225728175137 82 | Epoch #69 : Training Accuracy: 0.9879000037908554 Training Loss: 0.0347696447593626 Epoch #69 : Validation Accuracy: 0.9959999978542328 Validation Loss: 0.0112698169017676 83 | Epoch #70 : Training Accuracy: 0.9857000020146370 Training Loss: 0.0389877964399057 Epoch #70 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0231827229727060 84 | 85 | Epoch #71 : Training Accuracy: 0.9876000046730041 Training Loss: 0.0369902536206064 Epoch #71 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0275728386593983 86 | Epoch #72 : Training Accuracy: 0.9899000051617622 Training Loss: 0.0285086080804467 Epoch #72 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0078454240399878 87 | Epoch #73 : Training Accuracy: 0.9881000038981438 Training Loss: 0.0323591433795809 Epoch #73 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0140313043142669 88 | Epoch #74 : Training Accuracy: 0.9878000047802925 Training Loss: 0.0351312438654713 Epoch #74 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0162379445217084 89 | Epoch #75 : Training Accuracy: 0.9880000045895576 Training Loss: 0.0341451614175457 Epoch #75 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0157404766505351 90 | 91 | Epoch #76 : Training Accuracy: 0.9909000030159950 Training Loss: 0.0264408797040232 Epoch #76 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0195029517904914 92 | Epoch #77 : Training Accuracy: 0.9886000037193299 Training Loss: 0.0308545031236281 Epoch #77 : Validation Accuracy: 0.9939999997615814 Validation Loss: 0.0167342904082034 93 | Epoch #78 : Training Accuracy: 0.9909000027179719 Training Loss: 0.0264888612907816 Epoch #78 : Validation Accuracy: 0.9939999997615814 Validation Loss: 0.0169973515658057 94 | Epoch #79 : Training Accuracy: 0.9915000039339066 Training Loss: 0.0263984940552473 Epoch #79 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0115207349910634 95 | Epoch #80 : Training Accuracy: 0.9913000044226646 Training Loss: 0.0246893289119180 Epoch #80 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0139077164902119 96 | 97 | Epoch #81 : Training Accuracy: 0.9906000041961670 Training Loss: 0.0269477538127830 Epoch #81 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0193900305366697 98 | Epoch #82 : Training Accuracy: 0.9926000037789344 Training Loss: 0.0221213862636068 Epoch #82 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0108942678809399 99 | Epoch #83 : Training Accuracy: 0.9915000039339066 Training Loss: 0.0246734438158455 Epoch #83 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0212057440643548 100 | Epoch #84 : Training Accuracy: 0.9918000033497810 Training Loss: 0.0223957296915614 Epoch #84 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0070994061970850 101 | Epoch #85 : Training Accuracy: 0.9911000037193298 Training Loss: 0.0236717790589319 Epoch #85 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0070695560658351 102 | 103 | Epoch #86 : Training Accuracy: 0.9936000043153763 Training Loss: 0.0180701445956947 Epoch #86 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0126325533652562 104 | Epoch #87 : Training Accuracy: 0.9925000038743019 Training Loss: 0.0213839073386043 Epoch #87 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0168950703846349 105 | Epoch #88 : Training Accuracy: 0.9908000034093857 Training Loss: 0.0234429320922936 Epoch #88 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0098358358169207 106 | Epoch #89 : Training Accuracy: 0.9929000046849251 Training Loss: 0.0209544841192837 Epoch #89 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0076334199373377 107 | Epoch #90 : Training Accuracy: 0.9917000040411950 Training Loss: 0.0220840949786361 Epoch #90 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0101696878729854 108 | 109 | Epoch #91 : Training Accuracy: 0.9923000046610833 Training Loss: 0.0233962595384219 Epoch #91 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0202776099788025 110 | Epoch #92 : Training Accuracy: 0.9938000038266182 Training Loss: 0.0168052279223048 Epoch #92 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0073653434708831 111 | Epoch #93 : Training Accuracy: 0.9924000042676926 Training Loss: 0.0200700089002567 Epoch #93 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0130817047254823 112 | Epoch #94 : Training Accuracy: 0.9937000042200088 Training Loss: 0.0175237382246996 Epoch #94 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0063695415821712 113 | Epoch #95 : Training Accuracy: 0.9952000030875205 Training Loss: 0.0147492487623640 Epoch #95 : Validation Accuracy: 0.9959999978542328 Validation Loss: 0.0081387239501055 114 | 115 | Epoch #96 : Training Accuracy: 0.9928000035881996 Training Loss: 0.0209329443384922 Epoch #96 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0078113700641552 116 | Epoch #97 : Training Accuracy: 0.9947000044584274 Training Loss: 0.0148561828208040 Epoch #97 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0082058796580895 117 | Epoch #98 : Training Accuracy: 0.9927000024914742 Training Loss: 0.0205789934292352 Epoch #98 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0097666791160009 118 | Epoch #99 : Training Accuracy: 0.9952000033855438 Training Loss: 0.0138040364108383 Epoch #99 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0123977316259698 119 | Epoch #100: Training Accuracy: 0.9938000035285950 Training Loss: 0.0178401630961889 Epoch #100: Validation Accuracy: 0.9939999997615814 Validation Loss: 0.0153750142882927 120 | 121 | -------------------------------------------------------------------------------- /text_logs/Fold #2.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.8273999965935945 Training Loss: 0.3796463962644339 Epoch #1 : Validation Accuracy: 0.9119999885559082 Validation Loss: 0.2082248345017433 2 | Epoch #2 : Training Accuracy: 0.8748999962210655 Training Loss: 0.2906531769037247 Epoch #2 : Validation Accuracy: 0.9379999935626984 Validation Loss: 0.1581474900245667 3 | Epoch #3 : Training Accuracy: 0.8997999963164329 Training Loss: 0.2382544506713748 Epoch #3 : Validation Accuracy: 0.9439999997615814 Validation Loss: 0.1486761726438999 4 | Epoch #4 : Training Accuracy: 0.9069999954104424 Training Loss: 0.2340299200266600 Epoch #4 : Validation Accuracy: 0.9580000102519989 Validation Loss: 0.1177318498492241 5 | Epoch #5 : Training Accuracy: 0.9180999967455864 Training Loss: 0.1987065603025258 Epoch #5 : Validation Accuracy: 0.9500000000000000 Validation Loss: 0.1149790480732918 6 | 7 | Epoch #6 : Training Accuracy: 0.9236999955773354 Training Loss: 0.1994052666239440 Epoch #6 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.1012418758124113 8 | Epoch #7 : Training Accuracy: 0.9312999966740608 Training Loss: 0.1731675177440047 Epoch #7 : Validation Accuracy: 0.9659999966621399 Validation Loss: 0.0838701341301203 9 | Epoch #8 : Training Accuracy: 0.9321999993920326 Training Loss: 0.1703553866967559 Epoch #8 : Validation Accuracy: 0.9620000004768372 Validation Loss: 0.0941624499857426 10 | Epoch #9 : Training Accuracy: 0.9287999999523163 Training Loss: 0.1719495945982635 Epoch #9 : Validation Accuracy: 0.9719999909400940 Validation Loss: 0.0990285944193602 11 | Epoch #10 : Training Accuracy: 0.9384999993443489 Training Loss: 0.1519314082153141 Epoch #10 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0736961545422673 12 | 13 | Epoch #11 : Training Accuracy: 0.9397999987006187 Training Loss: 0.1509109298978001 Epoch #11 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0804844129830599 14 | Epoch #12 : Training Accuracy: 0.9414999949932098 Training Loss: 0.1479536369256675 Epoch #12 : Validation Accuracy: 0.9659999966621399 Validation Loss: 0.0781148032285273 15 | Epoch #13 : Training Accuracy: 0.9437999990582466 Training Loss: 0.1443345966562629 Epoch #13 : Validation Accuracy: 0.9839999973773956 Validation Loss: 0.0738224685192108 16 | Epoch #14 : Training Accuracy: 0.9441999974846840 Training Loss: 0.1450369394943118 Epoch #14 : Validation Accuracy: 0.9739999949932099 Validation Loss: 0.0623549988493323 17 | Epoch #15 : Training Accuracy: 0.9478999981284142 Training Loss: 0.1371887282468379 Epoch #15 : Validation Accuracy: 0.9640000045299530 Validation Loss: 0.0852010501548648 18 | 19 | Epoch #16 : Training Accuracy: 0.9451999971270562 Training Loss: 0.1376234364486300 Epoch #16 : Validation Accuracy: 0.9799999952316284 Validation Loss: 0.0587999654933810 20 | Epoch #17 : Training Accuracy: 0.9535999986529350 Training Loss: 0.1240106712840497 Epoch #17 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0622718242928386 21 | Epoch #18 : Training Accuracy: 0.9507999992370606 Training Loss: 0.1285909950453788 Epoch #18 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0651960179209709 22 | Epoch #19 : Training Accuracy: 0.9508999994397164 Training Loss: 0.1222110377065837 Epoch #19 : Validation Accuracy: 0.9660000026226043 Validation Loss: 0.0784342447295785 23 | Epoch #20 : Training Accuracy: 0.9535999998450280 Training Loss: 0.1208030598191544 Epoch #20 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0646809806115925 24 | 25 | Epoch #21 : Training Accuracy: 0.9563999977707863 Training Loss: 0.1189131861831993 Epoch #21 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0651998296380043 26 | Epoch #22 : Training Accuracy: 0.9589999994635582 Training Loss: 0.1098391803214327 Epoch #22 : Validation Accuracy: 0.9740000069141388 Validation Loss: 0.0709757397416979 27 | Epoch #23 : Training Accuracy: 0.9573000004887581 Training Loss: 0.1114235332095996 Epoch #23 : Validation Accuracy: 0.9699999988079071 Validation Loss: 0.0780439257621765 28 | Epoch #24 : Training Accuracy: 0.9565999990701676 Training Loss: 0.1082632143702358 Epoch #24 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0578160898759961 29 | Epoch #25 : Training Accuracy: 0.9603999993205070 Training Loss: 0.1055901761399582 Epoch #25 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0639512740075588 30 | 31 | Epoch #26 : Training Accuracy: 0.9564999976754188 Training Loss: 0.1139121222542599 Epoch #26 : Validation Accuracy: 0.9799999952316284 Validation Loss: 0.0639566700905561 32 | Epoch #27 : Training Accuracy: 0.9611999997496605 Training Loss: 0.1012354703154415 Epoch #27 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0490276314318180 33 | Epoch #28 : Training Accuracy: 0.9612999978661537 Training Loss: 0.1017236833134666 Epoch #28 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0645681052468717 34 | Epoch #29 : Training Accuracy: 0.9631000000238419 Training Loss: 0.0970296594640240 Epoch #29 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0494584505446255 35 | Epoch #30 : Training Accuracy: 0.9652000018954277 Training Loss: 0.0958665777230635 Epoch #30 : Validation Accuracy: 0.9539999961853027 Validation Loss: 0.1052507139742374 36 | 37 | Epoch #31 : Training Accuracy: 0.9627000012993813 Training Loss: 0.0977287990786135 Epoch #31 : Validation Accuracy: 0.9739999949932099 Validation Loss: 0.0716419694013894 38 | Epoch #32 : Training Accuracy: 0.9671999979019165 Training Loss: 0.0900958155281842 Epoch #32 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0619953695684671 39 | Epoch #33 : Training Accuracy: 0.9646999984979630 Training Loss: 0.0904498885734938 Epoch #33 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0522069707512856 40 | Epoch #34 : Training Accuracy: 0.9652999991178512 Training Loss: 0.0927204101462848 Epoch #34 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0618937473744154 41 | Epoch #35 : Training Accuracy: 0.9679000014066697 Training Loss: 0.0887038725847378 Epoch #35 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0627167396247387 42 | 43 | Epoch #36 : Training Accuracy: 0.9679999995231628 Training Loss: 0.0879064712859690 Epoch #36 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0605965041089803 44 | Epoch #37 : Training Accuracy: 0.9699000003933906 Training Loss: 0.0824910780647770 Epoch #37 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0457705036737025 45 | Epoch #38 : Training Accuracy: 0.9695000013709069 Training Loss: 0.0801292301388457 Epoch #38 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0400605638977140 46 | Epoch #39 : Training Accuracy: 0.9694000020623207 Training Loss: 0.0811821118975058 Epoch #39 : Validation Accuracy: 0.9799999952316284 Validation Loss: 0.0498572827316821 47 | Epoch #40 : Training Accuracy: 0.9695000007748604 Training Loss: 0.0794490792020224 Epoch #40 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0661663201637566 48 | 49 | Epoch #41 : Training Accuracy: 0.9729000014066697 Training Loss: 0.0769707435509190 Epoch #41 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0451267257565632 50 | Epoch #42 : Training Accuracy: 0.9706000027060508 Training Loss: 0.0739792502089404 Epoch #42 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0500472080428153 51 | Epoch #43 : Training Accuracy: 0.9706000018119813 Training Loss: 0.0789350662520155 Epoch #43 : Validation Accuracy: 0.9920000016689301 Validation Loss: 0.0429404856637120 52 | Epoch #44 : Training Accuracy: 0.9741000017523765 Training Loss: 0.0713476041809190 Epoch #44 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0466627864399925 53 | Epoch #45 : Training Accuracy: 0.9738000023365021 Training Loss: 0.0719468977907673 Epoch #45 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0370066016912460 54 | 55 | Epoch #46 : Training Accuracy: 0.9752000018954277 Training Loss: 0.0673551406082697 Epoch #46 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0385893591679633 56 | Epoch #47 : Training Accuracy: 0.9728000026941299 Training Loss: 0.0750888072699308 Epoch #47 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0699404336046427 57 | Epoch #48 : Training Accuracy: 0.9743000015616416 Training Loss: 0.0702151430514641 Epoch #48 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0404469204368070 58 | Epoch #49 : Training Accuracy: 0.9749000015854835 Training Loss: 0.0675194455753080 Epoch #49 : Validation Accuracy: 0.9839999973773956 Validation Loss: 0.0445648591499776 59 | Epoch #50 : Training Accuracy: 0.9742000028491020 Training Loss: 0.0665188845875673 Epoch #50 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0552904373966157 60 | 61 | Epoch #51 : Training Accuracy: 0.9754000023007393 Training Loss: 0.0687644357257523 Epoch #51 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0408729906193912 62 | Epoch #52 : Training Accuracy: 0.9790000030398369 Training Loss: 0.0580375378415920 Epoch #52 : Validation Accuracy: 0.9780000090599060 Validation Loss: 0.0445748561294749 63 | Epoch #53 : Training Accuracy: 0.9782000011205674 Training Loss: 0.0622264502709731 Epoch #53 : Validation Accuracy: 0.9920000016689301 Validation Loss: 0.0291687488323078 64 | Epoch #54 : Training Accuracy: 0.9782000026106834 Training Loss: 0.0565982810908463 Epoch #54 : Validation Accuracy: 0.9899999976158143 Validation Loss: 0.0383753745933063 65 | Epoch #55 : Training Accuracy: 0.9801000046730042 Training Loss: 0.0529405353730544 Epoch #55 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0394934778567404 66 | 67 | Epoch #56 : Training Accuracy: 0.9796000039577484 Training Loss: 0.0582114198099589 Epoch #56 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0449982772581279 68 | Epoch #57 : Training Accuracy: 0.9822000032663345 Training Loss: 0.0490381599019747 Epoch #57 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0479111910331994 69 | Epoch #58 : Training Accuracy: 0.9791000017523765 Training Loss: 0.0594347204966471 Epoch #58 : Validation Accuracy: 0.9779999971389770 Validation Loss: 0.0632616044953465 70 | Epoch #59 : Training Accuracy: 0.9798000040650368 Training Loss: 0.0551488592359237 Epoch #59 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0387739067198709 71 | Epoch #60 : Training Accuracy: 0.9831000033020973 Training Loss: 0.0470487348805182 Epoch #60 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0489969763206318 72 | 73 | Epoch #61 : Training Accuracy: 0.9805000016093254 Training Loss: 0.0510961018386297 Epoch #61 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0522213578689843 74 | Epoch #62 : Training Accuracy: 0.9819000053405762 Training Loss: 0.0495715197498794 Epoch #62 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0533796525094658 75 | Epoch #63 : Training Accuracy: 0.9824000042676926 Training Loss: 0.0501820426428458 Epoch #63 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0361208692309447 76 | Epoch #64 : Training Accuracy: 0.9845000037550926 Training Loss: 0.0471821312519023 Epoch #64 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0588833727815654 77 | Epoch #65 : Training Accuracy: 0.9825000056624412 Training Loss: 0.0449041458783904 Epoch #65 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0710094026231673 78 | 79 | Epoch #66 : Training Accuracy: 0.9838000044226647 Training Loss: 0.0417491899845481 Epoch #66 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0433208981121425 80 | Epoch #67 : Training Accuracy: 0.9848000052571296 Training Loss: 0.0416906966769602 Epoch #67 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0313628025236540 81 | Epoch #68 : Training Accuracy: 0.9859000062942505 Training Loss: 0.0402904520812444 Epoch #68 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0255452781217173 82 | Epoch #69 : Training Accuracy: 0.9847000026702881 Training Loss: 0.0424722071376164 Epoch #69 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0404303850780707 83 | Epoch #70 : Training Accuracy: 0.9869000044465065 Training Loss: 0.0374509464000585 Epoch #70 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0404955554055050 84 | 85 | Epoch #71 : Training Accuracy: 0.9870000037550927 Training Loss: 0.0376653568755137 Epoch #71 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0390041451086290 86 | Epoch #72 : Training Accuracy: 0.9850000044703484 Training Loss: 0.0407180555292871 Epoch #72 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0426253762794659 87 | Epoch #73 : Training Accuracy: 0.9887000045180321 Training Loss: 0.0325102375426650 Epoch #73 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0414428820833564 88 | Epoch #74 : Training Accuracy: 0.9869000044465065 Training Loss: 0.0353727932454785 Epoch #74 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0438855690590572 89 | Epoch #75 : Training Accuracy: 0.9878000035881996 Training Loss: 0.0304434674113872 Epoch #75 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0414778782753274 90 | 91 | Epoch #76 : Training Accuracy: 0.9887000039219856 Training Loss: 0.0300581998768030 Epoch #76 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0563116402016021 92 | Epoch #77 : Training Accuracy: 0.9881000047922135 Training Loss: 0.0296703608459211 Epoch #77 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0427415916637983 93 | Epoch #78 : Training Accuracy: 0.9872000050544739 Training Loss: 0.0346893134733546 Epoch #78 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0363863375037909 94 | Epoch #79 : Training Accuracy: 0.9894000056385994 Training Loss: 0.0278784054986318 Epoch #79 : Validation Accuracy: 0.9699999988079071 Validation Loss: 0.0796250255545601 95 | Epoch #80 : Training Accuracy: 0.9847000020742417 Training Loss: 0.0432048758520978 Epoch #80 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0412849887332413 96 | 97 | Epoch #81 : Training Accuracy: 0.9896000027656555 Training Loss: 0.0286565137477010 Epoch #81 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0372105663322145 98 | Epoch #82 : Training Accuracy: 0.9907000038027763 Training Loss: 0.0288251942320494 Epoch #82 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0331958957947791 99 | Epoch #83 : Training Accuracy: 0.9902000036835671 Training Loss: 0.0260242928439402 Epoch #83 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0316077185183531 100 | Epoch #84 : Training Accuracy: 0.9920000046491623 Training Loss: 0.0247610367707966 Epoch #84 : Validation Accuracy: 0.9920000016689301 Validation Loss: 0.0243259209324606 101 | Epoch #85 : Training Accuracy: 0.9905000033974648 Training Loss: 0.0275051622791580 Epoch #85 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0265345206717029 102 | 103 | Epoch #86 : Training Accuracy: 0.9916000038385391 Training Loss: 0.0215018892758962 Epoch #86 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0466624238295481 104 | Epoch #87 : Training Accuracy: 0.9919000032544136 Training Loss: 0.0253409187415673 Epoch #87 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0333163496630732 105 | Epoch #88 : Training Accuracy: 0.9924000036716462 Training Loss: 0.0210927271292894 Epoch #88 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0395854824164417 106 | Epoch #89 : Training Accuracy: 0.9937000036239624 Training Loss: 0.0182395355778863 Epoch #89 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0338544271944556 107 | Epoch #90 : Training Accuracy: 0.9935000038146973 Training Loss: 0.0183411810912366 Epoch #90 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0451632415992208 108 | 109 | Epoch #91 : Training Accuracy: 0.9917000031471253 Training Loss: 0.0243573322371958 Epoch #91 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0312710378551856 110 | Epoch #92 : Training Accuracy: 0.9942000040411949 Training Loss: 0.0169734602655080 Epoch #92 : Validation Accuracy: 0.9839999973773956 Validation Loss: 0.0544748201500624 111 | Epoch #93 : Training Accuracy: 0.9928000032901764 Training Loss: 0.0201956962403347 Epoch #93 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0436402988387272 112 | Epoch #94 : Training Accuracy: 0.9936000025272369 Training Loss: 0.0193175882342621 Epoch #94 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0384610429173335 113 | Epoch #95 : Training Accuracy: 0.9933000037074089 Training Loss: 0.0184563048185737 Epoch #95 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0419746387749910 114 | 115 | Epoch #96 : Training Accuracy: 0.9939000040292740 Training Loss: 0.0183176242476839 Epoch #96 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0528419706679415 116 | Epoch #97 : Training Accuracy: 0.9936000031232833 Training Loss: 0.0175380766594753 Epoch #97 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0262377796228975 117 | Epoch #98 : Training Accuracy: 0.9928000050783158 Training Loss: 0.0196028444419790 Epoch #98 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0343768644845113 118 | Epoch #99 : Training Accuracy: 0.9944000029563904 Training Loss: 0.0173524536476179 Epoch #99 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0341792156854353 119 | Epoch #100: Training Accuracy: 0.9930000028014183 Training Loss: 0.0201466378867553 Epoch #100: Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0276931431784760 120 | 121 | -------------------------------------------------------------------------------- /text_logs/Fold #3.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.8352999943494797 Training Loss: 0.3597728269547224 Epoch #1 : Validation Accuracy: 0.9239999949932098 Validation Loss: 0.1850421264767647 2 | Epoch #2 : Training Accuracy: 0.8835999935865402 Training Loss: 0.2691586171835661 Epoch #2 : Validation Accuracy: 0.9379999935626984 Validation Loss: 0.1588093563914299 3 | Epoch #3 : Training Accuracy: 0.8934999951720237 Training Loss: 0.2558104514330626 Epoch #3 : Validation Accuracy: 0.9500000059604645 Validation Loss: 0.1464218586683273 4 | Epoch #4 : Training Accuracy: 0.9069999966025353 Training Loss: 0.2230129956826568 Epoch #4 : Validation Accuracy: 0.9480000019073487 Validation Loss: 0.1332592383027077 5 | Epoch #5 : Training Accuracy: 0.9129999962449074 Training Loss: 0.2175152999162674 Epoch #5 : Validation Accuracy: 0.9439999997615814 Validation Loss: 0.1486491672694683 6 | 7 | Epoch #6 : Training Accuracy: 0.9221999976038933 Training Loss: 0.1951785881817341 Epoch #6 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0708017759025097 8 | Epoch #7 : Training Accuracy: 0.9235999968647957 Training Loss: 0.1864837622642517 Epoch #7 : Validation Accuracy: 0.9519999980926513 Validation Loss: 0.1036028128117323 9 | Epoch #8 : Training Accuracy: 0.9333999970555306 Training Loss: 0.1700516129098833 Epoch #8 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0842610400170088 10 | Epoch #9 : Training Accuracy: 0.9299999973177910 Training Loss: 0.1797807620279491 Epoch #9 : Validation Accuracy: 0.9740000069141388 Validation Loss: 0.0924767553806305 11 | Epoch #10 : Training Accuracy: 0.9347999981045723 Training Loss: 0.1617279342748225 Epoch #10 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0699399620294571 12 | 13 | Epoch #11 : Training Accuracy: 0.9362999963760376 Training Loss: 0.1578014527820051 Epoch #11 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0648450993001461 14 | Epoch #12 : Training Accuracy: 0.9373999968171119 Training Loss: 0.1560278052836657 Epoch #12 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0708887362852693 15 | Epoch #13 : Training Accuracy: 0.9406999993324280 Training Loss: 0.1490655842050910 Epoch #13 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0621375598013401 16 | Epoch #14 : Training Accuracy: 0.9453999978303910 Training Loss: 0.1450523810461163 Epoch #14 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0593936381861567 17 | Epoch #15 : Training Accuracy: 0.9452999997138977 Training Loss: 0.1412492691911757 Epoch #15 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0552264436148107 18 | 19 | Epoch #16 : Training Accuracy: 0.9419999980926513 Training Loss: 0.1448267751932144 Epoch #16 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0559376211836934 20 | Epoch #17 : Training Accuracy: 0.9456999984383583 Training Loss: 0.1386496250703931 Epoch #17 : Validation Accuracy: 0.9740000009536743 Validation Loss: 0.0623211745172739 21 | Epoch #18 : Training Accuracy: 0.9480999979376793 Training Loss: 0.1346907217241824 Epoch #18 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0494282931089401 22 | Epoch #19 : Training Accuracy: 0.9514999991655350 Training Loss: 0.1294809381850064 Epoch #19 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0497687142342329 23 | Epoch #20 : Training Accuracy: 0.9484999990463256 Training Loss: 0.1321284728404135 Epoch #20 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0550722451880574 24 | 25 | Epoch #21 : Training Accuracy: 0.9506999978423119 Training Loss: 0.1319359449949115 Epoch #21 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0520752158015966 26 | Epoch #22 : Training Accuracy: 0.9539000004529953 Training Loss: 0.1212311798892915 Epoch #22 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0408409722149372 27 | Epoch #23 : Training Accuracy: 0.9552999982237815 Training Loss: 0.1165581842232496 Epoch #23 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0563227010890841 28 | Epoch #24 : Training Accuracy: 0.9550999969244003 Training Loss: 0.1176361195696518 Epoch #24 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0509101855568588 29 | Epoch #25 : Training Accuracy: 0.9570999991893768 Training Loss: 0.1098535653948784 Epoch #25 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0511342760175467 30 | 31 | Epoch #26 : Training Accuracy: 0.9558999982476234 Training Loss: 0.1153217584220693 Epoch #26 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0537284372374415 32 | Epoch #27 : Training Accuracy: 0.9566999977827072 Training Loss: 0.1097876881202683 Epoch #27 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0401624801568687 33 | Epoch #28 : Training Accuracy: 0.9601999989151955 Training Loss: 0.1034212430519983 Epoch #28 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0409313352778554 34 | Epoch #29 : Training Accuracy: 0.9618000012636184 Training Loss: 0.1003299307450652 Epoch #29 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0678585349116474 35 | Epoch #30 : Training Accuracy: 0.9635000014305115 Training Loss: 0.1013992157671601 Epoch #30 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0456944142468274 36 | 37 | Epoch #31 : Training Accuracy: 0.9628000012040139 Training Loss: 0.1035552813857794 Epoch #31 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0452714071143419 38 | Epoch #32 : Training Accuracy: 0.9615999987721443 Training Loss: 0.1022816550359130 Epoch #32 : Validation Accuracy: 0.9840000152587891 Validation Loss: 0.0383422143757343 39 | Epoch #33 : Training Accuracy: 0.9621999996900559 Training Loss: 0.0959702304052189 Epoch #33 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0478591111488640 40 | Epoch #34 : Training Accuracy: 0.9650000014901161 Training Loss: 0.0953224209928885 Epoch #34 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0440083902329206 41 | Epoch #35 : Training Accuracy: 0.9662000006437301 Training Loss: 0.0884412250923924 Epoch #35 : Validation Accuracy: 0.9780000090599060 Validation Loss: 0.0446532949805260 42 | 43 | Epoch #36 : Training Accuracy: 0.9676000010967255 Training Loss: 0.0871172142727301 Epoch #36 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0312273425515741 44 | Epoch #37 : Training Accuracy: 0.9648000001907349 Training Loss: 0.0933543841633946 Epoch #37 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0345960923004895 45 | Epoch #38 : Training Accuracy: 0.9671000015735626 Training Loss: 0.0849132173322141 Epoch #38 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0318637763150036 46 | Epoch #39 : Training Accuracy: 0.9671000021696091 Training Loss: 0.0871857223426923 Epoch #39 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0407914001494646 47 | Epoch #40 : Training Accuracy: 0.9662000000476837 Training Loss: 0.0874962406046689 Epoch #40 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0566344093531370 48 | 49 | Epoch #41 : Training Accuracy: 0.9677000004053116 Training Loss: 0.0858227969007567 Epoch #41 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0309977280907333 50 | Epoch #42 : Training Accuracy: 0.9697000017762184 Training Loss: 0.0805398223409429 Epoch #42 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0409773084335029 51 | Epoch #43 : Training Accuracy: 0.9685000020265579 Training Loss: 0.0845071459561586 Epoch #43 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0507336093112826 52 | Epoch #44 : Training Accuracy: 0.9703999987244606 Training Loss: 0.0801004664646462 Epoch #44 : Validation Accuracy: 0.9840000152587891 Validation Loss: 0.0540260017849505 53 | Epoch #45 : Training Accuracy: 0.9703000012040138 Training Loss: 0.0768677545269020 Epoch #45 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0265826108399779 54 | 55 | Epoch #46 : Training Accuracy: 0.9713000005483627 Training Loss: 0.0778302288334817 Epoch #46 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0288903750013560 56 | Epoch #47 : Training Accuracy: 0.9707000002264976 Training Loss: 0.0784344433946535 Epoch #47 : Validation Accuracy: 0.9860000133514404 Validation Loss: 0.0450224136002362 57 | Epoch #48 : Training Accuracy: 0.9765000018477440 Training Loss: 0.0674011007812805 Epoch #48 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0402287931181490 58 | Epoch #49 : Training Accuracy: 0.9725000014901162 Training Loss: 0.0748300075577572 Epoch #49 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0312152187805623 59 | Epoch #50 : Training Accuracy: 0.9751000022888183 Training Loss: 0.0725169939431362 Epoch #50 : Validation Accuracy: 0.9860000133514404 Validation Loss: 0.0239442477934062 60 | 61 | Epoch #51 : Training Accuracy: 0.9728000009059906 Training Loss: 0.0728662464383524 Epoch #51 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0443435491994023 62 | Epoch #52 : Training Accuracy: 0.9753000023961067 Training Loss: 0.0683381956559606 Epoch #52 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0371291439048946 63 | Epoch #53 : Training Accuracy: 0.9723000016808510 Training Loss: 0.0748043535160832 Epoch #53 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0326893148710951 64 | Epoch #54 : Training Accuracy: 0.9760000038146973 Training Loss: 0.0685794359492138 Epoch #54 : Validation Accuracy: 0.9860000133514404 Validation Loss: 0.0413208041340113 65 | Epoch #55 : Training Accuracy: 0.9769000044465065 Training Loss: 0.0628170915262308 Epoch #55 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0443244748748839 66 | 67 | Epoch #56 : Training Accuracy: 0.9772000023722649 Training Loss: 0.0669838187366258 Epoch #56 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0656320518814027 68 | Epoch #57 : Training Accuracy: 0.9737000018358231 Training Loss: 0.0699668835289776 Epoch #57 : Validation Accuracy: 0.9840000152587891 Validation Loss: 0.0368119009770453 69 | Epoch #58 : Training Accuracy: 0.9782000026106834 Training Loss: 0.0606306457531173 Epoch #58 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0232292409986258 70 | Epoch #59 : Training Accuracy: 0.9755000039935112 Training Loss: 0.0628793990891427 Epoch #59 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0258421548176557 71 | Epoch #60 : Training Accuracy: 0.9804000031948089 Training Loss: 0.0578567521274090 Epoch #60 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0489603587426245 72 | 73 | Epoch #61 : Training Accuracy: 0.9795000034570694 Training Loss: 0.0567787436232902 Epoch #61 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0452840296784416 74 | Epoch #62 : Training Accuracy: 0.9793000030517578 Training Loss: 0.0553169689280912 Epoch #62 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0332011532271281 75 | Epoch #63 : Training Accuracy: 0.9831000015139579 Training Loss: 0.0464798371057259 Epoch #63 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0272752538323402 76 | Epoch #64 : Training Accuracy: 0.9802000039815902 Training Loss: 0.0529984234983567 Epoch #64 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0336448682006448 77 | Epoch #65 : Training Accuracy: 0.9812000036239624 Training Loss: 0.0487515587772941 Epoch #65 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0316059887874871 78 | 79 | Epoch #66 : Training Accuracy: 0.9826000043749810 Training Loss: 0.0491024365584599 Epoch #66 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0358087910106406 80 | Epoch #67 : Training Accuracy: 0.9843000036478042 Training Loss: 0.0449399773747427 Epoch #67 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0559409944107756 81 | Epoch #68 : Training Accuracy: 0.9858000034093857 Training Loss: 0.0404434504063102 Epoch #68 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0325926438206807 82 | Epoch #69 : Training Accuracy: 0.9826000043749810 Training Loss: 0.0481353063229471 Epoch #69 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0236850580608007 83 | Epoch #70 : Training Accuracy: 0.9848000034689903 Training Loss: 0.0417548089707270 Epoch #70 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0357417444465682 84 | 85 | Epoch #71 : Training Accuracy: 0.9847000044584274 Training Loss: 0.0432391757352161 Epoch #71 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0264514201146085 86 | Epoch #72 : Training Accuracy: 0.9869000041484832 Training Loss: 0.0334732490545139 Epoch #72 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0229680386255495 87 | Epoch #73 : Training Accuracy: 0.9861000043153763 Training Loss: 0.0410316120268544 Epoch #73 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0247557412832975 88 | Epoch #74 : Training Accuracy: 0.9873000046610833 Training Loss: 0.0342245431742049 Epoch #74 : Validation Accuracy: 0.9920000016689301 Validation Loss: 0.0245109820738435 89 | Epoch #75 : Training Accuracy: 0.9866000029444695 Training Loss: 0.0400220780790551 Epoch #75 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0293398922542110 90 | 91 | Epoch #76 : Training Accuracy: 0.9856000041961670 Training Loss: 0.0391627953157877 Epoch #76 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0248473623709288 92 | Epoch #77 : Training Accuracy: 0.9896000024676322 Training Loss: 0.0315564171504229 Epoch #77 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0206180173438042 93 | Epoch #78 : Training Accuracy: 0.9880000045895576 Training Loss: 0.0343068185471930 Epoch #78 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0206412563100457 94 | Epoch #79 : Training Accuracy: 0.9886000052094459 Training Loss: 0.0309554681176087 Epoch #79 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0270292385714129 95 | Epoch #80 : Training Accuracy: 0.9902000027894974 Training Loss: 0.0283469849333051 Epoch #80 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0292519221315160 96 | 97 | Epoch #81 : Training Accuracy: 0.9887000033259392 Training Loss: 0.0321222085066256 Epoch #81 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0482710040640086 98 | Epoch #82 : Training Accuracy: 0.9897000053524971 Training Loss: 0.0293441877371515 Epoch #82 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0309363942593336 99 | Epoch #83 : Training Accuracy: 0.9867000049352646 Training Loss: 0.0359780431905529 Epoch #83 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0189103230717592 100 | Epoch #84 : Training Accuracy: 0.9903000029921531 Training Loss: 0.0280761976717622 Epoch #84 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0200597876973916 101 | Epoch #85 : Training Accuracy: 0.9897000023722649 Training Loss: 0.0295748186263518 Epoch #85 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0160525025101379 102 | 103 | Epoch #86 : Training Accuracy: 0.9933000037074089 Training Loss: 0.0210700571693451 Epoch #86 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0260999039397575 104 | Epoch #87 : Training Accuracy: 0.9905000019073487 Training Loss: 0.0285931638277543 Epoch #87 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0244514281279407 105 | Epoch #88 : Training Accuracy: 0.9919000050425529 Training Loss: 0.0221492672637396 Epoch #88 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0293563945044298 106 | Epoch #89 : Training Accuracy: 0.9896000039577484 Training Loss: 0.0267198955136701 Epoch #89 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0290434587106574 107 | Epoch #90 : Training Accuracy: 0.9917000040411950 Training Loss: 0.0231341984420578 Epoch #90 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0258852312515955 108 | 109 | Epoch #91 : Training Accuracy: 0.9908000040054321 Training Loss: 0.0252639412348799 Epoch #91 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0157011315226555 110 | Epoch #92 : Training Accuracy: 0.9920000028610230 Training Loss: 0.0229325211158357 Epoch #92 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0323811214271700 111 | Epoch #93 : Training Accuracy: 0.9929000046849251 Training Loss: 0.0211080262425821 Epoch #93 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0187956978217699 112 | Epoch #94 : Training Accuracy: 0.9932000049948693 Training Loss: 0.0189120847154845 Epoch #94 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0232244472252205 113 | Epoch #95 : Training Accuracy: 0.9931000044941902 Training Loss: 0.0208351240326010 Epoch #95 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0129055600744323 114 | 115 | Epoch #96 : Training Accuracy: 0.9929000043869018 Training Loss: 0.0207636285603803 Epoch #96 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0081345882266760 116 | Epoch #97 : Training Accuracy: 0.9931000036001205 Training Loss: 0.0185157138424256 Epoch #97 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0268898954585893 117 | Epoch #98 : Training Accuracy: 0.9927000048756599 Training Loss: 0.0218547601823957 Epoch #98 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0302394918224309 118 | Epoch #99 : Training Accuracy: 0.9942000037431717 Training Loss: 0.0178546394377918 Epoch #99 : Validation Accuracy: 0.9980000019073486 Validation Loss: 0.0030537315371475 119 | Epoch #100: Training Accuracy: 0.9936000037193299 Training Loss: 0.0190499831794295 Epoch #100: Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0347858351931791 120 | 121 | -------------------------------------------------------------------------------- /text_logs/Fold #4.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.8424999934434890 Training Loss: 0.3580822536349297 Epoch #1 : Validation Accuracy: 0.8639999926090240 Validation Loss: 0.3389237314462662 2 | Epoch #2 : Training Accuracy: 0.8852999958395958 Training Loss: 0.2697626265883446 Epoch #2 : Validation Accuracy: 0.9359999954700470 Validation Loss: 0.1623121440410614 3 | Epoch #3 : Training Accuracy: 0.9058999946713447 Training Loss: 0.2316254362836480 Epoch #3 : Validation Accuracy: 0.9419999897480011 Validation Loss: 0.1337722711265087 4 | Epoch #4 : Training Accuracy: 0.9169999966025353 Training Loss: 0.2049438385479152 Epoch #4 : Validation Accuracy: 0.9560000061988830 Validation Loss: 0.1213390503078699 5 | Epoch #5 : Training Accuracy: 0.9254999977350234 Training Loss: 0.1801296145096421 Epoch #5 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0911103371530771 6 | 7 | Epoch #6 : Training Accuracy: 0.9227999970316887 Training Loss: 0.1912839028611779 Epoch #6 : Validation Accuracy: 0.9579999983310700 Validation Loss: 0.1118887040764093 8 | Epoch #7 : Training Accuracy: 0.9306999966502190 Training Loss: 0.1746234021708369 Epoch #7 : Validation Accuracy: 0.9419999957084656 Validation Loss: 0.1457474812865257 9 | Epoch #8 : Training Accuracy: 0.9319999989867210 Training Loss: 0.1675252850167453 Epoch #8 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0562430610880256 10 | Epoch #9 : Training Accuracy: 0.9340999978780746 Training Loss: 0.1617983528971672 Epoch #9 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0817503334954381 11 | Epoch #10 : Training Accuracy: 0.9369999963045120 Training Loss: 0.1503930328506976 Epoch #10 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0700892524793744 12 | 13 | Epoch #11 : Training Accuracy: 0.9405999985337258 Training Loss: 0.1519799489900470 Epoch #11 : Validation Accuracy: 0.9579999983310700 Validation Loss: 0.0959833873435855 14 | Epoch #12 : Training Accuracy: 0.9407999968528747 Training Loss: 0.1504930309765041 Epoch #12 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0649477157741785 15 | Epoch #13 : Training Accuracy: 0.9410999971628189 Training Loss: 0.1510300399735570 Epoch #13 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0656560624018312 16 | Epoch #14 : Training Accuracy: 0.9405999994277954 Training Loss: 0.1481082050222904 Epoch #14 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0571262918412685 17 | Epoch #15 : Training Accuracy: 0.9527999964356423 Training Loss: 0.1239499008888379 Epoch #15 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0634904067963362 18 | 19 | Epoch #16 : Training Accuracy: 0.9431999984383583 Training Loss: 0.1483675587363541 Epoch #16 : Validation Accuracy: 0.9639999985694885 Validation Loss: 0.0754543758928776 20 | Epoch #17 : Training Accuracy: 0.9549999991059304 Training Loss: 0.1195007359515876 Epoch #17 : Validation Accuracy: 0.9720000028610229 Validation Loss: 0.0789141278713942 21 | Epoch #18 : Training Accuracy: 0.9534999963641166 Training Loss: 0.1232985973916948 Epoch #18 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0694014089182019 22 | Epoch #19 : Training Accuracy: 0.9462999993562698 Training Loss: 0.1323171244189143 Epoch #19 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0588667722418904 23 | Epoch #20 : Training Accuracy: 0.9513000008463860 Training Loss: 0.1262638420565054 Epoch #20 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0936315798200667 24 | 25 | Epoch #21 : Training Accuracy: 0.9548999989032745 Training Loss: 0.1192240348644555 Epoch #21 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0573790155351162 26 | Epoch #22 : Training Accuracy: 0.9580999982357025 Training Loss: 0.1157857627328485 Epoch #22 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0605043262243271 27 | Epoch #23 : Training Accuracy: 0.9561999997496605 Training Loss: 0.1152692587208003 Epoch #23 : Validation Accuracy: 0.9659999907016754 Validation Loss: 0.0832781814038754 28 | Epoch #24 : Training Accuracy: 0.9576999995112420 Training Loss: 0.1141994381789118 Epoch #24 : Validation Accuracy: 0.9760000050067902 Validation Loss: 0.0709134636446834 29 | Epoch #25 : Training Accuracy: 0.9577999967336654 Training Loss: 0.1136278508650139 Epoch #25 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0730192556977272 30 | 31 | Epoch #26 : Training Accuracy: 0.9618000006675720 Training Loss: 0.1031541480310261 Epoch #26 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0471153302118182 32 | Epoch #27 : Training Accuracy: 0.9606000000238418 Training Loss: 0.1065937770577148 Epoch #27 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0535087043419480 33 | Epoch #28 : Training Accuracy: 0.9602000004053116 Training Loss: 0.1070092952530831 Epoch #28 : Validation Accuracy: 0.9699999988079071 Validation Loss: 0.0598977616056800 34 | Epoch #29 : Training Accuracy: 0.9607000002264976 Training Loss: 0.1058833899791352 Epoch #29 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0554835693910718 35 | Epoch #30 : Training Accuracy: 0.9609999999403953 Training Loss: 0.1072220261627808 Epoch #30 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0495624930132180 36 | 37 | Epoch #31 : Training Accuracy: 0.9629000002145767 Training Loss: 0.0990340105257928 Epoch #31 : Validation Accuracy: 0.9859999954700470 Validation Loss: 0.0494061766192317 38 | Epoch #32 : Training Accuracy: 0.9634999999403954 Training Loss: 0.1001733991643414 Epoch #32 : Validation Accuracy: 0.9660000026226043 Validation Loss: 0.0864906382746995 39 | Epoch #33 : Training Accuracy: 0.9618999999761582 Training Loss: 0.1018095000460744 Epoch #33 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0547397345304489 40 | Epoch #34 : Training Accuracy: 0.9631000009179115 Training Loss: 0.0974017911404371 Epoch #34 : Validation Accuracy: 0.9740000009536743 Validation Loss: 0.0676983635406941 41 | Epoch #35 : Training Accuracy: 0.9668000003695488 Training Loss: 0.0917551851319149 Epoch #35 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0333134497515857 42 | 43 | Epoch #36 : Training Accuracy: 0.9684000003337860 Training Loss: 0.0873335647326894 Epoch #36 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0420154138468206 44 | Epoch #37 : Training Accuracy: 0.9673000004887581 Training Loss: 0.0866099506593309 Epoch #37 : Validation Accuracy: 0.9780000030994416 Validation Loss: 0.0542006349191070 45 | Epoch #38 : Training Accuracy: 0.9698000001907349 Training Loss: 0.0837270838825498 Epoch #38 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0616611411795020 46 | Epoch #39 : Training Accuracy: 0.9686000001430511 Training Loss: 0.0827610100945458 Epoch #39 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0469195721670985 47 | Epoch #40 : Training Accuracy: 0.9691999992728233 Training Loss: 0.0836244497192092 Epoch #40 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0553318489342928 48 | 49 | Epoch #41 : Training Accuracy: 0.9691999998688697 Training Loss: 0.0825524972728454 Epoch #41 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0316314341500401 50 | Epoch #42 : Training Accuracy: 0.9717000016570091 Training Loss: 0.0782574728992768 Epoch #42 : Validation Accuracy: 0.9879999995231629 Validation Loss: 0.0465151024982333 51 | Epoch #43 : Training Accuracy: 0.9715000018477440 Training Loss: 0.0777925341110677 Epoch #43 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0425605343654752 52 | Epoch #44 : Training Accuracy: 0.9697000002861023 Training Loss: 0.0837338871532120 Epoch #44 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0402711850591004 53 | Epoch #45 : Training Accuracy: 0.9755000007152558 Training Loss: 0.0715434503555298 Epoch #45 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0567178698256612 54 | 55 | Epoch #46 : Training Accuracy: 0.9730000013113022 Training Loss: 0.0757238205196336 Epoch #46 : Validation Accuracy: 0.9700000047683716 Validation Loss: 0.0655078252777457 56 | Epoch #47 : Training Accuracy: 0.9743000027537346 Training Loss: 0.0680064837285317 Epoch #47 : Validation Accuracy: 0.9840000152587891 Validation Loss: 0.0404758518096060 57 | Epoch #48 : Training Accuracy: 0.9709000024199486 Training Loss: 0.0786424937401898 Epoch #48 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0513552929740399 58 | Epoch #49 : Training Accuracy: 0.9699000009894371 Training Loss: 0.0864031966752373 Epoch #49 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0599827933125198 59 | Epoch #50 : Training Accuracy: 0.9748000025749206 Training Loss: 0.0703880244703032 Epoch #50 : Validation Accuracy: 0.9800000011920929 Validation Loss: 0.0559257298707962 60 | 61 | Epoch #51 : Training Accuracy: 0.9744000014662743 Training Loss: 0.0696646601636894 Epoch #51 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0462616333737969 62 | Epoch #52 : Training Accuracy: 0.9767000016570091 Training Loss: 0.0636705085053109 Epoch #52 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0477302970364690 63 | Epoch #53 : Training Accuracy: 0.9788000023365021 Training Loss: 0.0648807729757391 Epoch #53 : Validation Accuracy: 0.9719999969005585 Validation Loss: 0.0682185814250261 64 | Epoch #54 : Training Accuracy: 0.9766000005602836 Training Loss: 0.0647969068912789 Epoch #54 : Validation Accuracy: 0.9759999990463257 Validation Loss: 0.0646179622970521 65 | Epoch #55 : Training Accuracy: 0.9763000023365020 Training Loss: 0.0693366665532812 Epoch #55 : Validation Accuracy: 0.9880000114440918 Validation Loss: 0.0406436706427485 66 | 67 | Epoch #56 : Training Accuracy: 0.9777000030875206 Training Loss: 0.0670207538898103 Epoch #56 : Validation Accuracy: 0.9800000131130219 Validation Loss: 0.0701870165765286 68 | Epoch #57 : Training Accuracy: 0.9789000037312507 Training Loss: 0.0595271534915082 Epoch #57 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0531105463393033 69 | Epoch #58 : Training Accuracy: 0.9812000024318696 Training Loss: 0.0572040842170827 Epoch #58 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0591480346396565 70 | Epoch #59 : Training Accuracy: 0.9786000019311905 Training Loss: 0.0560454506799579 Epoch #59 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0495727616362274 71 | Epoch #60 : Training Accuracy: 0.9794000023603440 Training Loss: 0.0602157776243985 Epoch #60 : Validation Accuracy: 0.9819999992847442 Validation Loss: 0.0450742463581264 72 | 73 | Epoch #61 : Training Accuracy: 0.9819000032544136 Training Loss: 0.0526902089733630 Epoch #61 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0442127776797861 74 | Epoch #62 : Training Accuracy: 0.9830000045895576 Training Loss: 0.0490059986111009 Epoch #62 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0398948275484145 75 | Epoch #63 : Training Accuracy: 0.9838000038266181 Training Loss: 0.0424962192628300 Epoch #63 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0461467024870217 76 | Epoch #64 : Training Accuracy: 0.9825000011920929 Training Loss: 0.0501989299524575 Epoch #64 : Validation Accuracy: 0.9860000133514404 Validation Loss: 0.0418635156005621 77 | Epoch #65 : Training Accuracy: 0.9857000035047531 Training Loss: 0.0431350652553374 Epoch #65 : Validation Accuracy: 0.9800000071525574 Validation Loss: 0.0447957545518875 78 | 79 | Epoch #66 : Training Accuracy: 0.9845000037550926 Training Loss: 0.0442566588160116 Epoch #66 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0287369777448475 80 | Epoch #67 : Training Accuracy: 0.9856000044941902 Training Loss: 0.0403419386851601 Epoch #67 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0247737230733037 81 | Epoch #68 : Training Accuracy: 0.9839000031352043 Training Loss: 0.0463244139752351 Epoch #68 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0352761024143547 82 | Epoch #69 : Training Accuracy: 0.9863000047206879 Training Loss: 0.0362288833915954 Epoch #69 : Validation Accuracy: 0.9840000152587891 Validation Loss: 0.0586751458933577 83 | Epoch #70 : Training Accuracy: 0.9877000048756599 Training Loss: 0.0327194115023303 Epoch #70 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0311359338462353 84 | 85 | Epoch #71 : Training Accuracy: 0.9884000048041344 Training Loss: 0.0339473636449839 Epoch #71 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0272537598386407 86 | Epoch #72 : Training Accuracy: 0.9869000044465065 Training Loss: 0.0349691358701966 Epoch #72 : Validation Accuracy: 0.9860000014305115 Validation Loss: 0.0392754380591214 87 | Epoch #73 : Training Accuracy: 0.9891000038385391 Training Loss: 0.0299211078160442 Epoch #73 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0240280221682042 88 | Epoch #74 : Training Accuracy: 0.9883000048995018 Training Loss: 0.0349739155035058 Epoch #74 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0325301674893126 89 | Epoch #75 : Training Accuracy: 0.9893000042438507 Training Loss: 0.0292415396547585 Epoch #75 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0392434185370803 90 | 91 | Epoch #76 : Training Accuracy: 0.9884000027179718 Training Loss: 0.0365160326202749 Epoch #76 : Validation Accuracy: 0.9900000095367432 Validation Loss: 0.0417935417732224 92 | Epoch #77 : Training Accuracy: 0.9895000037550926 Training Loss: 0.0258957960654516 Epoch #77 : Validation Accuracy: 0.9840000033378601 Validation Loss: 0.0436034182785079 93 | Epoch #78 : Training Accuracy: 0.9913000035285949 Training Loss: 0.0250676935201045 Epoch #78 : Validation Accuracy: 0.9860000133514404 Validation Loss: 0.0480958801461384 94 | Epoch #79 : Training Accuracy: 0.9906000050902367 Training Loss: 0.0230151077714982 Epoch #79 : Validation Accuracy: 0.9820000052452087 Validation Loss: 0.0637319640954956 95 | Epoch #80 : Training Accuracy: 0.9918000051379203 Training Loss: 0.0238404133185395 Epoch #80 : Validation Accuracy: 0.9920000016689301 Validation Loss: 0.0364320994704030 96 | 97 | Epoch #81 : Training Accuracy: 0.9922000032663345 Training Loss: 0.0230139273111126 Epoch #81 : Validation Accuracy: 0.9960000038146972 Validation Loss: 0.0333003735286184 98 | Epoch #82 : Training Accuracy: 0.9927000036835670 Training Loss: 0.0243011647496314 Epoch #82 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0352217121049762 99 | Epoch #83 : Training Accuracy: 0.9916000032424926 Training Loss: 0.0232377172985071 Epoch #83 : Validation Accuracy: 0.9840000092983245 Validation Loss: 0.0388013981282711 100 | Epoch #84 : Training Accuracy: 0.9913000026345253 Training Loss: 0.0264734186505666 Epoch #84 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0460441948613152 101 | Epoch #85 : Training Accuracy: 0.9930000030994415 Training Loss: 0.0199347777344519 Epoch #85 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0368684704182669 102 | 103 | Epoch #86 : Training Accuracy: 0.9942000040411949 Training Loss: 0.0192068636387921 Epoch #86 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0325300853233784 104 | Epoch #87 : Training Accuracy: 0.9938000041246414 Training Loss: 0.0194704691990046 Epoch #87 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0302674746606499 105 | Epoch #88 : Training Accuracy: 0.9928000032901764 Training Loss: 0.0213153941737983 Epoch #88 : Validation Accuracy: 0.9920000016689301 Validation Loss: 0.0294295100728050 106 | Epoch #89 : Training Accuracy: 0.9946000030636788 Training Loss: 0.0162116544217497 Epoch #89 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0421834139153361 107 | Epoch #90 : Training Accuracy: 0.9931000030040741 Training Loss: 0.0203746165479788 Epoch #90 : Validation Accuracy: 0.9820000112056733 Validation Loss: 0.0667390892282128 108 | 109 | Epoch #91 : Training Accuracy: 0.9919000035524368 Training Loss: 0.0229749091059784 Epoch #91 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0344281029072590 110 | Epoch #92 : Training Accuracy: 0.9937000036239624 Training Loss: 0.0197565930444398 Epoch #92 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0355358158005401 111 | Epoch #93 : Training Accuracy: 0.9924000033736229 Training Loss: 0.0188076618040213 Epoch #93 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0342665883712471 112 | Epoch #94 : Training Accuracy: 0.9941000032424927 Training Loss: 0.0172537443979400 Epoch #94 : Validation Accuracy: 0.9860000073909759 Validation Loss: 0.0364424752071500 113 | Epoch #95 : Training Accuracy: 0.9942000040411949 Training Loss: 0.0152574921698033 Epoch #95 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0327140967361629 114 | 115 | Epoch #96 : Training Accuracy: 0.9951000034809112 Training Loss: 0.0152295741159469 Epoch #96 : Validation Accuracy: 0.9900000035762787 Validation Loss: 0.0368009215453640 116 | Epoch #97 : Training Accuracy: 0.9941000032424927 Training Loss: 0.0162268329060316 Epoch #97 : Validation Accuracy: 0.9940000057220459 Validation Loss: 0.0380749557865784 117 | Epoch #98 : Training Accuracy: 0.9945000037550926 Training Loss: 0.0156715521981823 Epoch #98 : Validation Accuracy: 0.9880000054836273 Validation Loss: 0.0439527016598731 118 | Epoch #99 : Training Accuracy: 0.9948000031709671 Training Loss: 0.0141241044225899 Epoch #99 : Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0364079340128228 119 | Epoch #100: Training Accuracy: 0.9956000030040741 Training Loss: 0.0139061988109097 Epoch #100: Validation Accuracy: 0.9920000076293946 Validation Loss: 0.0241306345167686 120 | 121 | -------------------------------------------------------------------------------- /text_logs/average.txt: -------------------------------------------------------------------------------- 1 | Accuracy: 0.9888000023365021 2 | Loss: 0.0329321003850782 -------------------------------------------------------------------------------- /text_logs/pretrained_attempt_4.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.7400000034272671 Training Loss: 4.1613011825084687 Epoch #1 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 2 | Epoch #2 : Training Accuracy: 0.7410000033676625 Training Loss: 4.1745867310464382 Epoch #2 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 3 | Epoch #3 : Training Accuracy: 0.7410000017285348 Training Loss: 4.1745867341756817 Epoch #3 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 4 | Epoch #4 : Training Accuracy: 0.7410000007599592 Training Loss: 4.1745867374539376 Epoch #4 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 5 | Epoch #5 : Training Accuracy: 0.7410000030696392 Training Loss: 4.1745867299073103 Epoch #5 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 6 | 7 | Epoch #6 : Training Accuracy: 0.7410000022500753 Training Loss: 4.1745867323875423 Epoch #6 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 8 | Epoch #7 : Training Accuracy: 0.7410000041127205 Training Loss: 4.1745867337286473 Epoch #7 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 9 | Epoch #8 : Training Accuracy: 0.7410000023990869 Training Loss: 4.1745867377519605 Epoch #8 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 10 | Epoch #9 : Training Accuracy: 0.7410000042617321 Training Loss: 4.1745867313444611 Epoch #9 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 11 | Epoch #10 : Training Accuracy: 0.7410000041872263 Training Loss: 4.1745867355167867 Epoch #10 : Validation Accuracy: 0.7680000066757202 Validation Loss: 3.7393981575965882 12 | 13 | -------------------------------------------------------------------------------- /text_logs/pretrained_attempt_5.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.9300999945402145 Training Loss: 0.2189432299145847 Epoch #1 : Validation Accuracy: 0.9559999972581863 Validation Loss: 0.1330457533709705 2 | Epoch #2 : Training Accuracy: 0.9637999935448169 Training Loss: 0.1090300397585088 Epoch #2 : Validation Accuracy: 0.9719999909400940 Validation Loss: 0.0851188167463988 3 | Epoch #3 : Training Accuracy: 0.9691999930143357 Training Loss: 0.0911159460252384 Epoch #3 : Validation Accuracy: 0.9739999890327453 Validation Loss: 0.0731472212355584 4 | Epoch #4 : Training Accuracy: 0.9723999951779843 Training Loss: 0.0764046151351067 Epoch #4 : Validation Accuracy: 0.9839999914169312 Validation Loss: 0.0551115369074978 5 | Epoch #5 : Training Accuracy: 0.9752999937534332 Training Loss: 0.0686876204905275 Epoch #5 : Validation Accuracy: 0.9839999943971633 Validation Loss: 0.0559019792592153 6 | 7 | Epoch #6 : Training Accuracy: 0.9792999939620495 Training Loss: 0.0643184102662781 Epoch #6 : Validation Accuracy: 0.9839999943971633 Validation Loss: 0.0524996923631988 8 | Epoch #7 : Training Accuracy: 0.9832999950647354 Training Loss: 0.0469996160520532 Epoch #7 : Validation Accuracy: 0.9839999943971633 Validation Loss: 0.0460747845645528 9 | Epoch #8 : Training Accuracy: 0.9832999953627586 Training Loss: 0.0496642432054068 Epoch #8 : Validation Accuracy: 0.9879999935626984 Validation Loss: 0.0357951161364326 10 | Epoch #9 : Training Accuracy: 0.9833999960124493 Training Loss: 0.0470466644054977 Epoch #9 : Validation Accuracy: 0.9759999930858612 Validation Loss: 0.0778839007951319 11 | Epoch #10 : Training Accuracy: 0.9852999953925610 Training Loss: 0.0434237759937969 Epoch #10 : Validation Accuracy: 0.9859999924898147 Validation Loss: 0.0394661788945086 12 | 13 | -------------------------------------------------------------------------------- /text_logs/pretrained_attempt_6.txt: -------------------------------------------------------------------------------- 1 | Epoch #1 : Training Accuracy: 0.8201999964565039 Training Loss: 0.5085316609404981 Epoch #1 : Validation Accuracy: 0.8939999997615814 Validation Loss: 0.3380773624405265 2 | Epoch #2 : Training Accuracy: 0.9072999975085259 Training Loss: 0.2813822996604722 Epoch #2 : Validation Accuracy: 0.9119999915361404 Validation Loss: 0.2321199255064130 3 | Epoch #3 : Training Accuracy: 0.9251999954879284 Training Loss: 0.2248009023442864 Epoch #3 : Validation Accuracy: 0.9279999911785126 Validation Loss: 0.1734464917331934 4 | Epoch #4 : Training Accuracy: 0.9331999947130680 Training Loss: 0.1909365411370527 Epoch #4 : Validation Accuracy: 0.9339999943971634 Validation Loss: 0.1546268958598375 5 | Epoch #5 : Training Accuracy: 0.9359999965131283 Training Loss: 0.1870397603663150 Epoch #5 : Validation Accuracy: 0.9419999927282333 Validation Loss: 0.1327786155045033 6 | 7 | Epoch #6 : Training Accuracy: 0.9435999931395054 Training Loss: 0.1682725471630692 Epoch #6 : Validation Accuracy: 0.9419999957084656 Validation Loss: 0.1323176329955459 8 | Epoch #7 : Training Accuracy: 0.9459999951720238 Training Loss: 0.1521812719292939 Epoch #7 : Validation Accuracy: 0.9499999940395355 Validation Loss: 0.1151729075238109 9 | Epoch #8 : Training Accuracy: 0.9508999952673912 Training Loss: 0.1428033523872728 Epoch #8 : Validation Accuracy: 0.9359999924898148 Validation Loss: 0.1296988754067570 10 | Epoch #9 : Training Accuracy: 0.9521999940276146 Training Loss: 0.1377197061630432 Epoch #9 : Validation Accuracy: 0.9539999932050705 Validation Loss: 0.1044826167169958 11 | Epoch #10 : Training Accuracy: 0.9537999959290028 Training Loss: 0.1315177086688345 Epoch #10 : Validation Accuracy: 0.9479999959468841 Validation Loss: 0.1095111931208521 12 | 13 | Epoch #11 : Training Accuracy: 0.9541999949514866 Training Loss: 0.1387337204581127 Epoch #11 : Validation Accuracy: 0.9579999923706055 Validation Loss: 0.0979819742497057 14 | Epoch #12 : Training Accuracy: 0.9589999948441982 Training Loss: 0.1160405495041050 Epoch #12 : Validation Accuracy: 0.9539999961853027 Validation Loss: 0.1003472312353551 15 | Epoch #13 : Training Accuracy: 0.9613999947905540 Training Loss: 0.1121507556457073 Epoch #13 : Validation Accuracy: 0.9519999951124192 Validation Loss: 0.1065435110125691 16 | Epoch #14 : Training Accuracy: 0.9587999947369099 Training Loss: 0.1157383266440593 Epoch #14 : Validation Accuracy: 0.9619999915361405 Validation Loss: 0.0843337249476463 17 | Epoch #15 : Training Accuracy: 0.9642999941110610 Training Loss: 0.1076965553482296 Epoch #15 : Validation Accuracy: 0.9659999936819077 Validation Loss: 0.0750258984975517 18 | 19 | Epoch #16 : Training Accuracy: 0.9614999929070472 Training Loss: 0.1097420934238471 Epoch #16 : Validation Accuracy: 0.9699999928474426 Validation Loss: 0.0702656534733251 20 | Epoch #17 : Training Accuracy: 0.9630999945104122 Training Loss: 0.1039647225418594 Epoch #17 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0717254267306998 21 | Epoch #18 : Training Accuracy: 0.9652999946475029 Training Loss: 0.1003979792824248 Epoch #18 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0710466702934354 22 | Epoch #19 : Training Accuracy: 0.9622999948263168 Training Loss: 0.1070729635175667 Epoch #19 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0712070007342845 23 | Epoch #20 : Training Accuracy: 0.9671999941766262 Training Loss: 0.0951312798380968 Epoch #20 : Validation Accuracy: 0.9679999947547913 Validation Loss: 0.0703828880330548 24 | 25 | Epoch #21 : Training Accuracy: 0.9652999930083752 Training Loss: 0.0923670256926562 Epoch #21 : Validation Accuracy: 0.9699999958276748 Validation Loss: 0.0641946265473962 26 | Epoch #22 : Training Accuracy: 0.9658999948203564 Training Loss: 0.0959936532404390 Epoch #22 : Validation Accuracy: 0.9719999939203262 Validation Loss: 0.0578517174697481 27 | Epoch #23 : Training Accuracy: 0.9683999951183796 Training Loss: 0.0870969805851928 Epoch #23 : Validation Accuracy: 0.9699999958276748 Validation Loss: 0.0628653395688161 28 | Epoch #24 : Training Accuracy: 0.9666999934613705 Training Loss: 0.0969697433841065 Epoch #24 : Validation Accuracy: 0.9699999958276748 Validation Loss: 0.0601703491993248 29 | Epoch #25 : Training Accuracy: 0.9688999946415424 Training Loss: 0.0873338293447159 Epoch #25 : Validation Accuracy: 0.9699999958276748 Validation Loss: 0.0605756148230284 30 | 31 | Epoch #26 : Training Accuracy: 0.9681999948620796 Training Loss: 0.0909807337327220 Epoch #26 : Validation Accuracy: 0.9699999958276748 Validation Loss: 0.0579638766939752 32 | Epoch #27 : Training Accuracy: 0.9700999943912030 Training Loss: 0.0799209552741377 Epoch #27 : Validation Accuracy: 0.9699999958276748 Validation Loss: 0.0608987216372043 33 | Epoch #28 : Training Accuracy: 0.9710999934375286 Training Loss: 0.0807298706208530 Epoch #28 : Validation Accuracy: 0.9739999920129776 Validation Loss: 0.0552417407277972 34 | Epoch #29 : Training Accuracy: 0.9736999934911728 Training Loss: 0.0760166780292639 Epoch #29 : Validation Accuracy: 0.9659999936819077 Validation Loss: 0.0637344501796178 35 | Epoch #30 : Training Accuracy: 0.9731999933719635 Training Loss: 0.0779305502076750 Epoch #30 : Validation Accuracy: 0.9699999958276748 Validation Loss: 0.0574958222452551 36 | 37 | --------------------------------------------------------------------------------