Cainvas

This data set consists of 10 food categories, with 5,000 images. For each class, 125 manually reviewed test images are provided as well as 375 training images. On purpose, the training images were not cleaned, and thus still contain some amount of noise. This comes mostly in the form of intense colors and sometimes wrong labels. All images were rescaled to have a maximum side length of 512 pixels. Our aim is to train a deep learning model which can successfully classify food images

Cloning food mnist repository for accessing dataset

In [1]:
%%time
import os
if ( not os.path.exists("./food_mnist") ):
    !git clone https://github.com/srohit0/food_mnist.git
  
Cloning into 'food_mnist'...
remote: Enumerating objects: 5094, done.
remote: Total 5094 (delta 0), reused 0 (delta 0), pack-reused 5094
Receiving objects: 100% (5094/5094), 239.57 MiB | 18.26 MiB/s, done.
Resolving deltas: 100% (37/37), done.
CPU times: user 177 ms, sys: 57.3 ms, total: 234 ms
Wall time: 16.4 s

Importing the dataset

In [2]:
import food_mnist

(x_train, y_train), (x_test, y_test) = food_mnist.load_data()
labels_dict = food_mnist.labels()
module google.colab.patches not imported.
In [3]:
# Converting list to numpy array
import numpy as np
x_train = np.array(x_train)
x_test = np.array(x_test)
y_train = np.array(y_train)
y_test = np.array(y_test)
In [4]:
# Scaling our images pixels
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
In [5]:
# Converting the labels to cinary class metrics
import tensorflow as tf
num_classes = 10
# convert class vectors to binary class matrices
y_train = tf.keras.utils.to_categorical(y_train, num_classes)
y_test = tf.keras.utils.to_categorical(y_test, num_classes)
In [6]:
x_train.shape , y_train.shape, x_test.shape, y_test.shape
Out[6]:
((3750, 224, 224, 3), (3750, 10), (1250, 224, 224, 3), (1250, 10))

Importing the necessary libraries

In [7]:
# import libraries

import pandas as pd
import matplotlib.pyplot as plt
import cv2
from keras.layers import Dense, Flatten, AveragePooling2D, Dropout, Conv2D, GlobalAveragePooling2D, MaxPool2D
from keras.models import Model, Sequential
from keras.preprocessing import image
from keras.optimizers import Adam
%matplotlib inline

import shutil
import random

from PIL import Image, ImageOps
from matplotlib import pyplot as plt

from keras.callbacks import ModelCheckpoint
import time

Model Architecture

In [13]:
model = Sequential()
model.add(Conv2D(32, 8, activation='relu', input_shape=(x_train.shape[1:])))
model.add(Conv2D(64, 8, activation='relu'))
model.add(Conv2D(128, 8, activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Conv2D(256, 8, activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(GlobalAveragePooling2D())
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
model.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 217, 217, 32)      6176      
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 210, 210, 64)      131136    
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 203, 203, 128)     524416    
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 101, 101, 128)     0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 94, 94, 256)       2097408   
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 47, 47, 256)       0         
_________________________________________________________________
global_average_pooling2d_1 ( (None, 256)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 64)                16448     
_________________________________________________________________
dense_2 (Dense)              (None, 10)                650       
=================================================================
Total params: 2,776,234
Trainable params: 2,776,234
Non-trainable params: 0
_________________________________________________________________

Model Training

In [14]:
checkpointer = ModelCheckpoint('model.h5', monitor='val_acc', mode='max', verbose=1, save_best_only=True)

model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.0001),loss='categorical_crossentropy',metrics=['acc'])
In [15]:
history = model.fit(x_train, y_train,
            validation_data = (x_test, y_test),
            
            epochs = 200,
            
            verbose = 1,
            callbacks = [checkpointer])
Epoch 1/200
118/118 [==============================] - 131s 1s/step - loss: 2.2600 - acc: 0.1299 - val_loss: 2.0471 - val_acc: 0.2544

Epoch 00001: val_acc improved from -inf to 0.25440, saving model to model.h5
Epoch 2/200
118/118 [==============================] - 121s 1s/step - loss: 2.0428 - acc: 0.2507 - val_loss: 1.9311 - val_acc: 0.3032

Epoch 00002: val_acc improved from 0.25440 to 0.30320, saving model to model.h5
Epoch 3/200
118/118 [==============================] - 121s 1s/step - loss: 2.0038 - acc: 0.2773 - val_loss: 1.8915 - val_acc: 0.3464

Epoch 00003: val_acc improved from 0.30320 to 0.34640, saving model to model.h5
Epoch 4/200
118/118 [==============================] - 122s 1s/step - loss: 1.9019 - acc: 0.3380 - val_loss: 1.8800 - val_acc: 0.3272

Epoch 00004: val_acc did not improve from 0.34640
Epoch 5/200
118/118 [==============================] - 121s 1s/step - loss: 1.9052 - acc: 0.3163 - val_loss: 1.9009 - val_acc: 0.3072

Epoch 00005: val_acc did not improve from 0.34640
Epoch 6/200
118/118 [==============================] - 121s 1s/step - loss: 1.8495 - acc: 0.3259 - val_loss: 1.7393 - val_acc: 0.3784

Epoch 00006: val_acc improved from 0.34640 to 0.37840, saving model to model.h5
Epoch 7/200
118/118 [==============================] - 121s 1s/step - loss: 1.7922 - acc: 0.3584 - val_loss: 1.7411 - val_acc: 0.3680

Epoch 00007: val_acc did not improve from 0.37840
Epoch 8/200
118/118 [==============================] - 121s 1s/step - loss: 1.7814 - acc: 0.3760 - val_loss: 1.7368 - val_acc: 0.3800

Epoch 00008: val_acc improved from 0.37840 to 0.38000, saving model to model.h5
Epoch 9/200
118/118 [==============================] - 121s 1s/step - loss: 1.7603 - acc: 0.3721 - val_loss: 1.7615 - val_acc: 0.3744

Epoch 00009: val_acc did not improve from 0.38000
Epoch 10/200
118/118 [==============================] - 121s 1s/step - loss: 1.7719 - acc: 0.3673 - val_loss: 1.6902 - val_acc: 0.4032

Epoch 00010: val_acc improved from 0.38000 to 0.40320, saving model to model.h5
Epoch 11/200
118/118 [==============================] - 121s 1s/step - loss: 1.7415 - acc: 0.3767 - val_loss: 1.6793 - val_acc: 0.4080

Epoch 00011: val_acc improved from 0.40320 to 0.40800, saving model to model.h5
Epoch 12/200
118/118 [==============================] - 121s 1s/step - loss: 1.7262 - acc: 0.3884 - val_loss: 1.7402 - val_acc: 0.3896

Epoch 00012: val_acc did not improve from 0.40800
Epoch 13/200
118/118 [==============================] - 121s 1s/step - loss: 1.6893 - acc: 0.4093 - val_loss: 1.7070 - val_acc: 0.3816

Epoch 00013: val_acc did not improve from 0.40800
Epoch 14/200
118/118 [==============================] - 121s 1s/step - loss: 1.6982 - acc: 0.3935 - val_loss: 1.6887 - val_acc: 0.4064

Epoch 00014: val_acc did not improve from 0.40800
Epoch 15/200
118/118 [==============================] - 121s 1s/step - loss: 1.6656 - acc: 0.4093 - val_loss: 1.6677 - val_acc: 0.4136

Epoch 00015: val_acc improved from 0.40800 to 0.41360, saving model to model.h5
Epoch 16/200
118/118 [==============================] - 121s 1s/step - loss: 1.6530 - acc: 0.4176 - val_loss: 1.6016 - val_acc: 0.4416

Epoch 00016: val_acc improved from 0.41360 to 0.44160, saving model to model.h5
Epoch 17/200
118/118 [==============================] - 121s 1s/step - loss: 1.5976 - acc: 0.4289 - val_loss: 1.6127 - val_acc: 0.4288

