yolov8
训练 YOLOv8 模型以检测特定目标(如手机、话筒等)需要一系列步骤。以下是详细步骤,涵盖数据准备、环境配置、训练过程等。
步骤 1:准备训练数据
首先需要准备一个含有你要检测目标(手机、话筒等)的数据集。
1.1 收集图片
- 收集包含手机、话筒的图片数据,可以从公开数据集或自己拍摄的图片获取。
- 推荐的图片格式为 JPEG 或 PNG。
1.2 标注图片
- 使用标注工具(如 LabelImg)对每张图片进行标注。标注时需要为手机、话筒等物体画出边界框,并为其分配类别。
- 使用教程LabelImg 安装和使用
- 打开目录/images/train ,改变存放目录/labels/train
1.3 标注文件格式
YOLOv8 采用YOLO格式进行标注,标注结果会生成与图片文件同名的 .txt
文件,内容格式如下:
<class_id> <x_center> <y_center> <width> <height>
其中:
<class_id>
是物体的类别编号(从 0 开始)。<x_center>
和<y_center>
是物体中心的相对坐标(相对于图片宽度、高度,取值范围 0 到 1)。<width>
和<height>
是物体边界框的相对宽度和高度(相对于图片宽度、高度,取值范围 0 到 1)。
例如,标注一张图像中有手机(类别编号 0)的边界框:
0 0.5 0.5 0.2 0.4
步骤 2:设置数据集目录结构
确保你的数据集按照以下目录结构组织:
datasets/
├── images/
│ ├── train/ # 训练集图片
│ ├── val/ # 验证集图片
├── labels/
│ ├── train/ # 训练集标注文件(与训练集图片同名)
│ ├── val/ # 验证集标注文件(与验证集图片同名)
步骤 3:创建数据配置文件
接下来,需要创建一个 .yaml
配置文件,定义训练集、验证集路径和类别信息。
示例配置文件 data.yaml
:
train: datasets/images/train # 训练集图片路径
val: datasets/images/val # 验证集图片路径
nc: 2 # 类别数量 (手机和话筒两个类别,与上面classes.txt训练标签一致)
names: ['cell phone', 'microphone'] # 类别名称
步骤 4:设置 YOLOv8 训练环境
4.1 安装依赖
方法1:
pip install ultralytics
方法2:
首先确保你已经安装了 Python 和 PIP,接下来安装 YOLOv8 所需的依赖。
# 克隆 Ultralytics YOLOv8 仓库
git clone https://github.com/ultralytics/ultralytics
# 进入项目目录
cd ultralytics
# 安装依赖
pip install -e .
4.2 检查环境
确保你有 CUDA(如果使用 GPU 加速)或 CPU 环境可以运行。
# 检查是否安装成功
yolo
成功后,你应该能看到 YOLOv8 的命令行帮助信息。
步骤 5:开始训练 YOLOv8 模型
5.1 选择模型
YOLOv8 提供多种模型大小,如 yolov8n
(nano 版,轻量级)到 yolov8x
(extra-large,重量级)。可以根据硬件能力选择不同的模型。
5.2 执行训练
现在可以使用自定义数据集开始训练 YOLOv8 模型。以下是训练命令:
# 开始训练
yolo task=detect mode=train model=yolov8s.pt data=path/to/data.yaml epochs=100 imgsz=640
task=detect
:表示执行目标检测任务。mode=train
:表示执行训练模式。model=yolov8n.pt
:指定使用的模型,可以选择yolov8s.pt
,yolov8m.pt
等。data=path/to/data.yaml
:指向你之前创建的数据配置文件data.yaml
。epochs=100
:设置训练轮数,通常 50-100 轮是一个合适的开始。imgsz=640
:输入图片大小,默认为 640,可以根据情况调整。
5.3 训练过程输出
训练过程会输出每个 epoch 的损失值和检测结果。你可以通过这些信息监控模型的性能。
步骤 6:验证与推理
训练完成后,可以使用训练好的模型进行推理或验证。
6.1 模型验证
验证模型性能,可以使用以下命令:
yolo task=detect mode=val model=path/to/best.pt data=path/to/data.yaml
这会使用你训练好的模型 best.pt
在验证集上进行评估,并输出 mAP(平均精度)等性能指标。
查看val_batch0_pred.jpg结果怎么样进行下面的步骤
6.2 推理检测
使用训练好的模型进行推理,可以使用以下命令:
# 在图片上进行推理
yolo task=detect mode=predict model=path/to/best.pt source=path/to/image.jpg
# 实时检测,使用摄像头
yolo task=detect mode=predict model=path/to/best.pt source=0
model=path/to/best.pt
:训练好的模型路径。source=path/to/image.jpg
:指定待检测的图片路径。source=0
:使用系统摄像头进行实时检测。
步骤 7:导出模型
YOLOv8 支持导出模型到多种格式,方便部署到不同平台,如 TensorRT、ONNX、CoreML 等。
# 导出模型到 ONNX 格式
yolo task=detect mode=export model=path/to/best.pt format=onnx
步骤 8:预测
你可以使用新的图片来测试已导出的 ONNX 模型。具体步骤如下:
-
准备测试图片
将你要测试的图片放入一个文件夹,例如new_images/
,然后将图片路径作为输入进行预测。 -
运行预测命令
使用以下命令测试新图片,假设你把图片存放在/Users/yangyongsheng/yolo8/new_images/
目录下:yolo predict task=detect model=/Users/yangyongsheng/yolo8/datasets/runs/detect/train8/weights/best.onnx imgsz=640 source=/Users/yangyongsheng/yolo8/new_images/
-
查看结果
YOLOv8 会将预测结果保存在runs/predict/
目录下,你可以在那里查看检测到的物体和相关的输出图像。
步骤 9:获取坐标
要获取 YOLOv8 预测结果中的标签名,你可以使用 results.names
属性来获取类别名称。标签通常与检测框关联,以下是如何从 Results
对象中提取和打印标签名的代码示例:
代码示例(可以用自己训练的ONNX或者pt忽略7和8步骤)
from ultralytics import YOLO
import cv2
# 加载预训练模型
model = YOLO('yolov8n.pt') # 使用预训练的 YOLOv8 Nano 模型
# 读取图片
image_path = 'path/to/your/image.jpg'
image = cv2.imread(image_path)
# 进行预测
results = model(image)
# 处理每个结果
for result in results:
# 提取检测框
boxes = result.boxes
names = result.names # 获取标签名称
if boxes is not None:
for i, box in enumerate(boxes.xyxy): # 遍历每个检测框
# 打印 `box` 的内容来检查其结构
print(f"Box {i}: {box}")
if len(box) == 4: # 确保 `box` 包含四个坐标
x_min, y_min, x_max, y_max = box.tolist()
cls = boxes.cls[i].item() # 获取类别索引
label = names[int(cls)] # 获取类别名称
confidence = boxes.conf[i].item() # 获取置信度
print(f"Label: {label}, Confidence: {confidence:.2f}")
print(f"Bounding Box Coordinates: (x_min: {x_min}, y_min: {y_min}), (x_max: {x_max}, y_max: {y_max})")
# 打印左上角的坐标
print(f"Left Top Coordinates: (x: {x_min}, y: {y_min})")
else:
print(f"Unexpected box format: {box}")
解释
result.names
: 这是一个字典,映射类别 ID 到标签名称。cls = boxes.cls[i].item()
: 从Tensor
中提取类别 ID。label = names[int(cls)]
: 根据类别 ID 从names
字典中获取标签名称。
验证输出
确保你的输出显示了正确的标签名称。如果 result.names
为空或没有标签,请检查模型是否正确加载,以及模型是否包含预期的类别标签。
总结
- 数据准备:收集和标注数据,整理成 YOLO 格式。
- 配置文件:创建数据配置文件,定义类别和数据路径。
- 安装依赖:安装 YOLOv8 及其依赖。
- 开始训练:通过训练命令训练模型。
- 验证和推理:使用训练好的模型进行验证或推理。
- 导出模型:导出模型到不同格式,便于部署。
通过以上步骤,你可以使用 YOLOv8 训练出适用于你特定需求的目标检测模型。
本文作者: 永生
本文链接: https://yys.zone/detail/?id=243
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
评论列表 (0 条评论)