Spaces:
Running
on
Zero
Running
on
Zero
# Copyright (c) Facebook, Inc. and its affiliates. | |
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 | |
# pyre-fixme[14]: `convert` overrides method defined in `BaseConverter` | |
# inconsistently. | |
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 | |
) | |