Epoch 00017: val_acc did not improve from 0.44160
Epoch 18/200
118/118 [==============================] - 121s 1s/step - loss: 1.5992 - acc: 0.4291 - val_loss: 1.5800 - val_acc: 0.4472

Epoch 00018: val_acc improved from 0.44160 to 0.44720, saving model to model.h5
Epoch 19/200
118/118 [==============================] - 122s 1s/step - loss: 1.5629 - acc: 0.4421 - val_loss: 1.5869 - val_acc: 0.4384

Epoch 00019: val_acc did not improve from 0.44720
Epoch 20/200
118/118 [==============================] - 121s 1s/step - loss: 1.5995 - acc: 0.4296 - val_loss: 1.5790 - val_acc: 0.4400

Epoch 00020: val_acc did not improve from 0.44720
Epoch 21/200
118/118 [==============================] - 121s 1s/step - loss: 1.5661 - acc: 0.4427 - val_loss: 1.5700 - val_acc: 0.4552

Epoch 00021: val_acc improved from 0.44720 to 0.45520, saving model to model.h5
Epoch 22/200
118/118 [==============================] - 121s 1s/step - loss: 1.5663 - acc: 0.4499 - val_loss: 1.6704 - val_acc: 0.3968

Epoch 00022: val_acc did not improve from 0.45520
Epoch 23/200
118/118 [==============================] - 121s 1s/step - loss: 1.5798 - acc: 0.4404 - val_loss: 1.5481 - val_acc: 0.4520

Epoch 00023: val_acc did not improve from 0.45520
Epoch 24/200
118/118 [==============================] - 121s 1s/step - loss: 1.5268 - acc: 0.4600 - val_loss: 1.5488 - val_acc: 0.4400

Epoch 00024: val_acc did not improve from 0.45520
Epoch 25/200
118/118 [==============================] - 121s 1s/step - loss: 1.5042 - acc: 0.4736 - val_loss: 1.5032 - val_acc: 0.4664

Epoch 00025: val_acc improved from 0.45520 to 0.46640, saving model to model.h5
Epoch 26/200
118/118 [==============================] - 121s 1s/step - loss: 1.4855 - acc: 0.4713 - val_loss: 1.4860 - val_acc: 0.4920

Epoch 00026: val_acc improved from 0.46640 to 0.49200, saving model to model.h5
Epoch 27/200
118/118 [==============================] - 122s 1s/step - loss: 1.4826 - acc: 0.4775 - val_loss: 1.4708 - val_acc: 0.4944

Epoch 00027: val_acc improved from 0.49200 to 0.49440, saving model to model.h5
Epoch 28/200
118/118 [==============================] - 121s 1s/step - loss: 1.4457 - acc: 0.4879 - val_loss: 1.5959 - val_acc: 0.4384

Epoch 00028: val_acc did not improve from 0.49440
Epoch 29/200
118/118 [==============================] - 121s 1s/step - loss: 1.4889 - acc: 0.4664 - val_loss: 1.4656 - val_acc: 0.4944

Epoch 00029: val_acc did not improve from 0.49440
Epoch 30/200
118/118 [==============================] - 122s 1s/step - loss: 1.4311 - acc: 0.4854 - val_loss: 1.4582 - val_acc: 0.5008

Epoch 00030: val_acc improved from 0.49440 to 0.50080, saving model to model.h5
Epoch 31/200
118/118 [==============================] - 122s 1s/step - loss: 1.4217 - acc: 0.4989 - val_loss: 1.4780 - val_acc: 0.4832

Epoch 00031: val_acc did not improve from 0.50080
Epoch 32/200
118/118 [==============================] - 122s 1s/step - loss: 1.4350 - acc: 0.4864 - val_loss: 1.4544 - val_acc: 0.5112

Epoch 00032: val_acc improved from 0.50080 to 0.51120, saving model to model.h5
Epoch 33/200
118/118 [==============================] - 121s 1s/step - loss: 1.4398 - acc: 0.4886 - val_loss: 1.4340 - val_acc: 0.5040

Epoch 00033: val_acc did not improve from 0.51120
Epoch 34/200
118/118 [==============================] - 121s 1s/step - loss: 1.3799 - acc: 0.5127 - val_loss: 1.4398 - val_acc: 0.4976

Epoch 00034: val_acc did not improve from 0.51120
Epoch 35/200
118/118 [==============================] - 121s 1s/step - loss: 1.4016 - acc: 0.5009 - val_loss: 1.4199 - val_acc: 0.5008

Epoch 00035: val_acc did not improve from 0.51120
Epoch 36/200
118/118 [==============================] - 122s 1s/step - loss: 1.3494 - acc: 0.5336 - val_loss: 1.4065 - val_acc: 0.5104

Epoch 00036: val_acc did not improve from 0.51120
Epoch 37/200
118/118 [==============================] - 121s 1s/step - loss: 1.3435 - acc: 0.5183 - val_loss: 1.4090 - val_acc: 0.5072

Epoch 00037: val_acc did not improve from 0.51120
Epoch 38/200
118/118 [==============================] - 121s 1s/step - loss: 1.3280 - acc: 0.5431 - val_loss: 1.4194 - val_acc: 0.5088

Epoch 00038: val_acc did not improve from 0.51120
Epoch 39/200
118/118 [==============================] - 122s 1s/step - loss: 1.3233 - acc: 0.5472 - val_loss: 1.3936 - val_acc: 0.5272

Epoch 00039: val_acc improved from 0.51120 to 0.52720, saving model to model.h5
Epoch 40/200
118/118 [==============================] - 122s 1s/step - loss: 1.2881 - acc: 0.5358 - val_loss: 1.4183 - val_acc: 0.5192

Epoch 00040: val_acc did not improve from 0.52720
Epoch 41/200
118/118 [==============================] - 121s 1s/step - loss: 1.3092 - acc: 0.5404 - val_loss: 1.3780 - val_acc: 0.5304

Epoch 00041: val_acc improved from 0.52720 to 0.53040, saving model to model.h5
Epoch 42/200
118/118 [==============================] - 121s 1s/step - loss: 1.2880 - acc: 0.5371 - val_loss: 1.4234 - val_acc: 0.5040

Epoch 00042: val_acc did not improve from 0.53040
Epoch 43/200
118/118 [==============================] - 121s 1s/step - loss: 1.2921 - acc: 0.5280 - val_loss: 1.4514 - val_acc: 0.4984

Epoch 00043: val_acc did not improve from 0.53040
Epoch 44/200
118/118 [==============================] - 122s 1s/step - loss: 1.2536 - acc: 0.5626 - val_loss: 1.4135 - val_acc: 0.5240

Epoch 00044: val_acc did not improve from 0.53040
Epoch 45/200
118/118 [==============================] - 122s 1s/step - loss: 1.2540 - acc: 0.5596 - val_loss: 1.3874 - val_acc: 0.5176

Epoch 00045: val_acc did not improve from 0.53040
Epoch 46/200
118/118 [==============================] - 121s 1s/step - loss: 1.2749 - acc: 0.5426 - val_loss: 1.3592 - val_acc: 0.5376

Epoch 00046: val_acc improved from 0.53040 to 0.53760, saving model to model.h5
Epoch 47/200
118/118 [==============================] - 121s 1s/step - loss: 1.2685 - acc: 0.5724 - val_loss: 1.3543 - val_acc: 0.5432

Epoch 00047: val_acc improved from 0.53760 to 0.54320, saving model to model.h5
Epoch 48/200
118/118 [==============================] - 122s 1s/step - loss: 1.2294 - acc: 0.5762 - val_loss: 1.3525 - val_acc: 0.5304

Epoch 00048: val_acc did not improve from 0.54320
Epoch 49/200
118/118 [==============================] - 122s 1s/step - loss: 1.2489 - acc: 0.5520 - val_loss: 1.3401 - val_acc: 0.5432

Epoch 00049: val_acc did not improve from 0.54320
Epoch 50/200
118/118 [==============================] - 122s 1s/step - loss: 1.2144 - acc: 0.5718 - val_loss: 1.3475 - val_acc: 0.5352

