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