| |
|
|
| 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 |
| ) |
|
|