Skip to content

typevar

data.transform.typevar

ImageSizeType module-attribute

ImageSizeType = Sequence[int]

ParamsType module-attribute

ParamsType = Dict[str, Any]

ImageType module-attribute

ImageType = ndarray

MaskType module-attribute

MaskType = ndarray

BBoxesType module-attribute

BBoxesType = Union[ndarray, NumpyBoxes]

PolygonType module-attribute

PolygonType = List[ndarray]

OffsetType module-attribute

OffsetType = Tuple[float, float]

NumpyBoxes

Bases: ndarray

coordinate instance-attribute

coordinate: str

__new__

__new__(input_array, coordinate: str, dtype=None) -> NumpyBoxes
Source code in SaigeToolkit/data/dataclass/box.py
def __new__(cls, input_array, coordinate: str, dtype=None) -> NumpyBoxes:
    obj = np.array(input_array).view(cls)

    cls._check_boxes(obj)

    if dtype is not None:
        obj = obj.astype(dtype)
    obj.coordinate = coordinate
    return obj

__array_finalize__

__array_finalize__(obj)
Source code in SaigeToolkit/data/dataclass/box.py
def __array_finalize__(self, obj):
    if obj is None:
        return
    self.coordinate = getattr(obj, "coordinate", None)

__array_function__

__array_function__(func, types, args, kwargs)
Source code in SaigeToolkit/data/dataclass/box.py
def __array_function__(self, func, types, args, kwargs):
    def unwrap(e):
        return np.asarray(e) if isinstance(e, NumpyBoxes) else e

    def wrap(e, coordinate):
        return NumpyBoxes(e, coordinate) if isinstance(e, np.ndarray) else e

    def get_coordinate(args, kwargs):
        flat_args, _ = tree_flatten(args)
        flat_kwargs, _ = tree_flatten(kwargs)
        coordinates = [e.coordinate for e in flat_args + flat_kwargs if isinstance(e, NumpyBoxes)]

        assert len(set(coordinates)) == 1
        coordinate = coordinates[0]

        return coordinate

    kwargs = kwargs or {}
    ret = func(*tree_map(unwrap, args), **tree_map(unwrap, kwargs))
    coordinate = get_coordinate(args, kwargs)
    wrap_with_coordinate = functools.partial(wrap, coordinate=coordinate)
    ret = tree_map(wrap_with_coordinate, ret)

    return ret

convert_coordinate

convert_coordinate(coordinate: str) -> NumpyBoxes
Source code in SaigeToolkit/data/dataclass/box.py
def convert_coordinate(self, coordinate: str) -> NumpyBoxes:
    new_boxes: NumpyBoxes = convert_coordinate(self, self.coordinate, coordinate)
    new_boxes.coordinate = coordinate
    return new_boxes

to_numpy

to_numpy() -> ndarray
Source code in SaigeToolkit/data/dataclass/box.py
def to_numpy(self) -> np.ndarray:
    return np.array(self)

to_tensor

to_tensor() -> Tensor
Source code in SaigeToolkit/data/dataclass/box.py
def to_tensor(self) -> torch.Tensor:
    return torch.from_numpy(self.to_numpy())

_check_boxes staticmethod

_check_boxes(boxes: ndarray)
Source code in SaigeToolkit/data/dataclass/box.py
@staticmethod
def _check_boxes(boxes: np.ndarray):
    # 숫자가 아닌 값이 들어오는 경우
    if not np.issubdtype(boxes.dtype, np.number):
        raise BoxValueError

    # box position이 음수가 들어오는 경우
    if np.any(boxes < 0):
        raise BoxValueError