YOLO 全流程概览

好的,使用YOLO(You Only Look Once)进行目标检测的全流程可以分为以下几个核心步骤。本文将使用当前最流行且对用户最友好的 Ultralytics YOLOv8 作为示例,因为它提供了非常完善的Python包和命令行工具。

YOLO 全流程概览

  1. 环境配置
  2. 数据准备
  3. 模型训练
  4. 模型验证与评估
  5. 模型推理(预测)
  6. 模型导出(部署准备)

1. 环境配置

首先需要安装必要的库。Ultralytics 将几乎所有依赖都打包进了他们的库中。

# 使用 pip 安装 ultralytics 库
pip install ultralytics

# 可选:如果你需要使用 GPU 进行加速训练,请确保你的 PyTorch 版本是支持 CUDA 的。
# 可以通过 PyTorch 官网 https://pytorch.org/ 获取适合你环境的安装命令。
# 例如:
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

安装完成后,在Python中验证安装:

import ultralytics
ultralytics.checks()

2. 数据准备

YOLO 要求数据遵循特定的格式。最常见的是 YOLO 格式

a. 目录结构

你的数据集应该组织成如下结构:

dataset/
├── train/
│   ├── images/          # 存放训练集图片 (e.g., image1.jpg, image2.png)
│   └── labels/          # 存放训练集标签 (e.g., image1.txt, image2.txt)
└── val/
    ├── images/          # 存放验证集图片
    └── labels/          # 存放验证集标签
b. 标签格式

每个图片对应一个 .txt 标签文件。文件内容如下:

<class_id> <x_center> <y_center> <width> <height>
  • <class_id>: 物体的类别索引(从0开始)。
  • <x_center> <y_center> <width> <height>: bounding box 的中心坐标和宽高,这些值必须是 相对于图片宽度和高度归一化 后的(即取值在0-1之间)。

示例:
假设一张图片的尺寸是 640x480,你检测到的一个物体中心在 (320, 240),宽高为 (128, 96),那么这个物体的标注应该是:

0 0.5 0.5 0.2 0.2
# class_id=0, x_center=320/640=0.5, y_center=240/480=0.5, width=128/640=0.2, height=96/480=0.2
c. 数据集配置文件

你需要创建一个数据集配置文件(如 dataset.yaml),告诉 YOLO 去哪里找数据和有哪些类别。

# dataset.yaml
path: /path/to/dataset  # 数据集的根目录
train: train/images     # 训练集图片路径,相对于 path
val: val/images         # 验证集图片路径,相对于 path
# test: test/images     # 可选,测试集路径

# 类别名称列表
names:
  0: person
  1: car
  2: traffic_light
  3: stop_sign

工具:
你可以使用数据标注工具来创建这些数据,例如:

  • LabelImg: 开源,支持 YOLO 格式导出。
  • CVAT: 功能强大的在线标注工具。
  • Roboflow: 在线平台,提供数据标注、预处理和版本管理,并可以直接生成 dataset.yaml 文件。

3. 模型训练

使用 Ultralytics YOLO 进行训练非常简单,有两种主要方式:

方式一:使用命令行(CLI)
yolo task=detect mode=train model=yolov8n.pt data=dataset.yaml epochs=100 imgsz=640 batch=16
方式二:使用 Python API
from ultralytics import YOLO

# 加载一个预训练模型
model = YOLO('yolov8n.pt') # 从 YOLOv8n 开始,还有 s, m, l, x 等不同尺寸的模型

# 开始训练
results = model.train(
    data='dataset.yaml',
    epochs=100,
    imgsz=640,
    batch=16,
    device=0,        # 使用 GPU 0,如果是 CPU 则设为 ‘cpu’
    workers=4,       # 数据加载的线程数
    lr0=0.01,        # 初始学习率
    patience=10      # 早停,如果连续10个epoch验证集性能没有提升则停止训练
)

