初识yolo视觉检测

AI摘要本文系统介绍了基于Ultralytics YOLOv8的目标检测全流程,涵盖环境搭建、Label Studio数据标注、数据集整理与划分、模型训练及参数调优,并详细总结了数据质量、模型选择与训练监控等关键注意事项,是一份适合初学者的实操指南。

一、yolo环境搭建

YOLO 环境搭建的主流方案目前以 Ultralytics YOLOv8/v11 为主(同时兼容 v3/v5 旧版),以下是完整的搭建流程:

1.1 系统要求

项目 最低配置 推荐配置
Python 3.8 3.10 - 3.11
CUDA(GPU训练) 11.2 12.1+
PyTorch 1.8 2.0+
显存 4GB 8GB+

CUDA和Python有版本对应关系,如果你的CUDA版本是13.0,那Python至少是3.10版本。纯 CPU 推理可跳过 CUDA 安装,但速度较慢。

1.2 搭建步骤

1.2.1. 创建虚拟环境(强烈建议)

1.2.2. 安装 PyTorch

查询CUDA版本

根据你的硬件选择对应命令:

有 NVIDIA GPU(以CUDA 12.1为例):

仅 CPU:

1.2.3. 安装 Ultralytics(推荐方式)

这会同时安装 ultralytics + yolov8 + 所有依赖(OpenCV、NumPy、Pillow、PyYAML 等)。

1.2.4. 验证安装

创建一个test.py文件,放置到你用户目录下面

运行:

若弹出检测框图片,说明环境搭建成功。过程中会检测是否存在yolov8n.pt,如果不存在会自动下载该文件。

1.3 可选:源码安装(需二次开发时)

二、Label Studio图片标注

Label Studio 是一个开源的多模态数据标注平台,支持图像、文本、音频、视频、时序等标注任务。以下是几种主流部署方式:

2.1 pip 安装

还是在刚才的yolov8环境中执行安装命令。

2.2 标注步骤

2.2.1. 登录Label Studio

需要注意,默认的admin账户无法登录,需要自己创建一个账户。

image

2.2.2. 创建新项目

登录后点击 「Create Project」

image

填写 Project NameDescription

image

点击 「Save」

2.2.3. 配置标注模板(Labeling Interface)

这是最关键的一步,决定你要做什么类型的标注。

进入项目后,点击右上角 「Settings」→「Labeling Interface」

image

点击「Browse Templates」选择预设模板或自定义 XML:

任务类型 推荐模板
图像目标检测 / 实例分割 Object Detection with Bounding Boxes
图像语义分割 Semantic Segmentation with Masks
图像分类 Image Classification
文本分类 Text Classification
命名实体识别(NER) Named Entity Recognition
音频转录 Audio Transcription
视频标注 Video Object Tracking
关键点检测 Keypoint Labeling

这里我们选择Object Detection with Bounding Boxes」

image

自定义标签名称(Labels):

可以在Code模板中修改例如:

标签数据量不大的话,可以使用Visual,删除原有的Labels,添加新的标签名称,我这里只添加了一个红旗。

image

点击 「Save」

2.2.4. 导入数据

返回项目页,点击 「Import」按钮

image

选择导入方式:

方式 操作
直接上传 拖拽文件或点击上传(支持图片、音频、文本、CSV、JSON 等)
本地存储 Settings → Cloud Storage → 添加 Local Storage 路径
云存储 支持 AWS S3、Azure Blob、GCS
URL 导入 准备 JSON/CSV 文件,其中包含媒体文件的 URL

导入完成后,数据会出现在 「Data Manager」

image

2.2.5. 开始标注

点击 「Label All Tasks」 或进入 「Data Manager」 点击单条数据

标注界面操作:

☆图像目标检测(Bounding Box)

底部选择标签(如 红旗)

在图像上拖拽绘制矩形框

可调整框的大小和位置

image

Submit 提交

☆图像分割(Polygon / Brush)

选择标签后,用多边形工具逐点勾勒轮廓

或选择画笔工具涂抹区域

Ctrl+Z 撤销,Ctrl+Shift+Z 重做

☆文本分类 / NER

文本分类:直接点击类别标签

NER:选中文字片段,点击实体标签

快捷键(通用)

快捷键 功能
1, 2, 3... 快速切换标签
Ctrl + Enter 提交(Submit)
Alt + Enter 跳过(Skip)
Ctrl + Z 撤销
Del / Backspace 删除选中标注
← → 切换前后任务

确保被标注过。

image

2.2.6. 导出标注数据

进入项目,点击 「Export」,选择导出格式:

任务类型 推荐格式 说明
目标检测 YOLO 直接用于 YOLOv5/v8 训练
目标检测 COCO 通用格式,兼容多数框架
目标检测 Pascal VOC XML 经典格式
分割 JSON(MSCOCO) 含 polygon/mask 信息
分类 CSV 简单表格
分类 JSON-Min 轻量 JSON

image

点击 「Export」 下载压缩包

image

系统会自动生成训练yolo所需要的images、labels以及classes文件。

image

三、训练yolo

3.1 准备工作

3.1.1. 整理目录结构

YOLOv8 要求的数据集结构:

我们需要通过一个python脚本实现目录结构的转换,创建一个LabelStudio.py文件。

执行这个py文件

3.1.2. 编写 data.yaml

my_dataset/ 下创建 data.yaml,内容如下:

注意:

  • path 建议使用绝对路径,避免路径解析错误
  • names 中的顺序必须与 Label Studio 中的 class_id 对应(可查看导出的 classes.json 确认)

3.2 开始训练

在YOLO 环境下(conda activate yolov8),然后运行go.py文件,文件中的 Python 代码如下:

注意:训练过程中会下载模型,注意网络链接。https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n.pt

3.3 训练结果

image

训练完毕提示存储位置,由于我之前安装过StableDiffusion,存储位置变成SD下面了,我手动复制到C:\Users\Administrator。结果目录如下:

3.3 验证

通过运行check.py验证结果。

val_batch0_labels

四、注意事项

4.1 数据准备(最关键)

4.1.1. 标注质量

  • 框要贴边:边界框应紧贴目标边缘,不要留大量空白,也不要裁掉目标部分
  • 避免漏标:一张图里同类别目标必须全部标出,否则模型会学到"部分目标不需要检测"
  • 避免重复框:同一目标不要打多个重叠框,会干扰 NMS
  • 小目标也要标:如果目标小于 16×16 像素,考虑放大原图或换更高分辨率训练

4.1.2. 数据量建议

场景 每类最少图片 推荐图片
简单场景(单一背景) 100~200 张 500+
复杂场景(多背景、多姿态) 500 张 2000+
工业级部署 2000+ 10000+

4.1.3. 数据集划分

  • 训练集 : 验证集 = 8:2 或 7:3
  • 验证集必须和训练集同分布(不要挑"好认的"放验证集)
  • 如果数据极少,可用交叉验证,但 YOLO 通常直接划分即可

4.1.4. 图片多样性

  • 不同角度、光照、背景、遮挡程度
  • 包含负样本(没有目标的图片,标签文件夹放空 .txt 或只放图片不标注),可减少误检

4.2 模型选择

模型 速度 精度 适用场景
yolov8n 最快 较低 边缘设备、实时性要求高
yolov8s 中等 一般部署
yolov8m 中等 较高 平衡选择
yolov8l/x 最高 服务器、追求精度

建议:先用 ns 快速验证 pipeline 是否通,再换大模型提精度。

4.3 训练参数调优

4.3.1. 核心参数

4.3.2. 学习率(lr)

  • 默认 lr0=0.01 对大部分情况够用
  • 如果数据集很小(<500 张),尝试 lr0=0.001lrf=0.001
  • 如果 loss 震荡不下降,降低 lr;如果 loss 下降太慢,适当提高

4.4 数据增强策略

YOLO 内置增强通常够用,但可根据场景调整:

增强 作用 注意
mosaic=1.0 四图拼接,增加场景复杂度 小数据集必开,最后几 epoch 关掉
mixup=0.1 图像混合 目标检测一般 ≤0.2,太高会模糊
degrees=0.0 旋转角度 如果目标旋转多(如遥感),可设 10~30
fliplr=0.5 左右翻转 一般保持 0.5
hsv_h/s/v 颜色扰动 默认即可,除非对颜色敏感

小目标优化

  • imgsz=1280(或更高)
  • 如果用的是 YOLOv8,可尝试 yolov8n-p6yolov8s-p6(P6 模型支持 1280 输入,多一个检测头)

4.5 训练过程监控

4.5.1. 看哪些指标?

  • box_loss:应持续下降,最后趋于平稳
  • cls_loss:分类损失,同样应下降
  • dfl_loss:分布焦点损失,下降即可
  • metrics/mAP50:验证集 mAP@0.5,核心指标
  • metrics/mAP50-95:更严格指标,最终看这一个

4.5.2. 判断训练状态

现象 诊断 处理
train loss ↓,val mAP ↑ 正常 继续训练
train loss ↓,val mAP 不升或↓ 过拟合 增加数据、增强、正则化(weight_decay)、降 lr
train loss 不降 欠拟合 增加 epochs、检查标注、提高 lr、换大模型
mAP 波动大 数据太少或学习率太大 加数据、降 lr、增加 batch

纪小年

Jing

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理