计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解,便于记忆

news2024/11/28 19:30:19

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解,便于记忆。YOLO(You Only Look Once)是一种目标检测深度学习模型。想象一下,传统的目标检测方法就像侦探一样,需要仔细观察整个场景,逐个研究每个细节来找出目标。但YOLO却跟超级英雄一样,只需要一眼扫过整个画面,就能立即捕捉到所有的目标。YOLO可以实现如此高效的目标检测,是因为它将目标检测问题转化为了一个回归问题。它通过一个神奇的神经网络,在一次前向传播中,直接从图像像素预测出目标的边界框和类别概率。这意味着,YOLO不仅快速,而且准确。它能够同时捕捉到不同大小、不同位置的目标,并且还能告诉你它们属于哪个类别。

无论是追踪移动的车辆,还是寻找行走的行人,YOLO都能在瞬间给你一个准确的答案。它的快速性和准确性使得YOLO成为许多计算机视觉应用中的首选方法,是目标检测领域的超级明星!

一、YOLO网络的详细介绍

1.设计思想:
传统的目标检测算法,如R-CNN系列,都采用了两步骤:首先生成候选区域,然后对这些区域进行分类。而YOLO则采取了“一次看完”的策略。它将目标检测任务看作一个回归问题,并直接在一个网络中完成边界框(bounding box)的预测和类别判断。
2.网络结构:
YOLO使用全卷积网络,并在最后引入全连接层进行预测。输入图像被分成SxS个网格,如果某个对象的中心落在网格内,则这个网格就负责预测这个对象。每个网格会预测B个边界框以及这些边界框含有对象的置信度,同时还会预测C个条件类别概率。
3.损失函数:
由于任务涉及到坐标回归和分类两部分,所以损失函数也由这两部分组成。坐标误差和置信度误差使用平方差损失计算;类别误差使用交叉熵损失计算。
4.优点:
速度快: 因为只需要运行一次前向传播即可得到结果。
泛化能力强:可以很好地处理新颜色、尺度、角度等变化。
5.缺点:
对小物体处理不佳、定位精度相对较低。

下面我将详细介绍从YOLOv1到YOLOv5的网络结构,并阐述每个版本相比前一版本所做的改进:

YOLOv1模型

YOLOv1是第一个引入端到端物体检测概念的模型,它在单个神经网络中实现了边界框预测和类别概率。
网络结构:使用了一个单一的卷积网络,最后接上2个全连接层和一个线性回归层。输入为448x448大小的图片,输出为7x7网格,每个网格预测2个边界框和20个类别概率。

模型改进方面

相比于以前需要多阶段处理过程才能完成目标检测任务的方法(例如R-CNN系列),YOLOv1显著地提高了速度,并且在处理图像中存在多目标、小目标以及模糊不清目标时表现出色。
在这里插入图片描述

YOLOv2模型

YOLOv2在保持高速度同时提高了准确性。它引入了Darknet-19作为基础架构,并添加“anchor boxes”来更好地处理不同形状和大小的对象。
网络结构:Darknet-19包含19层卷积层和5个maxpooling层。最后一层全连接被移除并用一个新卷积层替代,这样可以直接输出13x13网格结果。

模型改进方面

1.Batch Normalization算法实现:在卷积或池化之后,激活函数之前,对每个数据输出进行标准化。这样能够大大提高训练速度,提升训练效果。
2.引入“anchor boxes”解决了对不同形状与尺寸物体识别困难问题;
3.增加"multi-scale training"让模型能够适应各种分辨率;
4.新增"Darknet-19"架构使得模型更深,但计算效率仍然很高。
Darknet-19整体网络架构:
在这里插入图片描述

YOLOv3模型

YOLOv3通过使用三种不同尺度进行预测来改善对小物体的检测效果,并采用三种不同大小“anchor boxes”来更好地匹配真实对象大小。
网络结构:采用了Darknet-53,包含53层卷积层,增加了残差连接来改善训练过程。最后输出3个不同尺度(13x13, 26x26, 52x52)的预测。

模型改进方面

