a
    yf'                     @   s   d dl Z d dlmZmZmZmZ zXd dlmZ er6J ed du sFJ daedZ	d dl
Z
d dlmZ d dlmZmZ W n eeeefy   dZY n0 dd	d
Zdd Zdd Zdd Zdd Zdd Zereeeedni ZdS )    N)LOGGERSETTINGSTESTS_RUNNINGcolorstr)SummaryWriterZtensorboardTzTensorBoard: )deepcopy)de_paralleltorchc                 C   s(   t r$|  D ]\}}t ||| qdS )z"Logs scalar values to TensorBoard.N)WRITERitemsZ
add_scalar)Zscalarsstepkv r   c/var/www/html/django/DPS/env/lib/python3.9/site-packages/ultralytics/utils/callbacks/tensorboard.py_log_scalars   s    r   c                 C   s  | j j}t|tr||fn|}t| j }tjddg|R |j	|j
d}t ^ tjdtd tjdtjjd ttX | j  ttjjt| j|ddg  tt d W d	   W d	   d	S 1 s0    Y  ztt| j}|  |jdd
}| D ]}t|drd|_ d|_!q|| ttjj||ddg  tt d W n: ty } z t"t d|  W Y d	}~n
d	}~0 0 W d	   n1 s0    Y  d	S )zLog model graph to TensorBoard.      )devicedtypeignore)categoryF)strictu#   model graph visualization added ✅N)verboseexportTZtorchscriptu7   WARNING ⚠️ TensorBoard graph visualization failure )#argsimgsz
isinstanceintnextmodel
parametersr	   Zzerosr   r   warningscatch_warningssimplefilterUserWarningZjitZTracerWarning
contextlibsuppress	Exceptionevalr
   Z	add_graphtracer   r   infoPREFIXr   Zfusemoduleshasattrr   formatwarning)trainerr   pZimr    mer   r   r   _log_tensorboard_graph#   s2    
 ,
r5   c              
   C   sl   t rhz*t t| jatt d| j d W n8 tyf } z tt d|  W Y d}~n
d}~0 0 dS )z2Initialize TensorBoard logging with SummaryWriter.z!Start with 'tensorboard --logdir z!', view at http://localhost:6006/uL   WARNING ⚠️ TensorBoard not initialized correctly, not logging this run. N)	r   strsave_dirr
   r   r+   r,   r(   r0   )r1   r4   r   r   r   on_pretrain_routine_startF   s    r8   c                 C   s   t rt|  dS )zLog TensorBoard graph.N)r
   r5   r1   r   r   r   on_train_startQ   s    r:   c                 C   s2   t | j| jdd| jd  t | j| jd  dS )z6Logs scalar statistics at the end of a training epoch.train)prefixr   N)r   Zlabel_loss_itemsZtlossepochlrr9   r   r   r   on_train_epoch_endW   s    r?   c                 C   s   t | j| jd  dS )z,Logs epoch metrics at end of training epoch.r   N)r   Zmetricsr=   r9   r   r   r   on_fit_epoch_end]   s    r@   )r8   r:   r@   r?   )r   )r&   Zultralytics.utilsr   r   r   r   Ztorch.utils.tensorboardr   r
   r,   r"   copyr   Zultralytics.utils.torch_utilsr   r	   ImportErrorAssertionError	TypeErrorAttributeErrorr   r5   r8   r:   r?   r@   	callbacksr   r   r   r   <module>   s6   

#