
    .hW                        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,                  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ej,                  j9                  e d      dedz  dfdedededdfd       Zej,                  j9                  ej<                  d      ej,                  j9                  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,                  jD                  ej,                  j/                  de
      ej,                  j9                  e d       ej,                  j9                  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)Path)Image)CUDA_DEVICE_COUNTCUDA_IS_AVAILABLEMODELSTASK_MODEL_DATA)ARM64ASSETSLINUXWEIGHTS_DIRchecks)
TORCH_1_11cmdreturnc                 N    t        j                  | j                         d       y)z)Execute a shell command using subprocess.T)checkN)
subprocessrunsplit)r   s    L/var/www/html/ai-service/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_json visualizeNr   r#   s      r   test_valr&   "   s"     )D6vdV3YZ[r   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=z+ imgsz=32 save save_crop save_txt visualizeNr   r
   r#   s      r   test_predictr*   (   s"     %v_UG8F8;fghr   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   zRTDETR requires torch>=1.11)reasondetectzrtdetr-l.ptz
coco8.yamlc           	      f    t        d|  d| dt        dz   d       t        d|  d| d| d       y	)
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_rtdetrr1   4   sF     -vWUG8FY4F3GGijk+dV75'v5hi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           	      `   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.r0   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   ultralyticsr4   ultralytics.models.samr5   r   openremove_small_regionsmasksr   )r   r   r   sourcer4   r5   	sam_modelseverything_results	new_masks_s              r   test_fastsamrP   <   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@   )rB   rC   i  d   r>   T)rA   saveN)rE   rR   r   r
   predict)rR   r   rJ   s      r   test_mobilesamrV   [   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_gpurY   s   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   )rZ   s    r   test_solutionsrf   }   s     /(>2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*   r,   skipifr1   IS_PYTHON_3_12IS_PYTHON_3_8rP   rV   slowrY   rf   r   r   r   <module>rt      s       O O G G 4,S ,T ,
 *O<US U UC UD U =U
 *O<\3 \s \# \$ \ =\
 *O<is i3 ic id i =i
 &)Bs Bt B *B
 
N+HI$K-4O]i kc kT kWZ knr k Jk 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   