示例#1
0
def create_info_file(root_dir:str, idx_path:str, save_path:str):
    '''
    Create KITTI_infos_xxx.pkl
    [<info>,]
    info: {
        tag: str (e.g. '000000'),
        pc_path: str,
        reduced_pc_path: str,
        img_path: str,
        calib: KittiCalib,
        label: KittiLable,
    }
    '''
    global g_data_dir, g_infos
    # load idx
    root_dir = Path(root_dir)
    (root_dir/"reduced_velodyne").mkdir(exist_ok=True)
    idx_list = get_idx_list(idx_path)
    idx_list.sort()
    infos = Manager().list()
    g_data_dir = root_dir
    g_infos = infos
    with Pool(8) as p:
        r = list(tqdm(p.imap(create_info_file_wk_fn, idx_list), total=len(idx_list)))
    infos = list(infos)
    save_pickle(infos, save_path)
    print(f"Created {save_path}: {len(infos)} samples")
def create_info_file(root_dir: str, idx_path: str, save_path: str,
                     dataset: str):
    '''
    Create <dataset>_infos_xxx.pkl
    [<info>,]
    info: {
        tag: str (e.g. '000000'),
        pc_paths: {
            velo_top: abs_path,
            ...
        }
        img_path: str,
        calib: CarlaCalib/WaymoCalib/KittiCalib,
        label: CarlaLabel/WaymoLabel/KittiLabel,
    }
    '''
    global g_data_dir, g_infos
    root_dir = Path(root_dir)
    if dataset == "kitti":
        (root_dir / "reduced_velodyne").mkdir(exist_ok=True)
    idx_list = get_idx_list(idx_path)
    idx_list.sort()
    infos = Manager().list()
    g_data_dir = root_dir
    g_infos = infos
    with Pool(8) as p:
        if dataset == "carla":
            r = list(
                tqdm(p.imap(create_info_file_carla_wk_fn, idx_list),
                     total=len(idx_list)))
        elif dataset == "waymo":
            r = list(
                tqdm(p.imap(create_info_file_waymo_wk_fn, idx_list),
                     total=len(idx_list)))
        elif dataset == "kitti":
            r = list(
                tqdm(p.imap(create_info_file_kitti_wk_fn, idx_list),
                     total=len(idx_list)))
    infos = list(infos)
    save_pickle(infos, save_path)
    print(f"Created {save_path}: {len(infos)} samples")
示例#3
0
def create_db_file(root_dir:str, idx_path:str, save_dir:str):
    '''
    Create KITTI_dbinfos_xxx.pkl and save gt_pc into gt_database/
    dbinfo: {
        "Car": [<car_dbinfo>, ],
        "Pedestrian": [<ped_dbinfo>, ], 
        ...
    }
    car_dbinfo:{
        name: str,
        gtpc_path: str,
        tag: str,
        gt_idx: int, # no. of obj
        box3d_cam: KittiObj,
        num_points_in_gt: int,
        calib: KittiCalib
    }
    '''
    global g_data_dir, g_dbinfos
    root_dir = Path(root_dir)
    save_dir = Path(save_dir)
    (save_dir/"gt_database").mkdir(exist_ok=True)
    idx_list = get_idx_list(idx_path)
    idx_list.sort()
    # get classes
    cls_list = get_classes(root_dir/"label_2", idx_list)
    dbinfo = {itm: [] for itm in cls_list}
    g_data_dir = root_dir
    g_dbinfos = Manager().list()

    with Pool(8) as p:
        r = list(tqdm(p.imap(create_db_file_wk_fn, idx_list), total=len(idx_list)))
    for info in g_dbinfos:
        dbinfo[info["name"]].append(info)
    save_pickle(dbinfo, str(save_dir/"KITTI_dbinfos_train.pkl"))
    print("KITTI_dbinfos_train.pkl saved.")
    for k, v in dbinfo.items():
        print(f"{k}: {len(v)}")
def create_db_file(root_dir: str, idx_path: str, save_dir: str, dataset: str):
    '''
    Create <dataset>_dbinfos_xxx.pkl and save gt_pc into gt_database/
    dbinfo: {
        "Car": [<car_dbinfo>, ],
        "Pedestrian": [<ped_dbinfo>, ],
        ...
    }
    car_dbinfo:{
        name: str,
        gtpc_paths: {
            velo_top: abs_path of saved gtpc (IMU Frame),
            ...
        }
        tag: str,
        gt_idx: int, # no. of obj
        box3d_imu: CarlaObj, WaymoObj, KittiObj
        num_points_in_gt: int,
        calib: CarlaCalib, WaymoCalib, KittiCalib
    }
    '''
    global g_data_dir, g_dbinfos
    root_dir = Path(root_dir)
    save_dir = Path(save_dir)
    (save_dir / "gt_database").mkdir(exist_ok=False)
    idx_list = get_idx_list(idx_path)
    idx_list.sort()
    # get classes
    if dataset in ["carla", "waymo"]:
        cls_list = get_classes(root_dir / "label_imu",
                               idx_list,
                               dataset=dataset)
    elif dataset == "kitti":
        cls_list = get_classes(root_dir / "label_2", idx_list, dataset=dataset)
    dbinfo = {itm: [] for itm in cls_list}
    g_data_dir = root_dir
    g_dbinfos = Manager().list()

    if dataset == "carla":
        with Pool(8) as p:
            r = list(
                tqdm(p.imap(create_db_file_carla_wk_fn, idx_list),
                     total=len(idx_list)))
        for info in g_dbinfos:
            dbinfo[info["name"]].append(info)
        save_pickle(dbinfo, str(save_dir / "CARLA_dbinfos_train.pkl"))
        print("CARLA_dbinfos_train.pkl saved.")
    elif dataset == "waymo":
        with Pool(8) as p:
            r = list(
                tqdm(p.imap(create_db_file_waymo_wk_fn, idx_list),
                     total=len(idx_list)))
        for info in g_dbinfos:
            dbinfo[info["name"]].append(info)
        save_pickle(dbinfo, str(save_dir / "WAYMO_dbinfos_train.pkl"))
        print("WAYMO_dbinfos_train.pkl saved.")
    elif dataset == "kitti":
        with Pool(8) as p:
            r = list(
                tqdm(p.imap(create_db_file_kitti_wk_fn, idx_list),
                     total=len(idx_list)))
        for info in g_dbinfos:
            dbinfo[info["name"]].append(info)
        save_pickle(dbinfo, str(save_dir / "KITTI_dbinfos_train.pkl"))
        print("KITTI_dbinfos_train.pkl saved.")
    else:
        raise NotImplementedError
    for k, v in dbinfo.items():
        print(f"{k}: {len(v)}")