Skip to content

Commit e206566

Browse files
committed
Add kwargs many places for kitti and nuscenes compat
1 parent d8e4424 commit e206566

5 files changed

Lines changed: 37 additions & 39 deletions

File tree

avapi/_dataset.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ def wrap_minus_pi_to_pi(phases):
3434
return phases
3535

3636

37+
def get_reference_from_line(line):
38+
"""A bit of a hack"""
39+
line = line.split()
40+
assert line[0] == "origin", line[0]
41+
x = np.array([float(l) for l in line[1:4]])
42+
q = np.quaternion(*[float(l) for l in line[4:8]])
43+
return ReferenceFrame(x=x, q=q, reference=GlobalOrigin3D)
44+
45+
3746
class BaseSceneManager:
3847
def __iter__(self):
3948
for scene in self.scenes:
@@ -135,7 +144,7 @@ def get_sensor_name(self, sensor, agent=None):
135144

136145
def get_frames(self, sensor, agent=None):
137146
sensor = self.get_sensor_name(sensor, agent=agent)
138-
return self._load_frames(sensor, agent=agent)
147+
return self._load_frames(sensor=sensor, agent=agent)
139148

140149
def get_calibration(self, frame, sensor, agent=None):
141150
sensor = self.get_sensor_name(sensor, agent)
@@ -414,7 +423,7 @@ def read_dict_text_file(filepath):
414423
def parse_label_line(self, label_file_line):
415424
# Parse data elements
416425
data = label_file_line.strip("\n").split(" ")
417-
if data[0] in ["avstack", "nuscenes"]:
426+
if data[0] == "nuscenes":
418427
idx = 2
419428
ts = data[idx]
420429
idx += 1
@@ -669,10 +678,10 @@ def _get_sensor_file_name(self, frame, sensor=None, agent=None):
669678
],
670679
)
671680

672-
def _load_frames(self, sensor: str = None):
681+
def _load_frames(self, **kwargs):
673682
return self.frames
674683

675-
def _load_calibration(self, frame, ego_reference, sensor=None):
684+
def _load_calibration(self, frame, ego_reference, sensor=None, **kwargs):
676685
"""
677686
W := global "world" frame
678687
E := ego frame
@@ -699,18 +708,20 @@ def _load_calibration(self, frame, ego_reference, sensor=None):
699708
calib = calibration.Calibration(reference)
700709
return calib
701710

702-
def _load_timestamp(self, frame, sensor, utime=False):
711+
def _load_timestamp(self, frame, sensor, utime=False, **kwargs):
712+
if sensor is None:
713+
sensor = "LIDAR_TOP"
703714
ut = self._get_sensor_record(frame, sensor)["timestamp"]
704715
if utime:
705716
return ut
706717
else:
707718
return ut / 1e6 - self.t0
708719

709-
def _load_image(self, frame, sensor=None):
720+
def _load_image(self, frame, sensor=None, **kwargs):
710721
img_fname = self._get_sensor_file_name(frame, sensor)
711722
return imread(img_fname)
712723

713-
def _load_ego(self, frame):
724+
def _load_ego(self, frame, **kwargs):
714725
ref = GlobalOrigin3D
715726
if self.vehicle_pose is not None:
716727
try:
@@ -769,6 +780,7 @@ def _load_objects(
769780
sensor=None,
770781
whitelist_types=["car", "pedestrian", "bicycle", "truck", "bus", "motorcycle"],
771782
ignore_types=[],
783+
**kwargs,
772784
):
773785
"""
774786
automatically loads into local sensor coordinates

avapi/kitti/dataset.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
# -*- coding: utf-8 -*-
2-
# @Author: Spencer H
3-
# @Date: 2022-08-08
4-
# @Last Modified by: Spencer H
5-
# @Last Modified date: 2022-09-29
6-
# @Description:
7-
"""
8-
9-
"""
101
import glob
112
import os
123
import re
@@ -156,10 +147,10 @@ def frames(self):
156147
"""Wrapper to the classmethod using the split path"""
157148
return self._get_frames_folder(self.split_path)
158149

159-
def _load_frames(self, sensor: str):
150+
def _load_frames(self, **kwargs):
160151
return self.frames
161152

162-
def _load_ego(self, frame):
153+
def _load_ego(self, frame: int, **kwargs):
163154
"""Ego origin is defined as the center of the vehicle"""
164155
reference = self._load_ego_reference(frame)
165156
ego = VehicleState("car")
@@ -215,7 +206,7 @@ def write_calibration(calib_dict, path, idx):
215206
def _load_ego_reference(self, frame):
216207
return GlobalOrigin3D # TODO: this is not ideal...
217208