Epoch 00050: val_acc did not improve from 0.54320
Epoch 51/200
118/118 [==============================] - 122s 1s/step - loss: 1.2133 - acc: 0.5658 - val_loss: 1.3508 - val_acc: 0.5456

Epoch 00051: val_acc improved from 0.54320 to 0.54560, saving model to model.h5
Epoch 52/200
118/118 [==============================] - 122s 1s/step - loss: 1.2018 - acc: 0.5790 - val_loss: 1.3766 - val_acc: 0.5432

Epoch 00052: val_acc did not improve from 0.54560
Epoch 53/200
118/118 [==============================] - 121s 1s/step - loss: 1.1773 - acc: 0.5871 - val_loss: 1.3335 - val_acc: 0.5440

Epoch 00053: val_acc did not improve from 0.54560
Epoch 54/200
118/118 [==============================] - 121s 1s/step - loss: 1.1965 - acc: 0.5716 - val_loss: 1.3323 - val_acc: 0.5440

Epoch 00054: val_acc did not improve from 0.54560
Epoch 55/200
118/118 [==============================] - 121s 1s/step - loss: 1.1749 - acc: 0.5880 - val_loss: 1.3123 - val_acc: 0.5544

Epoch 00055: val_acc improved from 0.54560 to 0.55440, saving model to model.h5
Epoch 56/200
118/118 [==============================] - 121s 1s/step - loss: 1.1036 - acc: 0.6092 - val_loss: 1.2729 - val_acc: 0.5576

Epoch 00056: val_acc improved from 0.55440 to 0.55760, saving model to model.h5
Epoch 57/200
118/118 [==============================] - 121s 1s/step - loss: 1.1539 - acc: 0.5867 - val_loss: 1.2789 - val_acc: 0.5648

Epoch 00057: val_acc improved from 0.55760 to 0.56480, saving model to model.h5
Epoch 58/200
118/118 [==============================] - 122s 1s/step - loss: 1.0917 - acc: 0.6145 - val_loss: 1.3390 - val_acc: 0.5448

Epoch 00058: val_acc did not improve from 0.56480
Epoch 59/200
118/118 [==============================] - 121s 1s/step - loss: 1.1649 - acc: 0.5857 - val_loss: 1.2695 - val_acc: 0.5744

Epoch 00059: val_acc improved from 0.56480 to 0.57440, saving model to model.h5
Epoch 60/200
118/118 [==============================] - 122s 1s/step - loss: 1.0962 - acc: 0.6169 - val_loss: 1.2990 - val_acc: 0.5528

Epoch 00060: val_acc did not improve from 0.57440
Epoch 61/200
118/118 [==============================] - 121s 1s/step - loss: 1.1430 - acc: 0.6015 - val_loss: 1.2954 - val_acc: 0.5704

Epoch 00061: val_acc did not improve from 0.57440
Epoch 62/200
118/118 [==============================] - 121s 1s/step - loss: 1.0644 - acc: 0.6162 - val_loss: 1.2986 - val_acc: 0.5552

Epoch 00062: val_acc did not improve from 0.57440
Epoch 63/200
118/118 [==============================] - 122s 1s/step - loss: 1.1064 - acc: 0.6122 - val_loss: 1.3002 - val_acc: 0.5576

Epoch 00063: val_acc did not improve from 0.57440
Epoch 64/200
118/118 [==============================] - 122s 1s/step - loss: 1.0770 - acc: 0.6193 - val_loss: 1.2944 - val_acc: 0.5496

Epoch 00064: val_acc did not improve from 0.57440
Epoch 65/200
118/118 [==============================] - 122s 1s/step - loss: 1.0436 - acc: 0.6256 - val_loss: 1.2837 - val_acc: 0.5664

Epoch 00065: val_acc did not improve from 0.57440
Epoch 66/200
118/118 [==============================] - 121s 1s/step - loss: 1.1039 - acc: 0.6078 - val_loss: 1.3366 - val_acc: 0.5504

Epoch 00066: val_acc did not improve from 0.57440
Epoch 67/200
118/118 [==============================] - 122s 1s/step - loss: 1.0693 - acc: 0.6258 - val_loss: 1.2931 - val_acc: 0.5592

Epoch 00067: val_acc did not improve from 0.57440
Epoch 68/200
118/118 [==============================] - 121s 1s/step - loss: 1.0611 - acc: 0.6252 - val_loss: 1.3683 - val_acc: 0.5504

Epoch 00068: val_acc did not improve from 0.57440
Epoch 69/200
118/118 [==============================] - 121s 1s/step - loss: 1.0497 - acc: 0.6228 - val_loss: 1.2577 - val_acc: 0.5728

Epoch 00069: val_acc did not improve from 0.57440
Epoch 70/200
118/118 [==============================] - 121s 1s/step - loss: 1.0499 - acc: 0.6283 - val_loss: 1.2519 - val_acc: 0.5800

Epoch 00070: val_acc improved from 0.57440 to 0.58000, saving model to model.h5
Epoch 71/200
118/118 [==============================] - 122s 1s/step - loss: 1.0020 - acc: 0.6486 - val_loss: 1.2735 - val_acc: 0.5648

Epoch 00071: val_acc did not improve from 0.58000
Epoch 72/200
118/118 [==============================] - 121s 1s/step - loss: 1.0301 - acc: 0.6338 - val_loss: 1.2608 - val_acc: 0.5720

Epoch 00072: val_acc did not improve from 0.58000
Epoch 73/200
118/118 [==============================] - 122s 1s/step - loss: 0.9868 - acc: 0.6521 - val_loss: 1.3217 - val_acc: 0.5616

Epoch 00073: val_acc did not improve from 0.58000
Epoch 74/200
118/118 [==============================] - 121s 1s/step - loss: 1.0005 - acc: 0.6433 - val_loss: 1.2717 - val_acc: 0.5744

Epoch 00074: val_acc did not improve from 0.58000
Epoch 75/200
118/118 [==============================] - 122s 1s/step - loss: 0.9429 - acc: 0.6646 - val_loss: 1.2583 - val_acc: 0.5848

Epoch 00075: val_acc improved from 0.58000 to 0.58480, saving model to model.h5
Epoch 76/200
118/118 [==============================] - 122s 1s/step - loss: 0.9557 - acc: 0.6676 - val_loss: 1.5282 - val_acc: 0.5280

Epoch 00076: val_acc did not improve from 0.58480
Epoch 77/200
118/118 [==============================] - 121s 1s/step - loss: 1.0069 - acc: 0.6483 - val_loss: 1.2545 - val_acc: 0.5816

Epoch 00077: val_acc did not improve from 0.58480
Epoch 78/200
118/118 [==============================] - 122s 1s/step - loss: 0.9305 - acc: 0.6761 - val_loss: 1.2779 - val_acc: 0.5760

Epoch 00078: val_acc did not improve from 0.58480
Epoch 79/200
118/118 [==============================] - 121s 1s/step - loss: 0.9779 - acc: 0.6531 - val_loss: 1.2640 - val_acc: 0.5864

Epoch 00079: val_acc improved from 0.58480 to 0.58640, saving model to model.h5
Epoch 80/200
118/118 [==============================] - 121s 1s/step - loss: 0.9664 - acc: 0.6682 - val_loss: 1.2522 - val_acc: 0.5784

Epoch 00080: val_acc did not improve from 0.58640
Epoch 81/200
118/118 [==============================] - 122s 1s/step - loss: 0.9324 - acc: 0.6668 - val_loss: 1.4677 - val_acc: 0.5208

Epoch 00081: val_acc did not improve from 0.58640
Epoch 82/200
118/118 [==============================] - 122s 1s/step - loss: 0.9261 - acc: 0.6793 - val_loss: 1.3866 - val_acc: 0.5536

