使用 Ultralytics YOLOv8 训练自定义目标检测模型
Ultralytics 的 YOLOv8 是目前目标检测领域中最流行、最易用的开源项目之一。本文将手把手教你如何使用 YOLOv8 训练自定义数据集,适用于想要检测特定物体或进行项目落地的开发者。
🧰 一、环境准备
首先,你需要配置好 Python 环境并安装 ultralytics
。
1. 创建虚拟环境(可选)
conda create -n yolo_env python=3.10 -y
conda activate yolo_env
2. 安装 Ultralytics YOLOv8
pip install ultralytics
验证是否安装成功:
yolo help
📁 二、准备自定义数据集
YOLOv8 使用 YOLO 格式,每张图片需配套一个 .txt
标签文件,格式如下:
class_id x_center y_center width height
坐标都是对图片宽高的归一化值(范围在 0~1 之间)。
1. 数据集目录结构
建议整理成如下结构:
datasets/
└── my_dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
2. 数据配置 YAML 文件
新建 my_dataset.yaml
:
path: datasets/my_dataset
train: images/train
val: images/val
names:
0: cat
1: dog
2: rabbit
🚀 三、开始训练模型
使用 yolo
命令行开始训练:
yolo task=detect mode=train model=yolov8n.yaml data=my_dataset.yaml epochs=100 imgsz=640 batch=16
参数说明:
task=detect
:目标检测任务model=yolov8n.yaml
:使用轻量级模型data=my_dataset.yaml
:数据配置文件epochs=100
:训练 100 轮imgsz=640
:输入图像大小batch=16
:批量大小
训练过程会生成相关结果于 runs/detect/train/
。
📊 四、查看训练结果
训练结束后,会生成:
results.png
:Loss/精度/收回率/响应时间折线图weights/
:包括best.pt
,last.pt
模型
使用如下方式可观看评估指标:
from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt')
metrics = model.val()
🧪 五、模型推理测试
1. 命令行模型推理
yolo task=detect mode=predict model=runs/detect/train/weights/best.pt source=path/to/image.jpg
2. Python API
from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt')
results = model('path/to/image.jpg')
results[0].show()
💪 附加:评估结果推荐代码
from ultralytics import YOLO
# 载入最佳模型
model = YOLO("runs/detect/train/weights/best.pt")
# 进行验证
metrics = model.val()
# 输出统计结果
print("mAP50:", metrics.box.map50)
print("mAP50-95:", metrics.box.map)
print("Precision:", metrics.box.precision)
print("Recall:", metrics.box.recall)
✅ 总结
使用 Ultralytics YOLOv8 训练自定义数据集只需几个步骤:
- 准备数据
- 编写
.yaml
配置 - 执行训练命令
- 推理和可视化结果
Ultralytics 提供了简单结构、规范符合的方式,很适合新手快速实现项目落地。