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