关键参数解释:

  • task: 任务类型(detect, segment, classify)。
  • mode: 模式(train, val, predict, export)。
  • model: 使用的模型,可以是预训练权重(如 yolov8n.pt),也可以是模型配置文件(如 yolov8n.yaml)。
  • data: 数据集配置文件的路径。
  • epochs: 训练轮数。
  • imgsz: 输入图片的大小。
  • batch: 批次大小。
  • device: 指定训练设备。

训练过程中,日志和模型权重会自动保存到 runs/detect/train/ 目录下。你可以使用 TensorBoardMLflow 来查看训练过程中的损失、精度等指标。


4. 模型验证与评估

训练结束后,你需要评估模型在验证集上的性能。

方式一:命令行
yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=dataset.yaml
方式二:Python API
from ultralytics import YOLO

model = YOLO('runs/detect/train/weights/best.pt') # 加载训练得到的最佳模型

# 在验证集上评估模型
metrics = model.val()
# 打印评估结果,包括 mAP50, mAP50-95, precision, recall 等
print(metrics.box.map)   # mAP50-95
print(metrics.box.map50) # mAP50
print(metrics.box.map75) # mAP75

评估结果会生成一系列指标,最重要的是 mAP(mean Average Precision)


5. 模型推理(预测)

使用训练好的模型对新图片或视频进行预测。

方式一:命令行
# 预测单张图片
yolo task=detect mode=predict model=runs/detect/train/weights/best.pt source='path/to/image.jpg'

# 预测整个文件夹
yolo task=detect mode=predict model=best.pt source='path/to/folder'

# 预测视频
yolo task=detect mode=predict model=best.pt source='path/to/video.mp4'

# 使用摄像头(0 代表默认摄像头)
yolo task=detect mode=predict model=best.pt source=0
方式二:Python API
from ultralytics import YOLO
import cv2

# 加载训练好的模型
model = YOLO('runs/detect/train/weights/best.pt')

# 预测单张图片
results = model.predict(source='path/to/image.jpg', save=True, conf=0.5)

# 遍历结果
for r in results:
    im_array = r.plot()  # 绘制了检测框的BGR图片numpy数组
    cv2.imshow("YOLOv8 Inference", im_array)
    cv2.waitKey(0)

# 预测视频
results = model.predict(source='path/to/video.mp4', save=True, show=True)

predict 方法会返回一个包含所有检测信息的 Results 对象列表,你可以轻松地访问边界框、置信度和类别ID。


6. 模型导出(部署准备)

为了将模型部署到不同的平台(如 TensorRT, ONNX, OpenVINO, CoreML等),你需要将 PyTorch 模型(.pt)导出为其他格式。

方式一:命令行
# 导出为 ONNX 格式
yolo task=detect mode=export model=runs/detect/train/weights/best.pt format=onnx

# 导出为 TensorRT 格式(推荐用于 NVIDIA GPU 高性能推理)
yolo mode=export model=best.pt format=engine device=0

# 导出为 OpenVINO 格式(用于 Intel CPU)
yolo mode=export model=best.pt format=openvino
方式二:Python API
from ultralytics import YOLO

model = YOLO('runs/detect/train/weights/best.pt')

# 导出模型
model.export(format='onnx') # 导出为 ONNX
# model.export(format='engine') # 导出为 TensorRT

导出成功后,你会在相同目录下找到导出的模型文件(如 best.onnx),然后就可以使用相应平台的推理引擎来加载和运行它了。

总结流程图

graph TD
    A[环境配置:安装ultralytics] --> B[数据准备: 标注 & dataset.yaml];
    B --> C[模型训练: yolo mode=train ...];
    C --> D{训练完成};
    D --> E[模型验证: yolo mode=val ...];
    D --> F[模型推理: yolo mode=predict ...];
    D --> G[模型导出: yolo mode=export ...];
    E --> H[分析指标, 迭代优化];
    F --> I[应用部署];
    G --> I;

这个全流程涵盖了从零开始使用 YOLO 的核心步骤。根据你的具体项目需求(例如,实例分割使用 YOLOv8-seg,分类使用 YOLOv8-cls),细节可能会有所不同,但整体框架是一致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值