
    FPh                     J    d dl Z d dlmZ d dlmZ d dlmZmZ  G d de      Zy)    N)BasePredictor)Results)DEFAULT_CFGopsc                   6     e Zd ZdZeddf fd	Zd Zd Z xZS )ClassificationPredictora  
    A class extending the BasePredictor class for prediction based on a classification model.

    Notes:
        - Torchvision classification models can also be passed to the 'model' argument, i.e. model='resnet18'.

    Example:
        ```python
        from ultralytics.utils import ASSETS
        from ultralytics.models.yolo.classify import ClassificationPredictor

        args = dict(model='yolov8n-cls.pt', source=ASSETS)
        predictor = ClassificationPredictor(overrides=args)
        predictor.predict_cli()
        ```
    Nc                 J    t         |   |||       d| j                  _        y)zCInitializes ClassificationPredictor setting the task to 'classify'.classifyN)super__init__argstask)selfcfg	overrides
_callbacks	__class__s       sC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\ultralytics/models/yolo/classify/predict.pyr   z ClassificationPredictor.__init__   s    i4#		    c                    t        |t        j                        s4t        j                  |D cg c]  }| j	                  |       c}d      }t        |t        j                        r|nt        j
                  |      j                  | j                  j                        }| j                  j                  r|j                         S |j                         S c c}w )z3Converts input image to model-compatible data type.r   )dim)
isinstancetorchTensorstack
transforms
from_numpytomodeldevicefp16halffloat)r   imgims      r   
preprocessz"ClassificationPredictor.preprocess!   s    #u||,++SASrtr2SAqIC ell3s9I9I#9NRRSWS]S]SdSde!ZZ__sxxz=#))+= Bs   Cc           	         t        |t              st        j                  |      }g }t	        |      D ]N  \  }}||   }| j
                  d   |   }|j                  t        ||| j                  j                  |             P |S )z5Post-processes predictions to return Results objects.r   )pathnamesprobs)
r   listr   convert_torch2numpy_batch	enumeratebatchappendr   r   r)   )	r   predsr$   	orig_imgsresultsipredorig_imgimg_paths	            r   postprocessz#ClassificationPredictor.postprocess(   sx    )T*55i@I 'GAt |Hzz!}Q'HNN78($**BRBRZ^_` ( r   )	__name__
__module____qualname____doc__r   r   r&   r7   __classcell__)r   s   @r   r   r   
   s     " '$4 $
>
r   r   )	r   ultralytics.engine.predictorr   ultralytics.engine.resultsr   ultralytics.utilsr   r   r    r   r   <module>rA      s     6 . .(m (r   