File size: 3,413 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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
import numpy as np
from nuscenes.utils.data_classes import LidarPointCloud, Box
from pyquaternion import Quaternion
color_mapping = np.asarray([
[0, 0, 0],
[255, 179, 0],
[128, 62, 117],
[255, 104, 0],
[166, 189, 215],
[193, 0, 32],
[206, 162, 98],
[129, 112, 102],
[0, 125, 52],
[246, 118, 142],
[0, 83, 138],
[255, 122, 92],
[83, 55, 122],
[255, 142, 0],
[179, 40, 81],
[244, 200, 0],
[127, 24, 13],
[147, 170, 0],
[89, 51, 21],
[241, 58, 19],
[35, 44, 22],
[112, 224, 255],
[70, 184, 160],
[153, 0, 255],
[71, 255, 0],
[255, 0, 163],
[255, 204, 0],
[0, 255, 235],
[255, 0, 235],
[255, 0, 122],
[255, 245, 0],
[10, 190, 212],
[214, 255, 0],
[0, 204, 255],
[20, 0, 255],
[255, 255, 0],
[0, 153, 255],
[0, 255, 204],
[41, 255, 0],
[173, 0, 255],
[0, 245, 255],
[71, 0, 255],
[0, 255, 184],
[0, 92, 255],
[184, 255, 0],
[255, 214, 0],
[25, 194, 194],
[92, 0, 255],
[220, 220, 220],
[255, 9, 92],
[112, 9, 255],
[8, 255, 214],
[255, 184, 6],
[10, 255, 71],
[255, 41, 10],
[7, 255, 255],
[224, 255, 8],
[102, 8, 255],
[255, 61, 6],
[255, 194, 7],
[0, 255, 20],
[255, 8, 41],
[255, 5, 153],
[6, 51, 255],
[235, 12, 255],
[160, 150, 20],
[0, 163, 255],
[140, 140, 140],
[250, 10, 15],
[20, 255, 0],
])/255
class AgentPredictionData:
"""
Agent data class, includes bbox, traj, and occflow
"""
def __init__(self,
pred_score,
pred_label,
pred_center,
pred_dim,
pred_yaw,
pred_vel,
pred_traj,
pred_traj_score,
pred_track_id=None,
pred_occ_map=None,
is_sdc=False,
past_pred_traj=None,
command=None,
attn_mask=None,
traj_gt=None,
):
self.pred_score = pred_score
self.pred_label = pred_label
self.pred_center = pred_center
self.pred_dim = pred_dim
self.pred_vel = pred_vel
self.pred_traj = pred_traj
self.pred_traj_score = pred_traj_score
self.pred_track_id = pred_track_id
self.pred_occ_map = pred_occ_map
if self.pred_traj is not None:
if isinstance(self.pred_traj_score, int):
self.pred_traj_max = self.pred_traj
else:
self.pred_traj_max = self.pred_traj[self.pred_traj_score.argmax(
)]
else:
self.pred_traj_max = None
if pred_yaw is not None:
self.pred_yaw = -pred_yaw-np.pi/2
self.nusc_box = Box(
center=pred_center,
size=pred_dim,
orientation=Quaternion(axis=[0, 0, 1], radians=self.pred_yaw),
label=pred_label,
score=pred_score
)
else:
self.pred_yaw = None
if is_sdc:
self.pred_center = [0, 0, -1.2+1.56/2]
self.is_sdc = is_sdc
self.past_pred_traj = past_pred_traj
self.command = command
self.attn_mask = attn_mask
self.traj_gt = traj_gt # 6 x 2 |