1.三种不同尺度的预测:
YOLOv3引入了三种不同尺度(13x13, 26x26, 52x52)的预测,每个尺度都会生成一组边界框。这是通过在网络中添加更多的特征图层并在不同层级上进行预测来实现的。这样做可以帮助模型更好地检测不同大小的物体。具体来说,小尺度(13x13)主要用于检测大物体,中等尺度(26x26)用于检测中等大小物体,大尺度(52x52)主要用于检测小物体。
2.使用三种不同大小“anchor boxes”:
在每个预测尺度上,YOLOv3为每个网格单元使用了三个固定比例的“anchor boxes”。这些"anchor boxes"是根据训练集中所有真实边界框的宽高比例分布得出的。"Anchor boxes"可以帮助模型更好地匹配和预测真实对象大小。
3.Darknet-53网络结构:
YOLOv3采用了Darknet-53作为其骨干网络。Darknet-53包含53层卷积层,并且与ResNet-50相比,在相似性能下计算量减少近一半。它通过交替使用1×1卷积和3×3卷积提取特征,并利用连续块增加了网络深度以提取更复杂、抽象级别高的特征。
4.残差连接:
Darknet-53还引入了残差连接或者称之为shortcut connection或skip connection(类似ResNet)。这是一种典型技术,旨在解决深层神经网络训练过程中梯度消失和表示瓶颈问题。残差连接使得输入可以直接流向输出或者后面几层,从而保证信息能够有效传播,并有助于捕获低级别和高级别特征。
5.多标签分类:
在分类器部分,YOLOv3采用了sigmoid函数代替softmax进行多标签分类。这样做使得模型能够为一个物体预测多个类别,有助于处理一些复杂场景,如一个物体同时属于多个类别。
在这里插入图片描述

YOLOv4模型

YOLOv4在保持速度优势的同时,进一步提高了准确性。它引入了CSPDarknet53、PANet和SAM block等新技术。
网络结构:CSPDarknet53作为骨干网络,PANet用于特征融合,SAM block用于注意力机制。它还引入了Mish激活函数和CIOU loss等技术来提高性能。
改进引入了几种新技术:
1.CSPDarknet53:
CSPDarknet53作为骨干网络,是YOLOv4的主要组成部分。它基于Darknet53网络结构,并采用跨阶段部分连接(Cross Stage Partial connections, CSP)的策略来提高效率和性能。CSP策略可以有效地降低网络前向传播过程中的内存消耗,并且能够增加信息流动性以提升模型表现。
2.PANet:
PANet (Path Aggregation Network) 是用于特征融合的模块。通过自底向上和自顶向下两个路径进行信息交流和融合,PANet可以更好地利用各层次特征图之间的语义信息,从而提高目标检测精度。
3.SAM block:
SAM (Spatial Attention Module) block 是一个注意力机制模块。通过对输入特征图进行空间注意力调制,SAM block 可以强化有价值区域(即需要关注的目标位置)并抑制不重要区域的影响。
4.Mish激活函数:
Mish激活函数是一个新型非线性激活函数,在某些任务上表现出比ReLU和其他常见激活函数更好的效果。Mish激活函数能够保持正值区域内单调递增且平滑连续,在负值区域则有更大范围内接近零但非零输出,这使得神经元有更大可能在反向传播时保持活跃状态。

Mish激活函数的数学公式表示为:
Mish ( x ) = x ⋅ tanh ⁡ ( softplus ( x ) ) \text{Mish}(x) = x \cdot \tanh(\text{softplus}(x)) Mish(x)=xtanh(softplus(x))
其中, softplus ( x ) = log ⁡ ( 1 + e x ) \text{softplus}(x) = \log(1+e^x) softplus(x)=log(1+ex)表示软正函数。

5.CIOU loss:
CIOU loss 是一种新型损失函数,相比于原始IoU损失、GIoU损失等方式具有更全面考虑因素包括形状、大小、位置等多方面差异性评估,并且在训练过程中具备较好稳定性。

以下是CIOU损失函数的数学公式表示:

CIOU = 1 − IoU + d ( g , p ) c 2 + α v \text{CIOU} = 1 - \text{IoU} + \frac{{\text{d}(g, p)}}{{\text{c}^2}} + \alpha v CIOU=1IoU+c2d(g,p)+αv