218-
def _load_calibration(self, frame, sensor, ego_reference):
209+
def _load_calibration(self, frame: int, sensor: str, ego_reference, **kwargs):
219210
calib_fname = os.path.join(
220211
self.split_path, self.folder_names["calibration"], "%06d.txt" % frame
221212
)
@@ -277,7 +268,7 @@ def _load_calibration_from_file(
277268
raise NotImplementedError(sensor)
278269
return calib
279270

280-
def _load_image(self, frame, sensor):
271+
def _load_image(self, frame: int, sensor: str, **kwargs):
281272
if isinstance(sensor, str) and "image" in sensor:
282273
img_fname = os.path.join(
283274
self.split_path, self.folder_names[sensor], "%06d.png" % frame
@@ -290,8 +281,7 @@ def _load_image(self, frame, sensor):
290281
)
291282
return imread(img_fname)
292283

293-
def _load_lidar(self, frame, sensor, **kwargs):
294-
filter_front = True # always filter KITTI to front-only
284+
def _load_lidar(self, frame: int, filter_front=True, **kwargs):
295285
lidar_fname = os.path.join(
296286
self.split_path, self.folder_names["lidar"], "%06d.bin" % frame
297287
)
@@ -309,6 +299,7 @@ def _load_objects(
309299
sensor="image-2",
310300
whitelist_types=["Car", "Pedestrian", "Cyclist"],
311301
ignore_types=["DontCare"],
302+
**kwargs,
312303
):
313304
label_fname = os.path.join(
314305
self.split_path, self.folder_names["label"], "%06d.txt" % frame
@@ -321,7 +312,7 @@ def _load_objects(
321312
obj.change_reference(object_calib.reference, inplace=True)
322313
return objects
323314

324-
def _load_timestamp(self, frame, utime=False, sensor="lidar"):
315+
def _load_timestamp(self, frame: int, sensor: str = "lidar", **kwargs):
325316
if os.path.exists(
326317
os.path.join(self.split_path, self.folder_names["timestamps"])
327318
):
@@ -349,7 +340,7 @@ def _save_objects(self, frame, objects, folder, file):
349340
for line in str_list:
350341
f.write(f"{line}\n")
351342

352-
def _get_sensor_file_name(self, frame, sensor: str):
343+
def _get_sensor_file_name(self, frame: int, sensor: str):
353344
return os.path.join(
354345
self.split_path,
355346
self.folder_names[sensor],

avapi/nuscenes/dataset.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,12 @@ def make_sample_records(self):
169169
self.t0 = self.sample_records[0]["timestamp"] / 1e6
170170

171171
def _load_lidar(
172-
self, frame, sensor="LIDAR_TOP", filter_front=False, with_panoptic=False
172+
self,
173+
frame,
174+
sensor="LIDAR_TOP",
175+
filter_front=False,
176+
with_panoptic=False,
177+
**kwargs,
173178
):
174179
if sensor.lower() == "lidar":
175180
sensor = self.sensors["lidar"]
@@ -187,7 +192,7 @@ def _load_lidar(
187192
else:
188193
return lidar
189194

190-
def _load_radar(self, frame, sensor="RADAR_FRONT"):
195+
def _load_radar(self, frame, sensor="RADAR_FRONT", **kwargs):
191196
""" "
192197
Important: when trying to incorporate the velocity component of
193198
the radar data, make sure to look at the nuScenes forums for

avapi/utils.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
# -*- coding: utf-8 -*-
2-
# @Author: Spencer H
3-
# @Date: 2022-04-03
4-
# @Last Modified by: Spencer H
5-
# @Last Modified date: 2022-08-11
6-
# @Description:
7-
"""
8-
9-
"""
10-
111
import os
122

133

avapi/visualize/movie.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def make_movie_from_DM(
3535
i_end = len(DM.frames)
3636

3737
imgs = []
38-
boxes = []
38+
boxes_out = []
3939
for frame_idx in range(i_start, i_end, 1):
4040
frame = DM.get_frames(sensor=CAM)[frame_idx]
4141
if len(boxes) == 0:
@@ -44,12 +44,12 @@ def make_movie_from_DM(
4444
img_boxes = boxes[frame_idx]
4545
img = DM.get_image(frame, sensor=CAM)
4646

47-
boxes.append(img_boxes)
47+
boxes_out.append(img_boxes)
4848
imgs.append(img)
4949

5050
make_movie(
5151
imgs,
52-
boxes,
52+
boxes_out,
5353
fps=DM.framerate,
5454
name=dataset_name,
5555
save=save,

0 commit comments

Comments
 (0)