|
|
|
|
|
from typing import Any |
|
|
|
from detectron2.structures import Boxes |
|
|
|
from ..structures import DensePoseChartResult, DensePoseChartResultWithConfidences |
|
from .base import BaseConverter |
|
|
|
|
|
class ToChartResultConverter(BaseConverter): |
|
""" |
|
Converts various DensePose predictor outputs to DensePose results. |
|
Each DensePose predictor output type has to register its convertion strategy. |
|
""" |
|
|
|
registry = {} |
|
dst_type = DensePoseChartResult |
|
|
|
@classmethod |
|
|
|
|
|
def convert(cls, predictor_outputs: Any, boxes: Boxes, *args, **kwargs) -> DensePoseChartResult: |
|
""" |
|
Convert DensePose predictor outputs to DensePoseResult 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 |
|
Return: |
|
An instance of DensePoseResult. If no suitable converter was found, raises KeyError |
|
""" |
|
return super(ToChartResultConverter, cls).convert(predictor_outputs, boxes, *args, **kwargs) |
|
|
|
|
|
class ToChartResultConverterWithConfidences(BaseConverter): |
|
""" |
|
Converts various DensePose predictor outputs to DensePose results. |
|
Each DensePose predictor output type has to register its convertion strategy. |
|
""" |
|
|
|
registry = {} |
|
dst_type = DensePoseChartResultWithConfidences |
|
|
|
@classmethod |
|
|
|
|
|
def convert( |
|
cls, predictor_outputs: Any, boxes: Boxes, *args, **kwargs |
|
) -> DensePoseChartResultWithConfidences: |
|
""" |
|
Convert DensePose predictor outputs to DensePoseResult with confidences |
|
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 with confidences |
|
to be converted to BitMasks |
|
boxes (Boxes): bounding boxes that correspond to the DensePose |
|
predictor outputs |
|
Return: |
|
An instance of DensePoseResult. If no suitable converter was found, raises KeyError |
|
""" |
|
return super(ToChartResultConverterWithConfidences, cls).convert( |
|
predictor_outputs, boxes, *args, **kwargs |
|
) |
|
|