其中, g g g表示ground truth目标框, p p p表示预测目标框, IoU \text{IoU} IoU表示交并比(Intersection over Union), d ( g , p ) \text{d}(g, p) d(g,p)表示目标框之间的距离, c \text{c} c表示对角线长度的归一化系数, α \alpha α是一个平衡项, v v v表示一个辅助项,用于惩罚预测框与真实框之间的偏移和尺度差异。
在这里插入图片描述

YOLOv5模型

YOLOv5是一种实时对象检测算法,虽然其名称包含“YOLO”(You Only Look Once),但并非由YOLO原作者Joseph Redmon开发,而是由一个开源社区推动的项目。尽管其名称为“v5”,但实际上并没有显著创新或突破。主要是对模型结构进行了一些调整以优化速度和精度,并提供了一套完整的训练、检测、部署工具链。
网络结构方面,YOLOv5采用类似于YOLOv3/v4的设计,并在此基础上做出一些调整:
1.修改卷积块配置:
这个改动主要针对网络中的卷积层,通过修改各层的配置参数(如卷积核大小、步长等),可以改变网络结构,进而影响模型性能和计算复杂度。
添加PANet:PANet(Path Aggregation Network)是一种特征金字塔网络,它可以有效地聚合多尺度、多级别的特征信息。通过引入PANet,可以提高模型对于不同尺寸目标的识别能力。
2.微调优化速度和精度:
开发者对模型进行了大量微调操作以优化其运行速度和预测精度。这包括但不限于选择更适合任务需求的激活函数、损失函数;修改学习率策略;使用数据增强技术等。
提供全面且易于使用的工具链:这包括自动超参数搜索功能,用户只需要设定搜索范围和目标评价指标即可自动找到最佳超参数组合;模型剪枝功能,则可以帮助用户去除模型中冗余或效果不明显的部分以减小模型大小并提高运行速率。
3.Focus模块:
YOLOv5引入了Focus模块,它是一种轻量级的卷积结构,用于替代YOLOv4中的下采样操作。Focus模块可以在减少特征图尺寸的同时保留更多的信息,从而提高了小目标的检测性能和精度。
在这里插入图片描述

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

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

相关文章

做机器视觉工程师,其实挺没意思的

3.康耐视VisionPro高级脚本系列教程-3.脚本编辑错误和运行错误调试方法,break和Contitinuee的差别_哔哩哔哩_bilibili 其实人生就是“有时有意思,有时没意思”。 心里有太多的不甘心,太多的苦水,是没法再吃学习的苦&#xff0c…

Linux系统编程多线程(C++)

目录 【1】引入如何看待地址空间和列表 【2】什么是线程 【3】线程的优点 【4】线程的缺点 【5】线程异常 【6】线程用途 【7】线程VS进程 【8】Linux线程控制 【8.1】查看轻量级线程指令 【8.2】线程创建 【8.2.1】POSIX线程库 【8.2.2】创建线程 【8.2.3】一次性…

1054. 距离相等的条形码;823. 带因子的二叉树;1878. 矩阵中最大的三个菱形和

1054. 距离相等的条形码 核心思想:隔一个数填一个,优先填写出现次数多的数。注意点就是条形码的长度为奇数和偶数,但是我们遵循先优先填偶数就不会出错即可。 823. 带因子的二叉树 核心思想:递归。定义dfs(val)表示以值val作为根…

[UE虚幻引擎插件介绍] DTSQLite 插件说明 :蓝图操作SQLite3文件,执行SQL语句。

本插件可以在UE里面使用蓝图操作SQLite3文件&#xff0c;并且执行SQL语句&#xff0c;CREATE&#xff0c;SELECT&#xff0c;DELETE&#xff0c;INSERT&#xff0c;UPDATE。 直接操作数据库&#xff0c;并返回相应结果集&#xff0c;并可以把结果集转换为TArray<TMap<FSt…

Microsoft Excel 101 简介

什么是 Microsoft Excel&#xff1f; Microsoft Excel 是一个电子表格程序&#xff0c;用于记录和分析数值数据。 将电子表格想像成构成表格的列和行的集合。 字母通常分配给列&#xff0c;数字通常分配给行。 列和行相交的点称为像元。 单元格的地址由代表列的字母和代表行的…

华为云征文|华为云云耀云服务器L实例使用教学(一)