Epoch 00082: val_acc did not improve from 0.58640
Epoch 83/200
118/118 [==============================] - 121s 1s/step - loss: 0.9458 - acc: 0.6660 - val_loss: 1.2527 - val_acc: 0.5832

Epoch 00083: val_acc did not improve from 0.58640
Epoch 84/200
118/118 [==============================] - 122s 1s/step - loss: 0.8664 - acc: 0.6965 - val_loss: 1.3069 - val_acc: 0.5648

Epoch 00084: val_acc did not improve from 0.58640
Epoch 85/200
118/118 [==============================] - 122s 1s/step - loss: 0.9142 - acc: 0.6696 - val_loss: 1.3019 - val_acc: 0.5736

Epoch 00085: val_acc did not improve from 0.58640
Epoch 86/200
118/118 [==============================] - 122s 1s/step - loss: 0.8885 - acc: 0.6884 - val_loss: 1.3894 - val_acc: 0.5552

Epoch 00086: val_acc did not improve from 0.58640
Epoch 87/200
118/118 [==============================] - 122s 1s/step - loss: 0.8961 - acc: 0.6822 - val_loss: 1.4193 - val_acc: 0.5664

Epoch 00087: val_acc did not improve from 0.58640
Epoch 88/200
118/118 [==============================] - 121s 1s/step - loss: 0.8446 - acc: 0.7051 - val_loss: 1.3606 - val_acc: 0.5744

Epoch 00088: val_acc did not improve from 0.58640
Epoch 89/200
118/118 [==============================] - 121s 1s/step - loss: 0.8924 - acc: 0.6965 - val_loss: 1.2737 - val_acc: 0.5784

Epoch 00089: val_acc did not improve from 0.58640
Epoch 90/200
118/118 [==============================] - 121s 1s/step - loss: 0.8444 - acc: 0.7071 - val_loss: 1.2545 - val_acc: 0.5928

Epoch 00090: val_acc improved from 0.58640 to 0.59280, saving model to model.h5
Epoch 91/200
118/118 [==============================] - 122s 1s/step - loss: 0.8794 - acc: 0.6877 - val_loss: 1.2491 - val_acc: 0.5976

Epoch 00091: val_acc improved from 0.59280 to 0.59760, saving model to model.h5
Epoch 92/200
118/118 [==============================] - 121s 1s/step - loss: 0.8522 - acc: 0.6998 - val_loss: 1.2857 - val_acc: 0.5712

Epoch 00092: val_acc did not improve from 0.59760
Epoch 93/200
118/118 [==============================] - 121s 1s/step - loss: 0.8372 - acc: 0.7060 - val_loss: 1.2439 - val_acc: 0.5936

Epoch 00093: val_acc did not improve from 0.59760
Epoch 94/200
118/118 [==============================] - 121s 1s/step - loss: 0.7879 - acc: 0.7238 - val_loss: 1.3029 - val_acc: 0.5760

Epoch 00094: val_acc did not improve from 0.59760
Epoch 95/200
118/118 [==============================] - 121s 1s/step - loss: 0.8362 - acc: 0.7021 - val_loss: 1.3069 - val_acc: 0.5576

Epoch 00095: val_acc did not improve from 0.59760
Epoch 96/200
118/118 [==============================] - 121s 1s/step - loss: 0.8256 - acc: 0.7104 - val_loss: 1.2869 - val_acc: 0.5840

Epoch 00096: val_acc did not improve from 0.59760
Epoch 97/200
118/118 [==============================] - 121s 1s/step - loss: 0.8114 - acc: 0.7093 - val_loss: 1.3042 - val_acc: 0.5848

Epoch 00097: val_acc did not improve from 0.59760
Epoch 98/200
118/118 [==============================] - 121s 1s/step - loss: 0.7970 - acc: 0.7246 - val_loss: 1.3020 - val_acc: 0.5744

Epoch 00098: val_acc did not improve from 0.59760
Epoch 99/200
118/118 [==============================] - 121s 1s/step - loss: 0.7605 - acc: 0.7379 - val_loss: 1.3688 - val_acc: 0.5944

Epoch 00099: val_acc did not improve from 0.59760
Epoch 100/200
118/118 [==============================] - 122s 1s/step - loss: 0.7335 - acc: 0.7440 - val_loss: 1.3343 - val_acc: 0.5784

Epoch 00100: val_acc did not improve from 0.59760
Epoch 101/200
118/118 [==============================] - 121s 1s/step - loss: 0.7662 - acc: 0.7325 - val_loss: 1.3245 - val_acc: 0.5912

Epoch 00101: val_acc did not improve from 0.59760
Epoch 102/200
118/118 [==============================] - 121s 1s/step - loss: 0.7322 - acc: 0.7480 - val_loss: 1.2555 - val_acc: 0.6024

Epoch 00102: val_acc improved from 0.59760 to 0.60240, saving model to model.h5
Epoch 103/200
118/118 [==============================] - 122s 1s/step - loss: 0.7565 - acc: 0.7403 - val_loss: 1.2759 - val_acc: 0.5952

Epoch 00103: val_acc did not improve from 0.60240
Epoch 104/200
118/118 [==============================] - 121s 1s/step - loss: 0.7110 - acc: 0.7487 - val_loss: 1.3320 - val_acc: 0.5808

Epoch 00104: val_acc did not improve from 0.60240
Epoch 105/200
118/118 [==============================] - 122s 1s/step - loss: 0.7253 - acc: 0.7434 - val_loss: 1.3741 - val_acc: 0.5880

Epoch 00105: val_acc did not improve from 0.60240
Epoch 106/200
118/118 [==============================] - 122s 1s/step - loss: 0.6942 - acc: 0.7504 - val_loss: 1.2512 - val_acc: 0.6064

Epoch 00106: val_acc improved from 0.60240 to 0.60640, saving model to model.h5
Epoch 107/200
118/118 [==============================] - 121s 1s/step - loss: 0.6582 - acc: 0.7722 - val_loss: 1.2854 - val_acc: 0.5944

Epoch 00107: val_acc did not improve from 0.60640
Epoch 108/200
118/118 [==============================] - 121s 1s/step - loss: 0.6809 - acc: 0.7637 - val_loss: 1.2872 - val_acc: 0.6136

Epoch 00108: val_acc improved from 0.60640 to 0.61360, saving model to model.h5
Epoch 109/200
118/118 [==============================] - 121s 1s/step - loss: 0.6598 - acc: 0.7666 - val_loss: 1.3500 - val_acc: 0.5904

Epoch 00109: val_acc did not improve from 0.61360
Epoch 110/200
118/118 [==============================] - 122s 1s/step - loss: 0.6522 - acc: 0.7671 - val_loss: 1.4549 - val_acc: 0.5896

Epoch 00110: val_acc did not improve from 0.61360
Epoch 111/200
118/118 [==============================] - 121s 1s/step - loss: 0.6744 - acc: 0.7625 - val_loss: 1.3085 - val_acc: 0.6096

Epoch 00111: val_acc did not improve from 0.61360
Epoch 112/200
118/118 [==============================] - 122s 1s/step - loss: 0.6752 - acc: 0.7720 - val_loss: 1.3554 - val_acc: 0.5864

Epoch 00112: val_acc did not improve from 0.61360
Epoch 113/200
118/118 [==============================] - 121s 1s/step - loss: 0.6386 - acc: 0.7713 - val_loss: 1.3192 - val_acc: 0.5944

Epoch 00113: val_acc did not improve from 0.61360
Epoch 114/200
118/118 [==============================] - 122s 1s/step - loss: 0.6756 - acc: 0.7689 - val_loss: 1.3208 - val_acc: 0.5840

Epoch 00114: val_acc did not improve from 0.61360
Epoch 115/200
118/118 [==============================] - 121s 1s/step - loss: 0.6103 - acc: 0.7859 - val_loss: 1.3843 - val_acc: 0.5968

Epoch 00115: val_acc did not improve from 0.61360
Epoch 116/200
118/118 [==============================] - 122s 1s/step - loss: 0.6362 - acc: 0.7826 - val_loss: 1.3374 - val_acc: 0.6064

