Ë
    Fêñiâ  ã                  óŽ   — d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ  G d„ dej                  j                  «      Zy	)
é    )Úannotations)Úcopy)ÚPath)Úyolo)ÚSegmentationModel)ÚDEFAULT_CFGÚRANKc                  ó<   ‡ — e Zd ZdZeddfdˆ fd„Zddd„Zd„ Zˆ xZS )	ÚSegmentationTraineraŽ  A class extending the DetectionTrainer class for training based on a segmentation model.

    This trainer specializes in handling segmentation tasks, extending the detection trainer with segmentation-specific
    functionality including model initialization, validation, and visualization.

    Attributes:
        loss_names (tuple[str]): Names of the loss components used during training.

    Examples:
        >>> from ultralytics.models.yolo.segment import SegmentationTrainer
        >>> args = dict(model="yolo26n-seg.pt", data="coco8-seg.yaml", epochs=3)
        >>> trainer = SegmentationTrainer(overrides=args)
        >>> trainer.train()
    Nc                ó:   •— |€i }d|d<   t         ‰| �  |||«       y)ad  Initialize a SegmentationTrainer object.

        Args:
            cfg (dict): Configuration dictionary with default training settings.
            overrides (dict, optional): Dictionary of parameter overrides for the default configuration.
            _callbacks (dict, optional): Dictionary of callback functions to be executed during training.
        NÚsegmentÚtask)ÚsuperÚ__init__)ÚselfÚcfgÚ	overridesÚ
_callbacksÚ	__class__s       €úg/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/ultralytics/models/yolo/segment/train.pyr   zSegmentationTrainer.__init__   s+   ø€ ð ÐØˆIØ%ˆ	�&ÑÜ‰Ñ˜˜i¨Õ4ó    c                ó”   — t        || j                  d   | j                  d   |xr	 t        dk(  ¬«      }|r|j                  |«       |S )aÎ  Initialize and return a SegmentationModel with specified configuration and weights.

        Args:
            cfg (dict | str, optional): Model configuration. Can be a dictionary, a path to a YAML file, or None.
            weights (str | Path, optional): Path to pretrained weights file.
            verbose (bool): Whether to display model information during initialization.

        Returns:
            (SegmentationModel): Initialized segmentation model with loaded weights if specified.

        Examples:
            >>> trainer = SegmentationTrainer()
            >>> model = trainer.get_model(cfg="yolo26n-seg.yaml")
            >>> model = trainer.get_model(weights="yolo26n-seg.pt", verbose=False)
        ÚncÚchannelséÿÿÿÿ)r   ÚchÚverbose)r   Údatar	   Úload)r   r   Úweightsr   Úmodels        r   Ú	get_modelzSegmentationTrainer.get_model*   sF   € ô  " #¨$¯)©)°D©/¸d¿i¹iÈ
Ñ>SÐ]dÒ]sÔimÐqsÑisÔtˆÙØ�J‰J�wÔàˆr   c                ó¸   — d| _         t        j                  j                  | j                  | j
                  t        | j                  «      | j                  ¬«      S )zIReturn an instance of SegmentationValidator for validation of YOLO model.)Úbox_lossÚseg_lossÚcls_lossÚdfl_lossÚsem_loss)Úsave_dirÚargsr   )	Ú
loss_namesr   r   ÚSegmentationValidatorÚtest_loaderr)   r   r*   Ú	callbacks)r   s    r   Úget_validatorz!SegmentationTrainer.get_validator@   sG   € àTˆŒÜ�|‰|×1Ñ1Ø×Ñ t§}¡}¼4ÀÇ	Á	»?ÐW[×WeÑWeð 2ó 
ð 	
r   )r   údict | Noner   r0   )NNT)r   zdict | str | Noner    zstr | Path | Noner   Úbool)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r/   Ú__classcell__)r   s   @r   r   r      s!   ø„ ñð 'ÀÐaeö 5ôö,
r   r   N)Ú
__future__r   r   Úpathlibr   Úultralytics.modelsr   Úultralytics.nn.tasksr   Úultralytics.utilsr   r	   ÚdetectÚDetectionTrainerr   © r   r   ú<module>r?      s/   ðõ #å Ý å #Ý 2ß /ô8
˜$Ÿ+™+×6Ñ6õ 8
r   