| |
| |
|
|
| import os |
| import pickle |
| from tqdm import tqdm |
| import numpy as np |
|
|
| |
| |
| |
| split_pkl = "data_splits/airvln_16/test/dataset_dist_8_to_8_n16_len_traj_pred_8.pkl" |
|
|
| with open(split_pkl, "rb") as f: |
| split_list = pickle.load(f)[0] |
| print(f"[info] 原始 split 数量: {len(split_list)}") |
|
|
| no_z_list = [] |
|
|
| for traj_id, frame_idx, min_goal_distance, max_goal_distance in tqdm(split_list, desc="Checking trajectories", dynamic_ncols=True): |
| print(traj_id, frame_idx, min_goal_distance, max_goal_distance) |
| |
| traj_dir = os.path.join("data", "airvln_16", traj_id) |
| traj_pkl = os.path.join(traj_dir, "traj_data.pkl") |
|
|
| with open(traj_pkl, "rb") as f: |
| traj_data = pickle.load(f) |
|
|
| |
| diff_traj = np.diff(traj_data["point"], axis=0) |
| diff_yaw = np.diff(traj_data["yaw"], axis=0).reshape(-1,1) |
| gt_traj = np.hstack([diff_traj, diff_yaw]) |
| dz = diff_traj[:, 2] |
| |
| |
| start = frame_idx - 15 |
| end = frame_idx + max_goal_distance |
| gt_slice = gt_traj[start:end] |
| print(f"start={start}, end={end}, slice_len={gt_slice.shape[0]}") |
|
|
| dz_s = gt_slice[:, 2] |
| print(f"{traj_id}: frame_idx={frame_idx}, dz.min={dz_s.min():.6f}, dz.max={dz_s.max():.6f}") |
| print("dz slice:", np.round(dz_s.tolist(), 6)) |
|
|
| |
| if (dz_s == 0).all(): |
| no_z_list.append((traj_id, frame_idx, min_goal_distance, max_goal_distance)) |
|
|
| print(f"[summary] no-z 数量: {len(no_z_list)}") |
| print("示例:", no_z_list[:5]) |
|
|
| |
| import random |
| random.seed(1120) |
| no_z_list = random.sample(no_z_list, k=100) |
|
|
| |
| out_pkl = "data_splits/airvln_16/test/navigation_eval_16_2d.pkl" |
| with open(out_pkl, "wb") as f: |
| pickle.dump(no_z_list, f) |
|
|
| print(f"[save] 写出新 split 到: {out_pkl}") |
|
|