Epoch 00116: val_acc did not improve from 0.61360
Epoch 117/200
118/118 [==============================] - 122s 1s/step - loss: 0.6095 - acc: 0.7794 - val_loss: 1.3946 - val_acc: 0.6064

Epoch 00117: val_acc did not improve from 0.61360
Epoch 118/200
118/118 [==============================] - 121s 1s/step - loss: 0.6244 - acc: 0.7804 - val_loss: 1.3920 - val_acc: 0.5936

Epoch 00118: val_acc did not improve from 0.61360
Epoch 119/200
118/118 [==============================] - 122s 1s/step - loss: 0.5691 - acc: 0.7937 - val_loss: 1.4785 - val_acc: 0.5816

Epoch 00119: val_acc did not improve from 0.61360
Epoch 120/200
118/118 [==============================] - 121s 1s/step - loss: 0.5875 - acc: 0.7930 - val_loss: 1.3966 - val_acc: 0.5992

Epoch 00120: val_acc did not improve from 0.61360
Epoch 121/200
118/118 [==============================] - 121s 1s/step - loss: 0.5796 - acc: 0.7985 - val_loss: 1.3781 - val_acc: 0.5944

Epoch 00121: val_acc did not improve from 0.61360
Epoch 122/200
118/118 [==============================] - 121s 1s/step - loss: 0.6401 - acc: 0.7847 - val_loss: 1.3836 - val_acc: 0.5984

Epoch 00122: val_acc did not improve from 0.61360
Epoch 123/200
118/118 [==============================] - 121s 1s/step - loss: 0.6197 - acc: 0.7820 - val_loss: 1.4318 - val_acc: 0.5704

Epoch 00123: val_acc did not improve from 0.61360
Epoch 124/200
118/118 [==============================] - 122s 1s/step - loss: 0.5639 - acc: 0.8068 - val_loss: 1.3386 - val_acc: 0.5936

Epoch 00124: val_acc did not improve from 0.61360
Epoch 125/200
118/118 [==============================] - 122s 1s/step - loss: 0.5482 - acc: 0.8128 - val_loss: 1.4574 - val_acc: 0.6032

Epoch 00125: val_acc did not improve from 0.61360
Epoch 126/200
118/118 [==============================] - 122s 1s/step - loss: 0.5329 - acc: 0.8130 - val_loss: 1.4506 - val_acc: 0.5944

Epoch 00126: val_acc did not improve from 0.61360
Epoch 127/200
118/118 [==============================] - 122s 1s/step - loss: 0.5872 - acc: 0.7925 - val_loss: 1.4183 - val_acc: 0.6016

Epoch 00127: val_acc did not improve from 0.61360
Epoch 128/200
118/118 [==============================] - 122s 1s/step - loss: 0.5330 - acc: 0.8182 - val_loss: 1.4139 - val_acc: 0.6072

Epoch 00128: val_acc did not improve from 0.61360
Epoch 129/200
118/118 [==============================] - 122s 1s/step - loss: 0.5223 - acc: 0.8156 - val_loss: 1.4815 - val_acc: 0.5672

Epoch 00129: val_acc did not improve from 0.61360
Epoch 130/200
118/118 [==============================] - 122s 1s/step - loss: 0.5275 - acc: 0.8202 - val_loss: 1.4266 - val_acc: 0.5920

Epoch 00130: val_acc did not improve from 0.61360
Epoch 131/200
118/118 [==============================] - 122s 1s/step - loss: 0.4872 - acc: 0.8292 - val_loss: 1.5117 - val_acc: 0.5968

Epoch 00131: val_acc did not improve from 0.61360
Epoch 132/200
118/118 [==============================] - 122s 1s/step - loss: 0.4612 - acc: 0.8495 - val_loss: 1.4536 - val_acc: 0.6016

Epoch 00132: val_acc did not improve from 0.61360
Epoch 133/200
118/118 [==============================] - 121s 1s/step - loss: 0.5459 - acc: 0.8150 - val_loss: 1.5053 - val_acc: 0.6016

Epoch 00133: val_acc did not improve from 0.61360
Epoch 134/200
118/118 [==============================] - 122s 1s/step - loss: 0.4830 - acc: 0.8344 - val_loss: 1.4620 - val_acc: 0.5976

Epoch 00134: val_acc did not improve from 0.61360
Epoch 135/200
118/118 [==============================] - 121s 1s/step - loss: 0.4941 - acc: 0.8250 - val_loss: 1.5685 - val_acc: 0.5720

Epoch 00135: val_acc did not improve from 0.61360
Epoch 136/200
118/118 [==============================] - 121s 1s/step - loss: 0.5271 - acc: 0.8136 - val_loss: 1.5947 - val_acc: 0.5624

Epoch 00136: val_acc did not improve from 0.61360
Epoch 137/200
118/118 [==============================] - 121s 1s/step - loss: 0.5265 - acc: 0.8059 - val_loss: 1.4877 - val_acc: 0.6000

Epoch 00137: val_acc did not improve from 0.61360
Epoch 138/200
118/118 [==============================] - 121s 1s/step - loss: 0.4587 - acc: 0.8392 - val_loss: 1.5078 - val_acc: 0.5928

Epoch 00138: val_acc did not improve from 0.61360
Epoch 139/200
118/118 [==============================] - 121s 1s/step - loss: 0.4921 - acc: 0.8285 - val_loss: 1.4846 - val_acc: 0.6136

Epoch 00139: val_acc did not improve from 0.61360
Epoch 140/200
118/118 [==============================] - 121s 1s/step - loss: 0.5028 - acc: 0.8157 - val_loss: 1.4793 - val_acc: 0.6024

Epoch 00140: val_acc did not improve from 0.61360
Epoch 141/200
118/118 [==============================] - 121s 1s/step - loss: 0.4623 - acc: 0.8434 - val_loss: 1.4946 - val_acc: 0.6024

Epoch 00141: val_acc did not improve from 0.61360
Epoch 142/200
118/118 [==============================] - 121s 1s/step - loss: 0.3980 - acc: 0.8644 - val_loss: 1.5007 - val_acc: 0.6120

Epoch 00142: val_acc did not improve from 0.61360
Epoch 143/200
118/118 [==============================] - 121s 1s/step - loss: 0.3743 - acc: 0.8731 - val_loss: 1.5674 - val_acc: 0.5960

Epoch 00143: val_acc did not improve from 0.61360
Epoch 144/200
118/118 [==============================] - 121s 1s/step - loss: 0.3996 - acc: 0.8609 - val_loss: 1.5408 - val_acc: 0.5952

Epoch 00144: val_acc did not improve from 0.61360
Epoch 145/200
118/118 [==============================] - 121s 1s/step - loss: 0.3827 - acc: 0.8655 - val_loss: 1.6148 - val_acc: 0.5936

Epoch 00145: val_acc did not improve from 0.61360
Epoch 146/200
118/118 [==============================] - 121s 1s/step - loss: 0.3697 - acc: 0.8707 - val_loss: 1.6121 - val_acc: 0.6048

Epoch 00146: val_acc did not improve from 0.61360
Epoch 147/200
118/118 [==============================] - 121s 1s/step - loss: 0.3919 - acc: 0.8582 - val_loss: 1.5899 - val_acc: 0.6024

Epoch 00147: val_acc did not improve from 0.61360
Epoch 148/200
118/118 [==============================] - 121s 1s/step - loss: 0.4715 - acc: 0.8222 - val_loss: 1.5958 - val_acc: 0.5984

Epoch 00148: val_acc did not improve from 0.61360
Epoch 149/200
118/118 [==============================] - 121s 1s/step - loss: 0.3379 - acc: 0.8919 - val_loss: 1.6033 - val_acc: 0.5920

Epoch 00149: val_acc did not improve from 0.61360
Epoch 150/200
118/118 [==============================] - 121s 1s/step - loss: 0.4253 - acc: 0.8530 - val_loss: 1.6140 - val_acc: 0.5944

