a
    yf                     @   sL   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 dejj	Z
dS )    )copy)yolo)OBBModel)DEFAULT_CFGRANKc                       s:   e Zd ZdZeddf fdd	Zd
ddZdd	 Z  ZS )
OBBTrainerah  
    A class extending the DetectionTrainer class for training based on an Oriented Bounding Box (OBB) model.

    Example:
        ```python
        from ultralytics.models.yolo.obb import OBBTrainer

        args = dict(model="yolov8n-obb.pt", data="dota8.yaml", epochs=3)
        trainer = OBBTrainer(overrides=args)
        trainer.train()
        ```
    Nc                    s(   |du ri }d|d< t  ||| dS )z4Initialize a OBBTrainer object with given arguments.Nobbtask)super__init__)selfcfgZ	overrides
_callbacks	__class__ ]/var/www/html/django/DPS/env/lib/python3.9/site-packages/ultralytics/models/yolo/obb/train.pyr      s    zOBBTrainer.__init__Tc                 C   s0   t |d| jd |otdkd}|r,|| |S )z>Return OBBModel initialized with specified config and weights.   nc)chr   verbose)r   datar   load)r   r   weightsr   modelr   r   r   	get_model   s    
zOBBTrainer.get_modelc                 C   s"   d| _ tjj| j| jt| jdS )z@Return an instance of OBBValidator for validation of YOLO model.)Zbox_lossZcls_lossZdfl_loss)save_dirargs)Z
loss_namesr   r   ZOBBValidatorZtest_loaderr   r   r   )r   r   r   r   get_validator'   s    zOBBTrainer.get_validator)NNT)	__name__
__module____qualname____doc__r   r   r   r   __classcell__r   r   r   r   r   
   s   
r   N)r   Zultralytics.modelsr   Zultralytics.nn.tasksr   Zultralytics.utilsr   r   detectZDetectionTrainerr   r   r   r   r   <module>   s   