Skip to content

Commit f980f3d

Browse files
committed
update create_data.py
1 parent a8ca0c3 commit f980f3d

File tree

1 file changed

+33
-34
lines changed

1 file changed

+33
-34
lines changed

second/create_data.py

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from skimage import io as imgio
88

99
from second.core import box_np_ops
10+
from second.core.point_cloud.point_cloud_ops import bound_points_jit
1011
from second.data import kitti_common as kitti
1112
from second.utils.progress_bar import list_bar as prog_bar
1213

@@ -18,18 +19,21 @@ def _read_imageset_file(path):
1819

1920
def _calculate_num_points_in_gt(data_path, infos, relative_path, remove_outside=True, num_features=4):
2021
for info in infos:
22+
pc_info = info["point_cloud"]
23+
image_info = info["image"]
24+
calib = info["calib"]
2125
if relative_path:
22-
v_path = str(pathlib.Path(data_path) / info["velodyne_path"])
26+
v_path = str(pathlib.Path(data_path) / pc_info["velodyne_path"])
2327
else:
24-
v_path = info["velodyne_path"]
28+
v_path = pc_info["velodyne_path"]
2529
points_v = np.fromfile(
2630
v_path, dtype=np.float32, count=-1).reshape([-1, num_features])
27-
rect = info['calib/R0_rect']
28-
Trv2c = info['calib/Tr_velo_to_cam']
29-
P2 = info['calib/P2']
31+
rect = calib['R0_rect']
32+
Trv2c = calib['Tr_velo_to_cam']
33+
P2 = calib['P2']
3034
if remove_outside:
3135
points_v = box_np_ops.remove_outside_points(points_v, rect, Trv2c, P2,
32-
info["img_shape"])
36+
image_info["image_shape"])
3337

3438
# points_v = points_v[points_v[:, 0] > 0]
3539
annos = info['annos']
@@ -88,20 +92,6 @@ def create_kitti_info_file(data_path,
8892
print(f"Kitti info val file is saved to {filename}")
8993
with open(filename, 'wb') as f:
9094
pickle.dump(kitti_infos_val, f)
91-
"""
92-
if create_trainval:
93-
kitti_infos_trainval = kitti.get_kitti_image_info(
94-
data_path,
95-
training=True,
96-
velodyne=True,
97-
calib=True,
98-
image_ids=trainval_img_ids,
99-
relative_path=relative_path)
100-
filename = save_path / 'kitti_infos_trainval.pkl'
101-
print(f"Kitti info trainval file is saved to {filename}")
102-
with open(filename, 'wb') as f:
103-
pickle.dump(kitti_infos_trainval, f)
104-
"""
10595
filename = save_path / 'kitti_infos_trainval.pkl'
10696
print(f"Kitti info trainval file is saved to {filename}")
10797
with open(filename, 'wb') as f:
@@ -121,28 +111,33 @@ def create_kitti_info_file(data_path,
121111
pickle.dump(kitti_infos_test, f)
122112

123113

114+
124115
def _create_reduced_point_cloud(data_path,
125116
info_path,
126117
save_path=None,
127118
back=False):
128119
with open(info_path, 'rb') as f:
129120
kitti_infos = pickle.load(f)
130121
for info in prog_bar(kitti_infos):
131-
v_path = info['velodyne_path']
122+
pc_info = info["point_cloud"]
123+
image_info = info["image"]
124+
calib = info["calib"]
125+
126+
v_path = pc_info['velodyne_path']
132127
v_path = pathlib.Path(data_path) / v_path
133128
points_v = np.fromfile(
134129
str(v_path), dtype=np.float32, count=-1).reshape([-1, 4])
135-
rect = info['calib/R0_rect']
136-
P2 = info['calib/P2']
137-
Trv2c = info['calib/Tr_velo_to_cam']
130+
rect = calib['R0_rect']
131+
P2 = calib['P2']
132+
Trv2c = calib['Tr_velo_to_cam']
138133
# first remove z < 0 points
139134
# keep = points_v[:, -1] > 0
140135
# points_v = points_v[keep]
141136
# then remove outside.
142137
if back:
143138
points_v[:, 0] = -points_v[:, 0]
144139
points_v = box_np_ops.remove_outside_points(points_v, rect, Trv2c, P2,
145-
info["img_shape"])
140+
image_info["image_shape"])
146141

147142
if save_path is None:
148143
save_filename = v_path.parent.parent / (v_path.parent.stem + "_reduced") / v_path.name
@@ -181,7 +176,6 @@ def create_reduced_point_cloud(data_path,
181176
_create_reduced_point_cloud(
182177
data_path, test_info_path, save_path, back=True)
183178

184-
185179
def create_groundtruth_database(data_path,
186180
info_path=None,
187181
used_classes=None,
@@ -211,23 +205,27 @@ def create_groundtruth_database(data_path,
211205
all_db_infos[name] = []
212206
group_counter = 0
213207
for info in prog_bar(kitti_infos):
214-
velodyne_path = info['velodyne_path']
208+
pc_info = info["point_cloud"]
209+
image_info = info["image"]
210+
calib = info["calib"]
211+
212+
velodyne_path = pc_info['velodyne_path']
215213
if relative_path:
216214
# velodyne_path = str(root_path / velodyne_path) + "_reduced"
217215
velodyne_path = str(root_path / velodyne_path)
218216
num_features = 4
219-
if 'pointcloud_num_features' in info:
220-
num_features = info['pointcloud_num_features']
217+
if 'num_features' in pc_info:
218+
num_features = pc_info['num_features']
221219
points = np.fromfile(
222220
velodyne_path, dtype=np.float32, count=-1).reshape([-1, num_features])
223221

224-
image_idx = info["image_idx"]
225-
rect = info['calib/R0_rect']
226-
P2 = info['calib/P2']
227-
Trv2c = info['calib/Tr_velo_to_cam']
222+
image_idx = image_info["image_idx"]
223+
rect = calib['R0_rect']
224+
P2 = calib['P2']
225+
Trv2c = calib['Tr_velo_to_cam']
228226
if not lidar_only:
229227
points = box_np_ops.remove_outside_points(points, rect, Trv2c, P2,
230-
info["img_shape"])
228+
image_info["image_shape"])
231229

232230
annos = info["annos"]
233231
names = annos["name"]
@@ -237,6 +235,7 @@ def create_groundtruth_database(data_path,
237235
num_obj = np.sum(annos["index"] >= 0)
238236
rbbox_cam = kitti.anno_to_rbboxes(annos)[:num_obj]
239237
rbbox_lidar = box_np_ops.box_camera_to_lidar(rbbox_cam, rect, Trv2c)
238+
box_np_ops.change_box3d_center_(rbbox_lidar, [0.5, 0.5, 0], [0.5, 0.5, 0.5])
240239
if bev_only: # set z and h to limits
241240
assert coors_range is not None
242241
rbbox_lidar[:, 2] = coors_range[2]

0 commit comments

Comments
 (0)