def train_and_predict(): DataCreator() print('-' * 30) print('Loading and preprocessing train data...') print('-' * 30) imgs_train, imgs_mask_train = DataLoader() imgs_train = preprocess(imgs_train) imgs_mask_train = preprocess(imgs_mask_train) imgs_train = imgs_train.astype('float32') mean = np.mean(imgs_train) # mean for data centering std = np.std(imgs_train) # std for data normalization #imgs_train -= mean #imgs_train /= std imgs_mask_train = imgs_mask_train.astype('float32') imgs_mask_train /= 255. # scale masks to [0, 1] print('-' * 30) print('Creating and compiling model...') print('-' * 30) model = get_unet() model_checkpoint = ModelCheckpoint('weights.h5', monitor='val_loss', save_best_only=True) print('-' * 30) print('Fitting model...') print('-' * 30) model.fit(imgs_train, imgs_mask_train, batch_size=32, nb_epoch=numberOfEpochs, verbose=1, shuffle=True, validation_split=0.2, callbacks=[model_checkpoint]) #TESTS DATA -------------- print('-' * 30) print('Loading and preprocessing test data...') print('-' * 30) imgs_test, imgs_id_test = load_test_data() imgs_test = preprocess(imgs_test) imgs_test = imgs_test.astype('float32') # imgs_test -= mean imgs_test /= std print('-' * 30) print('Loading saved weights...') print('-' * 30) model.load_weights('weights.h5') print('-' * 30) print('Predicting masks on test data...') print('-' * 30) imgs_mask_test = model.predict(imgs_test, verbose=1) np.save('imgs_mask_test.npy', imgs_mask_test) print('-' * 30) print('Saving predicted masks to files...') print('-' * 30) pred_dir = 'preds' if not os.path.exists(pred_dir): os.mkdir(pred_dir) #for image, image_id in zip(imgs_mask_test, imgs_id_test): i = 0 for image in imgs_mask_test: image = (image[:, :, 0] * 255.).astype(np.uint8) imsave(os.path.join(pred_dir, str(i) + '_pred.png'), image) i += 1
imgt = Image.fromarray(imgs_train[6]) imgg = Image.fromarray(imgs_mask_train[6]) imgt.show() imgg.show() ''' imgs_train = preprocess(imgs_train) imgs_mask_train = preprocess(imgs_mask_train) imgs_train = imgs_train.astype('float32') mean = np.mean(imgs_train) # mean for data centering std = np.std(imgs_train) # std for data normalization #imgs_train -= mean #imgs_train /= std imgs_mask_train = imgs_mask_train.astype('float32') imgs_mask_train /= 255. # scale masks to [0, 1] ''' imgt = Image.fromarray(np.reshape(imgs_train[6], (48,48))) imgg = Image.fromarray(np.reshape(imgs_mask_train[6], (48,48))) imgt.show() imgg.show()