YOLOv8 深入探索 Ultralytics CLI:一行命令搞定目标检测的魔法

🎪 摸鱼匠:个人主页

🎒 个人专栏:《YOLOv8 入门到精通:全栈实战

🥇 没有好的理念,只有脚踏实地!


文章目录

一、CLI简介与优势

1.1 什么是CLI

CLI(Command Line Interface,命令行界面)是一种通过文本命令与计算机程序交互的方式。与图形界面(GUI)相比,CLI具有高效、灵活、可自动化等特点。对于开发者和技术人员来说,熟练掌握CLI工具能够大大提高工作效率。

想象一下,你正在开发一个计算机视觉应用,需要进行目标检测。使用传统的图形界面,你可能需要点击多个按钮,填写各种表单,然后等待结果。而使用CLI,你只需要输入一行简洁的命令,就能完成同样的任务,甚至更多。

YOLOv8提供了一个功能强大的命令行工具yolo,让用户能够通过简单的命令完成复杂的目标检测任务。无论你是要进行模型训练、推理预测,还是模型验证、导出部署,都可以通过CLI快速完成。这种"一行命令搞定一切"的体验,正是CLI的魅力所在。

1.2 为什么要使用CLI

(1)简洁高效

使用CLI,你只需要输入一行命令就能完成复杂的操作。例如,训练一个目标检测模型只需要:

bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

这行命令包含了数据配置、模型选择、训练轮数、图像尺寸等多个参数,如果用Python代码实现,可能需要几十行。想象一下,你只需要在终端中输入这一行命令,然后就可以去喝杯咖啡,让YOLOv8自动完成所有训练工作。这种简洁性不仅节省了时间,还减少了出错的可能性。

(2)易于复现

CLI命令可以直接复制粘贴,方便在不同机器上复现实验结果。你也可以将命令保存到脚本文件中,便于批量执行和版本控制。

这在科研和工程实践中尤为重要。当你在一个环境中训练出一个优秀的模型,想要在另一个环境中复现这个结果时,只需要复制相同的命令即可。不需要担心环境差异导致的代码兼容性问题,也不需要重新配置复杂的Python环境。这种可复现性对于科学研究和工程部署都是至关重要的。

(3)自动化友好

CLI命令可以轻松集成到Shell脚本、Makefile、CI/CD流水线中,实现自动化工作流。例如,你可以编写一个脚本,自动完成数据准备、模型训练、性能评估和模型部署的全流程。

在当今的软件开发环境中,自动化是提高效率的关键。通过将YOLOv8 CLI命令集成到自动化流程中,你可以实现:

  • 每天自动训练新模型
  • 自动评估模型性能
  • 当性能提升超过阈值时自动部署新模型
  • 定期对模型进行基准测试

这种自动化能力使得YOLOv8 CLI成为生产环境中的强大工具,而不仅仅是研究实验的利器。

(4)学习曲线平缓

对于初学者来说,CLI提供了一个低门槛的入门方式。你不需要理解复杂的Python API,只需要记住几个简单的命令和参数,就能开始使用YOLOv8。

想象一下,你是一个刚接触计算机视觉的新手,想要尝试目标检测。如果需要先学习Python编程,然后理解YOLOv8的API结构,再编写代码,这个过程可能需要几天甚至几周。而使用CLI,你可能只需要几分钟就能看到第一个检测结果。这种即时反馈对于学习是极其宝贵的,它能让你快速建立信心,激发进一步学习的兴趣。

1.3 CLI与Python API的对比

YOLOv8同时提供了CLI和Python API两种使用方式,它们各有优势:

特性 CLI Python API
学习难度 中等
灵活性 中等
代码量 极少 较多
可编程性
适用场景 快速实验、批量处理 复杂应用、自定义逻辑

CLI就像是一辆自动挡汽车,简单易用,适合日常驾驶;而Python API则像是一辆手动挡赛车,提供了更多的控制权和灵活性,适合专业选手在赛道上追求极致性能。

建议

  • 初学者和快速实验:使用CLI
  • 复杂项目和生产环境:使用Python API
  • 两者可以结合使用:用CLI进行快速原型验证,用Python API开发最终应用

这种组合使用的方式在实践中非常有效。你可以先用CLI快速验证想法,确定可行后再用Python API开发更复杂的应用。这样既能享受CLI的高效,又能利用Python API的灵活性。

二、CLI基础命令与语法

2.1 基本命令结构

YOLOv8 CLI的基本命令结构如下:

bash 复制代码
yolo <任务> <模式> <参数1>=<值1> <参数2>=<值2> ...

其中:

  • yolo:CLI工具的入口命令,就像是告诉系统"我要使用YOLOv8"
  • <任务>:指定要执行的任务类型(detect、segment、classify、pose等)
  • <模式>:指定任务的执行模式(train、val、predict、export等)
  • <参数>=<值>:设置各种配置参数

这种结构设计得非常直观,就像是在用自然语言告诉系统你想要做什么。例如,"yolo detect predict"可以理解为"使用YOLO进行目标检测的预测"。

让我们用一个更形象的比喻来理解这个结构:想象你正在一家餐厅点餐。

  • yolo就像是告诉服务员"我要点餐"
  • <任务>就像是选择菜品类型(如"主菜"、"甜点")
  • <模式>就像是选择烹饪方式(如"烤"、"煮")
  • <参数>=<值>就像是具体的调味要求(如"盐=少"、"辣椒=多")

这种结构使得命令既简洁又直观,即使是初学者也能快速理解和使用。

2.2 核心任务类型

YOLOv8支持多种计算机视觉任务,每种任务都有对应的CLI命令:

任务 命令 说明
目标检测 yolo detect 检测图像中的物体位置和类别
实例分割 yolo segment 检测物体并分割出轮廓
图像分类 yolo classify 对整张图片进行分类
姿态估计 yolo pose 检测人体关键点

这些任务类型覆盖了计算机视觉领域的主要应用场景。无论你是想识别图片中的物体,还是想分割出物体的精确轮廓,或者只是想对图片进行分类,YOLOv8 CLI都能提供相应的命令。

目标检测(detect)是最常用的任务,它不仅能识别图像中有什么物体,还能标出每个物体的位置。实例分割(segment)则更进一步,不仅能识别和定位物体,还能精确地勾勒出每个物体的轮廓。图像分类(classify)是最简单的任务,只判断整张图片属于哪个类别。姿态估计(pose)则专注于检测人体的关键点,如关节位置,常用于动作识别和分析。

2.3 执行模式

每种任务都支持以下几种执行模式:

模式 命令 说明
训练 train 训练模型
验证 val 在验证集上评估模型
预测 predict 对新数据进行推理
导出 export 将模型导出为其他格式
跟踪 track 对视频进行目标跟踪
基准测试 benchmark 测试模型性能

这些模式覆盖了模型从训练到部署的完整生命周期。训练模式(train)用于在数据集上训练新模型或微调预训练模型。验证模式(val)用于评估模型在验证集上的性能。预测模式(predict)是最常用的模式,用于对新图像或视频进行推理。导出模式(export)用于将模型转换为其他格式,便于在不同平台部署。跟踪模式(track)扩展了预测功能,可以在视频中持续跟踪目标。基准测试模式(benchmark)则用于测试模型在不同格式和设备上的性能。

2.4 获取帮助信息

YOLOv8 CLI提供了完善的帮助系统,你可以随时查看命令的使用方法:

bash 复制代码
# 查看总体帮助
yolo --help

# 查看特定任务的帮助
yolo detect --help

# 查看特定模式的帮助
yolo detect train --help

这种分层的帮助系统设计得非常人性化。当你不确定要使用什么命令时,可以先查看总体帮助;当你确定了任务类型但不确定模式时,可以查看特定任务的帮助;当你已经确定了任务和模式,但不确定具体参数时,可以查看特定模式的帮助。

帮助信息通常包括:

  • 命令的语法结构
  • 可用参数列表
  • 参数的默认值和说明
  • 使用示例

这种设计使得YOLOv8 CLI非常易于学习和使用,即使是不熟悉命令行工具的用户也能快速上手。

三、预测模式(Predict)详解

预测模式是YOLOv8最常用的功能之一,用于对新的图像、视频或摄像头数据进行目标检测。这一部分将详细介绍如何使用yolo predict命令,以及各种参数的作用和用法。

3.1 基本预测命令

最简单的预测命令只需要指定模型和数据源:

bash 复制代码
yolo predict model=yolov8n.pt source='image.jpg'

这行命令告诉YOLOv8:

  1. 使用yolov8n.pt模型(这是YOLOv8系列中最小的预训练模型)
  2. image.jpg这张图片进行预测

参数说明

  • model:模型文件路径或名称。如果是预训练模型(如yolov8n.pt),系统会自动下载
  • source:数据源,可以是:
    • 图片文件:image.jpg
    • 图片URL:https://example.com/image.jpg
    • 视频文件:video.mp4
    • 文件夹:path/to/images/
    • 摄像头:0(默认摄像头)
    • 屏幕:screen

这种灵活性使得YOLOv8 CLI能够处理各种输入源,无论是本地文件、网络图片,还是实时视频流。你不需要编写不同的代码来处理这些不同的输入源,只需要改变source参数的值即可。

3.2 预测参数详解

预测模式支持丰富的参数配置,下面我们来详细解析这些参数:

参数 默认值 说明 示例
model yolov8n.pt 模型文件 model=yolov8s.pt
source - 数据源 source='image.jpg'
conf 0.25 置信度阈值 conf=0.5
iou 0.7 NMS IoU阈值 iou=0.5
imgsz 640 输入图像尺寸 imgsz=320
show False 是否显示结果 show=True
save False 是否保存结果 save=True
save_txt False 保存结果为txt save_txt=True
save_crop False 保存裁剪的检测框 save_crop=True
device - 运行设备 device=0(GPU)
max_det 300 最大检测数量 max_det=100
vid_stride 1 视频帧间隔 vid_stride=2
line_width - 边界框线宽 line_width=2
visualize False 可视化特征图 visualize=True
augment False 使用TTA增强 augment=True
agnostic_nms False 类别无关NMS agnostic_nms=True
classes - 只检测特定类别 classes=0,2,3
retina_masks False 使用Retina masks retina_masks=True

让我们来详细解释这些参数的作用和使用场景:

model参数

model参数指定用于预测的模型文件。YOLOv8提供了多个预训练模型,从小到大依次是:

  • yolov8n.pt:最小模型,速度最快,精度最低
  • yolov8s.pt:小型模型,平衡速度和精度
  • yolov8m.pt:中型模型,较高精度
  • yolov8l.pt:大型模型,高精度
  • yolov8x.pt:最大模型,精度最高,速度最慢

选择哪个模型取决于你的应用场景。如果你需要在资源受限的设备上运行,或者对速度要求很高,可以选择较小的模型;如果你追求最高的检测精度,且硬件资源充足,可以选择较大的模型。

source参数

source参数指定要预测的数据源,可以是:

  • 单张图片:source='image.jpg'
  • 多张图片:source='image1.jpg image2.jpg'
  • 图片文件夹:source='path/to/images/'
  • 视频文件:source='video.mp4'
  • 摄像头:source=0(0表示默认摄像头,1表示第二个摄像头,以此类推)
  • 网络图片:source='https://example.com/image.jpg'
  • 屏幕:source='screen'(捕获屏幕内容进行检测)

这种灵活性使得YOLOv8 CLI能够适应各种应用场景,无论是处理静态图片、视频文件,还是实时摄像头流。

conf参数

conf参数设置置信度阈值,只有当模型对某个检测结果的置信度高于这个阈值时,才会输出这个结果。默认值是0.25,意味着只有置信度大于25%的检测结果才会被保留。

提高这个阈值可以减少误检(False Positives),但可能会增加漏检(False Negatives);降低这个阈值可以减少漏检,但可能会增加误检。选择合适的阈值需要根据具体应用场景来权衡。

iou参数

iou参数设置非极大值抑制(NMS)的IoU(Intersection over Union)阈值。NMS是一种用于去除重叠检测框的技术,当两个检测框的IoU大于这个阈值时,置信度较低的框会被抑制。

默认值是0.7,这是一个相对宽松的设置,适用于大多数场景。如果你的场景中有很多密集的小物体,可能需要降低这个值;如果你的场景中物体比较稀疏,可以适当提高这个值。

imgsz参数

imgsz参数设置输入图像的尺寸。YOLOv8在训练时使用的默认尺寸是640,所以预测时也默认使用640。你可以根据需要调整这个值,但需要注意的是,改变图像尺寸可能会影响检测精度和速度。

较大的图像尺寸可能会提高检测精度,特别是对于小物体,但会增加计算量和内存使用;较小的图像尺寸可以提高速度,但可能会降低精度。

show参数

show参数控制是否显示预测结果。设置为True时,会在窗口中显示带有检测框的图像或视频帧。这对于实时查看结果很有用,特别是在使用摄像头进行实时检测时。

save参数

save参数控制是否保存预测结果。设置为True时,会将带有检测框的图像或视频保存到文件中。保存的位置通常是runs/detect/predict目录下。

save_txt参数

