Commit 053735e1 authored by Shaoshuai Shi's avatar Shaoshuai Shi
Browse files

Default setting: DO NOT mask the gt_boxes that are outside the range of Z-axis

parent 08652f94
......@@ -85,7 +85,8 @@ class DataProcessor(object):
if data_dict.get('gt_boxes', None) is not None and config.REMOVE_OUTSIDE_BOXES and self.training:
mask = box_utils.mask_boxes_outside_range_numpy(
data_dict['gt_boxes'], self.point_cloud_range, min_num_corners=config.get('min_num_corners', 1)
data_dict['gt_boxes'], self.point_cloud_range, min_num_corners=config.get('min_num_corners', 1),
filter_z=config.get('FILTER_Z', False)
)
data_dict['gt_boxes'] = data_dict['gt_boxes'][mask]
return data_dict
......
......@@ -90,7 +90,7 @@ def corners_rect_to_camera(corners):
return camera_rect
def mask_boxes_outside_range_numpy(boxes, limit_range, min_num_corners=1):
def mask_boxes_outside_range_numpy(boxes, limit_range, min_num_corners=1, filter_z=True):
"""
Args:
boxes: (N, 7) [x, y, z, dx, dy, dz, heading, ...], (x, y, z) is the box center
......@@ -103,7 +103,11 @@ def mask_boxes_outside_range_numpy(boxes, limit_range, min_num_corners=1):
if boxes.shape[1] > 7:
boxes = boxes[:, 0:7]
corners = boxes_to_corners_3d(boxes) # (N, 8, 3)
mask = ((corners >= limit_range[0:3]) & (corners <= limit_range[3:6])).all(axis=2)
if filter_z:
mask = ((corners >= limit_range[0:3]) & (corners <= limit_range[3:6])).all(axis=2)
else:
corners = corners[:, :, 0:2]
mask = ((corners >= limit_range[0:2]) & (corners <= limit_range[3:5])).all(axis=2)
mask = mask.sum(axis=1) >= min_num_corners # (N)
return mask
......
......@@ -62,6 +62,7 @@ POINT_FEATURE_ENCODING: {
DATA_PROCESSOR:
- NAME: mask_points_and_boxes_outside_range
REMOVE_OUTSIDE_BOXES: True
FILTER_Z: False
- NAME: shuffle_points
SHUFFLE_ENABLED: {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment