‹ 返回笔记 Esc·

YOLO 命令

模型导出格式 开发调试阶段: 如果需要调试模型、继续训练或者进行实验验证,.pt 和 .torchscript 是最常见选择。 跨平台部署: 在需要同时支持多个后端或多个硬件环境时,优先选用 ONNX…

模型导出格式

开发调试阶段:

如果需要调试模型、继续训练或者进行实验验证,.pt 和 .torchscript 是最常见选择。

跨平台部署:

在需要同时支持多个后端或多个硬件环境时,优先选用 ONNX,因为它是目前最通用的中间格式。

高性能 GPU 推理:

对于 NVIDIA GPU 场景,直接导出 TensorRT(.engine) 可显著提升推理速度。

CPU 优化或嵌入式设备:

可以选择 OpenVINO(Intel)TFLite(移动端) 或适配像 NCNN、MNN 这样的轻量框架。

Web / 浏览器部署:

选择 TensorFlow.js 格式,可以直接在浏览器端运行。

苹果设备部署:

如果目标是 iOS 或 macOS 原生应用,导出为 CoreML(.mlpackage) 是最佳选择。

导出时可以结合一些参数进一步优化模型性能:

  • 动态输入(dynamic)

允许模型在不同尺寸下推理,适用于视频流、多分辨率输入等。

  • 量化(half / int8)

可减小体积,在边缘设备或移动端上显著提升速度和效率。

  • 简化模型结构(simplify)

减少冗余计算,提高部署性能。


训练流程

步骤 1:准备图片

1# 创建数据集目录结构
2datasets/
3  my_custom_dataset/
4    images/
5      train/
6        img1.jpg
7        img2.jpg
8        ...
9      val/
10        img1.jpg
11        ...
12    labels/
13      train/
14        img1.txt
15        img2.txt
16        ...
17      val/
18        img1.txt
19        ...

步骤 2:使用 Label Studio / Labelme 标注

1uv tool install labelme
2labelme

步骤 3:创建数据集配置文件

创建 my_custom_dataset.yaml:

1# 数据集路径
2path: ./datasets/my_custom_dataset
3
4# 训练和验证集路径(相对于 path)
5train: images/train
6val: images/val
7
8# 类别数量
9nc: 3
10
11# 类别名称(根据你的实际类别修改)
12names:
13  0: cat          # 你的类别1
14  1: dog          # 你的类别2
15  2: bird         # 你的类别3

步骤 4:开始训练

1from ultralytics import YOLO
2
3# 加载预训练模型(推荐,迁移学习效果更好)
4model = YOLO("yolov8n.pt")
5
6# 使用你的自定义数据集训练
7results = model.train(
8    data="my_custom_dataset.yaml",  # 你的数据集配置
9    epochs=100,
10    imgsz=640,
11    batch=16
12)

完整示例:识别自定义物体

假设要识别“苹果”、“香蕉”、“橙子”:

  1. 收集图片:每种水果至少 100 张
  2. 标注:用 Labelme 标注每张图片
  3. 创建配置文件 fruits.yaml:
1path: ./datasets/fruits
2train: images/train
3val: images/val
4nc: 3
5names:
6  0: apple
7  1: banana
8  2: orange
  1. 训练:
1model = YOLO("yolov8n.pt")
2model.train(data="fruits.yaml", epochs=100)

注意事项

  • 数据量:每个类别至少 100 张,越多越好
  • 数据质量:标注要准确,边界框要贴合目标
  • 数据平衡:各类别数量尽量均衡
  • 数据划分:训练集 70%,验证集 20%,测试集 10%
  • 迁移学习:使用预训练模型(如 yolov8n.pt)效果更好

Labelme 导出成 yolo 格式

1uv tool install labelme2yolo
2labelme2yolo --json_dir /path/to/labelme_json_files
  • 读取你所有的 labelme JSON
  • 生成对应的 YOLO 标注 TXT
  • 可输出训练集/验证集划分结构
  • 并生成一个 dataset.yaml 等训练配置文件