|
|
|
|
|
from typing import Any, Tuple |
|
|
|
from detectron2.structures import BitMasks, Boxes |
|
|
|
from .base import BaseConverter |
|
|
|
ImageSizeType = Tuple[int, int] |
|
|
|
|
|
class ToMaskConverter(BaseConverter): |
|
""" |
|
Converts various DensePose predictor outputs to masks |
|
in bit mask format (see `BitMasks`). Each DensePose predictor output type |
|
has to register its convertion strategy. |
|
""" |
|
|
|
registry = {} |
|
dst_type = BitMasks |
|
|
|
@classmethod |
|
|
|
|
|
def convert( |
|
cls, |
|
densepose_predictor_outputs: Any, |
|
boxes: Boxes, |
|
image_size_hw: ImageSizeType, |
|
*args, |
|
**kwargs |
|
) -> BitMasks: |
|
""" |
|
Convert DensePose predictor outputs to BitMasks using some registered |
|
converter. Does recursive lookup for base classes, so there's no need |
|
for explicit registration for derived classes. |
|
|
|
Args: |
|
densepose_predictor_outputs: DensePose predictor output to be |
|
converted to BitMasks |
|
boxes (Boxes): bounding boxes that correspond to the DensePose |
|
predictor outputs |
|
image_size_hw (tuple [int, int]): image height and width |
|
Return: |
|
An instance of `BitMasks`. If no suitable converter was found, raises KeyError |
|
""" |
|
return super(ToMaskConverter, cls).convert( |
|
densepose_predictor_outputs, boxes, image_size_hw, *args, **kwargs |
|
) |
|
|