|
- # Copyright (c) OpenMMLab. All rights reserved.
- import numpy as np
- import torch
-
- from mmdet.utils.util_random import ensure_rng
-
-
- def random_boxes(num=1, scale=1, rng=None):
- """Simple version of ``kwimage.Boxes.random``
-
- Returns:
- Tensor: shape (n, 4) in x1, y1, x2, y2 format.
-
- References:
- https://gitlab.kitware.com/computer-vision/kwimage/blob/master/kwimage/structs/boxes.py#L1390
-
- Example:
- >>> num = 3
- >>> scale = 512
- >>> rng = 0
- >>> boxes = random_boxes(num, scale, rng)
- >>> print(boxes)
- tensor([[280.9925, 278.9802, 308.6148, 366.1769],
- [216.9113, 330.6978, 224.0446, 456.5878],
- [405.3632, 196.3221, 493.3953, 270.7942]])
- """
- rng = ensure_rng(rng)
-
- tlbr = rng.rand(num, 4).astype(np.float32)
-
- tl_x = np.minimum(tlbr[:, 0], tlbr[:, 2])
- tl_y = np.minimum(tlbr[:, 1], tlbr[:, 3])
- br_x = np.maximum(tlbr[:, 0], tlbr[:, 2])
- br_y = np.maximum(tlbr[:, 1], tlbr[:, 3])
-
- tlbr[:, 0] = tl_x * scale
- tlbr[:, 1] = tl_y * scale
- tlbr[:, 2] = br_x * scale
- tlbr[:, 3] = br_y * scale
-
- boxes = torch.from_numpy(tlbr)
- return boxes
|