o
    0j9                     @   s   d dl 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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
deeef ef defddZ  ZS )_SmallObjectDetectionPipelinezSmall Object Detection PipelineNFdeviceengineengine_config	pp_optionuse_hpip
hpi_configconfigr   r   r   r   r   r   returnc          
   	      sF   t  jd||||||d| |d d }	| |	| _|	d | _dS )a   Initializes the small object detection pipeline.

        Args:
            config (Dict): Configuration dictionary containing model and other parameters.
            device (Optional[str], optional): The device to use for prediction. 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`.
            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SmallObjectDetection	thresholdN )super__init__Zcreate_modelsmall_object_detection_modelr   )
selfr   r   r   r   r   r   r   kwargsZ#small_object_detection_model_config	__class__r   |/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/pipelines/small_object_detection/pipeline.pyr       s"   
z&_SmallObjectDetectionPipeline.__init__inputr   c                 k   s    | j ||dE dH  dS )ao  Predicts small object detection results for the given input.

        Args:
            input (str | list[str] | np.ndarray | list[np.ndarray]): The input image(s) or path(s) to the images.
            threshold (Optional[float]): The threshold value to filter out low-confidence predictions. Default is None.
                If None, it will use the default threshold specified during initialization.
                If a dictionary is provided, it should have integer keys corresponding to the class IDs and float values
                representing the respective thresholds for each class.
                If a single float value is provided, it will be used as the threshold for all classes.
            **kwargs: Additional keyword arguments that can be passed to the function.

        Returns:
            DetResult: The predicted small object detection results.
        )r   N)r!   )r"   r'   r   r#   r   r   r&   predictJ   s   z%_SmallObjectDetectionPipeline.predictN)__name__
__module____qualname____doc__r   r   strr   r   boolr   r
   r    r   npZndarrayintfloatr   r(   __classcell__r   r   r$   r&   r      sB    	.r   Zcvc                   @   s$   e Zd ZdZedd Zdd ZdS )SmallObjectDetectionPipelineZsmall_object_detectionc                 C   s   t S r)   )r   )r"   r   r   r&   _pipeline_clse   s   z*SmallObjectDetectionPipeline._pipeline_clsc                 C   s   |d d  ddS )Nr   r   Z
batch_size   )get)r"   r   r   r   r&   _get_batch_sizei   s   z,SmallObjectDetectionPipeline._get_batch_sizeN)r*   r+   r,   entitiespropertyr5   r8   r   r   r   r&   r4   a   s
    
r4   )typingr   r   r   r   r   numpyr0   Z
utils.depsr   modelsr
   r   Zmodels.object_detection.resultr   Zutils.benchmarkr   Z	_parallelr   baser   Ztime_methodsr   r4   r   r   r   r&   <module>   s   E