
    j'                        d dl mZmZmZ 	 erJ ed         du sJ d dlZd dlmZ  eed          sJ dan# e	e
f$ r dZY nw xY wddeded	dfd
Zddeded	dfdZdeded	dfdZddZddZddZddZddZereeeeedni ZdS )    )LOGGERSETTINGSTESTS_RUNNINGneptuneTN)File__version__scalarsstepreturnc                     t           r<|                                 D ])\  }}t           |                             ||           (dS dS )aE  Log scalars to the NeptuneAI experiment logger.

    Args:
        scalars (dict): Dictionary of scalar values to log to NeptuneAI.
        step (int, optional): The current step or iteration number for logging.

    Examples:
        >>> metrics = {"mAP": 0.85, "loss": 0.32}
        >>> _log_scalars(metrics, step=100)
    )valuer
   N)runitemsappend)r	   r
   kvs       h/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/ultralytics/utils/callbacks/neptune.py_log_scalarsr      sX      .MMOO 	. 	.DAqFMMM----. .	. 	.     	imgs_dictgroupc                     t           rL|                                 D ]9\  }}t           | d|                              t          |                     8dS dS )a  Log images to the NeptuneAI experiment logger.

    This function logs image data to Neptune.ai when a valid Neptune run is active. Images are organized under the
    specified group name.

    Args:
        imgs_dict (dict): Dictionary of images to log, with keys as image names and values as image data.
        group (str, optional): Group name to organize images under in the Neptune UI.

    Examples:
        >>> # Log validation images
        >>> _log_images({"val_batch": img_tensor}, group="validation")
    /N)r   r   uploadr   )r   r   r   r   s       r   _log_imagesr   $   si      0OO%% 	0 	0DAq51&&tAww////0 0	0 	0r   title	plot_pathc                    ddl m} ddlm} |                    |          }|                                }|                    g dddg g           }|                    |           t          d|           	                    |           dS )z-Log plots to the NeptuneAI experiment logger.r   N)r   r      r    Fauto)frameonaspectxticksytickszPlots/)
matplotlib.imageimagematplotlib.pyplotpyplotimreadfigureadd_axesimshowr   r   )r   r   mpimgpltimgfigaxs          r   	_log_plotr3   7   s    $$$$$$######
,,y
!
!C
**,,C	lllE&TV	W	WBIIcNNN  %%%%%r   c                 2   	 t          j        | j        j        pd| j        j        dg          ad t          | j                                                  D             t
          d<   dS # t          $ r"}t          j
        d|            Y d}~dS d}~ww xY w)zHInitialize NeptuneAI run and log hyperparameters before training starts.Ultralytics)projectnametagsc                 "    i | ]\  }}||dn|S )Nr    ).0r   r   s      r   
<dictcomp>z-on_pretrain_routine_start.<locals>.<dictcomp>L   s'    /q/q/qdaQR22/q/q/qr   zConfiguration/HyperparameterszINeptuneAI installed but not initialized correctly, not logging this run. N)r   init_runargsr6   r7   r   varsr   	Exceptionr   warning)traineres     r   on_pretrain_routine_startrD   C   s    	hL(9M"
 
 

 0r/qVZ[b[gVhVhVnVnVpVp/q/q/q+,,, h h hfcdffggggggggghs   A&A* *
B4BBc                 "   t          |                     | j        d          | j        dz              t          | j        | j        dz              | j        dk    r4t          d | j                            d          D             d           dS dS )zILog training metrics and learning rate at the end of each training epoch.train)prefixr    c                 8    i | ]}|j         t          |          S r:   stemstrr;   fs     r   r<   z&on_train_epoch_end.<locals>.<dictcomp>V   s"    WWWQVSVVWWWr   ztrain_batch*.jpgMosaicN)r   label_loss_itemstlossepochlrr   save_dirglob)rB   s    r   on_train_epoch_endrU   Q   s    ))'-)HH'-Z[J[\\\W]Q.///}WWW-=-B-BCU-V-VWWWYabbbbb r   c                     t           r$| j        dk    rddlm}  ||           t           d<   t	          | j        | j        dz              dS )zCLog model info and validation metrics at the end of each fit epoch.r   )model_info_for_loggerszConfiguration/Modelr    N)r   rQ   ultralytics.utils.torch_utilsrW   r   metrics)rB   rW   s     r   on_fit_epoch_endrZ   Y   s^    
 Ew}!!HHHHHH%;%;G%D%D!"'-!"344444r   c                 |    t           r4t          d | j                            d          D             d           dS dS )z/Log validation images at the end of validation.c                 8    i | ]}|j         t          |          S r:   rI   rL   s     r   r<   zon_val_end.<locals>.<dictcomp>f   s"    QQQQVSVVQQQr   zval*.jpg
ValidationN)r   r   rS   rT   )	validators    r   
on_val_endr_   b   sN    
 aQQY-?-D-DZ-P-PQQQS_`````a ar   c                    t           rg | j                                        | j        j                                        D ]!}d|j        vrt          |j        |           "t           d| j        j        p| j        j         d| j	        j                  
                    t          t          | j	                                       dS dS )zCLog final results, plots, and model weights at the end of training.batch)r   r   zweights/r   N)r   plotskeysr^   r7   r3   rJ   r>   taskbestr   r   rK   )rB   rM   s     r   on_train_endrf   i   s    
 uI7=%%''I'*;*A*F*F*H*HI 	5 	5Aaf$$!4444Sw|(=GL,=SS@QSST[[\`adeleqarar\s\stttttu ur   )rD   rU   rZ   r_   rf   )r   )r   )r   N)ultralytics.utilsr   r   r   r   neptune.typesr   hasattrr   ImportErrorAssertionErrordictintr   rK   r   r3   rD   rU   rZ   r_   rf   	callbacksr:   r   r   <module>ro      s   > = = = = = = = = =I$&&&&NNN""""""77M*****
CC^$   GGG. .$ .c .$ . . . . 0 04 0 0T 0 0 0 0&	&S 	&S 	&T 	& 	& 	& 	&h h h hc c c c5 5 5 5a a a au u u u& %>0, $   
 
		s   *7 	AA