def fit_model(model, train_data, test_data, weights_dir, input_shape, optical_flow=False, project_dir='./'): try: # using sequence or image_from_sequnece generator if optical_flow: train_generator = sequence_generator(train_data, BatchSize, input_shape, N_CLASSES) test_generator = sequence_generator(test_data, BatchSize, input_shape, N_CLASSES) else: train_generator = image_from_sequence_generator( train_data, BatchSize, input_shape, N_CLASSES) test_generator = image_from_sequence_generator( test_data, BatchSize, input_shape, N_CLASSES) # frames_dir = '/home/changan/ActionRecognition/data/flow_images' # train_generator = image_generator(train_data, frames_dir, BatchSize, input_shape, N_CLASSES, mean_sub=False, # normalization=True, random_crop=True, horizontal_flip=True) # test_generator = image_generator(test_data, frames_dir, BatchSize, input_shape, N_CLASSES, mean_sub=False, # normalization=True, random_crop=True, horizontal_flip=True) sgd = SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True) model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy']) print(model.summary()) print('Start fitting model') while True: checkpointer = keras.callbacks.ModelCheckpoint( weights_dir, save_best_only=True, save_weights_only=True) earlystopping = keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0.001, patience=20, verbose=2, mode='auto') tensorboard = keras.callbacks.TensorBoard(log_dir='./logs/try', histogram_freq=0, write_graph=True, write_images=True) model.fit_generator( train_generator, steps_per_epoch=200, epochs=2000, validation_data=test_generator, validation_steps=100, verbose=2, callbacks=[checkpointer, tensorboard, earlystopping]) data_dir = os.path.join(project_dir, 'data') list_dir = os.path.join(data_dir, 'ucfTrainTestlist') UCF_dir = os.path.join(data_dir, 'UCF-101') regenerate_data(data_dir, list_dir, UCF_dir) except KeyboardInterrupt: print('Training is interrupted')
from utils.UCF_preprocessing import regenerate_data import os import sys dataset = 'ucf' if len(sys.argv) > 1: dataset = sys.argv[1] cwd = os.getcwd() data_dir = os.path.join(cwd, 'data') if 'hmdb' in dataset.lower(): list_dir = os.path.join(data_dir, 'hmdb51_test_train_splits') UCF_dir = os.path.join(data_dir, 'hmdb51_org') else: list_dir = os.path.join(data_dir, 'ucfTrainTestlist') UCF_dir = os.path.join(data_dir, 'UCF-101') regenerate_data(data_dir, list_dir, UCF_dir)
from utils.UCF_preprocessing import regenerate_data import os import sys dataset = 'ucf' if len(sys.argv) > 1: dataset = sys.argv[1] cwd = os.getcwd() data_dir = os.path.join(cwd, 'data') if 'hmdb' in dataset.lower(): list_dir = os.path.join(data_dir, 'hmdb51_test_train_splits') UCF_dir = os.path.join(data_dir, 'hmdb51_org') else: list_dir = os.path.join(data_dir, 'ucfTrainTestlist') UCF_dir = os.path.join(data_dir, 'UCF-101') regenerate_data(data_dir, list_dir, UCF_dir, temporal='DMD')