save_txt参数控制是否将预测结果保存为文本文件。每个图像的预测结果会保存为一个同名的.txt文件,格式为:<class> <x_center> <y_center> <width> <height> <confidence>,其中坐标是相对于图像宽高的归一化值。

这种格式便于后续处理和分析,特别是当你需要将检测结果用于其他应用时。

save_crop参数

save_crop参数控制是否保存裁剪的检测框。设置为True时,会将每个检测到的物体裁剪并保存为单独的图像文件。这对于收集特定物体的样本很有用,例如收集人脸图像用于人脸识别模型的训练。

device参数

device参数指定运行设备。可以设置为:

  • cpu:使用CPU
  • 0:使用第一个GPU
  • 1,2,3:使用多个GPU
  • mps:使用Apple的Metal Performance Shaders(适用于Mac)

如果你有NVIDIA GPU并且安装了CUDA,建议使用GPU以获得更快的速度。

max_det参数

max_det参数设置每张图像最大检测数量。默认值是300,对于大多数场景已经足够。如果你的场景中可能有大量物体,可以增加这个值;如果你想限制检测数量,可以减少这个值。

vid_stride参数

vid_stride参数设置视频帧间隔。默认值是1,表示处理每一帧。设置为2表示每隔一帧处理一次,即处理第1、3、5帧...这可以加快视频处理速度,但可能会遗漏快速移动的物体。

line_width参数

line_width参数设置边界框的线宽。默认值是None,表示自动根据图像大小调整。你也可以设置一个具体的整数值,如line_width=2

visualize参数

visualize参数控制是否可视化特征图。设置为True时,会保存模型的特征图可视化结果。这对于理解模型的工作原理和调试模型很有用。

augment参数

augment参数控制是否使用测试时增强(TTA,Test Time Augmentation)。设置为True时,会对输入图像进行多种变换(如翻转、缩放等),然后对多个预测结果进行集成。这可以提高检测精度,但会增加计算时间。

agnostic_nms参数

agnostic_nms参数控制是否使用类别无关的NMS。设置为True时,NMS不会考虑类别,只考虑IoU。这在某些场景下可能有用,例如当不同类别的物体重叠时。

classes参数

classes参数指定只检测特定类别。例如,classes=0,2表示只检测类别0和类别2的物体。COCO数据集中,0表示人,2表示汽车。这对于专注于特定物体的检测很有用。

retina_masks参数

retina_masks参数控制是否使用Retina masks。这主要用于实例分割任务,可以生成更高质量的掩码。

3.3 预测命令示例

让我们通过一些具体的示例来了解如何使用这些参数:

示例1:基本图片检测
bash 复制代码
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

这个命令使用YOLOv8n模型对网络上的图片进行检测。系统会自动下载图片和模型(如果本地没有的话),然后进行检测,并显示结果。

示例2:调整置信度阈值
bash 复制代码
yolo predict model=yolov8n.pt source='image.jpg' conf=0.5

这个命令将置信度阈值提高到0.5,只显示置信度大于50%的检测结果。这可以减少低置信度的误检,但可能会遗漏一些真实物体。

示例3:检测视频并保存结果
bash 复制代码
yolo predict model=yolov8n.pt source='video.mp4' save=True

这个命令对视频文件进行检测,并将带有检测框的视频保存到runs/detect/predict目录下。

示例4:使用摄像头实时检测
bash 复制代码
yolo predict model=yolov8n.pt source=0 show=True

这个命令使用默认摄像头进行实时检测,并在窗口中显示结果。按下q键可以退出。

示例5:只检测特定类别(如只检测人和车)
bash 复制代码
yolo predict model=yolov8n.pt source='image.jpg' classes=0,2

这个命令只检测人(类别0)和汽车(类别2)。COCO数据集中的类别编号如下:

  • 0: person(人)
  • 1: bicycle(自行车)
  • 2: car(汽车)
  • 3: motorcycle(摩托车)
  • ...
示例6:批量检测文件夹中的所有图片
bash 复制代码
yolo predict model=yolov8n.pt source='path/to/images/' save=True

这个命令会检测指定文件夹中的所有图片,并保存结果。

示例7:保存检测结果为不同格式
bash 复制代码
# 保存标注图片
yolo predict model=yolov8n.pt source='image.jpg' save=True

# 保存检测结果为txt文件
yolo predict model=yolov8n.pt source='image.jpg' save_txt=True

# 保存裁剪的检测框
yolo predict model=yolov8n.pt source='image.jpg' save_crop=True

这三个命令分别保存不同格式的结果:带有检测框的图片、文本格式的检测结果、裁剪的检测框。

3.4 预测结果说明

运行预测命令后,你会看到类似以下的输出:

复制代码
Ultralytics YOLOv8.0.200 🚀 Python-3.10.12 torch-2.1.0 CPU
YOLOv8n summary (fused): 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs

image 1/1 path/to/image.jpg: 640x480 4 persons, 1 bus, 142.5ms
Speed: 2.0ms preprocess, 142.5ms inference, 1.0ms postprocess per image
Results saved to runs/detect/predict

输出信息说明:

  • 模型摘要:显示模型的层数、参数量、计算量等信息
  • 检测进度:显示当前处理的图片序号和总数
  • 检测结果:显示检测到的物体类别和数量
  • 速度统计:显示预处理、推理、后处理的时间
  • 保存路径:显示结果的保存位置

这些信息对于理解模型性能和调试很有用。例如,你可以通过速度统计了解哪些部分是性能瓶颈,通过检测结果了解模型检测到了什么物体。

四、训练模式(Train)详解

训练模式用于在自定义数据集上训练YOLOv8模型。这一部分将详细介绍如何使用yolo train命令,以及各种参数的作用和用法。

4.1 基本训练命令

bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

这行命令告诉YOLOv8:

  1. 使用coco128.yaml作为数据集配置文件
  2. yolov8n.pt预训练模型开始训练
  3. 训练100轮(epochs)
  4. 使用640x640的输入图像尺寸

参数说明

  • data:数据集配置文件路径(YAML格式)
  • model:预训练模型文件
  • epochs:训练轮数
  • imgsz:输入图像尺寸

4.2 训练参数详解

训练模式支持大量参数配置,以下是常用参数:

参数 默认值 说明 示例
data - 数据集配置文件 data=coco128.yaml
model yolov8n.pt 预训练模型 model=yolov8s.pt
epochs 100 训练轮数 epochs=200
patience 50 早停耐心值 patience=100
batch 16 批次大小 batch=32
imgsz 640 输入图像尺寸 imgsz=320
save True 保存检查点 save=True
save_period -1 保存周期 save_period=10
cache False 缓存数据集 cache=True
device - 训练设备 device=0
workers 8 数据加载线程数 workers=4
project runs/detect 项目目录 project=my_project
name train 实验名称 name=exp1
exist_ok False 覆盖现有实验 exist_ok=True
pretrained True 使用预训练权重 pretrained=True
optimizer SGD 优化器 optimizer=Adam
verbose False 详细输出 verbose=True
seed 0 随机种子 seed=42
deterministic True 确定性训练 deterministic=True
single_cls False 单类别训练 single_cls=True
rect False 矩形训练 rect=True
cos_lr False 余弦学习率 cos_lr=True
close_mosaic 10 关闭mosaic的epoch close_mosaic=0
resume False 恢复训练 resume=True
amp True 自动混合精度 amp=True
fraction 1.0 使用数据比例 fraction=0.5
profile False 性能分析 profile=True
freeze - 冻结层数 freeze=10
lr0 0.01 初始学习率 lr0=0.001
lrf 0.01 最终学习率 lrf=0.01
momentum 0.937 SGD动量 momentum=0.9
weight_decay 0.0005 权重衰减 weight_decay=0.001
warmup_epochs 3.0 Warmup轮数 warmup_epochs=5
warmup_momentum 0.8 Warmup动量 warmup_momentum=0.5
warmup_bias_lr 0.1 Warmup偏置学习率 warmup_bias_lr=0.05
box 7.5 边界框损失权重 box=5.0
cls 0.5 分类损失权重 cls=1.0
dfl 1.5 DFL损失权重 dfl=2.0
pose 12.0 姿态损失权重 pose=10.0
kobj 2.0 关键点目标损失权重 kobj=1.0
label_smoothing 0.0 标签平滑 label_smoothing=0.1
nbs 64 名义批次大小 nbs=128
overlap_mask True 掩码重叠 overlap_mask=True
mask_ratio 4 掩码下采样比例 mask_ratio=8
dropout 0.0 Dropout率 dropout=0.1
val True 训练时验证 val=True
plots False 保存训练图表 plots=True

让我们来详细解释这些参数的作用和使用场景:

data参数

data参数指定数据集配置文件的路径。这个YAML文件包含了数据集的路径、训练集和验证集的位置、类别名称等信息。下面是一个示例:

yaml 复制代码
# coco128.yaml
path: ../datasets/coco128  # 数据集根目录
train: images/train2017    # 训练集图像目录(相对于path)
val: images/train2017      # 验证集图像目录

# 类别
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  # ... 更多类别
model参数

model参数指定预训练模型的路径。YOLOv8提供了多个预训练模型,从小到大依次是:

  • yolov8n.pt:最小模型,速度最快,精度最低
  • yolov8s.pt:小型模型,平衡速度和精度
  • yolov8m.pt:中型模型,较高精度
  • yolov8l.pt:大型模型,高精度
  • yolov8x.pt:最大模型,精度最高,速度最慢

你也可以使用自定义的预训练模型,或者从头开始训练(设置model='')。

epochs参数

epochs参数指定训练轮数。一轮(epoch)表示模型看过一次整个训练集。默认值是100,但对于小型数据集可能需要更多轮数,对于大型数据集可能需要较少轮数。

patience参数

patience参数指定早停(early stopping)的耐心值。如果在patience轮内验证集上的性能没有提升,训练将提前停止。默认值是50,这意味着如果连续50轮验证性能没有提升,训练就会停止。

batch参数

batch参数指定批次大小。批次大小表示每次迭代中处理的样本数量。较大的批次大小可以加快训练速度,但需要更多的内存。默认值是16,你可以根据GPU内存大小调整这个值。

imgsz参数

imgsz参数指定输入图像的尺寸。默认值是640,表示输入图像会被调整为640x640。较大的图像尺寸可能会提高检测精度,特别是对于小物体,但会增加计算量和内存使用。

save参数

save参数控制是否保存训练检查点。默认值是True,表示会保存最终模型和最佳模型。检查点保存在runs/detect/train/weights目录下。

save_period参数

save_period参数指定保存检查点的周期。默认值是-1,表示只保存最终模型和最佳模型。如果设置为正整数,表示每隔这么多轮保存一次检查点。

cache参数

cache参数控制是否缓存数据集。可以设置为:

  • False:不缓存
  • Trueram:缓存到内存
  • disk:缓存到磁盘

缓存可以加快数据加载速度,特别是对于小型数据集。但对于大型数据集,缓存到内存可能会消耗大量内存。

device参数

device参数指定训练设备。可以设置为:

  • cpu:使用CPU
  • 0:使用第一个GPU
  • 1,2,3:使用多个GPU
  • mps:使用Apple的Metal Performance Shaders(适用于Mac)

如果你有NVIDIA GPU并且安装了CUDA,建议使用GPU以获得更快的训练速度。

workers参数

workers参数指定数据加载的线程数。默认值是8,你可以根据CPU核心数调整这个值。更多的线程可以加快数据加载速度,但也会消耗更多的CPU资源。

projectname参数

projectname参数指定实验的保存位置和名称。默认情况下,实验保存在runs/detect/train目录下。你可以通过设置project=my_project name=exp1将实验保存在runs/my_project/exp1目录下。

exist_ok参数

exist_ok参数控制是否覆盖现有实验。默认值是False,表示如果实验目录已存在,会报错。设置为True表示覆盖现有实验。

pretrained参数

pretrained参数控制是否使用预训练权重。默认值是True,表示使用预训练权重。设置为False表示从头开始训练。

optimizer参数

optimizer参数指定优化器。可以设置为:

  • SGD:随机梯度下降(默认)
  • Adam:Adam优化器
  • AdamW:AdamW优化器
  • RMSProp:RMSProp优化器

不同的优化器有不同的特性,SGD通常更稳定,Adam通常收敛更快。

verbose参数

verbose参数控制是否输出详细信息。默认值是False,表示只输出关键信息。设置为True会输出更详细的训练信息。

seed参数

seed参数指定随机种子,用于确保实验的可复现性。默认值是0,你可以设置为任何整数。

deterministic参数

deterministic参数控制是否使用确定性训练。默认值是True,表示尽量确保结果可复现。但这可能会降低训练速度。

single_cls参数

single_cls参数控制是否进行单类别训练。默认值是False,表示多类别训练。设置为True会将所有类别视为一个类别。

rect参数

rect参数控制是否使用矩形训练。默认值是False,表示输入图像会被调整为正方形。设置为True会保持图像的原始宽高比,这可以提高训练效率,但可能需要调整一些其他参数。

cos_lr参数

cos_lr参数控制是否使用余弦学习率调度。默认值是False,表示使用线性学习率调度。设置为True会使用余弦学习率调度,这有时可以提高最终性能。

