
    je                        d dl Z d dlmZ d dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZ deddfd	Zd'd
Zej                            de
          dedededdfd            Zej                            de
          dedededdfd            Zej                            de
          dedededdfd            Zej                            de	          deddfd            Zej                            e d          dedz  dfdedededdfd            Zej                            ej        d          ej                            ej        oeoed          dedz  dfdedededdfd                        Z d'dZ!ej        j"        ej                            de
          ej                            e d           ej                            ed!k     d"          dedededdfd#                                                Z#ej                            d$g d%          d$eddfd&            Z$dS )(    N)Path)Image)CUDA_DEVICE_COUNTCUDA_IS_AVAILABLEMODELSTASK_MODEL_DATA)ARM64ASSETSLINUXWEIGHTS_DIRchecks)
TORCH_1_11cmdreturnc                 V    t          j        |                                 d           dS )z)Execute a shell command using subprocess.T)checkN)
subprocessrunsplit)r   s    S/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/tests/test_cli.pyr   r      s%    N399;;d++++++    c                      t          d           t          d           t          d           t          d           t          d           dS )z?Test various special command-line modes for YOLO functionality.z	yolo helpzyolo checkszyolo versionzyolo settings resetzyolo cfgNr    r   r   test_special_modesr      sJ    
OOOOOr   ztask,model,datataskmodeldatac           	      8    t          d|  d| d| d           dS )z=Test YOLO training for different tasks, models, and datasets.yolo train  model= data=z imgsz=32 epochs=1 cache=diskNr   r   r   r   s      r   
test_trainr$      s4     SdSS5SSSSSTTTTTr   c                 H    dD ]}t          d|  d| d| d| d	           dS )zWTest YOLO validation process for specified task, model, and data using a shell command.   FTz	yolo val r!   r"   z/ imgsz=32 save_txt save_json visualize end2end=z max_det=100 agnostic_nmsNr   r   r   r   end2ends       r   test_valr)   "   sy     ! 
 
 J  J  JU  J  J$  J  Jgn  J  J  J	
 	
 	
 	

 
r   c                 R    dD ]#}t          d|  d| dt           d| d	           $dS )zLTest YOLO prediction on provided sample assets for specified task and model.r&   zyolo z predict model= source=z4 imgsz=32 save save_crop save_txt visualize end2end= max_det=100Nr   r
   r'   s       r   test_predictr.   +   sy     ! 
 
 JD  J  J  J  J  J  Jt{  J  J  J	
 	
 	
 	

 
r   c                 <    dD ]}t          d|  d| d           dS )z2Test exporting a YOLO model to TorchScript format.r&   zyolo export model=z% format=torchscript imgsz=32 end2end=r,   Nr   )r   r(   s     r   test_exportr0   4   sF     ! d dbbbWbbbccccd dr   zRTDETR requires torch>=1.11)reasondetectzrtdetr-l.ptz
coco8.yamlc           	      z    t          d|  d| dt          dz   d           t          d|  d| d| d           d	S )
zdTest the RTDETR functionality within Ultralytics for detection tasks using specified model and data.zyolo predict r!   r+   bus.jpgz" imgsz=160 save save_crop save_txtr    r"   z3 --imgsz= 160 epochs =1, cache = disk fraction=0.25Nr-   r#   s      r   test_rtdetrr5   ;   sc     jjjUjjFY4Fjjjkkkidii5iiiiijjjjjr   z3MobileSAM with CLIP is not supported in Python 3.12zDMobileSAM with CLIP is not supported in Python 3.8 and aarch64 LinuxsegmentzFastSAM-s.ptzcoco8-seg.yamlc           	      z   t           dz  }t          d|  d| d| d           t          d| d| d           d	d
lm} d	dlm}  ||          }|t          j        |          fD ]S} ||ddddd          }|                    |d	         j	        j
        d          \  }	}
 ||g dddggdgd           TdS )z]Test FastSAM model for segmenting objects in images using various prompts within Ultralytics.r4   zyolo segment val r!   r"   z	 imgsz=32zyolo segment predict model=r+   z! imgsz=32 save save_crop save_txtr   )FastSAM)	PredictorcpuTi@  g?g?)deviceretina_masksimgszconfiou   )min_areai  i  i  i        za photo of a dog)bboxespointslabelstextsN)r
   r   ultralyticsr8   ultralytics.models.samr9   r   openremove_small_regionsmasksr   )r   r   r   sourcer8   r9   	sam_modelseverything_results
_new_masks_s              r   test_fastsamrT   C   s8    iFEDEEEEdEEEFFF^e^^V^^^___######000000 I ej(() r r&YqTQT[^dghhh "667I!7L7R7Wbd6ee
A 		&!5!5!5SzlTUSV^pqqqqqr rr   c                      ddl m}   | t          dz            }t          dz  }|                    |ddgdg           |                    |ddgd	d
gggddgg           |                    |g dd           dS )zITest MobileSAM segmentation with point and box prompts using Ultralytics.r   )SAMzmobile_sam.ptz
zidane.jpgi  ir  rD   )rF   rG   i  d   rB   T)rE   saveN)rI   rV   r   r
   predict)rV   r   rN   s      r   test_mobilesamrZ   b   s     Co-..E l"F 
MM&#sQCM888 
MM&C:c{";!<q!fXMNNN 
MM&!5!5!5DMAAAAAr   zCUDA is not available   zDDP is not availablec           	      j    t          d|  d| d| d           t          d|  d| d| d           dS )z:Test YOLO training on GPU(s) for various tasks and models.r    r!   r"   z imgsz=32 epochs=1 device=0z imgsz=32 epochs=1 device=0,1Nr   r#   s      r   test_train_gpur]   z   s^     QdQQ5QQQQQRRRSdSS5SSSSSTTTTTr   solution)
countblurworkoutheatmapisegment	visioneyespeedqueue	analytics	trackzonec                 ,    t          d|  d           dS )z'Test yolo solutions command-line modes.zyolo solutions z verbose=FalseNr   )r^   s    r   test_solutionsrj      s$     2(22233333r   )r   N)%r   pathlibr   pytestPILr   testsr   r   r   r   ultralytics.utilsr	   r
   r   r   r   ultralytics.utils.torch_utilsr   strr   r   markparametrizer$   r)   r.   r0   skipifr5   IS_PYTHON_3_12IS_PYTHON_3_8rT   rZ   slowr]   rj   r   r   r   <module>rx      s^                    O O O O O O O O O O O O G G G G G G G G G G G G G G 4 4 4 4 4 4,S ,T , , , ,
    *O<<US U UC UD U U U =<U
 *O<<
3 
s 
# 
$ 
 
 
 =<
 *O<<
s 
3 
c 
d 
 
 
 =<
 &))ds dt d d d *)d 
N+HII$K-4O]i k kc kT kWZ knr k k k JIk F)2ghh
,U,uQ   
 n(DRbr r
r"%rLOr	r r r	  ih
r4B B B B0 *O<<))2IJJ%)2HIIU US U U U U U JI KJ =< U ppp 4S 4T 4 4 4	 4 4 4r   