欢迎关注『youcans动手学模型』系列
本专栏内容和资源同步到 GitHub/youcans
【youcans动手学模型】YOLO5 (上)环境配置与测试
- 1. YOLO 简介
- 2. YOLOv5 简介
- 3. YOLOv5 下载
- 4. 配置 PyCharm 环境
- 5. 运行 YOLOv5 推理
1. YOLO 简介
YOLO (You Only Look Once) 是一种用于目标检测的深度学习算法,由 Joseph Redmon、Santosh Divvala、Ross Girshick 和 Ali Farhadi 在 2015 年提出。
YOLO 是一种端到端的算法,它将目标检测任务视为一个单一的回归问题,从而显著提高了处理速度。与传统的基于滑动窗口或区域提议的目标检测算法相比,YOLO 可以在单个前向传递中直接预测多个边界框和类别概率。
YOLO 的优点是:
- 速度快:YOLO 的处理速度非常快,因为它将目标检测视为一个单一的回归问题,而不需要进行复杂的后处理步骤。这使得 YOLO 能够在实时应用(如自动驾驶、视频流分析等)中表现出色。
端到端训练:YOLO 的训练是端到端的,这意味着它可以从原始像素直接预测边界框和类别概率,而不需要进行中间步骤(如特征提取或区域提议)。 - 全局上下文:由于 YOLO 在整个图像上运行一次卷积网络,它能够捕获全局上下文信息,这有助于在复杂场景中准确检测目标。
- 泛化能力强:YOLO 在各种数据集上都具有较好的泛化能力,包括那些具有不同尺度和长宽比的目标。
YOLO 的缺点是:
- 定位精度相对较低:与某些基于区域提议的算法相比,YOLO 的定位精度可能较低,尤其是在处理小目标或紧密排列的目标时。
- 对背景的误检率较高:由于 YOLO 预测了大量的边界框,其中一些可能会错误地检测到背景区域。
为了改进这些局限性,研究人员提出了许多 YOLO 的升级改进版本,如 YOLOv2、YOLOv3、YOLOv4 和 YOLOv5 等。这些改进版本在保持快速处理速度的同时,通过引入更复杂的网络结构、更精细的边界框预测和更强大的训练策略来提高检测精度和泛化能力。
2. YOLOv5 简介
YOLOv5 开源网址:GitHub - ultralytics/yolov5
YOLOv5是一种先进的单阶段目标检测算法,它在 Yolo V4 的基础上添加了一些新的改进,使速度与精度都得到了极大的性能提升。
网络架构:
YOLOv5的目标检测算法可以划分为四个通用的模块,包括输入端、基准网络、Neck网络与Head输出端。
输入端负责接收图片,该网络的输入图像大小通常为608*608,会经过图像预处理阶段,如缩放和归一化。
在网络训练阶段,YOLOv5使用Mosaic数据增强操作提升模型的训练速度和网络的精度,并提出了一种自适应锚框计算与自适应图片缩放方法。
特点:
- 精度:YOLOv5在目标检测任务中具有很高的精度,其在COCO数据集测试集上的mAP(mean Average Precision)可以达到50%左右。
- 速度:YOLOv5是一种快速的目标检测模型,可以在CPU上实现实时处理,GPU上能够获得更高的性能。在Tesla V100 GPU上,YOLOv5可以达到140 FPS的处理速度。
- 小型化:YOLOv5在网络结构设计和模型压缩方面做了很多优化,使得其模型参数量和模型大小都比较小,适合在嵌入式设备等场景中使用。
- 多任务处理:YOLOv5可以同时处理多种任务,包括目标检测、人脸检测、姿态估计等,具有很好的通用性和灵活性。
优点:
- 轻量级:与YOLOv4相比,YOLOv5使用更小的模型,在保证高精度的同时,减少了计算资源和存储空间的消耗。
- 更快速:YOLOv5的速度比YOLOv4更快,可以处理更高分辨率的图像,同时保持精度。
- 更准确:与YOLOv4相比,YOLOv5在多个物体检测指标上都有一定的提升,具有更高的准确性。
- 更易于使用:YOLOv5使得物体检测任务的部署和使用变得更加简单,支持多种语言和平台,易于集成到AI应用中。
需要注意的是,虽然YOLOv5在目标检测任务中表现出色,但它对小目标的识别可能不太稳定,并且需要大量的训练数据才能达到较高的准确率。此外,YOLOv5的变种,如YOLOv5-Multibackbone-Compression,通过引入多骨干网络和模型压缩技术,旨在提升模型的推理速度并减小内存占用,同时保持良好的检测性能。这些变种可以适应各种资源受限的环境,如边缘设备或低功耗平台。
3. YOLOv5 下载
YOLOv5 开源网址:GitHub - ultralytics/yolov5
克隆 repo。
git clone https://github.com/ultralytics/yolov5 # clone
或者直接从 GitHub 网页下载压缩文件,如下图所示。解压到 Python 项目文件夹,如"C:\Python|PythonProjects\YOLOv5"。
在下载的 YOLOv5 项目中,包括了项目说明文档:英文版 Readme.md 和中文版 Readme.zh-CN.md 。
4. 配置 PyCharm 环境
(1)使用 PyCharm 编辑器打开下载的 YOLOv5 项目。
(2)在 PyCharm 的菜单”文件-设置-项目-Python 解释器“ 中,为项目配置 Python 环境。注意要求 Python>=3.8.0 环境。
这个步骤需要用户根据计算机的 Python 环境来选择,但该环境中需要安装 PyTorch 等 Python 库。注意要求 PyTorch>=1.8 。
例如我选择在 Anaconda 或 Miniconda 创建的 Python 环境 torch。
(3)在所选择的 Python 环境下,安装项目所需的依赖(安装项目所需的库)。
本项目中的 requirements.txt 文件已经详细列出了所需的库及版本。
# YOLOv5 requirements
# Usage: pip install -r requirements.txt
# Base ------------------------------------------------------------------------
gitpython>=3.1.30
matplotlib>=3.3
numpy>=1.23.5
opencv-python>=4.1.1
pillow>=10.3.0
psutil # system resources
PyYAML>=5.3.1
requests>=2.32.0
scipy>=1.4.1
thop>=0.1.1 # FLOPs computation
torch>=1.8.0 # see https://pytorch.org/get-started/locally (recommended)
torchvision>=0.9.0
tqdm>=4.64.0
ultralytics>=8.2.34 # https://ultralytics.com
# protobuf<=3.20.1 # https://github.com/ultralytics/yolov5/issues/8012
# Plotting --------------------------------------------------------------------
pandas>=1.1.4
seaborn>=0.11.0
# Deploy ----------------------------------------------------------------------
setuptools>=70.0.0 # Snyk vulnerability fix
# tritonclient[all]~=2.24.0
可以在 Pycharm 的控制台(terminal),输入脚本指令来安装所需的库。
也可以通过 Anaconda 或 Miniconda 来安装,注意要安装到所选择的 Python 环境。例如:
(base) C:\Users\Administrator>conda activate torch
(torch) C:\Users\Administrator>pip3 install -r .\requirements.txt
如果下载太慢,可以指定下载源,例如:
(base) C:\Users\Administrator>conda activate torch
(torch) C:\Users\Administrator>pip install -r .\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
...
也可以手动安装某个缺少的库:
(base) C:\Users\Administrator>conda activate torch
(torch) C:\Users\Administrator>pip3 install PyYAML
...
5. 运行 YOLOv5 推理
(1)使用 YOLOv5 进行推理,首先要下载 YOLOv5 预训练模型。
YOLOv5 有多个不同规模的模型,从小到大依次是:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。
推荐从 YOLOv5 release下载 YOLOv5 预训练模型。也可以在 GitHub 的 Pretrained Checkpoints 根据需要选择。
本文选择 YOLOv5s,参数约 7.2M。下载完成后,将下载的预训练模型文件 yolov5s.pt 放在 YOLOv5 项目路径下,如"C:\Python|PythonProjects\YOLOv5"。
(2)打开并运行 YOLOv5 项目中的 detect.py 程序,使用预训练模型进行进行目标检测。
detect.py 程序使用PyTorch加载预训练的YOLOv5模型。程序解析从命令行传入的参数,这些参数包括输入文件的路径(可以是图像、视频或目录)、预训练模型的路径、输出文件的路径、置信度阈值等。
detect.py 程序默认读取 data\images 路径的图片,结果默认保存到 runs/detect 文件夹中。
直接在 PyCharm 运行 detect.py 程序,或者从控制台运行 detect.py:
python detect.py --weights yolov5s.pt --source data/images/zidane.jpg
运行结果如下图所示。
(3)如果需要改变 yolov5s 的模型路径、输入图片路径、大小、输出结果路径,可以通过命令行的方式来在启动程序时创建所需参数。也可以修改 detect.py 程序中参数配置部分来指定输入文件的路径,例如:
def run(
weights=ROOT / "yolov5s.pt", # model path or triton URL
source=ROOT / "data/images", # file/dir/URL/glob/screen/0(webcam)
data=ROOT / "data/coco128.yaml", # dataset.yaml path
imgsz=(640, 640), # inference size (height, width)
【本节完,下节介绍 YOLOv5 的本地训练】
版权声明:
欢迎关注『youcans动手学模型』系列
转发请注明原文链接:
【youcans动手学模型】YOLO5 (上)环境配置与测试
Copyright 2024 youcans, XUPT
Crated:2024-08-06