YOLOv8是YOLO(You Only Look Once)系列目标检测算法中的最新版本。相较于前几代版本,YOLOv8在准确性和速度上都有了显著的提升,非常适合用于实际的目标检测任务。本文将详细介绍如何复现YOLOv8,并训练自己的数据集,分享整个过程中的代码示例。
环境准备
在开始之前,我们需要安装一些必要的库和工具。我们建议使用Python 3.7及以上版本,并确保安装了以下库:
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
pip install opencv-python
pip install matplotlib
pip install PyYAML
pip install seaborn
此外,确保你有一个合适的NVIDIA显卡驱动以及CUDA工具包。
数据集准备
YOLO模型支持多种数据集格式,但我们将使用YOLO的标准格式。在开始之前,你需要准备自己的数据集,按照以下步骤进行组织:
- 创建一个主目录,如
dataset/
。 - 在主目录下,创建
images/
和labels/
两个子目录。 - 将图像文件放入
images/
目录,并为每张图片创建一个对应的标签文件放在labels/
目录。标签文件应与图像文件同名,使用.txt
扩展名,内容格式为:<class_id> <x_center> <y_center> <width> <height>
,其中坐标为相对坐标。
配置文件
在训练之前,需要为YOLOv8配置一个数据集的配置文件,例如data.yaml
,示例内容如下:
train: dataset/images/train
val: dataset/images/val
nc: 2 # 类别数量
names: ['class1', 'class2'] # 类别名称
训练模型
接下来,我们将训练YOLOv8模型。你可以使用以下代码启动训练:
import os
import torch
# 检查是否有可用的GPU
device = 'cuda' if torch.cuda.is_available() else 'cpu'
# YOLOv8的训练命令
os.system('python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov8.pt --cache')
这里的参数解释如下:
--img
:输入图像的尺寸。--batch
:每个批次的图像数量。--epochs
:训练的轮数。--data
:数据集配置文件的路径。--weights
:预训练权重文件的路径(你可以使用预训练的YOLOv8模型)。--cache
:开启缓存以加速训练。
评估模型
训练完成后,我们可以评估模型的性能。可以使用以下命令进行评估:
os.system('python val.py --weights runs/train/exp/weights/best.pt --data data.yaml --img 640')
进行预测
在训练完成并进行模型评估后,你可以利用训练好的模型进行预测。以下是实现预测的示例代码:
import cv2
from models.common import DetectMultiBackend
# 加载模型
model = DetectMultiBackend('runs/train/exp/weights/best.pt', device=device)
# 读取图像
img = cv2.imread('path/to/your/image.jpg')
results = model(img)
# 解析结果
boxes = results.xyxy[0] # 第一张图像的结果
for box in boxes:
x1, y1, x2, y2, conf, cls = box
print(f'Detected {model.names[int(cls)]} with confidence {conf:.2f}')
总结
经过上述步骤,你成功复现并训练了YOLOv8模型,使用自己的数据集完成目标检测。YOLOv8在速度和准确性方面表现出色,适合各种实际应用场景。希望通过这个简要教程,你能顺利进行YOLOv8的复现与训练。如果你在练习中遇到问题,可以参考YOLOv8的官方文档或社区,获得更多的支持和帮助。