a
    yf                     @   sd  d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	m
Z
 d dlmZmZmZ d dlmZ dd e
D Zd	d e
D Zd
d Zdd Zejdedd Zejdedd Zejdedd Zejdedd Zd+ddZejjejddded  d!fd"d#Zd$d% Zejj ejdeejje d&dejjed'k d(dd)d* Z!dS ),    N)Image)CUDA_DEVICE_COUNTCUDA_IS_AVAILABLE)	TASK2DATA
TASK2MODELTASKS)ASSETSWEIGHTS_DIRchecks)	TORCH_1_9c                 C   s"   g | ]}|t t|  t| fqS  )r	   r   r   .0taskr   r   J/var/www/html/django/DPS/env/lib/python3.9/site-packages/tests/test_cli.py
<listcomp>       r   c                 C   s   g | ]}t t|  qS r   )r	   r   r   r   r   r   r      r   c                 C   s   t j|  dd dS )z)Execute a shell command using subprocess.T)checkN)
subprocessrunsplit)cmdr   r   r   r      s    r   c                   C   s,   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   r   r   test_special_modes   s
    r   ztask,model,datac                 C   s    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   modeldatar   r   r   
test_train    s    r    c                 C   s    t d|  d| d| d dS )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   r   r   r   test_val&   s    r!   c                 C   s   t d| dt d dS )zLTest YOLO prediction on provided sample assets for specified task and model.zyolo predict model= source=! imgsz=32 save save_crop save_txtN)r   r   r   r   r   r   test_predict,   s    r$   r   c                 C   s   t d|  d dS )z2Test exporting a YOLO model to TorchScript format.zyolo export model=z format=torchscript imgsz=32Nr   )r   r   r   r   test_export2   s    r%   detectyolov8n-rtdetr.yaml
coco8.yamlc                 C   s^   t d|  d| d| d t d|  d| dtd  d trZt d|  d	td  d d
S )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 model='rtdetr-l.pt' source=N)r   r   r   r   r   r   r   test_rtdetr8   s     r*   z3MobileSAM with CLIP is not supported in Python 3.12)reasonsegmentzFastSAM-s.ptzcoco8-seg.yamlc              	   C   s   t d }td|  d| d| d td| d| d d	d
lm} d	dlm} ||}|t|fD ]P}||dddddd}|j|d	 j	j
dd\}	}
||g dddggdgdd qhdS )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?)ZdeviceZretina_masksZimgszconfZiou   )Zmin_areai  i  i  i        za photo of a dog)bboxespointslabelsZtextsN)r   r   ultralyticsr-   Zultralytics.models.samr.   r   openZremove_small_regionsmasksr   )r   r   r   sourcer-   r.   Z	sam_modelsZeverything_resultsZ	new_masks_r   r   r   test_fastsamA   s    r>   c                  C   sN   ddl m}  | td }td }|j|ddgdgd |j|g d	d
d dS )zATest MobileSAM segmentation with point prompts using Ultralytics.r   )SAMzmobile_sam.ptz
zidane.jpgi  ir  r4   )r6   r7   r2   T)r5   saveN)r8   r?   r	   r   Zpredict)r?   r   r;   r   r   r   test_mobilesamZ   s
    rA   zCUDA is not available   zDDP is not availablec                 C   s<   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   r   r   r   test_train_gpuo   s    rC   )r&   r'   r(   )"r   ZpytestZPILr   testsr   r   Zultralytics.cfgr   r   r   Zultralytics.utilsr   r	   r
   Zultralytics.utils.torch_utilsr   ZTASK_MODEL_DATAZMODELSr   r   markZparametrizer    r!   r$   r%   r*   ZskipifZIS_PYTHON_3_12r>   rA   ZslowrC   r   r   r   r   <module>   s6   	




	