def test_detector(args):
    os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu

    model = Detector(args)
    model = model.cuda()
    model.load_state_dict(torch.load(args.model_path))
    model.eval()

    velodyne_dir = os.path.join(args.data_dir, 'sequences', args.test_seq,
                                'velodyne_txt')
    velodyne_names = os.listdir(velodyne_dir)
    velodyne_names = sorted(velodyne_names)

    for filename in velodyne_names:
        filepath = os.path.join(velodyne_dir, filename)
        kp_path = os.path.join(args.save_dir, "keypoints", filename)
        pc, sn = get_pointcloud(filepath, args.npoints)
        feature = torch.cat((pc, sn), dim=-1)
        feature = feature.unsqueeze(0)
        feature = feature.cuda()

        startT = datetime.datetime.now()
        kp, sigmas, _, _ = model(feature)
        endT = datetime.datetime.now()
        computation_time = (endT - startT).microseconds
        kp_sigmas = torch.cat((kp, sigmas.unsqueeze(1)), dim=1)
        kp_sigmas = kp_sigmas.squeeze().cpu().detach().numpy().transpose()

        np.savetxt(kp_path, kp_sigmas)
Exemple #2
0
def test_descriptor(args):
    os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu

    model = RSKDD(args)
    model = model.cuda()
    model.load_state_dict(torch.load(args.model_path))
    model.eval()

    velodyne_dir = os.path.join(args.data_dir, 'sequences', args.test_seq,
                                'velodyne_txt')
    velodyne_names = glob.glob(os.path.join(velodyne_dir, '*.txt'))
    velodyne_names = sorted(velodyne_names)

    kp_save_dir = os.path.join(args.save_dir, args.test_seq, "keypoints")
    desc_save_dir = os.path.join(args.save_dir, args.test_seq, "desc")

    if not os.path.exists(kp_save_dir):
        os.makedirs(kp_save_dir)
    if not os.path.exists(desc_save_dir):
        os.makedirs(desc_save_dir)

    for filename in velodyne_names:
        filepath = os.path.join(velodyne_dir, filename)
        basename = filename.split('/')[-1]

        kp_path = os.path.join(kp_save_dir, "keypoints", basename)
        desc_path = os.path.join(desc_save_dir, "desc", basename)

        pc, sn = get_pointcloud(filepath, args.npoints)
        feature = torch.cat((pc, sn), dim=-1)
        feature = feature.unsqueeze(0)
        feature = feature.cuda()

        startT = datetime.datetime.now()
        kp, sigmas, desc = model(feature)
        endT = datetime.datetime.now()
        computation_time = (endT - startT).microseconds
        kp_sigmas = torch.cat((kp, sigmas.unsqueeze(1)), dim=1)
        kp_sigmas = kp_sigmas.squeeze().cpu().detach().numpy().transpose()
        desc = desc.squeeze().cpu().detach().numpy().transpose()
        print(filename, computation_time)

        np.savetxt(kp_path, kp_sigmas)
        np.savetxt(desc_path, desc)
Exemple #3
0
def demo(args):
    os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu
    model = RSKDD(args)
    model = model.cuda()
    model.load_state_dict(torch.load(args.model_path))
    model.eval()

    file_names = os.listdir(args.data_dir)

    kp_save_dir = os.path.join(args.save_dir, "keypoints")
    desc_save_dir = os.path.join(args.save_dir, "desc")
    if not os.path.exists(kp_save_dir):
        os.makedirs(kp_save_dir)
    if not os.path.exists(desc_save_dir):
        os.makedirs(desc_save_dir)

    for file_name in file_names:
        file_path = os.path.join(args.data_dir, file_name)
        kp_save_path = os.path.join(kp_save_dir, file_name)
        desc_save_path = os.path.join(desc_save_dir, file_name)

        pc, sn = get_pointcloud(file_path, args.npoints)
        feature = torch.cat((pc, sn), dim=-1)
        feature = feature.unsqueeze(0)
        feature = feature.cuda()

        startT = datetime.datetime.now()
        kp, sigmas, desc = model(feature)
        endT = datetime.datetime.now()
        computation_time = (endT - startT).microseconds

        kp_sigmas = torch.cat((kp, sigmas.unsqueeze(1)), dim=1)
        kp_sigmas = kp_sigmas.squeeze().cpu().detach().numpy().transpose()
        desc = desc.squeeze().cpu().detach().numpy().transpose()

        print(file_name, "processed",
              ' computation time: {} ms'.format(computation_time))

        np.savetxt(kp_save_path, kp_sigmas, fmt='%.04f')
        np.savetxt(desc_save_path, desc, fmt='%.04f')

    print("Done")