【youcans动手学模型】YOLO5 (上)环境配置与测试

news2024/12/27 17:32:29

欢迎关注『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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【溯源反制】反制攻击者-蚁剑低版本

目录 安装 攻击者获取防守方的权限 防守方反制攻击者 防守方获取攻击者的shell权限 安装 安装蚁剑2.0.7版本 链接&#xff1a;https://pan.baidu.com/s/1t40UxkZ2XuSWG6VCdGzvDw?pwd8888 提取码&#xff1a;8888 下载好后先打开Loader文件夹下的.exe文件&#xff0c;打…

2.如何定制 Dcat-admin list 中显示的信息

操作在xxxController.php文件中的 protected function grid() 中进行 定制显示的内容 protected function grid(){return Grid::make(new Robot(), function (Grid $grid) {// ->sortable() 新增一个排序的按钮在列标题中$grid->column(id)->sortable();// 正常字符…

STM32-OTA升级

一、OTA&#xff08;Over-The-Air&#xff09; OTA&#xff08;Over-The-Air&#xff09;是一种通过无线通信方式&#xff0c;为设备分发新软件、配置甚至更新加密密钥的技术。它允许中心位置向所有用户发送更新&#xff0c;确保每个接收者都无法拒绝、破坏或改变这些更新&…

C# Unity 面向对象补全计划 设计者模式 之 单例模式

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 了解我的专栏C#面向对象与进阶:http://t.csdnimg.cn/mIitr&#xff0c;尤其是关于类的那篇文章即…

电脑屏幕录屏,5个技巧,精准捕捉!

电脑屏幕录屏已经成为了一种常见的行为&#xff0c;无论在工作还是生活中都发挥了重要作用。然而&#xff0c;对于许多人来说&#xff0c;如何进行电脑屏幕录屏可能仍然是一个谜团。 从选择合适的录屏软件到了解录制的技巧&#xff0c;都是需要探索和学习的内容。在这篇文章中…

数据库|SQLServer数据库:模糊查询的三种情况

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 就是字面意思&#xff0c;当数据库的查询条件并不是十分具体时就用到模糊查询&#xff0c;比如查询姓氏为雷的人名&#xff0c;就需要从姓名列模糊查询。 01 like关键字查询 当使用like关键字进行查询时&#xff0c;字…

国央企如何提高监管数据报送效率?

最新动向 近日&#xff0c;国家层面高度重视清理拖欠民营企业账款的问题&#xff0c;并出台了一系列相关政策&#xff0c;要求国有企业在偿还债务方面发挥示范作用。近期发布的报告强调了优化民营经济发展环境的重要性&#xff0c;并提出了六大重点工作&#xff0c;其中包括修…

50etf期权行权采用什么交割方式 ?

50ETF期权是欧式期&#xff0c;要到期日当天才能行权交制&#xff0c;其交割方式是实物交割买卖双方在到期行权日时需要准备一手交钱&#xff0c;一手收货或是一手交&#xff0c;一手收钱&#xff0c;如果持有期权到达到期日之前&#xff0c;投资者认为行权并不划算&#xff0c…

python.tkinter设计标记语言(语法2-语法解析器)

TOC 前言 本文只作为笔记记录。 TinText开源地址&#xff1a;https://github.com/Smart-Space/TinText 语法解析器 从前文可以看到&#xff0c;新的Tin标记语言非常简单&#xff0c;即便是加入嵌套关系&#xff0c;也只是标签级别做个标记就行了。&#xff08;在写这篇文章…

【Python机器学习】回归——局部加权线性回归

线性回归有一个问题就是有可能出现过拟合现象&#xff0c;因为它求的是具有最小均方误差的无偏估计。如果模型欠拟合将不能取得最好的预测效果。所以有些方法允许在估计中引入一些偏差&#xff0c;从而降低预测的均方误差。 其中一个方法就是局部加权线性回归&#xff08;LWLR…

学习记录——day27 进程间通信 IPC通信机制 消息队列 共享内存

目录 一、IPC通信机制 1、system V提供了三种IPC&#xff08;interprocess communication&#xff09;进程间通信方式 消息队列 共享内存 信号量集 2、该通信机制是独立于进程而存在的:当进程将数据写入该通信对象中后&#xff0c;即使进程已经结束&#xff0c;对象中保存的…

吴恩达机器学习COURSE1 WEEK2

COURSE1 WEEK2 多维特征 在线性回归中&#xff0c;往往特征不止一个&#xff0c;而是具有多维特征 例如&#xff0c;在预测房价的例子中&#xff0c;我们知道更多的信息&#xff1a; x 1 x_1 x1​&#xff1a;房屋的面积 x 2 x_2 x2​&#xff1a;卧室的数目 x 3 x_3 x3​&a…

【嵌入式】常用英文缩写及单词整理

目录 嵌入式常用英文缩写及单词整理1. 缩写部分2. 词汇部分3. 语句部分4. 调试部分5. 结束语相关文章&#xff1a; 嵌入式常用英文缩写及单词整理 1. 缩写部分 缩写全称翻译AADCAnalog-to-Digital Converter模/数转换器&#xff0c;模数转换器ADUApplication data unit应用数…

KBEngine ue5

前言 最近在试 KBEngine 的 ue4 项目&#xff0c;它在 ue4 下能够正常编译使用&#xff0c;但是现在都已经进入 ue5 时代&#xff0c;那么能不能将现有工程移到 ue5 下呢&#xff1f; 使用 ue5 打开工程的报错处理 1、DefaultBuildSettings BuildSettingsVersion.V5; kbeng…

python.tkinter设计标记语言(渲染2-渲染器)

TOC 前言 本文仅作为笔记记录。 在前文中&#xff0c;我们通过标记意义解释生成了带有明确渲染要求的参数组&#xff0c;以<title>为例&#xff0c;我们获取了title, level两个明确的渲染标记&#xff0c;这一部分由Tin标记解释器完成&#xff0c;不需要编写者花费过多…

亚马逊、eBay、沃尔玛等海外跨境电商测评自养号的技术解决方案

随着跨境电商的蓬勃发展&#xff0c;卖家们对于提升店铺流量、销量以及产品评价的需求日益迫切。在这一背景下&#xff0c;海外跨境电商测评成为了一个备受瞩目的领域。作为一家专注于此领域的技术型公司&#xff0c;凭借其深厚的技术积累和丰富的实战经验&#xff0c;为卖家们…

supermap制作发布二三维地图服务

一、下载安装 软件版本&#xff1a; SuperMap iDesktopX 11i(2023) SP1 for Windows SuperMap iServer 11i(2023) SP1 for Windows 下载地址&#xff1a; http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx 二、运行 服务端&#xff1a;双击iserver的…

HTML学习笔记——用HTML记录学习过程4——非主体结构元素

非主体结构元素主要是为了表达逻辑结构或者附加信息的元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>非主体结构元素</title> </head> <body> <header><h1>head…

大模型落地应用架构的一种模式

经过几个月的实践和探索&#xff0c;看过也经历过一些成型的项目了&#xff0c;如果是奔着落地去的&#xff0c;我们的目光不能只盯着大模型本身&#xff0c;而应该放眼甚至是需要投入精力去建设很多我们别的工作上。 本文&#xff0c;着重讲的是&#xff0c;我的理解下现实成…

「实战应用」着色器对图表控件LightningChart的影响及应用

LightningChart完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科学&am…