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