def filter_gt_box_outside_range_by_center(gt_boxes, limit_range): """remove gtbox outside training range. this function should be applied after other prep functions Args: gt_boxes ([type]): [description] limit_range ([type]): [description] """ gt_box_centers = gt_boxes[:, :2] bounding_box = box_np_ops.minmax_to_corner_2d( np.asarray(limit_range)[np.newaxis, ...]) ret = points_in_convex_polygon_jit(gt_box_centers, bounding_box) return ret.reshape(-1)
def filter_gt_box_outside_range(gt_boxes, limit_range): """remove gtbox outside training range. this function should be applied after other prep functions Args: gt_boxes ([type]): [description] limit_range ([type]): [description] """ gt_boxes_bv = box_np_ops.center_to_corner_box2d(gt_boxes[:, [0, 1]], gt_boxes[:, [3, 3 + 1]], gt_boxes[:, -1]) bounding_box = box_np_ops.minmax_to_corner_2d( np.asarray(limit_range)[np.newaxis, ...]) ret = points_in_convex_polygon_jit(gt_boxes_bv.reshape(-1, 2), bounding_box) return np.any(ret.reshape(-1, 4), axis=1)
Apply global translation to gt_boxes and points. """ if not isinstance(noise_translate_std, (list, tuple, np.ndarray)): noise_translate_std = np.array( [noise_translate_std, noise_translate_std, noise_translate_std]) if all([e == 0 for e in noise_translate_std]): return gt_boxes, points noise_translate = np.array([ np.random.normal(0, noise_translate_std[0], 1), np.random.normal(0, noise_translate_std[1], 1), np.random.normal(0, noise_translate_std[0], 1), ]).T points[:, :3] += noise_translate gt_boxes[:, :3] += noise_translate return gt_boxes, points if __name__ == "__main__": bboxes = np.array([ [0.0, 0.0, 0.5, 0.5], [0.2, 0.2, 0.6, 0.6], [0.7, 0.7, 0.9, 0.9], [0.55, 0.55, 0.8, 0.8], ]) bbox_corners = box_np_ops.minmax_to_corner_2d(bboxes) print(bbox_corners.shape) print(box_collision_test(bbox_corners, bbox_corners))