YOLO v8 如何训练自己的数据集
本文详细介绍了如何使用YOLOv8训练自定义目标检测模型。主要内容包括:YOLOv8的环境安装(Python3.8+PyTorch+Ultralytics)、数据集准备(YOLO格式标注和组织结构)、训练配置(CLI和Python API两种方式)、模型评估指标解读及预测应用方法。通过创建.yaml配置文件,用户可以轻松适配自己的数据集,并利用预训练模型进行迁移学习。文章还提供了从数据标注到模型部
YOLO v8 如何训练自己的数据集
在计算机视觉领域,目标检测是一项核心任务,而 YOLO(You Only Look Once)系列算法凭借其高效性和准确性备受关注。YOLOv8 作为该系列的最新成员,在性能和功能上都有显著提升。本文将详细介绍如何使用 YOLOv8,并重点讲解如何利用它训练自己的数据集,让你能够针对特定目标实现精准检测。
一、YOLOv8 简介
YOLOv8 由 Ultralytics 开发,是一款集目标检测、实例分割和图像分类于一体的强大工具。它具备快速、准确且易于使用的特点,为开发者提供了友好的命令行界面(CLI)和 Python API,极大地简化了模型训练、推理和部署的流程。
二、安装 YOLOv8
(一)环境准备
推荐使用 Anaconda 来管理 Python 环境,创建一个新的虚拟环境,以避免依赖冲突。在终端中运行以下命令创建名为YOLOv8的环境,并指定 Python 版本为 3.8:
conda create -n YOLOv8 python=3.8
创建完成后,激活该环境:
conda activate YOLOv8
(二)安装 PyTorch
根据你的电脑 GPU 情况选择合适的 PyTorch 版本安装。如果你的 GPU 支持 CUDA 11.3,可使用以下命令安装:
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 --extra-index-url https://download.pytorch.org/whl/cu113 -i https://pypi.tuna.tsinghua.edu.cn/simple
若你的电脑没有 GPU 或不需要使用 GPU 加速,也可安装 CPU 版本的 PyTorch:
pip install torch torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple
(三)安装 Ultralytics 库
YOLOv8 高度集成在 Ultralytics 库中,只需安装该库即可使用 YOLOv8 的全部功能。在激活的YOLOv8环境中运行:
pip install ultralytics
至此,YOLOv8 的安装就完成了。
三、准备自己的数据集
(一)数据集格式
YOLO 系列算法使用特定格式的数据集,其标注文件为文本格式(.txt),每个标注文件对应一张图像。标注文件中每行代表一个目标,格式为class_id x_center y_center width height,其中class_id是目标类别编号(从 0 开始),x_center、y_center是目标框中心点的归一化坐标(取值范围 0 - 1),width和height是目标框的归一化宽度和高度。
例如,对于一张 640x480 像素的图像,若有一个目标框左上角坐标为 (100, 150),宽为 200,高为 100,则其在标注文件中的一行内容可能为:
0 0.234 0.396 0.312 0.208
(二)标注工具
你可以使用 Labelme、MakeSense.ai 等标注工具对图像进行标注。以 Labelme 为例,安装并打开 Labelme 后,通过 “Open Dir” 选择包含图像的文件夹,然后对每张图像进行目标框标注,完成后保存标注文件,Labelme 会自动生成对应的.json格式标注文件,你可以通过脚本将其转换为 YOLO 所需的.txt格式。
(三)数据集结构
将准备好的数据集按照以下结构组织:
your_dataset/
├── images/
│ ├── train/
│ │ ├── image1.jpg
│ │ ├── image2.jpg
│ │ └──...
│ ├── val/
│ │ ├── image3.jpg
│ │ ├── image4.jpg
│ │ └──...
│ └── test/
│ ├── image5.jpg
│ ├── image6.jpg
│ └──...
└── labels/
├── train/
│ ├── image1.txt
│ ├── image2.txt
│ └──...
├── val/
│ ├── image3.txt
│ ├── image4.txt
│ └──...
└── test/
├── image5.txt
├── image6.txt
└──...
images文件夹存放图像,labels文件夹存放对应的标注文件,并且train、val、test文件夹分别用于存放训练集、验证集和测试集的数据。
(四)创建数据集配置文件(.yaml)
在数据集根目录下创建一个.yaml文件,例如your_dataset.yaml,用于描述数据集的相关信息。文件内容如下:
path: /path/to/your_dataset # 数据集根目录路径
train: images/train # 训练集图像文件夹相对路径
val: images/val # 验证集图像文件夹相对路径
test: images/test # 测试集图像文件夹相对路径(可选)
nc: 2 # 类别数量
names: ['class1', 'class2'] # 类别名称列表,顺序与class_id对应
请根据实际情况修改path、nc和names字段。
四、训练 YOLOv8 模型
(一)使用命令行界面(CLI)训练
打开终端,确保当前处于YOLOv8环境中,然后使用以下命令进行训练:
yolo task=detect mode=train model=yolov8n.pt data=your_dataset.yaml epochs=100 batch=16 imgsz=640
task:指定任务类型,这里是detect(目标检测),也可以是segment(实例分割)或classify(图像分类)。
mode:指定模式,train表示训练模式。
model:选择预训练模型,yolov8n.pt是 YOLOv8 的 nano 版本,模型较小,训练速度快,也可以根据需求选择其他版本,如yolov8s.pt、yolov8m.pt等。
data:指定数据集配置文件路径。
epochs:设置训练轮数,这里设置为 100 轮,可根据实际情况调整。
batch:指定每批次训练的样本数量,根据 GPU 显存大小调整,一般越大训练越稳定,但可能会超出显存。
imgsz:指定输入图像的大小,默认 640x640 像素。
(二)使用 Python API 训练
在 Python 脚本中,你也可以使用 Ultralytics 的 Python API 进行训练,示例代码如下:
from ultralytics import YOLO
# 加载预训练模型
model = YOLO('yolov8n.pt')
# 开始训练
results = model.train(
data='your_dataset.yaml',
epochs=100,
batch=16,
imgsz=640
)
训练过程中,模型会在每一轮训练后输出训练损失、验证损失、mAP(平均精度均值)等指标,你可以根据这些指标来监控训练进度和模型性能。
五、评估训练好的模型
训练完成后,需要对模型进行评估,以了解其在未知数据上的表现。使用以下命令进行评估:
yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=your_dataset.yaml
mode:设置为val表示验证模式。
model:指定训练好的模型权重文件路径,一般在runs/detect/train/weights/目录下,best.pt是训练过程中验证集上表现最好的模型权重。
data:数据集配置文件路径。
评估结果会输出模型在验证集上的 mAP、召回率、精确率等指标,通过这些指标可以判断模型的性能是否满足需求。
六、使用训练好的模型进行预测
当你对模型性能满意后,就可以使用它对新的图像或视频进行目标检测预测了。使用命令行:
yolo task=detect mode=predict model=runs/detect/train/weights/best.pt source=path/to/your/image.jpg show=true
mode:设置为predict表示预测模式。
source:指定要预测的图像或视频路径,也可以是摄像头设备(如0表示默认摄像头)。
show:设置为true表示在预测时显示检测结果图像。
若使用 Python API:
from ultralytics import YOLO
# 加载训练好的模型
model = YOLO('runs/detect/train/weights/best.pt')
# 对图像进行预测
results = model.predict('path/to/your/image.jpg')
# 处理预测结果
for result in results:
boxes = result.boxes # 检测框信息
classes = result.boxes.cls # 类别信息
scores = result.boxes.conf # 置信度分数
END

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)