File size: 3,331 Bytes
663494c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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")
# predroot = '/mnt/hdd2/datasets/navsim/openscene-v1.1/infos/nuplan_navsim_val.pkl'
# predroot = '/mnt/hdd2/datasets/navsim/openscene-v1.1/meta_datas_paradrive/trainval/2021.10.11.08.31.07_veh-50_01184_01318.pkl'

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)}")

# self.outputs = outputs
# outputs.sort(key=sort_data)

print(outputs_train_ori.keys())


nuscenes_metadata = mmcv.load(nuscenes_metadata)
scene_token2name = dict()
for metadata_seq in nuscenes_metadata:
    # print(metadata_seq["token"])
    # print(metadata_seq["name"])

    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))
    # print(index)

    # print('\nnew frame')
    # print("scene_token", data["scene_token"])
    # print("frame_idx", data["frame_idx"])
    # print("sample_token", data["token"])
    # print("log_name", data["log_name"])
    # print("log_token", data["log_token"])
    # zxc

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)}")
# print(len(outputs))
# zxc

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)
# with open(output_path_train, "wb") as f:
#     pickle.dump(outputs_train_new, f)

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)
# with open(output_path_val, "wb") as f:
#     pickle.dump(outputs_val_new, f)