close_mosaic参数

close_mosaic参数指定在最后多少轮关闭mosaic数据增强。默认值是10,表示在最后10轮不使用mosaic增强。这有助于模型在最后阶段适应更真实的数据分布。

resume参数

resume参数控制是否从检查点恢复训练。默认值是False,表示从头开始训练。设置为True会从最新的检查点恢复训练。

amp参数

amp参数控制是否使用自动混合精度训练。默认值是True,表示使用混合精度训练,这可以加快训练速度并减少内存使用。

fraction参数

fraction参数指定使用数据集的比例。默认值是1.0,表示使用整个数据集。你可以设置为小于1的值来使用部分数据集,这对于快速测试很有用。

profile参数

profile参数控制是否进行性能分析。默认值是False,表示不进行分析。设置为True会分析各个部分的性能,帮助找出性能瓶颈。

freeze参数

freeze参数指定冻结的层数。默认值是None,表示不冻结任何层。你可以设置为正整数来冻结前N层,这在微调时很有用。

lr0lrf参数

lr0lrf参数分别指定初始学习率和最终学习率。默认值分别是0.01和0.01。学习率是训练中最重要的超参数之一,较大的学习率可以加快收敛速度,但可能导致不稳定;较小的学习率更稳定,但收敛速度较慢。

momentum参数

momentum参数指定SGD优化器的动量。默认值是0.937。动量可以帮助优化器在平坦区域保持速度,在陡峭区域减速。

weight_decay参数

weight_decay参数指定权重衰减(L2正则化)系数。默认值是0.0005。权重衰减可以防止过拟合,但设置过大会导致欠拟合。

warmup_epochswarmup_momentumwarmup_bias_lr参数

这些参数指定学习率预热的设置。在训练初期,学习率会从较小的值逐渐增加到初始学习率,这有助于稳定训练过程。

boxclsdflposekobj参数

这些参数指定不同损失项的权重。默认值分别是7.5、0.5、1.5、12.0和2.0。调整这些权重可以改变模型对不同方面的关注程度。

label_smoothing参数

label_smoothing参数指定标签平滑的系数。默认值是0.0,表示不使用标签平滑。标签平滑可以防止模型过于自信,有助于提高泛化能力。

nbs参数

nbs参数指定名义批次大小,用于自动缩放超参数。默认值是64。这个参数通常不需要调整。

overlap_maskmask_ratio参数

这些参数主要用于实例分割任务,控制掩码的重叠和下采样比例。

dropout参数

dropout参数指定Dropout率。默认值是0.0,表示不使用Dropout。Dropout可以防止过拟合,但在YOLOv8中通常不使用。

val参数

val参数控制是否在训练过程中进行验证。默认值是True,表示每轮训练后都会在验证集上评估模型性能。

plots参数

plots参数控制是否保存训练图表。默认值是False,表示不保存。设置为True会保存各种训练图表,如损失曲线、学习率曲线等,这些图表对于分析训练过程很有用。

4.3 训练命令示例

让我们通过一些具体的示例来了解如何使用这些参数:

示例1:基本训练
bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

这是一个最基本的训练命令,使用COCO128数据集和YOLOv8n模型,训练100轮,输入图像尺寸为640x640。

示例2:使用更大的批次和图像尺寸
bash 复制代码
yolo detect train data=coco128.yaml model=yolov8m.pt epochs=200 batch=32 imgsz=800

这个命令使用更大的模型(YOLOv8m)、更多的训练轮数(200)、更大的批次大小(32)和更大的图像尺寸(800)。这需要更多的GPU内存,但可能会提高检测精度。

示例3:使用Adam优化器
bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 optimizer=Adam lr0=0.001

这个命令使用Adam优化器而不是默认的SGD,并设置初始学习率为0.001。Adam优化器通常收敛更快,但可能不如SGD稳定。

示例4:单GPU训练
bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 device=0

这个命令指定使用第一个GPU进行训练。如果你有多个GPU,但只想使用其中一个,这个命令很有用。

示例5:多GPU训练
bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 device=0,1,2,3

这个命令指定使用4个GPU进行训练。多GPU训练可以加快训练速度,但需要更多的GPU内存。

示例6:恢复训练
bash 复制代码
yolo detect train data=coco128.yaml model=last.pt epochs=100 resume=True

这个命令从最新的检查点(last.pt)恢复训练。如果训练过程中被中断,这个命令很有用。

示例7:自定义实验名称
bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 project=my_project name=exp1

这个命令将实验保存在runs/my_project/exp1目录下,而不是默认的runs/detect/train目录。这对于组织多个实验很有用。

4.4 数据集配置文件

训练需要提供一个YAML格式的数据集配置文件。这个文件包含了数据集的路径、训练集和验证集的位置、类别名称等信息。以下是一个示例:

yaml 复制代码
# coco128.yaml
path: ../datasets/coco128  # 数据集根目录
train: images/train2017    # 训练集图像目录(相对于path)
val: images/train2017      # 验证集图像目录

# 类别
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  # ... 更多类别

这个配置文件指定了:

  • 数据集的根目录:../datasets/coco128
  • 训练集图像目录:images/train2017(相对于根目录)
  • 验证集图像目录:images/train2017(相对于根目录)
  • 类别名称:从0开始编号,每个编号对应一个类别名称

对于自定义数据集,你需要创建一个类似的配置文件,并根据你的数据集结构修改路径和类别名称。YOLOv8期望图像和标签文件有相同的名称(但扩展名不同),并放在相应的目录中。例如,如果有一张图片名为image001.jpg,那么对应的标签文件应该名为image001.txt,并放在标签目录中。

标签文件的格式为:<class> <x_center> <y_center> <width> <height>,其中坐标是相对于图像宽高的归一化值(0到1之间)。

五、验证模式(Val)详解

验证模式用于在验证集上评估模型的性能。这一部分将详细介绍如何使用yolo val命令,以及各种参数的作用和用法。

5.1 基本验证命令

bash 复制代码
yolo detect val model=yolov8n.pt data=coco128.yaml

这行命令告诉YOLOv8:

  1. 使用yolov8n.pt模型
  2. coco128.yaml指定的验证集上评估模型性能

5.2 验证参数详解

参数 默认值 说明 示例
model - 模型文件 model=best.pt
data - 数据集配置文件 data=coco128.yaml
batch 16 批次大小 batch=32
imgsz 640 输入图像尺寸 imgsz=320
conf 0.001 置信度阈值 conf=0.25
iou 0.6 NMS IoU阈值 iou=0.5
device - 运行设备 device=0
save_json False 保存结果为JSON save_json=True
save_hybrid False 保存混合标签 save_hybrid=True
conf_thres 0.001 置信度阈值 conf_thres=0.001
plots False 保存验证图表 plots=True
rect False 矩形验证 rect=True
split val 数据集划分 split=test