Epoch 00150: val_acc did not improve from 0.61360
Epoch 151/200
118/118 [==============================] - 121s 1s/step - loss: 0.3842 - acc: 0.8753 - val_loss: 1.6381 - val_acc: 0.5888

Epoch 00151: val_acc did not improve from 0.61360
Epoch 152/200
118/118 [==============================] - 121s 1s/step - loss: 0.3500 - acc: 0.8779 - val_loss: 1.6835 - val_acc: 0.5720

Epoch 00152: val_acc did not improve from 0.61360
Epoch 153/200
118/118 [==============================] - 121s 1s/step - loss: 0.4345 - acc: 0.8458 - val_loss: 1.5936 - val_acc: 0.6064

Epoch 00153: val_acc did not improve from 0.61360
Epoch 154/200
118/118 [==============================] - 121s 1s/step - loss: 0.3533 - acc: 0.8719 - val_loss: 1.6477 - val_acc: 0.5984

Epoch 00154: val_acc did not improve from 0.61360
Epoch 155/200
118/118 [==============================] - 121s 1s/step - loss: 0.3278 - acc: 0.8859 - val_loss: 1.7178 - val_acc: 0.6024

Epoch 00155: val_acc did not improve from 0.61360
Epoch 156/200
118/118 [==============================] - 121s 1s/step - loss: 0.3770 - acc: 0.8763 - val_loss: 1.6939 - val_acc: 0.6056

Epoch 00156: val_acc did not improve from 0.61360
Epoch 157/200
118/118 [==============================] - 121s 1s/step - loss: 0.3499 - acc: 0.8782 - val_loss: 1.6543 - val_acc: 0.6016

Epoch 00157: val_acc did not improve from 0.61360
Epoch 158/200
118/118 [==============================] - 121s 1s/step - loss: 0.3055 - acc: 0.9005 - val_loss: 1.7663 - val_acc: 0.5920

Epoch 00158: val_acc did not improve from 0.61360
Epoch 159/200
118/118 [==============================] - 121s 1s/step - loss: 0.3796 - acc: 0.8703 - val_loss: 1.6591 - val_acc: 0.6128

Epoch 00159: val_acc did not improve from 0.61360
Epoch 160/200
118/118 [==============================] - 121s 1s/step - loss: 0.3175 - acc: 0.8934 - val_loss: 1.7692 - val_acc: 0.6008

Epoch 00160: val_acc did not improve from 0.61360
Epoch 161/200
118/118 [==============================] - 121s 1s/step - loss: 0.3529 - acc: 0.8756 - val_loss: 1.7386 - val_acc: 0.5824

Epoch 00161: val_acc did not improve from 0.61360
Epoch 162/200
118/118 [==============================] - 122s 1s/step - loss: 0.3684 - acc: 0.8679 - val_loss: 1.7035 - val_acc: 0.5920

Epoch 00162: val_acc did not improve from 0.61360
Epoch 163/200
118/118 [==============================] - 122s 1s/step - loss: 0.2559 - acc: 0.9167 - val_loss: 1.7814 - val_acc: 0.6240

Epoch 00163: val_acc improved from 0.61360 to 0.62400, saving model to model.h5
Epoch 164/200
118/118 [==============================] - 121s 1s/step - loss: 0.3016 - acc: 0.9038 - val_loss: 1.6641 - val_acc: 0.5992

Epoch 00164: val_acc did not improve from 0.62400
Epoch 165/200
118/118 [==============================] - 121s 1s/step - loss: 0.3054 - acc: 0.9004 - val_loss: 1.9903 - val_acc: 0.5824

Epoch 00165: val_acc did not improve from 0.62400
Epoch 166/200
118/118 [==============================] - 121s 1s/step - loss: 0.3438 - acc: 0.8802 - val_loss: 1.9602 - val_acc: 0.6128

Epoch 00166: val_acc did not improve from 0.62400
Epoch 167/200
118/118 [==============================] - 121s 1s/step - loss: 0.2753 - acc: 0.9070 - val_loss: 1.8307 - val_acc: 0.6064

Epoch 00167: val_acc did not improve from 0.62400
Epoch 168/200
118/118 [==============================] - 121s 1s/step - loss: 0.2928 - acc: 0.8999 - val_loss: 1.8054 - val_acc: 0.6072

Epoch 00168: val_acc did not improve from 0.62400
Epoch 169/200
118/118 [==============================] - 121s 1s/step - loss: 0.3128 - acc: 0.8932 - val_loss: 1.8273 - val_acc: 0.6080

Epoch 00169: val_acc did not improve from 0.62400
Epoch 170/200
118/118 [==============================] - 121s 1s/step - loss: 0.2744 - acc: 0.9062 - val_loss: 1.7898 - val_acc: 0.6032

Epoch 00170: val_acc did not improve from 0.62400
Epoch 171/200
118/118 [==============================] - 121s 1s/step - loss: 0.2432 - acc: 0.9200 - val_loss: 1.9825 - val_acc: 0.6048

Epoch 00171: val_acc did not improve from 0.62400
Epoch 172/200
118/118 [==============================] - 121s 1s/step - loss: 0.2687 - acc: 0.9056 - val_loss: 2.0463 - val_acc: 0.5896

Epoch 00172: val_acc did not improve from 0.62400
Epoch 173/200
118/118 [==============================] - 121s 1s/step - loss: 0.2838 - acc: 0.9056 - val_loss: 2.0122 - val_acc: 0.5936

Epoch 00173: val_acc did not improve from 0.62400
Epoch 174/200
118/118 [==============================] - 121s 1s/step - loss: 0.2310 - acc: 0.9257 - val_loss: 2.0348 - val_acc: 0.5840

Epoch 00174: val_acc did not improve from 0.62400
Epoch 175/200
118/118 [==============================] - 121s 1s/step - loss: 0.3352 - acc: 0.8825 - val_loss: 1.9574 - val_acc: 0.5912

Epoch 00175: val_acc did not improve from 0.62400
Epoch 176/200
118/118 [==============================] - 121s 1s/step - loss: 0.2995 - acc: 0.8915 - val_loss: 1.9188 - val_acc: 0.5992

Epoch 00176: val_acc did not improve from 0.62400
Epoch 177/200
118/118 [==============================] - 121s 1s/step - loss: 0.2382 - acc: 0.9190 - val_loss: 2.0042 - val_acc: 0.5944

Epoch 00177: val_acc did not improve from 0.62400
Epoch 178/200
118/118 [==============================] - 122s 1s/step - loss: 0.2261 - acc: 0.9242 - val_loss: 2.0028 - val_acc: 0.5736

Epoch 00178: val_acc did not improve from 0.62400
Epoch 179/200
118/118 [==============================] - 121s 1s/step - loss: 0.2522 - acc: 0.9166 - val_loss: 2.0659 - val_acc: 0.5856

Epoch 00179: val_acc did not improve from 0.62400
Epoch 180/200
118/118 [==============================] - 121s 1s/step - loss: 0.2436 - acc: 0.9187 - val_loss: 2.0308 - val_acc: 0.5920

Epoch 00180: val_acc did not improve from 0.62400
Epoch 181/200
118/118 [==============================] - 121s 1s/step - loss: 0.1864 - acc: 0.9394 - val_loss: 2.1954 - val_acc: 0.5840

Epoch 00181: val_acc did not improve from 0.62400
Epoch 182/200
118/118 [==============================] - 121s 1s/step - loss: 0.2164 - acc: 0.9283 - val_loss: 2.0259 - val_acc: 0.6008

Epoch 00182: val_acc did not improve from 0.62400
Epoch 183/200
118/118 [==============================] - 121s 1s/step - loss: 0.2311 - acc: 0.9159 - val_loss: 2.0569 - val_acc: 0.5912

Epoch 00183: val_acc did not improve from 0.62400
Epoch 184/200
118/118 [==============================] - 122s 1s/step - loss: 0.1867 - acc: 0.9406 - val_loss: 2.0874 - val_acc: 0.5864

