
    |h                     *   d dl 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(                  j+                  d
e      dedededdfd       Zej(                  j+                  d
e      dedededdfd       Zej(                  j+                  d
e      dedededdfd       Zej(                  j+                  de      deddfd       Zd#dedededdfdZej(                  j7                  ej8                  d      ej(                  j7                  ej:                  xr exr 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(                  j+                  d
e      ej(                  j7                  e d      ej(                  j7                  edk  d      dedededdfd                            Z!ej(                  j+                  dg d       deddfd!       Z"y)$    N)Image)CUDA_DEVICE_COUNTCUDA_IS_AVAILABLEMODELSTASK_MODEL_DATA)ARM64ASSETSLINUXWEIGHTS_DIRchecks)	TORCH_1_9cmdreturnc                 N    t        j                  | j                         d       y)z)Execute a shell command using subprocess.T)checkN)
subprocessrunsplit)r   s    M/var/www/html/test/engine/venv/lib/python3.12/site-packages/tests/test_cli.pyr   r      s    NN399;d+    c                  r    t        d       t        d       t        d       t        d       t        d       y)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      s*    
Or   ztask,model,datataskmodeldatac           	      .    t        d|  d| d| d       y)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#      s"     +dV75'v5RSTr   c           	      .    t        d|  d| d| d       y)zWTest YOLO validation process for specified task, model, and data using a shell command.z	yolo val r    r!   z imgsz=32 save_txt save_jsonNr   r"   s      r   test_valr%   !   s"     )D6vdV3OPQr   c           	      6    t        d|  d| dt         d       y)zLTest YOLO prediction on provided sample assets for specified task and model.zyolo z predict model= source=! imgsz=32 save save_crop save_txtN)r   r	   r"   s      r   test_predictr)   '   s"     %v_UG8F8;\]^r   c                 "    t        d|  d       y)z2Test exporting a YOLO model to TorchScript format.zyolo export model=z format=torchscript imgsz=32Nr   )r   s    r   test_exportr+   -   s     
UG#?@Ar   c           	          t        d|  d| d| d       t        d|  d| dt        dz   d       t        r8t        d	z  }t        d|  d| dt        dz   d       t        d|  d| d
       yy)zdTest the RTDETR functionality within Ultralytics for detection tasks using specified model and data.r   r    r!   z3 --imgsz= 160 epochs =1, cache = disk fraction=0.25zyolo predict r'   bus.jpgz" imgsz=160 save save_crop save_txtzrtdetr-l.ptz. epochs=1 imgsz=160 cache=disk data=coco8.yamlN)r   r	   r   r   )r   r   r   weightss       r   test_rtdetrr/   3   s     +dV75'v5hij-vWUG8FY4F3GGijk-mD6	&9:L9MMopqk$wwi/]^_ r   z3MobileSAM with CLIP is not supported in Python 3.12)reasonzDMobileSAM with CLIP is not supported in Python 3.8 and aarch64 LinuxsegmentzFastSAM-s.ptzcoco8-seg.yamlc           	      `   t         dz  }t        d|  d| d| d       t        d| d| d       d	d
lm} d	dlm}  ||      }|t        j                  |      fD ]P  } ||ddddd      }|j                  |d	   j                  j                  d      \  }	}
 ||g dddggdgd       R y)z]Test FastSAM model for segmenting objects in images using various prompts within Ultralytics.r-   zyolo segment val r    r!   z	 imgsz=32zyolo segment predict model=r'   r(   r   )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   ultralyticsr3   ultralytics.models.samr4   r   openremove_small_regionsmasksr   )r   r   r   sourcer3   r4   	sam_modelseverything_results	new_masks_s              r   test_fastsamrO   >   s     iF
D6vdV9EF
%eWHVH<]^_#0 I ejj() r&qTQT[^dgh !556H6K6Q6Q6V6Vac5d	1 	&!5SzlTUSV^pqrr   c                      ddl m}   | t        dz        }t        dz  }|j	                  |ddgdg       |j	                  |ddgd	d
gggddgg       |j	                  |g dd       y)zATest MobileSAM segmentation with point prompts using Ultralytics.r   )SAMzmobile_sam.ptz
zidane.jpgi  ir  r?   )rA   rB   i  d   r=   T)r@   saveN)rD   rQ   r   r	   predict)rQ   r   rI   s      r   test_mobilesamrU   ]   s{     o-.E l"F 
MM&#sQCM8 
MM&C:c{";!<q!fXMN 
MM&!5DMAr   zCUDA is not available   zDDP is not availablec           	      X    t        d|  d| d| d       t        d|  d| d| d       y)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_gpurX   u   s@     +dV75'v5PQR+dV75'v5RSTr   solution)
countblurworkoutheatmapisegment	visioneyespeedqueue	analytics	trackzonec                 "    t        d|  d       y)z'Test yolo solutions command-line modes.zyolo solutions z verbose=FalseNr   )rY   s    r   test_solutionsre      s     /(>23r   )r   N)detectzyolov8n-rtdetr.yamlz
coco8.yaml)#r   pytestPILr   testsr   r   r   r   ultralytics.utilsr   r	   r
   r   r   ultralytics.utils.torch_utilsr   strr   r   markparametrizer#   r%   r)   r+   r/   skipifIS_PYTHON_3_12IS_PYTHON_3_8rO   rU   slowrX   re   r   r   r   <module>rs      s      O O G G 3,S ,T ,
 *O<US U UC UD U =U
 *O<R3 Rs R# R$ R =R
 *O<_s _3 _c _d _ =_
 &)Bs Bt B *B
`c `S `PS `gk ` F))2gh
,U,uQ  
 n(DRbr
r"%rLOr	r	 i
r4B0 *O<))2IJ%)2HIU US U U U J K = U p4S 4T 4	4r   