Ultralytics (2023 年 1 月 10 日)发布了 YOLOv8🔥。
它带来了计算机视觉的进步,给我们感知、分析和理解视觉世界的方式带来了巨大的新颖性。它将为各个领域带来前所未有的可能性。
在速度、准确性和架构方面都取得了相当大的改进。它的实现是从头开始的,没有使用YOLOv5中的主要模块(即模型架构)。它比之前的版本(YOLOv7)速度更快、准确度更高,并且在平均精度(MAP)方面取得了新高,得分为 53.7。
在本文中,我将重点介绍在自定义数据上进行 YOLOv8 训练所需的步骤。我们可以按照下面提到的步骤在您自己的数据上训练 YOLOv8。所有提到的步骤都经过正确测试,并且在 Windows 和 Linux 操作系统上运行良好。
- 模块安装
- 预训练目标检测
- 在自定义数据上训练 YOLOv8
- 使用自定义权重进行推理
模块安装
YOLOv8 发布了一个名为“ultralytics”的软件包,您可以使用下面提到的命令安装该软件包。
pip install ultralytics== 8.0 .0
或
# 最新版本
pip install ultralytics
上述命令将安装使用 YOLOv8 对您自己的数据进行检测和训练所需的所有软件包。
注意:确保您的系统上安装了 python 3.7.0 或更高版本。
预训练目标检测
如果需要运行一个命令来有效地进行对象检测,并提供更准确和更快的结果。我们可以在终端/(命令提示符)中运行下面提到的命令,以使用 YOLOv8 对所选视频/图像使用预先训练的权重进行检测。
#对于图像
yolo 任务=检测模式=预测 model=yolov8n.pt source= "test.png"
#对于视频
yolo 任务=检测模式=预测 model=yolov8n.pt source= "test.mp4"
如果一切正常,我们将在“runs/detect/exp”文件夹内的当前目录中获得结果。
在自定义数据上训练 YOLOv8
在自定义数据上训练 YOLOv8 目标检测模型的步骤可总结如下:
- 收集数据
- 标签数据
- 分割数据(训练、测试和验证)
- 创建配置文件
- 开始训练
第 1 步:收集数据
创建用于 YOLOv8 自定义训练的数据集。
YOLOv8 采用文本(.txt)文件中的标签数据,格式如下:
<对象类 ID> <x> <y> <宽度> <高度>
第 2 步:标记数据
可以使用 labelImg 工具或Roboflow 平台进行数据标记,只要适合需求即可。
步骤 3:分割数据(训练、测试和验证)
当我们想要根据自定义数据训练计算机视觉模型时,将数据分为训练集和测试集非常重要。训练集用于教导模型如何进行预测,而测试集用于评估模型的准确性。(80–20%) 分割比率是一种常见的比率,但确切的比率可能取决于数据集的大小和您正在处理的特定任务。例如,如果您有一个小数据集,您可能希望使用较高百分比的数据集进行训练,而如果您有一个大数据集,则可以使用较小百分比的数据集进行训练。
👉 对于数据拆分,我们可以查看拆分文件夹,它将您的数据随机拆分为训练、测试和验证。
文件夹结构:
├── yolov8
## └── train
####└── images (包含所有训练图像的文件夹)
####└── labels (包含所有训练标签的文件夹)
## └── test
#### └── images (包含所有测试图像的文件夹)
####└── labels (包含所有测试标签的文件夹)
## └── valid
####└── images (包含所有测试图像的文件夹)
### #└── labels(包含所有测试标签的文件夹)
步骤 4:创建配置文件
创建自定义配置文件是组织和存储计算机视觉模型的所有重要参数的有用方法。
创建一个文件名为“custom.txt”的文件。yaml”,位于我们打开终端/(命令提示符)的当前目录中。将以下代码粘贴到该文件中。设置数据集文件夹的正确路径,更改类及其名称,然后保存。
path: (数据集目录路径)
train: (数据集train文件夹的完整路径)
test: (数据集测试文件夹的完整路径)
valid: (数据集有效文件夹的完整路径)
#Classes
nc: 5 # 根据你的类数替换
#类名称
#用您的类名称替换所有类名称列表
:[ 'person' , 'bicycle' , 'car' , 'motorcycle' , 'airplane' ]
注意:请确保设置正确的训练和测试目录路径,因为训练过程将完全依赖于该文件。
第 5 步:开始训练
完成数据收集、数据标记、数据分割和创建自定义配置文件等预处理步骤后,我们可以在终端/(命令提示符)中使用下面提到的命令开始在自定义数据上训练 YOLOv8。
yolo 任务=检测模式=训练模型=yolov8n.pt 数据=custom.yaml epochs= 3 imgsz= 640
任务= 检测(可以分段或分类)
mode = train(可以是predict或val)
model = yolov8n.pt(可以是yolov8s/yolov8l/yolov8x)
epochs = 3(可以是任何数字)
imgsz = 640(可以是 320、416 等,但请确保它需要是 32 的倍数)
👉等待训练完成,然后用新创建的权重进行推理。自定义训练的权重将保存在下面提到的文件夹路径中。
[运行/训练/exp/weights/best.pt]
使用自定义权重进行推理
模型经过训练后,我们可以使用它对新数据进行预测。使用下面提到的命令通过自定义权重进行检测。
yolo任务=检测模式=预测模型= “runs/train/exp/weights/best.pt”源= “test.png”
或
yolo任务=检测模式=预测模型= “runs/train/exp/weights/best.pt” pt”源= “测试.mp4”