NEURAL NETWORK FISH CLASSIFIER
This is an implementation of a convolutional neural network that is able to classify groups of fish.
The dataset has got four different fish classes, each one composed of 1000 images, and they have been
obtained from a Kaggle dataset (see https://www.kaggle.com/crowww/a-large-scale-fish-dataset ).
Accuracy and Loss Evolution
Hyperparameters and Parameters
Name
Definition
Value
Training percentage
Amount of files for training in %
80%
Validation percentage
Amount of files for validation in %
20%
Neural network Compilation
Name
Definition
Value
Loss function
Loss function used during training
Categorical Cross Entropy
Optimizer
Optimizer used during training
Ada Delta
Training and EarlyStopping
Name
Definition
Value
Number of Epochs
Maximum number of iterations
30
Steps per Epoch
Total steps of each epoch executed
100
Batch size
Number of files loaded during training steps
30
Patience
Maximum tries to improve val_accuracy before exit
3
Name
Definition
Value
Target size
Width and height for each image loaded
250w, 250h
Rescale
Rescale used during image loading process
1./255
Rotation range
Rotation range for data augmentation
30
Zoom range
Zoom range for data augmentation
0.7
Width shift range
Width swift range for data augmentation
0.1
Height shift range
Width swift range for data augmentation
0.1
Brightness range
Brightness range for data augmentation
(0.2, 0.8)
Horizontal flip
Horizontal flip for data augmentation
True
Vertical flip
Vertical flip for data augmentation
True
Name
Structure
ModelDefinitionOneConv
Conv2D(filters=32, kernel=(2, 2), activation=relu) MaxPooling((2,2)) Dropout(0.25) Flatten() Dense(64, activation=relu) Dropout(0.5) Dense(32, activation=relu) Dense(4, activation=softmax)
ModelDefinitionTwoConv
Conv2D(filters=64, kernel=(2, 2), activation=relu) MaxPooling((2,2)) Dropout(0.25) Conv2D(filters=128, kernel=(2, 2), activation=relu) MaxPooling((2, 2)) Dropout(0.25) Flatten() Dense(128, activation=relu) Dropout(0.25) Dense(64, activation=relu) Dense(4, activation=softmax)
ModelDefinitionThreeConv
Conv2D(filters=32, kernel=(2, 2), activation=relu) MaxPooling((2,2)) Dropout(0.25) Conv2D(filters=64, kernel=(2, 2), activation=relu) MaxPooling((2, 2)) Dropout(0.25) Conv2D(filters=128, kernel=(2, 2), activation=relu) MaxPooling((2, 2)) Dropout(0.25) Flatten() Dense(64, activation=relu) Dropout(0.5) Dense(32, activation=relu) Dense(4, activation=softmax)
Name
Loss
Accuracy
Validation Loss
Validation Accuracy
ModelDefinitionOneConv
1.3097
0.4203
1.1064
0.6775
ModelDefinitionTwoConv
1.2537
0.5282
1.0885
0.6775
ModelDefinitionThreeConv
1.3853
0.2657
1.3765
0.3663