《YOLO 目标检测》—— YOLO v4 详细介绍
文章目录
- 一、整体网络结构
- 1. YOLO v4 网络结构图
- 2.对之前版本改进创新的概括
- 二、对改进创新部分的具体介绍
- 1. 输入端创新
- 2. Backbone主干网络创新
- CSPDarknet53
- Mish激活函数
- Dropblock正则化
- 3. 特征融合创新
- SPP模块
- PAN结构
- 4. Prediction输出层创新(未写完)
- CIOU Loss
- DIoU_NMS
- 三、性能与应用
- 1. 性能
- 2. 应用
YOLO v4(You Only Look Once version 4)是一种先进的目标检测系统,于2020年推出,是对之前版本YOLO的改进。YOLOv4基于深度卷积神经网络,能够高精度实时检测图像中的目标。以下是对YOLOv4的详细介绍:
一、整体网络结构
1. YOLO v4 网络结构图
2.对之前版本改进创新的概括
- 输入端的创新:数据增强
- 主干网络的改进:各种方法技巧结合起来,包括:CSPDarknet53、Mish 激活函数、Dropblock
- 特征融合创新:在主干网络和最后的输出层之间插入一些层,比如 SPP 模块、FPN+PAN 结构
- Prediction输出层创新:CIOU Loss(损失函数)、DIoU_NMS(新型的非极大值抑制)
二、对改进创新部分的具体介绍
1. 输入端创新
- Mosaic数据增强:采用了CutMix的方法,将4张图片进行随机缩放、随机裁剪、随机排布的方式进行拼接,增强了对正常背景之外的对象的检测,丰富了检测物体的背景信息。同时,减少了估计均值和方差时的计算量,降低了训练成本。
- 如下图:
2. Backbone主干网络创新
CSPDarknet53
- CSPDarknet53:借鉴了ResNet的残差结构,并运用了CSP(Cross Stage Partial)结构
- CSPNet是作者Chien-Yao Wang于2019年发表的论文《CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN》中提出的一种新的网络结构,它可以增强CNN的学习能力,并且在轻量化的同时保持准确性。
- 做法:CSPNet 将基础层的特征映射为两个分支,第二个分支正常执行残差网络,接着将两个分支的信息在通道方向进行 Concat 拼接,最后再通过 Transition 层进一步融合。如下图:
- CSPNet主要是为了解决三个问题:
增强CNN的学习能力;降低内存成本;以及减少计算瓶颈。 - 同时,CSPNet方法可以减少模型计算量和提高运行速度,还能和多种网络结构结合在一起。
Mish激活函数
- Mish激活函数:与ReLU相比,Mish函数在训练过程中能够使梯度更加平滑,避免了神经元的死亡问题,从而提高了模型的准确率。
- 下面是ReLU(左)和Mish(右)激活函数的图像
Dropblock正则化
- Dropblock正则化:在卷积层上引入了一种新的正则化方法,通过丢弃一块相邻区域中的特征来防止过拟合。
- 相比于传统的Dropout技术,DropBlock不是随机屏蔽掉一部分特征(注意是对特征图进行屏蔽),而是随机屏蔽掉多个部分连续的区域。
- 这种方法有助于减少神经网络中的冗余连接,从而提高模型的泛化能力
- 如下图:
3. 特征融合创新
SPP模块
- SPP-Net 全称 Spatial Pyramid Pooling Networks,是何恺明提出的,主要是用来解决不同尺寸的特征图如何进入全连接层的,在网络的最后一层 concat 所有特征图,后面能够继续接 CNN 模块
- SPP Net在最后一个卷积层后,接入了金字塔池化层,保证传到下一层全连接层的输入固定。在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
- SPP 模块使得神经网络能够处理任意大小的输入,从而大大提高了模型的灵活性和泛化能力。
- 如下图:
PAN结构
- PAN结构:在FPN(Feature Pyramid Networks)的基础上进行了改进,引入了自底向上的路径,使得底层的位置信息更容易传播到顶层。这种双向的信息传递方式增强了模型对不同尺度目标的检测能力。
- YOLOv3 中只有自顶向下的 FPN,对特征图进行特征融合,而 YOLOv4 中则是 FPN+PAN 的方式对特征进一步的融合。引入了自底向上的路径,使得底层信息更容易传到顶部。
- 下面是 YOLOv3 的 Neck 中的 FPN,如图所示:FPN 是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图
- YOLOv4 中如下:
- 注意:YOLO v4 的特征融和方式是 concat
- concat:将两个特征图在通道数方向叠加在一起,原特征图信息完全保留下来,再对原特征图增加一些我们认为是较好的特征图,丰富了特征图的多样性,是在空间上对原特征图的增强,这样在下一次卷积的过程中我们能得到更好的特征图。
4. Prediction输出层创新(未写完)
CIOU Loss
- CIOU Loss:作为边界框回归的损失函数,CIOU Loss考虑了预测框与真实框之间的重叠面积、中心点距离和长宽比等因素,使得模型在训练过程中能够更快地收敛,提高检测的精度。
DIoU_NMS
- DIoU_NMS:作为后处理方法,在去除冗余的检测框时不仅考虑了框的置信度还考虑了框之间的中心点距离,提高了检测的准确性。
下面是一个输入为640*640大小的图片,传输到YOLO v4 模型的过程
- 如下图
三、性能与应用
1. 性能
- 在COCO数据集上,YOLOv4的平均精度(AP)达到了43.5%,速度高达65fps。
- 高精度:能够准确地检测出各种不同类别的目标。
- 高速度:满足实际应用中的实时性要求。
- 易于训练:可以在单个GPU上进行训练,降低了训练的成本和难度。
2. 应用
- 智能安防:用于监控摄像头中的目标检测,实时监测人员、车辆等目标的行为。
- 自动驾驶:检测道路上的行人、车辆、交通标志等目标,为自动驾驶系统提供准确的环境信息。
- 工业检测:用于工业生产中的质量检测,例如检测产品的缺陷、尺寸等。
综上所述,YOLOv4是一种非常强大的目标检测算法,具有高精度、高速度和易于训练等优点。它在许多领域都有广泛的应用前景,包括智能安防、自动驾驶和工业检测等。
相关文章:

