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[:, 6]) 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)
ret[i, j] = True # collision. return ret def global_translate_(gt_boxes, points, noise_translate_std): """ 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 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))