|
|
| import mmcv |
| from typing import Dict, List |
| import pickle as pkl |
|
|
| def sort_data(data_dict: Dict): |
| return data_dict["token"] |
|
|
| FRAME_INTERVAL = 10 |
|
|
| |
| |
| |
| |
| |
| MAX_FRAME_SEQ = 10000 |
|
|
| predroot = '/mnt/hdd2/datasets/carla_1.0/carla_data_0414/data_val_nusc_format.pkl' |
|
|
| pkl_data: Dict = mmcv.load(predroot) |
| |
|
|
| info_data: List[Dict] = pkl_data["infos"] |
| info_data.sort(key=sort_data) |
|
|
| |
| new_info_data: List[Dict] = [] |
| scene_token = None |
| for index in range(len(info_data)): |
| data_frame = info_data[index] |
| scene_token_cur = data_frame['scene_token'] |
| frame_id_cur = data_frame['frame_idx'] |
|
|
| |
| if frame_id_cur > MAX_FRAME_SEQ: |
| continue |
|
|
| print(data_frame['token']) |
| print(data_frame['scene_token']) |
| print(data_frame['frame_idx']) |
|
|
| |
| if scene_token is None or scene_token_cur != scene_token: |
| frame_idx = frame_id_cur |
| scene_token = scene_token_cur |
|
|
| |
| else: |
| frame_idx += FRAME_INTERVAL |
| new_info_data.append(data_frame) |
|
|
| |
| assert frame_idx == frame_id_cur, f'frame id wrong, {frame_idx} vs {frame_id_cur}' |
|
|
| print(f'total number of frames is {len(new_info_data)}') |
|
|
| |
| new_pkl_data = { |
| 'infos': new_info_data, |
| } |
| for key in pkl_data.keys(): |
| if key == 'infos': |
| continue |
| else: |
| new_pkl_data[key] = pkl_data[key] |
|
|
| |
| output_path = f'/mnt/hdd2/datasets/carla_1.0/carla_data_0414/data_val_nusc_format_partial_{MAX_FRAME_SEQ}.pkl' |
| with open(output_path, "wb") as f: |
| pkl.dump(new_pkl_data, f) |
|
|