Skip to content

CLI

The YOLO Command Line Interface (CLI) is the easiest way to get started training, validating, predicting and exporting YOLOv8 models.

The yolo command is used for all actions:

yolo TASK MODE ARGS

Where:

  • TASK (optional) is one of [detect, segment, classify]. If it is not passed explicitly YOLOv8 will try to guess the TASK from the model type.
  • MODE (required) is one of [train, val, predict, export]
  • ARGS (optional) are any number of custom arg=value pairs like imgsz=320 that override defaults. For a full list of available ARGS see the Configuration page and defaults.yaml GitHub source.

Note: Arguments MUST be passed as arg=val with an equals sign and a space between arg=val pairs

  • yolo predict model=yolov8n.pt imgsz=640 conf=0.25   ✅
  • yolo predict model yolov8n.pt imgsz 640 conf 0.25   ❌
  • yolo predict --model yolov8n.pt --imgsz 640 --conf 0.25   ❌

Train

Train YOLOv8n on the COCO128 dataset for 100 epochs at image size 640. For a full list of available arguments see the Configuration page.

yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco128.yaml", epochs=100, imgsz=640)

Val

Validate trained YOLOv8n model accuracy on the COCO128 dataset. No argument need to passed as the model retains it's training data and arguments as model attributes.

yolo detect val model=yolov8n.pt  # val official model
yolo detect val model=path/to/best.pt  # val custom model
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
results = model.val()  # no arguments needed, dataset and settings remembered

Predict

Use a trained YOLOv8n model to run predictions on images.

yolo detect predict model=yolov8n.pt source="https://ultralytics.com/images/bus.jpg"  # predict with official model
yolo detect predict model=path/to/best.pt source="https://ultralytics.com/images/bus.jpg"  # predict with custom model
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

Export

Export a YOLOv8n model to a different format like ONNX, CoreML, etc.

yolo export model=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model
from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained

# Export the model
model.export(format="onnx")

Available YOLOv8 export formats include:

Format format= Model
PyTorch - yolov8n.pt
TorchScript torchscript yolov8n.torchscript
ONNX onnx yolov8n.onnx
OpenVINO openvino yolov8n_openvino_model/
TensorRT engine yolov8n.engine
CoreML coreml yolov8n.mlmodel
TensorFlow SavedModel saved_model yolov8n_saved_model/
TensorFlow GraphDef pb yolov8n.pb
TensorFlow Lite tflite yolov8n.tflite
TensorFlow Edge TPU edgetpu yolov8n_edgetpu.tflite
TensorFlow.js tfjs yolov8n_web_model/
PaddlePaddle paddle yolov8n_paddle_model/

Overriding default arguments

Default arguments can be overriden by simply passing them as arguments in the CLI in arg=value pairs.

Train a detection model for 10 epochs with learning_rate of 0.01

yolo detect train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01

Predict a YouTube video using a pretrained segmentation model at image size 320:

yolo segment predict model=yolov8n-seg.pt source='https://youtu.be/Zgi9g1ksQHc' imgsz=320

Validate a pretrained detection model at batch-size 1 and image size 640:

yolo detect val model=yolov8n.pt data=coco128.yaml batch=1 imgsz=640


Overriding default config file

You can override the default.yaml config file entirely by passing a new file with the cfg arguments, i.e. cfg=custom.yaml.

To do this first create a copy of default.yaml in your current working dir with the yolo copy-cfg command.

This will create default_copy.yaml, which you can then pass as cfg=default_copy.yaml along with any additional args, like imgsz=320 in this example:

yolo copy-cfg
yolo cfg=default_copy.yaml imgsz=320