|
|
import mmcv |
|
|
from typing import Dict, List |
|
|
import pickle |
|
|
import random |
|
|
import os |
|
|
import copy |
|
|
|
|
|
|
|
|
datatomove = [ |
|
|
"scene-0980", |
|
|
"scene-0001", |
|
|
"scene-0011", |
|
|
"scene-0023", |
|
|
"scene-0034", |
|
|
"scene-0052", |
|
|
"scene-0318", |
|
|
"scene-0200", |
|
|
"scene-0028", |
|
|
"scene-0297", |
|
|
"scene-0067", |
|
|
"scene-0159", |
|
|
"scene-0185", |
|
|
"scene-0021", |
|
|
"scene-0025", |
|
|
"scene-0072", |
|
|
"scene-0157", |
|
|
"scene-0208", |
|
|
"scene-0366", |
|
|
"scene-0400", |
|
|
] |
|
|
|
|
|
|
|
|
def remove_indices(original_list, indices_to_remove): |
|
|
indices_to_remove_set = set(indices_to_remove) |
|
|
return [ |
|
|
item |
|
|
for idx, item in enumerate(original_list) |
|
|
if idx not in indices_to_remove_set |
|
|
] |
|
|
|
|
|
|
|
|
def sort_data(data_dict: Dict): |
|
|
return data_dict["token"] |
|
|
|
|
|
|
|
|
predroot = "/mnt/hdd2/datasets/nuScenes/infos/e2e_av" |
|
|
train_file = os.path.join(predroot, "nuscenes_infos_temporal_train.pkl") |
|
|
val_file = os.path.join(predroot, "nuscenes_infos_temporal_val.pkl") |
|
|
nuscenes_metadata = os.path.join(predroot, "../../v1.0-trainval/scene.json") |
|
|
|
|
|
|
|
|
|
|
|
outputs_train_ori: Dict = mmcv.load(train_file) |
|
|
outputs_train: List[Dict] = outputs_train_ori["infos"] |
|
|
print(f"len of train is {len(outputs_train)}") |
|
|
|
|
|
outputs_val_ori: Dict = mmcv.load(val_file) |
|
|
outputs_val: List[Dict] = outputs_val_ori["infos"] |
|
|
print(f"len of val is {len(outputs_val)}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print(outputs_train_ori.keys()) |
|
|
|
|
|
|
|
|
nuscenes_metadata = mmcv.load(nuscenes_metadata) |
|
|
scene_token2name = dict() |
|
|
for metadata_seq in nuscenes_metadata: |
|
|
|
|
|
|
|
|
|
|
|
scene_token2name[metadata_seq["token"]] = metadata_seq["name"] |
|
|
|
|
|
|
|
|
data_move_list = [] |
|
|
data_add_list = [] |
|
|
for index in range(len(outputs_train)): |
|
|
data = outputs_train[index] |
|
|
scene_token = data["scene_token"] |
|
|
scene_name = scene_token2name[scene_token] |
|
|
if scene_name in datatomove: |
|
|
data_move_list.append(index) |
|
|
data_add_list.append(copy.deepcopy(data)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
outputs_train_new = remove_indices(outputs_train, data_move_list) |
|
|
outputs_val.extend(data_add_list) |
|
|
|
|
|
print(f"len of new train is {len(outputs_train_new)}") |
|
|
print(f"len of new val is {len(outputs_val)}") |
|
|
|
|
|
|
|
|
|
|
|
output_path_train = os.path.join(predroot, "nuscenes_infos_temporal_train_new.pkl") |
|
|
outputs_train_new = { |
|
|
'infos': outputs_train_new, |
|
|
"metadata": outputs_train_ori['metadata'], |
|
|
} |
|
|
mmcv.dump(outputs_train_new, output_path_train) |
|
|
|
|
|
|
|
|
|
|
|
output_path_val = os.path.join(predroot, "nuscenes_infos_temporal_val_new.pkl") |
|
|
outputs_val_new = { |
|
|
'infos': outputs_val, |
|
|
"metadata": outputs_val_ori['metadata'], |
|
|
} |
|
|
mmcv.dump(outputs_val_new, output_path_val) |
|
|
|
|
|
|