Epoch 00184: val_acc did not improve from 0.62400
Epoch 185/200
118/118 [==============================] - 121s 1s/step - loss: 0.3023 - acc: 0.8930 - val_loss: 2.1520 - val_acc: 0.6032

Epoch 00185: val_acc did not improve from 0.62400
Epoch 186/200
118/118 [==============================] - 121s 1s/step - loss: 0.2171 - acc: 0.9320 - val_loss: 2.0692 - val_acc: 0.5880

Epoch 00186: val_acc did not improve from 0.62400
Epoch 187/200
118/118 [==============================] - 121s 1s/step - loss: 0.2304 - acc: 0.9318 - val_loss: 2.0623 - val_acc: 0.6120

Epoch 00187: val_acc did not improve from 0.62400
Epoch 188/200
118/118 [==============================] - 121s 1s/step - loss: 0.1936 - acc: 0.9361 - val_loss: 2.0476 - val_acc: 0.5864

Epoch 00188: val_acc did not improve from 0.62400
Epoch 189/200
118/118 [==============================] - 121s 1s/step - loss: 0.2562 - acc: 0.9136 - val_loss: 2.0840 - val_acc: 0.5968

Epoch 00189: val_acc did not improve from 0.62400
Epoch 190/200
118/118 [==============================] - 121s 1s/step - loss: 0.1439 - acc: 0.9522 - val_loss: 2.1986 - val_acc: 0.6024

Epoch 00190: val_acc did not improve from 0.62400
Epoch 191/200
118/118 [==============================] - 121s 1s/step - loss: 0.1485 - acc: 0.9534 - val_loss: 2.1812 - val_acc: 0.5896

Epoch 00191: val_acc did not improve from 0.62400
Epoch 192/200
118/118 [==============================] - 122s 1s/step - loss: 0.1594 - acc: 0.9524 - val_loss: 2.1516 - val_acc: 0.5808

Epoch 00192: val_acc did not improve from 0.62400
Epoch 193/200
118/118 [==============================] - 122s 1s/step - loss: 0.2817 - acc: 0.9029 - val_loss: 2.0833 - val_acc: 0.5760

Epoch 00193: val_acc did not improve from 0.62400
Epoch 194/200
118/118 [==============================] - 121s 1s/step - loss: 0.2890 - acc: 0.8982 - val_loss: 2.0021 - val_acc: 0.6112

Epoch 00194: val_acc did not improve from 0.62400
Epoch 195/200
118/118 [==============================] - 121s 1s/step - loss: 0.1300 - acc: 0.9669 - val_loss: 2.0875 - val_acc: 0.5992

Epoch 00195: val_acc did not improve from 0.62400
Epoch 196/200
118/118 [==============================] - 121s 1s/step - loss: 0.1920 - acc: 0.9433 - val_loss: 2.0867 - val_acc: 0.6168

Epoch 00196: val_acc did not improve from 0.62400
Epoch 197/200
118/118 [==============================] - 121s 1s/step - loss: 0.1530 - acc: 0.9516 - val_loss: 2.1833 - val_acc: 0.5792

Epoch 00197: val_acc did not improve from 0.62400
Epoch 198/200
118/118 [==============================] - 121s 1s/step - loss: 0.1645 - acc: 0.9483 - val_loss: 2.3384 - val_acc: 0.5840

Epoch 00198: val_acc did not improve from 0.62400
Epoch 199/200
118/118 [==============================] - 121s 1s/step - loss: 0.2469 - acc: 0.9246 - val_loss: 2.1950 - val_acc: 0.6080

Epoch 00199: val_acc did not improve from 0.62400
Epoch 200/200
118/118 [==============================] - 121s 1s/step - loss: 0.1288 - acc: 0.9641 - val_loss: 2.2420 - val_acc: 0.6128

Epoch 00200: val_acc did not improve from 0.62400

Accessing Model's Performance

In [8]:
def pred (y_classes):
    if y_classes == 0:
        print("Apple Pie")
    elif y_classes == 1:
        print("Baby Back Ribs")  
    elif y_classes == 2:
        print("Baklava")   
    elif y_classes == 3:
        print("Beef Carpaccio")
    elif y_classes == 4:
        print("Beef Tartare")  
    elif y_classes == 5:
        print("Beet Salad")
    elif y_classes == 6:
        print("Beignets")
    elif y_classes == 7:
        print("Bibimbap")
    elif y_classes == 8:
        print("Bread Pudding")
    else:
        print("Breakfast Burrito")