让我们来详细解释这些参数的作用和使用场景:

model参数

model参数指定要评估的模型文件。通常,你会使用训练过程中得到的最佳模型(best.pt)或最终模型(last.pt)。

data参数

data参数指定数据集配置文件的路径。这个文件应该包含验证集的位置和类别信息。

batch参数

batch参数指定批次大小。较大的批次大小可以加快验证速度,但需要更多的内存。

imgsz参数

imgsz参数指定输入图像的尺寸。这应该与训练时使用的尺寸一致,以获得准确的性能评估。

confconf_thres参数

confconf_thres参数都指定置信度阈值,只有置信度高于这个阈值的检测结果才会被考虑。默认值是0.001,这是一个很低的值,确保大多数检测结果都被考虑在内。

iou参数

iou参数指定NMS的IoU阈值。这应该与训练时使用的值一致,以获得准确的性能评估。

device参数

device参数指定运行设备。可以设置为cpu0(第一个GPU)等。

save_json参数

save_json参数控制是否将验证结果保存为COCO格式的JSON文件。这对于与其他方法比较很有用。

save_hybrid参数

save_hybrid参数控制是否保存混合标签。混合标签结合了真实标签和预测标签,这对于分析模型很有用。

plots参数

plots参数控制是否保存验证图表,如混淆矩阵、PR曲线等。这些图表对于理解模型性能很有用。

rect参数

rect参数控制是否使用矩形验证。如果训练时使用了rect=True,验证时也应该使用相同的设置。

split参数

split参数指定使用数据集的哪个部分进行验证。默认值是val,表示使用验证集。你也可以设置为test,表示使用测试集(如果数据集有测试集的话)。

5.3 验证命令示例

让我们通过一些具体的示例来了解如何使用这些参数:

示例1:基本验证
bash 复制代码
yolo detect val model=yolov8n.pt data=coco128.yaml

这是一个最基本的验证命令,使用YOLOv8n模型在COCO128验证集上评估性能。

示例2:在测试集上验证
bash 复制代码
yolo detect val model=best.pt data=coco128.yaml split=test

这个命令在测试集上评估模型性能,而不是默认的验证集。

示例3:保存验证结果为JSON
bash 复制代码
yolo detect val model=best.pt data=coco128.yaml save_json=True

这个命令将验证结果保存为COCO格式的JSON文件,便于与其他方法比较。

六、导出模式(Export)详解

导出模式用于将YOLOv8模型转换为其他格式,便于在不同平台部署。这一部分将详细介绍如何使用yolo export命令,以及各种参数的作用和用法。

6.1 支持导出的格式

YOLOv8支持导出为以下格式:

格式 命令 说明
PyTorch - 原生格式
TorchScript format=torchscript TorchScript模型
ONNX format=onnx ONNX格式
OpenVINO format=openvino Intel OpenVINO
TensorRT format=engine NVIDIA TensorRT
CoreML format=coreml Apple CoreML
TensorFlow SavedModel format=saved_model TF SavedModel
TensorFlow GraphDef format=pb TF GraphDef
TensorFlow Lite format=tflite TF Lite
TensorFlow Edge TPU format=edgetpu Coral Edge TPU
TensorFlow.js format=tfjs TF.js
PaddlePaddle format=paddle PaddlePaddle
ncnn format=ncnn Tencent ncnn

这些格式覆盖了大多数部署场景,无论是服务器端部署(ONNX、TensorRT)、移动端部署(TensorFlow Lite、CoreML)还是Web部署(TensorFlow.js),都有对应的格式。

6.2 导出参数详解

参数 默认值 说明 示例
model - 模型文件 model=yolov8n.pt
format torchscript 导出格式 format=onnx
imgsz 640 输入图像尺寸 imgsz=320
keras False 使用Keras keras=True
optimize False 优化模型 optimize=True
half False FP16半精度 half=True
int8 False INT8量化 int8=True
dynamic False 动态轴 dynamic=True
simplify False 简化ONNX simplify=True
opset - ONNX opset版本 opset=12
workspace 4 TensorRT工作空间(GB) workspace=8
nms False 添加NMS到模型 nms=True

让我们来详细解释这些参数的作用和使用场景:

model参数

model参数指定要导出的模型文件。通常,你会使用训练过程中得到的最佳模型(best.pt)或最终模型(last.pt)。

format参数

format参数指定导出的格式。默认值是torchscript,但你可以根据需要选择其他格式。

imgsz参数

imgsz参数指定输入图像的尺寸。这应该与训练时使用的尺寸一致,以确保模型性能。

keras参数

keras参数控制是否使用Keras格式导出TensorFlow模型。默认值是False,表示使用SavedModel格式。

optimize参数

optimize参数控制是否对导出的模型进行优化。对于某些格式(如TensorFlow Lite),优化可以减小模型大小和提高推理速度。

half参数

half参数控制是否导出FP16半精度模型。半精度模型可以减小模型大小和提高推理速度,特别是在支持半精度计算的硬件上。

int8参数

int8参数控制是否导出INT8量化模型。量化可以显著减小模型大小和提高推理速度,但可能会略微降低精度。

dynamic参数

dynamic参数控制是否导出动态轴模型。对于ONNX格式,动态轴模型可以处理不同尺寸的输入图像。

simplify参数

simplify参数控制是否简化ONNX模型。简化可以移除冗余操作,减小模型大小。

opset参数

opset参数指定ONNX的opset版本。不同的版本支持不同的操作,默认使用最新版本。

workspace参数

workspace参数指定TensorRT的工作空间大小(GB)。较大的工作空间可以提高优化效果,但需要更多的GPU内存。

nms参数

nms参数控制是否将NMS(非极大值抑制)操作添加到模型中。这可以简化部署流程,但会增加模型大小。

6.3 导出命令示例

让我们通过一些具体的示例来了解如何使用这些参数:

示例1:导出为ONNX格式
bash 复制代码
yolo export model=yolov8n.pt format=onnx

这个命令将YOLOv8n模型导出为ONNX格式,ONNX是一种通用的模型交换格式,支持多种推理引擎。

示例2:导出为TensorRT格式
bash 复制代码
yolo export model=yolov8n.pt format=engine device=0

这个命令将YOLOv8n模型导出为TensorRT引擎,TensorRT是NVIDIA的高性能推理引擎,特别适用于NVIDIA GPU。

示例3:导出为TensorFlow Lite格式
bash 复制代码
yolo export model=yolov8n.pt format=tflite

