2023-04-14 13:17:41 +00:00
|
|
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
2023-01-09 22:22:33 +00:00
|
|
|
|
2023-01-17 13:32:34 +00:00
|
|
|
import subprocess
|
2023-01-04 23:20:54 +00:00
|
|
|
from pathlib import Path
|
2023-01-02 18:24:44 +00:00
|
|
|
|
2023-02-28 05:34:22 +00:00
|
|
|
from ultralytics.yolo.utils import LINUX, ONLINE, ROOT, SETTINGS
|
2023-01-04 23:20:54 +00:00
|
|
|
|
2023-01-07 19:04:34 +00:00
|
|
|
MODEL = Path(SETTINGS['weights_dir']) / 'yolov8n'
|
|
|
|
|
CFG = 'yolov8n'
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
2023-01-17 13:32:34 +00:00
|
|
|
def run(cmd):
|
|
|
|
|
# Run a subprocess command with check=True
|
|
|
|
|
subprocess.run(cmd.split(), check=True)
|
|
|
|
|
|
|
|
|
|
|
2023-01-17 22:00:33 +00:00
|
|
|
def test_special_modes():
|
|
|
|
|
run('yolo checks')
|
|
|
|
|
run('yolo settings')
|
|
|
|
|
run('yolo help')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# Train checks ---------------------------------------------------------------------------------------------------------
|
2023-01-07 19:04:34 +00:00
|
|
|
def test_train_det():
|
2023-02-26 06:49:19 +00:00
|
|
|
run(f'yolo train detect model={CFG}.yaml data=coco8.yaml imgsz=32 epochs=1 v5loader')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
2023-01-07 19:04:34 +00:00
|
|
|
def test_train_seg():
|
2023-01-17 22:00:33 +00:00
|
|
|
run(f'yolo train segment model={CFG}-seg.yaml data=coco8-seg.yaml imgsz=32 epochs=1')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
2023-01-07 19:04:34 +00:00
|
|
|
def test_train_cls():
|
2023-02-20 00:27:28 +00:00
|
|
|
run(f'yolo train classify model={CFG}-cls.yaml data=imagenet10 imgsz=32 epochs=1')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
2023-04-05 22:25:32 +00:00
|
|
|
def test_train_pose():
|
|
|
|
|
run(f'yolo train pose model={CFG}-pose.yaml data=coco8-pose.yaml imgsz=32 epochs=1')
|
|
|
|
|
|
|
|
|
|
|
2023-01-02 18:24:44 +00:00
|
|
|
# Val checks -----------------------------------------------------------------------------------------------------------
|
|
|
|
|
def test_val_detect():
|
2023-01-26 22:07:27 +00:00
|
|
|
run(f'yolo val detect model={MODEL}.pt data=coco8.yaml imgsz=32')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_val_segment():
|
2023-01-26 22:07:27 +00:00
|
|
|
run(f'yolo val segment model={MODEL}-seg.pt data=coco8-seg.yaml imgsz=32')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_val_classify():
|
2023-02-20 00:27:28 +00:00
|
|
|
run(f'yolo val classify model={MODEL}-cls.pt data=imagenet10 imgsz=32')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
2023-04-05 22:25:32 +00:00
|
|
|
def test_val_pose():
|
|
|
|
|
run(f'yolo val pose model={MODEL}-pose.pt data=coco8-pose.yaml imgsz=32')
|
|
|
|
|
|
|
|
|
|
|
2023-01-02 18:24:44 +00:00
|
|
|
# Predict checks -------------------------------------------------------------------------------------------------------
|
|
|
|
|
def test_predict_detect():
|
2023-02-26 06:49:19 +00:00
|
|
|
run(f"yolo predict model={MODEL}.pt source={ROOT / 'assets'} imgsz=32 save save_crop save_txt")
|
2023-02-28 05:34:22 +00:00
|
|
|
if ONLINE:
|
2023-02-24 02:11:25 +00:00
|
|
|
run(f'yolo predict model={MODEL}.pt source=https://ultralytics.com/images/bus.jpg imgsz=32')
|
|
|
|
|
run(f'yolo predict model={MODEL}.pt source=https://ultralytics.com/assets/decelera_landscape_min.mov imgsz=32')
|
|
|
|
|
run(f'yolo predict model={MODEL}.pt source=https://ultralytics.com/assets/decelera_portrait_min.mov imgsz=32')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_predict_segment():
|
2023-04-03 00:36:58 +00:00
|
|
|
run(f"yolo predict model={MODEL}-seg.pt source={ROOT / 'assets'} imgsz=32 save save_txt")
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_predict_classify():
|
2023-04-03 00:36:58 +00:00
|
|
|
run(f"yolo predict model={MODEL}-cls.pt source={ROOT / 'assets'} imgsz=32 save save_txt")
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
2023-04-05 22:25:32 +00:00
|
|
|
def test_predict_pose():
|
|
|
|
|
run(f"yolo predict model={MODEL}-pose.pt source={ROOT / 'assets'} imgsz=32 save save_txt")
|
|
|
|
|
|
|
|
|
|
|
2023-01-02 18:24:44 +00:00
|
|
|
# Export checks --------------------------------------------------------------------------------------------------------
|
|
|
|
|
def test_export_detect_torchscript():
|
2023-01-17 22:00:33 +00:00
|
|
|
run(f'yolo export model={MODEL}.pt format=torchscript')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_export_segment_torchscript():
|
2023-01-17 22:00:33 +00:00
|
|
|
run(f'yolo export model={MODEL}-seg.pt format=torchscript')
|
2023-01-02 18:24:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_export_classify_torchscript():
|
2023-01-17 22:00:33 +00:00
|
|
|
run(f'yolo export model={MODEL}-cls.pt format=torchscript')
|
2023-02-17 19:06:06 +00:00
|
|
|
|
|
|
|
|
|
2023-04-05 22:25:32 +00:00
|
|
|
def test_export_classify_pose():
|
|
|
|
|
run(f'yolo export model={MODEL}-pose.pt format=torchscript')
|
|
|
|
|
|
|
|
|
|
|
2023-02-17 19:06:06 +00:00
|
|
|
def test_export_detect_edgetpu(enabled=False):
|
|
|
|
|
if enabled and LINUX:
|
|
|
|
|
run(f'yolo export model={MODEL}.pt format=edgetpu')
|