In [33]:
img = cv2.imread('food_mnist/images/apple_pie/1011328.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
new_array = cv2.resize(img, (224, 224))
new_array = new_array/255

x = np.expand_dims(new_array, axis=0)
plt.imshow(new_array)
Out[33]:
<matplotlib.image.AxesImage at 0x7f2129904710>
In [30]:
y = model.predict(x)
y_class = y.argmax(axis=-1)
pred(y_class)
Apple Pie
In [34]:
img = cv2.imread('food_mnist/images/baklava/1021344.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
new_array = cv2.resize(img, (224, 224))
new_array = new_array/255

x = np.expand_dims(new_array, axis=0)
plt.imshow(new_array)
Out[34]:
<matplotlib.image.AxesImage at 0x7f21298e94e0>
In [35]:
y = model.predict(x)
y_class = y.argmax(axis=-1)
pred(y_class)
Beignets
In [36]:
img = cv2.imread('images/beignets/1002850.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
new_array = cv2.resize(img, (224, 224))
new_array = new_array/255

x = np.expand_dims(new_array, axis=0)
plt.imshow(new_array)
Out[36]:
<matplotlib.image.AxesImage at 0x7f21298672b0>
In [37]:
y = model.predict(x)
y_class = y.argmax(axis=-1)
pred(y_class)
Beignets

Compiling the model with DeepC

In [ ]:
!deepCC model.h5
[INFO]
Reading [keras model] 'model.h5'
[SUCCESS]
Saved 'model.onnx'
[INFO]
Reading [onnx model] 'model.onnx'
[INFO]
Model info:
  ir_vesion : 5
  doc       : 
[WARNING]
[ONNX]: terminal (input/output) conv2d_input's shape is less than 1. Changing it to 1.
[WARNING]
[ONNX]: terminal (input/output) dense_2's shape is less than 1. Changing it to 1.
WARN (GRAPH): found operator node with the same name (dense_2) as io node.
[INFO]
Running DNNC graph sanity check ...
[SUCCESS]
Passed sanity check.
[INFO]
Writing C++ file 'model_deepC/model.cpp'
[INFO]
deepSea model files are ready in 'model_deepC/' 
[RUNNING COMMAND]
g++ -std=c++11 -O3 -fno-rtti -fno-exceptions -I. -I/opt/tljh/user/lib/python3.7/site-packages/deepC-0.13-py3.7-linux-x86_64.egg/deepC/include -isystem /opt/tljh/user/lib/python3.7/site-packages/deepC-0.13-py3.7-linux-x86_64.egg/deepC/packages/eigen-eigen-323c052e1731 model_deepC/model.cpp -o model_deepC/model.exe
[RUNNING COMMAND]
size "model_deepC/model.exe"
   text	   data	    bss	    dec	    hex	filename
 194630	11109256	    760	11304646	 ac7ec6	model_deepC/model.exe
[SUCCESS]
Saved model as executable "model_deepC/model.exe"

Applying Transfer Learning for better performance

In [9]:
!pip install -q efficientnet
import efficientnet.tfkeras as efn
model5b = tf.keras.Sequential([
        efn.EfficientNetB0(
            input_shape=(224,224, 3),
            weights='imagenet',
            include_top=False
        ),
        tf.keras.layers.GlobalAveragePooling2D(),
        tf.keras.layers.Dropout(0.3),
        tf.keras.layers.Dense(10, activation='softmax')
    ])
model5b.summary()
WARNING: You are using pip version 20.3.1; however, version 20.3.3 is available.
You should consider upgrading via the '/opt/tljh/user/bin/python -m pip install --upgrade pip' command.
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
efficientnet-b0 (Functional) (None, 7, 7, 1280)        4049564   
_________________________________________________________________
global_average_pooling2d (Gl (None, 1280)              0         
_________________________________________________________________
dropout (Dropout)            (None, 1280)              0         
_________________________________________________________________
dense (Dense)                (None, 10)                12810     
=================================================================
Total params: 4,062,374
Trainable params: 4,020,358
Non-trainable params: 42,016
_________________________________________________________________

Training EfficientNet

In [10]:
mcB0 = ModelCheckpoint('best_modelB0.h5', monitor='val_acc', mode='max', verbose=1, save_best_only=True)

model5b.compile(optimizer=tf.keras.optimizers.Adam(lr=0.0001),loss='categorical_crossentropy',metrics=['acc'])

history = model5b.fit(x_train, y_train,
            validation_data = (x_test, y_test),
            
            epochs = 15,
            
            verbose = 1,
            callbacks = mcB0)
Epoch 1/15
  2/118 [..............................] - ETA: 16s - loss: 2.4718 - acc: 0.0938WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0740s vs `on_train_batch_end` time: 0.2050s). Check your callbacks.
118/118 [==============================] - ETA: 0s - loss: 1.7860 - acc: 0.4136
Epoch 00001: val_acc improved from -inf to 0.62000, saving model to best_modelB0.h5
118/118 [==============================] - 35s 300ms/step - loss: 1.7860 - acc: 0.4136 - val_loss: 1.2618 - val_acc: 0.6200
Epoch 2/15
118/118 [==============================] - ETA: 0s - loss: 0.8583 - acc: 0.7336
Epoch 00002: val_acc improved from 0.62000 to 0.77520, saving model to best_modelB0.h5
118/118 [==============================] - 34s 287ms/step - loss: 0.8583 - acc: 0.7336 - val_loss: 0.7087 - val_acc: 0.7752
Epoch 3/15
118/118 [==============================] - ETA: 0s - loss: 0.5214 - acc: 0.8387
Epoch 00003: val_acc improved from 0.77520 to 0.84240, saving model to best_modelB0.h5
118/118 [==============================] - 34s 289ms/step - loss: 0.5214 - acc: 0.8387 - val_loss: 0.4925 - val_acc: 0.8424
Epoch 4/15
118/118 [==============================] - ETA: 0s - loss: 0.3547 - acc: 0.8925
Epoch 00004: val_acc improved from 0.84240 to 0.85920, saving model to best_modelB0.h5
118/118 [==============================] - 35s 293ms/step - loss: 0.3547 - acc: 0.8925 - val_loss: 0.4277 - val_acc: 0.8592
Epoch 5/15
118/118 [==============================] - ETA: 0s - loss: 0.2390 - acc: 0.9317
Epoch 00005: val_acc improved from 0.85920 to 0.86560, saving model to best_modelB0.h5
118/118 [==============================] - 35s 299ms/step - loss: 0.2390 - acc: 0.9317 - val_loss: 0.4077 - val_acc: 0.8656
Epoch 6/15
118/118 [==============================] - ETA: 0s - loss: 0.1532 - acc: 0.9672
Epoch 00006: val_acc improved from 0.86560 to 0.87280, saving model to best_modelB0.h5
118/118 [==============================] - 36s 303ms/step - loss: 0.1532 - acc: 0.9672 - val_loss: 0.4032 - val_acc: 0.8728
Epoch 7/15
118/118 [==============================] - ETA: 0s - loss: 0.1093 - acc: 0.9747
Epoch 00007: val_acc did not improve from 0.87280
118/118 [==============================] - 36s 302ms/step - loss: 0.1093 - acc: 0.9747 - val_loss: 0.4126 - val_acc: 0.8712
Epoch 8/15
118/118 [==============================] - ETA: 0s - loss: 0.0803 - acc: 0.9816
Epoch 00008: val_acc improved from 0.87280 to 0.88000, saving model to best_modelB0.h5
118/118 [==============================] - 36s 308ms/step - loss: 0.0803 - acc: 0.9816 - val_loss: 0.4097 - val_acc: 0.8800
Epoch 9/15
118/118 [==============================] - ETA: 0s - loss: 0.0604 - acc: 0.9877
Epoch 00009: val_acc did not improve from 0.88000
118/118 [==============================] - 36s 304ms/step - loss: 0.0604 - acc: 0.9877 - val_loss: 0.4105 - val_acc: 0.8736
Epoch 10/15
118/118 [==============================] - ETA: 0s - loss: 0.0512 - acc: 0.9867
Epoch 00010: val_acc did not improve from 0.88000
118/118 [==============================] - 36s 305ms/step - loss: 0.0512 - acc: 0.9867 - val_loss: 0.4316 - val_acc: 0.8760
Epoch 11/15
118/118 [==============================] - ETA: 0s - loss: 0.0461 - acc: 0.9893
Epoch 00011: val_acc did not improve from 0.88000
118/118 [==============================] - 36s 306ms/step - loss: 0.0461 - acc: 0.9893 - val_loss: 0.4353 - val_acc: 0.8704
Epoch 12/15
118/118 [==============================] - ETA: 0s - loss: 0.0397 - acc: 0.9901
Epoch 00012: val_acc did not improve from 0.88000
118/118 [==============================] - 35s 299ms/step - loss: 0.0397 - acc: 0.9901 - val_loss: 0.4738 - val_acc: 0.8688
Epoch 13/15
118/118 [==============================] - ETA: 0s - loss: 0.0401 - acc: 0.9891
Epoch 00013: val_acc did not improve from 0.88000
118/118 [==============================] - 36s 305ms/step - loss: 0.0401 - acc: 0.9891 - val_loss: 0.4829 - val_acc: 0.8744
Epoch 14/15
118/118 [==============================] - ETA: 0s - loss: 0.0260 - acc: 0.9949
Epoch 00014: val_acc did not improve from 0.88000
118/118 [==============================] - 36s 305ms/step - loss: 0.0260 - acc: 0.9949 - val_loss: 0.4621 - val_acc: 0.8776
Epoch 15/15
118/118 [==============================] - ETA: 0s - loss: 0.0266 - acc: 0.9933
Epoch 00015: val_acc did not improve from 0.88000
118/118 [==============================] - 36s 304ms/step - loss: 0.0266 - acc: 0.9933 - val_loss: 0.4732 - val_acc: 0.8760

Accessing EfficientNet's Performance

In [11]:
img = cv2.imread('food_mnist/images/apple_pie/1005649.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
new_array = cv2.resize(img, (224, 224))
new_array = new_array/255

x = np.expand_dims(new_array, axis=0)
plt.imshow(new_array)
Out[11]:
<matplotlib.image.AxesImage at 0x7ff3c655fdd8>
In [12]:
y = model5b.predict(x)
y_class = y.argmax(axis=-1)
pred(y_class)
Apple Pie
In [13]:
img = cv2.imread('food_mnist/images/baklava/1021344.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
new_array = cv2.resize(img, (224, 224))
new_array = new_array/255

x = np.expand_dims(new_array, axis=0)
plt.imshow(new_array)
Out[13]:
<matplotlib.image.AxesImage at 0x7ff3c6ae3e10>
In [14]:
y = model5b.predict(x)
y_class = y.argmax(axis=-1)
pred(y_class)
Baklava
In [15]:
img = cv2.imread('food_mnist/images/beignets/1002850.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
new_array = cv2.resize(img, (224, 224))
new_array = new_array/255

x = np.expand_dims(new_array, axis=0)
plt.imshow(new_array)
Out[15]:
<matplotlib.image.AxesImage at 0x7ff3c6a6b940>
In [16]:
y = model5b.predict(x)
y_class = y.argmax(axis=-1)
pred(y_class)
Beignets

Compiling Model With DeepC

In [ ]:
!deepCC best_modelB0.h5