这个命令将YOLOv8n模型导出为TensorFlow Lite格式,TFLite是Google的轻量级推理框架,特别适用于移动和嵌入式设备。

示例4:导出为CoreML格式(macOS)
bash 复制代码
yolo export model=yolov8n.pt format=coreml

这个命令将YOLOv8n模型导出为CoreML格式,CoreML是Apple的机器学习框架,适用于iOS和macOS设备。

示例5:导出FP16半精度模型
bash 复制代码
yolo export model=yolov8n.pt format=onnx half=True

这个命令导出FP16半精度的ONNX模型,可以减小模型大小和提高推理速度,特别是在支持半精度计算的硬件上。

示例6:导出INT8量化模型
bash 复制代码
yolo export model=yolov8n.pt format=onnx int8=True

这个命令导出INT8量化的ONNX模型,可以显著减小模型大小和提高推理速度,但可能会略微降低精度。

七、其他模式详解

除了预测、训练、验证和导出模式,YOLOv8 CLI还提供了其他一些有用的模式。这一部分将简要介绍这些模式。

7.1 跟踪模式(Track)

跟踪模式用于在视频中对目标进行持续跟踪。它扩展了预测功能,不仅检测每帧中的物体,还在帧之间建立关联,为每个物体分配一个唯一的ID。

bash 复制代码
yolo detect track model=yolov8n.pt source='video.mp4'

