1、YOLO概述
1.1 定义
YOLO(You Only Look Once)是一种流行的对象检测和图像分割模型,由华盛顿大学的 Joseph Redmon 和 Ali Farhadi 于 2015 年推出,因其高速和准确性而迅速受到欢迎
在目标检测领域,传统方法(如R-CNN系列算法)将目标检测分为两个阶段:
-
首先使用区域候选网络(RPN)提取候选目标信息
-
然后通过检测网络完成对候选目标的位置和类别的预测和识别
YOLO作为一种单阶段检测算法,并不需要使用RPN,它通过单次网络前向传播即可完成目标检测任务(所以命名为“You Only Look Once”,即“你只需要看一次”)
1.2 发展史
YOLO自 2015 年首次提出至今,经历了多个版本的迭代:(最新版本可见官网https://docs.ultralytics.com)
-
YOLOv2 于 2016 年发布,通过合并批量规范化、锚框和维度集群改进了原始模型
-
YOLOv3 于 2018 年推出,使用更高效的主干网络、多个锚点和空间金字塔池进一步增强了模型的性能
-
YOLOv4 于 2020 年发布,引入了 Mosaic 数据增强、新的无锚点检测头和新的损失函数等创新
-
YOLOv5 进一步提高了模型的性能,并添加了新功能,例如超参数优化、集成实验跟踪和自动导出为流行的导出格式
-
YOLOv6 由美团于 2022 年开源,并被用于该公司的许多自主送货机器人
-
YOLOv7 添加了其他任务,例如对 COCO 关键点数据集进行姿态估计
-
YOLOv8 由 Ultralytics 于 2023 年发布。YOLOv8 引入了新功能和改进,以增强性能、灵活性和效率,支持全方位的视觉 AI 任务
-
YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等创新方法
-
YOLOv10 由清华大学的研究人员使用 UltralyticsPython 包创建。此版本通过引入端到端头来提供实时对象检测改进,消除了非最大抑制 (NMS) 要求
-
YOLO11 是Ultralytics 的最新 YOLO 模型,在多项任务(包括检测、分割、姿态估计、跟踪和分类)中提供最先进的 (SOTA) 性能,利用了各种 AI 应用程序和领域的功能
1.3 核心原理
YOLO的核心原理是将目标检测任务视为一个回归问题,它将图像分割成一个个网格,然后对每个网格预测固定数量的边界框和相应的类别,并使用非极大值抑制(NMS)来合并重叠的预测框
2、重要文件
在YOLO的使用过程中,.yaml
和 .pt
是两个非常重要的文件
2.1 .yaml 文件
.yaml
文件是YOLO配置文件,它包含了模型训练和检测过程中所需的参数和设置,这些参数包括但不限于模型架构、输入输出尺寸、类别数量、训练参数(如学习率、批处理大小、迭代次数等)以及数据集的路径
例如,一个典型的YOLO .yaml
文件可能包含以下内容:
# YOLOv5 model configuration
model:
name: YOLOv5
type: YOLOv5
args:
model_type: small # Model type, can be 'small', 'medium', 'large', 'xlarge', 'huge'
train:
batch_size: 16
epochs: 300
learning_rate: 0.001
data: "path/to/dataset.yaml" # Path to dataset .yaml file
这个文件通常在训练开始之前被创建或修改,以适应特定的任务和数据集
2.2 .pt 文件
.pt
文件是PyTorch模型权重文件,它包含了训练好的模型参数,在YOLO中,一旦模型被训练完成,其权重就会被保存为 .pt
文件,以便后续的模型评估、推理或继续训练
.pt
文件是PyTorch特有的格式,可以被直接加载到PyTorch模型中,用于进行预测或进一步的训练,例如:
model = torch.load('path/to/model.pt')
.pt
文件是模型训练的成果,可以被用来在不同的环境和应用中部署YOLO模型
3、Ultralytics YOLO源码安装
Ultralytics YOLO 是广受赞誉的 YOLO (You Only Look Once) 系列的最新进展,用于实时对象检测和图像分割,它基于之前的版本构建,引入了新功能和改进,以提高性能、灵活性和效率,并支持各种视觉 AI 任务,例如检测、分割、姿势估计、跟踪和分类等
根据官网(https://docs.ultralytics.com/quickstart/#install-ultralytics)内容可知,Ultralytics YOLO有pip、conda、源码、docker这四种安装方法,本文主要介绍大家常用的pip和源码这两种安装方式
3.0 torchvision
计算机视觉与深度学习密不可分,而深度学习中目前最主流的框架就是pytorch,在安装pytorch(https://pytorch.org/get-started/locally)时,建议把torchvision也一起安装上,这样才能使用YOLO
3.1 pip安装
直接在有python解释器的环境下执行以下命令即可
pip install ultralytics
ps:如遇网速不佳的问题,可尝试以下命令
pip install --index-url https://mirrors.aliyun.com/pypi/simple ultralytics
3.2 源码安装
实际开发中,我们可能会对YOLO源码进行一定的修改,以满足一些个性化的需求
因此,如果想学习YOLO或基于YOLO进行项目开发,则推荐使用源码的方式进行YOLO的安装,具体安装方法如下
Step1:安装git
要确保电脑上有git,然后才能执行Step2中正式的安装操作
git的安装方法:访问官网https://git-scm.com/downloads,根据自己的操作系统,进行对应安装包的下载,并进行常规安装即可(如windows系统下载的是.exe文件,和平常装其他软件一样,双击安装即可)
Step2:安装yolo
打开git命令行,依次执行以下命令
git clone https://github.com/ultralytics/ultralytic
由于是国外网址,下载会比较慢,如遇网络不佳,可在闲时多试几次
上述命令执行完毕之后,会在git命令行执行目录中得到ultralytics文件夹(默认情况下,在哪里运行git,就会下载到哪里,比如我在windows电脑桌面执行,则会下载到桌面)
有了ultralytics文件夹之后,建议将其复制粘贴到一个合适的地方进行保存,比如我将其存放到了D盘的AIPackage目录下,避免以后对其进行了误删除
最后,我们在存放ultralytics文件夹的目录下,打开命令行黑窗口
进入命令行黑窗口后,依次执行以下两个命令进行安装即可
cd ultralytics
pip install -e .
4、官网demo示例
针对下图进行目标检测
三行代码打天下
# 引入YOLO
from ultralytics imort YOLO
# 加载模型:N, S, M, L, X
model = YOLO("yolo11n.pt")
# 模型预测
results = model("https://ultralytics.com/images/bus.jpg")
备注:如果运行代码时,因为网络原因难以请求到https://ultralytics.com/images/bus.jpg,则可以先直接在浏览器访问此网址,下载对应的bus.jpg图片,然后放到上面三行代码的同级目录中,并修改最后一行代码为
results = model("./bus.jpg")
运行结果:
image 1/1 D:\jupyterPythonCodes\CV\day10\codes\bus.jpg: 224x224 minibus 0.57, police_van 0.34, trolleybus 0.04, recreational_vehicle 0.01, amphibian 0.01, 6.0ms Speed: 42.0ms preprocess, 6.0ms inference, 0.0ms postprocess per image at shape (1, 3, 224, 224)
结果解析:
运行结果提供了关于检测过程和性能的详细信息:
-
图像信息:
image 1/1 D:\jupyterPythonCodes\CV\day10\codes\bus.jpg: 224x224 minibus 0.57, police_van 0.34, trolleybus 0.04, recreational_vehicle 0.01, amphibian 0.01, 6.0ms
- 这表明在处理的第一张图像中(共一张),检测到的物体包括小巴(minibus)概率为0.57,警车(police_van)概率为0.34等,这些概率表示模型对检测到的物体属于各个类别的置信度
224x224
指的是图像的尺寸6.0ms
指的是模型进行单张图像推理所需的时间
-
速度信息:
Speed: 42.0ms preprocess, 6.0ms inference, 0.0ms postprocess per image at shape (1, 3, 224, 224)
42.0ms preprocess
:图像预处理所需的时间6.0ms inference
:模型推理所需的时间0.0ms postprocess
:后处理所需的时间per image at shape (1, 3, 224, 224)
:这些操作是针对每张图像的,图像的维度是1(批次大小),3(颜色通道),224(高度),224(宽度)