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)
Example #3
0
    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))