目录 国内免费云服务器&#xff08;体验&#xff09; 认识国内免费云服务器 如何开通国内免费云服务器 云耀云服务器 HECS HECS适用于哪些场景&#xff1f; 网站搭建 电商建设 开发测试环境 云端学习环境 为什么选择华为云耀云服务器 HECS 国内免费云服务器&#xff…

LeetCode 40. Combination Sum II【回溯,剪枝】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Loopback for Mac:专业级的音频处理能力

Loopback for Mac是一款功能强大的虚拟音频设备&#xff0c;它能够将应用程序的音频输出路由到其他应用程序的输入&#xff0c;从而实现音频数据的传输和交互。以下是Loopback for Mac的一些主要功能和特色介绍&#xff1a; 创建虚拟音频设备&#xff1a;Loopback可以创建虚拟…

基于Python开发的Excel数据分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的Excel数据分析系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0…

源码编译risc-v虚拟机和编译器 riscv-gnu-toolchain 和 riscv-tools 在ubuntu 22.04

1. 编译 riscv-gnu-toolchain 1.1 预备环境 $ sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev 1.2 下载源代码 http…

Linux tcpdump抓包命令

1.tcpdump抓包命令 -c 指定抓取包的数量&#xff0c;即最后显示的数量 -i 指定tcpdump监听的端口。未指定&#xff0c;选择系统中最小的以配置端口。-i any:监听所有网络端口 -i lo:监听lookback接口。-nn 对监听地址以数字方式呈现&#xff0c;且对端口也以数字方式呈现。…

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一) 第一部分:组态配置 具体步骤可参考以下内容: 如下图所示,新建一个项目后,添加一个安全型PLC,这里以1516F-3 PN/DP为例进行说明, 如下图所示,添加CPU完成后,可以看到左侧的项目树中比普通的PLC多了几个选项…

el-date-picker 封装一个简单的日期组件, 主要是禁用日期

子组件 <template><div><el-date-pickerv-model"dateModel"type"datetimerange":picker-options"pickerOptions"range-separator"至"ref"picker"start-placeholder"开始日期"end-placeholder&quo…

深度学习-消融实验

深度学习中消融实验的目的 深度学习中&#xff0c;消融实验是一种用于理解和评估神经网络模型的技术。它的主要目的是通过逐步删除神经网络的某些组件或功能&#xff0c;来研究它们对模型性能的影响。通过这种方式&#xff0c;我们可以深入了解模型的工作原理、探索模型的鲁棒性…

第31章_瑞萨MCU零基础入门系列教程之WIFI蓝牙模块驱动实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

【毕业设计】基于SSM的仓库进存销系统

前言 &#x1f525;本系统可以选作为毕业设计&#xff0c;运用了现在主流的SSM框架&#xff0c;采用Maven来帮助我们管理依赖&#xff0c;所选结构非常合适大学生所学的技术&#xff0c;本系统结构简单&#xff0c;容易理解&#xff01;本系统功能结构完整&#xff0c;非常高适…

下载HTMLTestRunner并修改

目录 一. 下载HTMLTestRunner 二. 修改HTMLTestRunner 1. 修改内容 2. 修改原因 一. 下载HTMLTestRunner 下载报告模板地址:http://tungwaiyip.info/software/HTMLTestRunner.html 下载模块&#xff1a; 二. 修改HTMLTestRunner 将修改后的模块放到python安装目录下的..…

【Mysql学习笔记】关键字顺序以及执行顺序

关键字顺序&#xff08;如上&#xff09;&#xff1a; SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...关键字执行顺序&#xff08;如上&#xff09;&#xff1a; FROM > WHERE > GROUP BY > HAVING > SELECT的字段 > DISTINCT > ORD…

解决java.io.IOException: Network error

解决java.io.IOException: Network error 解决java.io.IOException: Network error摘要引言正文1. 理解异常的根本原因2. 处理网络连接问题3. 处理连接超时4. 处理协议错误或不匹配5. 异常处理 总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#…

Redis从入门到精通(二:数据类型)

数据存储类型介绍 Redis 数据类型&#xff08;5种常用&#xff09; string hash list set sorted_set/zset&#xff08;应用性较低&#xff09; redis 数据存储格式 redis 自身是一个 Map&#xff0c;其中所有的数据都是采用 key : value 的形式存储 数据类型指的是存储的数据…