a
    yf0                     @   s@   d dl Z d dlmZ d dlmZ d dlmZ G dd deZdS )    N)BasePredictor)Results)opsc                   @   s   e Zd ZdZdd ZdS )NASPredictoraY  
    Ultralytics YOLO NAS Predictor for object detection.

    This class extends the `BasePredictor` from Ultralytics engine and is responsible for post-processing the
    raw predictions generated by the YOLO NAS models. It applies operations like non-maximum suppression and
    scaling the bounding boxes to fit the original image dimensions.

    Attributes:
        args (Namespace): Namespace containing various configurations for post-processing.

    Example:
        ```python
        from ultralytics import NAS

        model = NAS("yolo_nas_s")
        predictor = model.predictor
        # Assumes that raw_preds, img, orig_imgs are available
        results = predictor.postprocess(raw_preds, img, orig_imgs)
        ```

    Note:
        Typically, this class is not instantiated directly. It is used internally within the `NAS` class.
    c           
   	   C   s   t |d d }t||d d fdddd}t j|| jj| jj| jj	| jj
| jjd}t|tsrt |}g }t||| jd D ]^\}}}	t |jdd |ddddf |j|ddddf< |t||	| jj|d q|S )	z>Postprocess predictions and returns a list of Results objects.r         )Zagnosticmax_detclassesN   )pathnamesboxes)r   Z	xyxy2xywhtorchcatZpermuteZnon_max_suppressionargsconfZiouZagnostic_nmsr	   r
   
isinstancelistZconvert_torch2numpy_batchzipbatchZscale_boxesshapeappendr   modelr   )
selfZpreds_inZimgZ	orig_imgsr   predsresultspredZorig_imgZimg_path r   Z/var/www/html/django/DPS/env/lib/python3.9/site-packages/ultralytics/models/nas/predict.pypostprocess#   s"    "	

:zNASPredictor.postprocessN)__name__
__module____qualname____doc__r    r   r   r   r   r   
   s   r   )r   Zultralytics.engine.predictorr   Zultralytics.engine.resultsr   Zultralytics.utilsr   r   r   r   r   r   <module>   s   