else: pillar_net = build_point_pillar_graph(params) pillar_net.load_weights(os.path.join(MODEL_ROOT, "model.h5")) pillar_net.compile(optimizer, loss=loss.losses()) data_reader = KittiDataReader() lidar_files = sorted(glob(os.path.join(DATA_ROOT, "velodyne", "*.bin"))) label_files = sorted(glob(os.path.join(DATA_ROOT, "label_2", "*.txt"))) calibration_files = sorted(glob(os.path.join(DATA_ROOT, "calib", "*.txt"))) assert len(lidar_files) == len(label_files) == len( calibration_files), "Input dirs require equal number of files." validation_len = int(0.3 * len(label_files)) training_gen = SimpleDataGenerator(data_reader, params.batch_size, lidar_files[:-validation_len], label_files[:-validation_len], calibration_files[:-validation_len]) validation_gen = SimpleDataGenerator(data_reader, params.batch_size, lidar_files[-validation_len:], label_files[-validation_len:], calibration_files[-validation_len:]) log_dir = MODEL_ROOT epoch_to_decay = int( np.round(params.iters_to_decay / params.batch_size * int(np.ceil(float(len(label_files)) / params.batch_size)))) callbacks = [ tf.keras.callbacks.TensorBoard(log_dir=log_dir), tf.keras.callbacks.ModelCheckpoint(filepath=os.path.join( log_dir, "model.h5"), monitor='val_loss',
from processors import SimpleDataGenerator from readers import KittiDataReader from config import Parameters from network import build_point_pillar_graph DATA_ROOT = "../validation_small" MODEL_ROOT = "./logs" # os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # os.environ["CUDA_VISIBLE_DEVICES"]="0" if __name__ == "__main__": params = Parameters() pillar_net = build_point_pillar_graph(params) pillar_net.load_weights(os.path.join(MODEL_ROOT, "model.h5")) pillar_net.summary() data_reader = KittiDataReader() lidar_files = sorted(glob(os.path.join(DATA_ROOT, "velodyne", "*.bin"))) label_files = sorted(glob(os.path.join(DATA_ROOT, "label_2", "*.txt"))) calibration_files = sorted(glob(os.path.join(DATA_ROOT, "calib", "*.txt"))) eval_gen = SimpleDataGenerator(data_reader, params.batch_size, lidar_files, label_files, calibration_files) pred = pillar_net.predict(eval_gen) print(pred)
label_files_val = label_files[valVal:testVal] calibration_files_val = calibration_files[valVal:testVal] lidar_files_test = lidar_files[testVal:] label_files_test = label_files[testVal:] calibration_files_test = calibration_files[testVal:] lidar_files = lidar_files[:valVal] label_files = label_files[:valVal] calibration_files = calibration_files[:valVal] print(lidar_files) print(lidar_files_val) print(lidar_files_test) training_gen = SimpleDataGenerator(data_reader, params.batch_size, lidar_files, label_files, calibration_files) validation_gen = SimpleDataGenerator(data_reader, params.batch_size, lidar_files_val, label_files_val, calibration_files_val) test_gen = SimpleDataGenerator(data_reader, params.batch_size, lidar_files_test, label_files_test, calibration_files_test) try: pillar_net.fit_generator(training_gen, len(training_gen), callbacks=callbacks, use_multiprocessing=True, epochs=int(params.total_training_epochs), workers=6, validation_data = validation_gen, validation_steps = len(validation_gen))