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)
完整示例:识别自定义物体
假设要识别“苹果”、“香蕉”、“橙子”:
- 收集图片:每种水果至少 100 张
- 标注:用 Labelme 标注每张图片
- 创建配置文件 fruits.yaml:
1path: ./datasets/fruits
2train: images/train
3val: images/val
4nc: 3
5names:
6 0: apple
7 1: banana
8 2: orange
- 训练:
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 等训练配置文件