《YOLO 目标检测》—— YOLO v4 详细介绍
文章目录 一、整体网络结构1. YOLO v4 网络结构图2.对之前版本改进创新的概括 二、对改进创新部分的具体介绍1. 输入端创新2. Backbone主干网络创新CSPDarknet53Mish激活函数Dropblock正则化 3. 特征融合创新SPP模块PAN结构 4. Prediction输出层创新(未写完…...
Ubuntu:通过ssh链接另外一台Ubuntu
本文将介绍通过ssh链接另外一台Ubuntu的方法。 一、安装openssh-server sudo apt update sudo apt install openssh-server二、查看SSH是否运行 sudo systemctl status ssh三、链接 ssh usernameremote_ip_address四、复制A电脑的文件到本地 scp usernameremote_ip_addres…...
黄山谷捷提交创业板IPO注册,募资扩产提升综合竞争力
近日,黄山谷捷股份有限公司(下文称“黄山谷捷”)申请深交所创业板IPO审核状态变更为“提交注册”。据悉,本次IPO黄山谷捷拟募资50,201.19万元,分别用于功率半导体模块散热基板智能制造及产能提升项目,研发中…...
(python)如何进行加密
代码效果是将输入的四个数字每个加上7,然后除以10的余数,接着再将第一个数字和第三个数字对调,第二个数字和第四个数字对调 # 获取用户输入的四位数字符串 list1 input("请输入你四位数密码:") # 初始化一个空列表来存…...

夸克网盘免费扩容 20T 福利,无限次叠加,亲测有效
新用户用夸克 APP 存资源可得 1T 永久存储空间 🚨此方法仅试用于新用户,并且只能在手机上打开夸克 APP 中去领取!pc,ipad 都不行!!! 使用手机打开夸克 APP,保存以下资源可获取 1T …...

开源协议类型及长安链开源协议介绍
截至目前,我国参与国际开源社区协作的开发者数量排名全球第二并推出了众多社区活跃度较高的高质量开源项目,是全球开源生态的重要贡献力量,但在开源治理方面我国还处于发展初期,大部分开发者对开源的印象还限于开放代码、免费使用…...

SQL Server 可观测最佳实践
SQL Server 简介 SQL Server 是微软公司开发的一款关系数据库管理系统,支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。它支持多种操作系统平台,而无论是物理还是虚拟形式,自建部署环境还是在云环境中,运行的操作系…...

青少年编程能力等级测评CPA Python编程(一级)
青少年编程能力等级测评CPA Python编程(一级) (考试时间90分钟,满分100分) 一、单项选择题(共20题,每题3.5分,共70分) 下列语句的输出结果是( )。 print(35*2) A&a…...

WebSocket 连接频繁断开的问题及解决方案
文章目录 WebSocket 连接频繁断开的问题及解决方案1. 引言2. 什么是 WebSocket?2.1 WebSocket 的优势2.2 WebSocket 的工作原理 3. WebSocket 连接频繁断开的常见原因3.1 服务器端问题3.1.1 服务器负载过高3.1.2 服务器配置不当3.1.3 超时设置 3.2 网络问题3.2.1 网…...

[CSP篇] CSP2024 游记(上)
Part.0 前言 在刚刚过去的 CSP-J2024 以及 CSP-S2024 中,不知大家十分用自己最好的状态参加了这次重要的测试,取得了令自己努力的成绩呢? 文章发布在 2024 年 11 月 1 日,距离出结果还有 3 − 5 3-5 3−5 天,如有需…...

Mac “屏幕保护程序启动或显示器关闭后需要密码“无效
屏幕保护程序启动或显示器关闭后需要密码只能选择“立即”的解决方法: 在 iPhone mirror中设置,每次询问权限。 参考:https://support.apple.com/en-us/120421...
架构师之路-学渣到学霸历程-35
Nginx的配置文件说明 nginx的学习,到了关键的部分,其实想要学好nginx就一定要了解配置文件;我们看看配置文件是怎么样的? 1、nginx的配置文件路径 不同的安装方式、nginx的配置文件路径也有所不同 源码安装配置文件路径&#…...

2024-10月的“冷饭热炒“--解读GUI Agent 之computer use?phone use?——多模态大语言模型的应用进阶之路
GUI Agent 之computer use?phone use?——多模态大语言模型的进阶之路 1.最新技术事件浅析三、思考和方案设计工具代码部分1.提示词2.工具类API定义,这里主要看computer tool就够了 总结 本文会总结概括这一应用的利弊,然后给出分析和工具代…...

sheng的学习笔记-AI基础-激活函数
ai目录:sheng的学习笔记-AI目录-CSDN博客 目录 Sigmoid Tanh 函数 ReLU(Rectified Linear Unit)函数 Leaky ReLU ELU(Exponential Linear Unit) SEIU Swish 激活函数的选择 激活函数(Activation F…...
重构代码之重复的观察数据
在代码重构中,重复的观察数据 是一种模式,指的是系统中存在多处对同一数据的观察或记录,使得数据需要在多处维护,导致了数据同步的困难和维护成本的增加。这种重复通常会引起以下几个问题: 数据不一致:由于…...

SpringBoot【实用篇】- 热部署
文章目录 目标:1.手动启动热部署2.自动启动热部署4.禁用热部署 目标: 手动启动热部署自动启动热部署热部署范围配置关闭热部署 1.手动启动热部署 当我们没有热部署的时候,我们必须在代码修改完后再重启程序,程序才会同步你修改的信息。如果我们想快速查…...

C语言 核心语法2
时间:2024.11.1 一、学习内容 1、计算机的存储规则 1.1存储规则 视频是图片和声音的结合体。 在计算机中,任意数据都是以二进制的形式进行存储的。 在计算机中,二进制可以表示万事万物。 1.2十进制 1.3二进制的运算过程 1.4文本存储 …...

【论文阅读】Real-ESRGAN
学习资料 论文题目:Real-ESRGAN:使用纯合成数据训练真实世界的盲超分辨率(Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data)论文地址:IEEE Xplore 全文 PDF:代码&#…...

安达发|零部件APS车间排程系统销售预测的优点
2024制造业面临着前所未有的挑战与机遇。为了保持竞争力,企业必须确保其生产系统能够高效、灵活地运作。在这方面,采用高级计划与排程系统,特别是零部件APS车间排程系统的预测方法,已成为提升生产效率和响应能力的关键策略。这种系…...
Android 同花顺面经
Android 同花顺面经 文章目录 Android 同花顺面经一面 一面 Android组件化搭建使用接口层路由有什么缺点? 如果更改接口的话,其他的依赖的moudle都得改 说说kotlin和java的区别? Java是支持面向对象的编程,Kotlin是支持面向对象支…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...