跟踪参数:

  • tracker:跟踪器类型(botsort.yamlbytetrack.yaml
  • persist:持久化跟踪ID

跟踪模式对于视频分析、监控系统等应用非常有用。例如,你可以使用跟踪模式来统计视频中通过某个区域的人数,或者跟踪特定物体的运动轨迹。

7.2 基准测试模式(Benchmark)

基准测试模式用于测试模型在不同格式下的性能。它可以帮助你了解不同格式的速度和精度差异,从而选择最适合你应用的格式。

bash 复制代码
yolo benchmark model=yolov8n.pt data=coco128.yaml imgsz=640 half=False

基准测试会评估模型在多种格式(如PyTorch、TorchScript、ONNX、TensorRT等)下的性能,包括推理速度和内存使用情况。这对于选择部署格式很有帮助。

7.3 超参数调优模式(Tune)

超参数调优模式使用Ray Tune自动搜索最优超参数。训练深度学习模型需要调整很多超参数,如学习率、批次大小、权重衰减等。手动调整这些参数既耗时又容易出错,而自动超参数调优可以更高效地找到最优组合。

bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=10 iterations=100

参数说明:

  • iterations:超参数搜索的迭代次数

超参数调优会尝试多种超参数组合,并根据验证集性能选择最佳组合。这对于提高模型性能很有帮助,特别是对于竞赛或生产环境中的关键应用。

八、高级使用技巧

这一部分将介绍一些高级使用技巧,帮助你更有效地使用YOLOv8 CLI。

8.1 参数覆盖与配置文件

除了命令行参数,YOLOv8还支持通过配置文件设置参数。配置文件的优先级低于命令行参数,这意味着命令行参数会覆盖配置文件中的相同参数。

默认配置文件位置~/.ultralytics/settings.yaml

自定义配置文件

bash 复制代码
yolo detect train data=coco128.yaml model=yolov8n.pt cfg=custom.yaml

配置文件是一个YAML文件,包含各种参数的默认值。这对于设置常用参数很有用,特别是当你经常使用相同的参数组合时。

8.2 环境变量设置

YOLOv8支持通过环境变量设置一些全局配置:

bash 复制代码
# 设置数据集目录
export YOLO_DATASETS_DIR=/path/to/datasets

# 设置运行目录
export YOLO_RUNS_DIR=/path/to/runs

# 设置权重目录
export YOLO_WEIGHTS_DIR=/path/to/weights

环境变量对于设置系统级配置很有用,特别是当你有固定的数据集或输出目录时。

8.3 覆盖默认参数

你可以创建一个settings.yaml文件来覆盖默认参数:

yaml 复制代码
# ~/.ultralytics/settings.yaml
datasets_dir: /path/to/datasets
weights_dir: /path/to/weights
runs_dir: /path/to/runs

这个文件会覆盖YOLOv8的默认设置,使你能够自定义数据集、权重和输出目录的位置。

8.4 命令组合与脚本化

CLI命令可以轻松组合成脚本,实现自动化工作流。以下是一些示例:

Shell脚本示例
bash 复制代码
#!/bin/bash
# train.sh - 训练脚本

# 设置参数
MODEL="yolov8n.pt"
DATA="coco128.yaml"
EPOCHS=100
IMGSZ=640

# 训练模型
echo "开始训练模型..."
yolo detect train \
    model=$MODEL \
    data=$DATA \
    epochs=$EPOCHS \
    imgsz=$IMGSZ \
    batch=16 \
    device=0 \
    project=my_project \
    name=exp1

# 验证模型
echo "验证模型..."
yolo detect val \
    model=runs/detect/exp1/weights/best.pt \
    data=$DATA

# 导出模型
echo "导出模型..."
yolo export \
    model=runs/detect/exp1/weights/best.pt \
    format=onnx

echo "完成!"

这个脚本自动化了整个训练、验证和导出流程,大大提高了工作效率。

Makefile示例
makefile 复制代码
# Makefile

.PHONY: train val export clean

MODEL = yolov8n.pt
DATA = coco128.yaml
EPOCHS = 100
IMGSZ = 640

train:
	yolo detect train model=$(MODEL) data=$(DATA) epochs=$(EPOCHS) imgsz=$(IMGSZ)

val:
	yolo detect val model=runs/detect/train/weights/best.pt data=$(DATA)

export:
	yolo export model=runs/detect/train/weights/best.pt format=onnx

clean:
	rm -rf runs/

Makefile提供了另一种组织命令的方式,特别适合复杂的项目。通过简单的make trainmake val等命令,你可以执行相应的任务。

九、常见问题与解决方案

这一部分将介绍使用YOLOv8 CLI时可能遇到的一些常见问题及其解决方案。

9.1 命令无法识别

问题 :运行yolo命令时提示"command not found"

解决方案

  1. 确认YOLOv8已正确安装:pip install ultralytics
  2. 确认虚拟环境已激活
  3. 尝试使用Python模块方式运行:python -m ultralytics ...

如果你是在Jupyter Notebook或某些IDE中运行,可能需要使用!前缀:!yolo ...

9.2 参数设置无效

问题:设置的参数没有生效

解决方案

  1. 检查参数拼写是否正确
  2. 检查参数值格式是否正确(布尔值用True/False,不是true/false
  3. 查看帮助确认参数是否存在:yolo detect train --help

有些参数可能只在特定模式下有效,例如save_txt参数只在预测模式下有效。

9.3 训练中断恢复

问题:训练过程中断,如何恢复

解决方案

bash 复制代码
# 使用resume参数恢复训练
yolo detect train model=runs/detect/train/weights/last.pt resume=True

YOLOv8会自动保存训练检查点,包括last.pt(最新模型)和best.pt(最佳模型)。使用resume=True参数可以从最新的检查点恢复训练。

9.4 多GPU训练问题

问题:多GPU训练时报错

解决方案

  1. 确保所有GPU都可用:nvidia-smi
  2. 尝试使用DataParallel而不是DistributedDataParallel
  3. 减小批次大小

多GPU训练需要足够的GPU内存,如果内存不足,可以尝试减小批次大小或使用更少的GPU。

9.5 内存不足

问题:训练或推理时报内存不足错误

解决方案

bash 复制代码
# 减小批次大小
yolo detect train data=coco128.yaml model=yolov8n.pt batch=8

# 减小图像尺寸
yolo detect train data=coco128.yaml model=yolov8n.pt imgsz=320

# 使用缓存(如果内存充足但显存不足)
yolo detect train data=coco128.yaml model=yolov8n.pt cache=disk

内存不足通常是由于批次大小或图像尺寸过大导致的。减小这些参数可以降低内存使用。如果显存不足但内存充足,可以使用cache=disk将数据集缓存到磁盘而不是内存。

十、CLI命令速查表

这一部分提供了一些常用命令的快速参考,帮助你在需要时快速找到合适的命令。

10.1 预测命令速查

bash 复制代码
# 基本预测
yolo predict model=yolov8n.pt source='image.jpg'

# 调整置信度
yolo predict model=yolov8n.pt source='image.jpg' conf=0.5

# 检测视频
yolo predict model=yolov8n.pt source='video.mp4' save=True

# 摄像头检测
yolo predict model=yolov8n.pt source=0 show=True

# 只检测特定类别
yolo predict model=yolov8n.pt source='image.jpg' classes=0,2,3

# 批量检测
yolo predict model=yolov8n.pt source='path/to/images/' save=True

10.2 训练命令速查

bash 复制代码
# 基本训练
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

# 使用更大的模型
yolo detect train data=coco128.yaml model=yolov8m.pt epochs=200 batch=32

# 使用Adam优化器
yolo detect train data=coco128.yaml model=yolov8n.pt optimizer=Adam lr0=0.001

# 单GPU训练
yolo detect train data=coco128.yaml model=yolov8n.pt device=0

# 多GPU训练
yolo detect train data=coco128.yaml model=yolov8n.pt device=0,1,2,3

# 恢复训练
yolo detect train model=last.pt resume=True

10.3 验证命令速查

bash 复制代码
# 基本验证
yolo detect val model=yolov8n.pt data=coco128.yaml

# 在测试集验证
yolo detect val model=best.pt data=coco128.yaml split=test

# 保存为JSON
yolo detect val model=best.pt data=coco128.yaml save_json=True

10.4 导出命令速查

bash 复制代码
# 导出ONNX
yolo export model=yolov8n.pt format=onnx

# 导出TensorRT
yolo export model=yolov8n.pt format=engine device=0

# 导出TensorFlow Lite
yolo export model=yolov8n.pt format=tflite

# 导出FP16
yolo export model=yolov8n.pt format=onnx half=True

# 导出INT8
yolo export model=yolov8n.pt format=onnx int8=True

十一、总结

11.1 CLI的核心价值

YOLOv8的CLI工具为计算机视觉开发提供了一个高效、简洁、易用的接口。通过CLI,你可以:

  1. 快速上手:无需编写代码,一行命令就能完成复杂任务
  2. 高效实验:快速调整参数,进行大量实验
  3. 自动化工作流:将命令集成到脚本和流水线中
  4. 易于复现:命令可以直接分享和复用

这种"一行命令搞定一切"的体验,大大降低了计算机视觉应用的门槛,使得更多人能够利用YOLOv8的强大功能。

11.2 学习建议

  1. 从预测开始:先掌握基本的预测命令,熟悉CLI的使用方式
  2. 逐步深入:在掌握基础后,尝试训练和导出等高级功能
  3. 查阅文档 :遇到问题时,使用--help查看帮助信息
  4. 实践为主:多动手实验,在实践中掌握各种参数的作用

学习CLI工具最重要的是实践。不要害怕尝试不同的参数组合,通过实验来理解每个参数的作用。当你遇到问题时,首先查看帮助信息,然后尝试调整参数,最后再查阅文档或寻求帮助。

11.3 下一步

掌握了CLI之后,你可以:

  1. 尝试在自己的数据集上训练模型
  2. 探索实例分割、姿态估计等其他任务
  3. 将训练好的模型导出并部署到不同平台
  4. 结合Python API开发更复杂的应用

YOLOv8 CLI是一个强大的工具,但它只是YOLOv8生态系统的一部分。当你掌握了CLI之后,可以进一步学习Python API,开发更复杂的应用;或者尝试其他任务,如实例分割和姿态估计;或者将模型部署到不同的平台,如移动设备、Web或边缘设备。

无论你的目标是什么,YOLOv8 CLI都为你提供了一个坚实的起点,让你能够快速实现想法,验证概念,并逐步构建更复杂的应用。

希望这篇教程能帮助你充分发挥YOLOv8 CLI的强大功能,提升你的开发效率!

相关推荐
码农三叔2 小时前
(11-4-01)完整人形机器人的设计与实现案例:机器人的站立与行走
人工智能·嵌入式硬件·机器人·人机交互·人形机器人
大模型玩家七七2 小时前
效果评估:如何判断一个祝福 AI 是否“走心”
android·java·开发语言·网络·人工智能·batch
OpenLoong 开源社区2 小时前
开源发布 | 从青龙Nano到青龙Mini:共建开源生态,首次亮相产教融合场景
人工智能·开源
水木姚姚2 小时前
AI编程画马(含AI辅助创作)
人工智能·ai编程
Faker66363aaa2 小时前
YOLOv10n改进实现CFPT-P23456算法——压力容器管道表面轻微锈蚀检测
算法·yolo·计算机视觉
老纪的技术唠嗑局2 小时前
uv × pyseekdb:把 RAG 环境与检索落地成本降到最低
人工智能
m0_603888712 小时前
Chatting with Images for Introspective Visual Thinking
人工智能·计算机视觉·ai·论文速览
MicRabbit2 小时前
openClaw安装飞书插件|核心踩坑:spawn EINVAL 错误终极解决指南
人工智能
iqiu2 小时前
自研第一个SKILL-openclaw入门
人工智能