Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
62 changes: 62 additions & 0 deletions Udit Soni/car-recognition-aws/createTestSetFromValidation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
'''
Created on 5 lut 2018

@author: mgdak
'''

import os
import argparse
import sys
from pprint import pprint
import shutil as sh
import random

def main(args):
pprint(args)

topDirs = os.listdir(args.src_dir)

# This would print all the files and directories
for classDir in topDirs:
print(classDir)
files = os.listdir(args.src_dir + "/" + classDir)
train_start = int(len(files)*args.train_split_ratio)
tst_start = int(len(files)*args.tst_split_ratio)
random.shuffle(files)
#move train data
for j in range(train_start + tst_start, tst_start, -1):
os.makedirs(args.train_dst_dir + "/" + classDir, exist_ok=True)
sh.move(args.src_dir + "/" + classDir + "/" + files[j],
args.train_dst_dir + "/" + classDir + "/" + files[j])

#move tst data
for j in range(tst_start, 0, -1):
os.makedirs(args.tst_dst_dir + "/" + classDir, exist_ok=True)
sh.move(args.src_dir + "/" + classDir + "/" + files[j],
args.tst_dst_dir + "/" + classDir + "/" + files[j])

def parse_arguments(argv):

parser = argparse.ArgumentParser()

parser.add_argument('--tst_split_ratio', type=float,
help='Defines the split ratio from validation which has to be moved to the test'
, default=0.25)

parser.add_argument('--train_split_ratio', type=float,
help='Defines the split ratio from validation which has to be moved to the train'
, default=0.5)

parser.add_argument('--tst_dst_dir', type=str,
help='Destination directory for splited test data set', default='./car_ims/tst')

parser.add_argument('--train_dst_dir', type=str,
help='Destination directory for splited train data set', default='./car_ims/train')

parser.add_argument('--src_dir', type=str,
help='Source directory where validation data set is located', default='./car_ims/val')

return parser.parse_args(argv)

if __name__ == "__main__":
main(parse_arguments(sys.argv[1:]))
66 changes: 66 additions & 0 deletions Udit Soni/car-recognition-aws/evaluate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
'''
Created on 10 lut 2018

@author: mgdak
'''

import os
import argparse
import sys
from pprint import pprint
import shutil as sh
import random
from keras.preprocessing.image import ImageDataGenerator
from keras.models import model_from_json
from keras.optimizers import SGD, RMSprop

def main(args):
pprint(args)

test_datagen = ImageDataGenerator(rescale=1. / 255)
test_generator = test_datagen.flow_from_directory(
args.test_data,
target_size=(224, 224),
batch_size=args.batch_size,
class_mode='categorical')


# load json and create model
json_file = open(args.model_name + '.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
# load weights into new model
loaded_model.load_weights(args.model_name + '.h5')
print('Loaded model from disk')

# evaluate loaded model on test data
sgd = SGD(lr=args.learning_rate, decay=args.lr_decay, momentum=0.9, nesterov=True)
loaded_model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])
score = loaded_model.evaluate_generator(test_generator, 3957/args.batch_size, workers=6)
print("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*100))

def parse_arguments(argv):

parser = argparse.ArgumentParser()

parser.add_argument('--test_data', type=str,
help='Dir with test data to evaluate model on'
, default= './car_ims/tst')

parser.add_argument('--model_name', type=str,
help='Saved model name location', default='./vgg16/tst/vgg16_lr001_dr7_decaye-4_finalModel')

parser.add_argument('--batch_size', type=int,
help='Batch size', default=16)

parser.add_argument('--lr_decay', type=float,
help='Learning rate decay.', default=1e-4)

parser.add_argument('--learning_rate', type=float,
help='Initial learning rate.', default=0.001)

return parser.parse_args(argv)

if __name__ == "__main__":
main(parse_arguments(sys.argv[1:]))
Loading