o
    0j                     @   s   d dl mZmZmZmZmZmZ d dlZddl	m
Z
 ddlmZmZ ddlmZ ddlmZ d	d
lmZ d	dlmZ ejG dd deZe
dG dd deZdS )    )AnyDictListOptionalTupleUnionN   )pipeline_requires_extra   )	HPIConfigPaddlePredictorOption)	DetResult)	benchmark   )(AutoParallelImageSimpleInferencePipeline)BasePipelinec                       s   e Zd ZdZddddddddedee dee deeeef  d	ee d
e	dee
eeef ef  ddf fddZ				dde
eee ejeej f dee
eef  dee	 dee
eeeef f  dee defddZ  ZS )_ObjectDetectionPipelinezObject Detection PipelineNFdeviceengineengine_config	pp_optionuse_hpip
hpi_configconfigr   r   r   r   r   r   returnc             	      s   t  jd
||||||d| |d d }	i }
d|	v r"|	d |
d< d|	v r,|	d |
d< d|	v r6|	d |
d< d|	v r@|	d |
d< d|	v rJ|	d |
d< | j|	fi |
| _d	S )a/  
        Initializes the object detection pipeline.

        Args:
            config: Configuration dictionary containing model and other parameters.
            device (Optional[str], optional): Device to run the prediction on. Defaults to `None`.
            engine (Optional[str], optional): Inference engine. Defaults to `None`.
            engine_config (Optional[Dict[str, Any]], optional): Engine-specific config. Defaults to `None`. Defaults to `None`.
            pp_option (Optional[PaddlePredictorOption], optional): Paddle predictor options.
                Defaults to `None`.
            use_hpip (bool, optional): Whether to use HPIP. Defaults to `False`.
            hpi_config (Optional[Union[Dict[str, Any], HPIConfig]], optional): HPIP configuration.
                Defaults to `None`.
        r   
SubModulesObjectDetection	thresholdZimg_size
layout_nmslayout_unclip_ratiolayout_merge_bboxes_modeN )super__init__Zcreate_model	det_model)selfr   r   r   r   r   r   r   kwargsZ	model_cfgZmodel_kwargs	__class__r"   v/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/pipelines/object_detection/pipeline.pyr$      s2   	z!_ObjectDetectionPipeline.__init__inputr   r   r    r!   c                 k   s(    | j |f||||d|E dH  dS )a  Predicts object detection results for the given input.

        Args:
            input (Union[str, list[str], np.ndarray, list[np.ndarray]]): The input image(s) or path(s) to the images.
            img_size (Optional[Union[int, Tuple[int, int]]]): The size of the input image. Default is None.
            threshold (Optional[float]): The threshold value to filter out low-confidence predictions. Default is None.
            layout_nms (Optional[bool], optional): Whether to use layout-aware NMS. Defaults to `False`.
            layout_unclip_ratio (Optional[Union[float, Tuple[float, float]]], optional): The ratio of unclipping the bounding box.
                Defaults to `None`.
                If it's a single number, then both width and height are used.
                If it's a tuple of two numbers, then they are used separately for width and height respectively.
                If it's None, then no unclipping will be performed.
            layout_merge_bboxes_mode (Optional[str], optional): The mode for merging bounding boxes. Defaults to `None`.
            **kwargs: Additional keyword arguments that can be passed to the function.
        Returns:
            DetResult: The predicted detection results.
        )r   r   r    r!   N)r%   )r&   r+   r   r   r    r!   r'   r"   r"   r*   predictR   s   z _ObjectDetectionPipeline.predict)NNNN)__name__
__module____qualname____doc__r   r   strr   r   boolr   r   r$   r   npZndarrayfloatdictr   r   r,   __classcell__r"   r"   r(   r*   r      sT    	6r   Zcvc                   @   s$   e Zd ZdZedd Zdd ZdS )ObjectDetectionPipelineZobject_detectionc                 C   s   t S )N)r   )r&   r"   r"   r*   _pipeline_clsz   s   z%ObjectDetectionPipeline._pipeline_clsc                 C   s   |d d  ddS )Nr   r   Z
batch_size   )get)r&   r   r"   r"   r*   _get_batch_size~   s   z'ObjectDetectionPipeline._get_batch_sizeN)r-   r.   r/   entitiespropertyr8   r;   r"   r"   r"   r*   r7   v   s
    
r7   )typingr   r   r   r   r   r   numpyr3   Z
utils.depsr	   modelsr   r   Zmodels.object_detection.resultr   Zutils.benchmarkr   Z	_parallelr   baser   Ztime_methodsr   r7   r"   r"   r"   r*   <module>   s    Z