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