《深度学习》YOLO V4 整体架构的由来及用法 详解

目录

一、关于YOLOv4

1、什么是YOLOv4

2、相较于YOLOv3

二、YOLO v4数据增强的做法

1、 Bag of freebies

2、关于数据增强

1)概念

2)种类

3、v4数据增强方法

1)马赛克数据增强

• 由来

• 关于CutMix:

2)Random Erase

3)Hide and Seek

4)SAT

三、V4的改进

1、DropBlock

2、标签平滑

3、损失函数改进

1)IOU损失

2)损失函数改进1:GIOU

公式:

3)改进方法2:DIOU

公式:

4)最终改进方法3:CIOU

公式:

4、非极大值抑制改进

1)传统NMS工作原理

2)改进1:DIOU-NMS

3)改进2:SOFT-NMS

5、网络结构改进

1)改进1:SPP-Net网络

2)改进2:CSP-net网络

3)注意力机制

4)PAN 路径聚合网络

5)激活函数

<1> Mish激活函数

公式:

激活函数图像:

<2> 消除网格敏感性

6、整体网络架构


一、关于YOLOv4

1、什么是YOLOv4

        YOLO v4(You Only Look Once version 4)是一种目标检测算法,它属于计算机视觉领域中的一项重要技术。目标检测的任务是在图像或视频帧中准确地识别出多个目标(如人、车、动物等)的位置和类别。

2、相较于YOLOv3

        YOLO v4在YOLO v3的基础上进行了多项改进,包括使用更强大的主干网络(CSPDarknet53)、更先进的特征融合方法(SPP模块和PANet)、更优化的损失函数(CIOU Loss)以及更精细的数据增强技术(如Mosaic和CutMix)。

        YOLO v4 tiny版本,一秒可处理120张照片,同时正确率也很好

二、YOLO v4数据增强的做法

1、 Bag of freebies

       指的是那些不增加模型复杂度,也不增加推理的计算量,通过改进模型和数据的预处理,来提高模型的准确度。

2、关于数据增强

1)概念

        只增加训练成本,但是能显著提高精度,并且不影响推理速度

2)种类

        调整亮度、对比度、色调、缩放、裁剪、翻转、旋转

3、v4数据增强方法

1)马赛克数据增强

        使用CutMix,然后将四张图片拼接成一张,再对其进行训练。

        • 由来

                ResNet-50 -> Mixup[48] -> Cutout[3] -> CutMix

         在ResNet-50中,由一张图片一个类别来进行训练,标签类别设置狗为1,而Mixup[48]中将猫和狗两个类别的图片的权重融合在一块,设置猫和狗标签的类别为0.5,此时部分指标有上升也有下降,Cutout[3]则将图片类别的部分关键特征掩盖起来,以此来对其进行训练,同样有提升和降低,最后又使用了CutMix,将图片中的部分关键信息剪切更换为其他类别图片的关键信息,此时效果各项指标均有提升。

        最后,将经过CutMix处理完的图片,每四张拼接成一张,使得一张图片中有至少四个类别以上的物体,然后再传入模型进行训练,得到的指标提升更多。如下图所示:

        • 关于CutMix:

                CutMix的基本思想是在两个训练样本之间随机切割出一个矩形区域,然后将其中一个样本的相应区域替换到另一个样本中被裁剪的区域中,形成新的训练样本。同时,根据被替换区域的大小,按比例分配两个样本的分类结果。

2)Random Erase

        用随机值或训练集的平均像素替换图像区域

3)Hide and Seek

        根据概率设置,随机隐藏一些补丁

4)SAT

        self-adversarial-training,通过引入噪点来增加训练的难度

三、V4的改进

1、DropBlock

        DropBlock是谷歌在2018年提出的一种用于卷积神经网络(CNN)的正则化方法。这是一种用于解决过拟合问题的技术,在训练神经网络时非常有用。过拟合问题是指在训练集上表现很好,但在测试集上表现不佳的问题。

        相比于传统的Dropout(图b)技术,DropBlock(图c)不是随机屏蔽掉一部分特征(注意是对特征图进行屏蔽),而是随机屏蔽掉多个部分连续的区域。这种方法有助于减少神经网络中的冗余连接,从而提高模型的泛化能力。

2、标签平滑

        原始的标签给予的太多绝对,是狗则为1,不是则为0,此时将其平滑处理,狗身上也有猫的特征,所以判断为狗,同时给予一部分猫的概率值

例如:原始标签为(0,1),对其进行处理 [0,1] x (1-0.1) + 0.1/2 = [0.05,0.95]

3、损失函数改进

1)IOU损失

        计算方式:1-IOU

        IOU为预选框和实际框之间交集比上并集的结果,其值为0-1,如果值越大则说明两个框拟合程度更大,表示模型预测的结果越好。

        利用1-IOU表示损失的状态大小,但是实际框和预选框的IOU结果可能会一样,此时可能出现结果一样,但是预测的位置不好的情况,如下所示,所以需要对其进行后续的更改

2)损失函数改进1:GIOU
        公式:

        引入最小的封闭形状C,C可以把A和B包含在内,使得在不重叠情况下让预选框尽可能的朝着真实框前进,通过1-IOU再减去面积S/C的比值

3)改进方法2:DIOU
        公式:

        其中分子计算预测框和真实框的中心点的欧氏距离d,分母是能覆盖预测框与真实框的最小包围框的对角线长度c,解决GIOU的问题

4)最终改进方法3:CIOU
        公式:

        考虑三个几何因素:重叠面积IOU、中心点距离、长宽比av,其中a可以当做权重参数

4、非极大值抑制改进

1)传统NMS工作原理

        根据分类得分(比如物体属于某一类别的概率)对所有的边界框进行排序,选取得分最高的边界框作为基准框。然后计算其余边界框与这个基准框的重叠度(通常用交并比,即 IoU - Intersection over Union 来衡量)。如果某个边界框与基准框的 IoU 大于设定的阈值(比如 0.5 或 0.7 等),就认为这个边界框是冗余的,将其删除。通过不断重复这个过程,最终得到一组经过筛选后的边界框。

        然而,传统 NMS 存在一个问题:当两个真实目标靠得比较近时,由于它们的边界框重叠度可能较高,NMS 可能会错误地抑制掉其中一个目标对应的边界框,导致漏检。

2)改进1:DIOU-NMS

        NMS非极大值抑制用于过滤掉冗余的检测框并保留最准确的框。在目标检测中,算法会输出多个检测框,但有些框可能是冗余的,这时候就需要进行后处理。

        DIOU-NMS和原始的NMS不同,DIOU-NMS不仅考虑了IOU的值,还考虑了两个与预选框BOX中心点之间的距离,使用了新的公式决定一个BOX是否被删除:

        其中,RDIoU是两个Box中心点之间的距离,用下面的公式表示,M表示置信度最高的候选框,Bi表示遍历各个框和高置信度的重合面积,

3)改进2:SOFT-NMS

        传统的NMS存在一定的问题:如果一个物体在另一个物体重叠区域出现,即当两个目标框接近时,分数更低的框就会因为与之重叠面积过大而被删掉,从而导致对该物体的检测失败并降低了算法的平均检测。

        将当前检测框得分乘以一个权重函数,该函数会衰减与最高得分检测框M有重叠的相邻检测框的分数,越是与M框高度重叠的检测框,其得分衰减越严重,为此选择高斯函数为权重函数,从而修改其删除检测框的规则。(δ为高斯衰减函数的衰减速度参数,通常取0.3)。

       工作原理:首先和传统 NMS 一样,根据分类得分对所有预测出的边界框进行排序,得到一个边界框列表B,并记录每个边界框对应的得分S,选取列表B中得分最高的边界框M作为当前的基准框。对于列表B中除M之外的每个边界框b,计算b与M的交并比IOU,根据计算出的IOU对边界框b的得分Sb进行衰减,常使用高斯衰减函数(如下图红框内所示),在对每个边界框b进行得分衰减后,用更新后的得分重新对边界框列表B进行排序(因为得分发生了变化),选取得分高于某个设定的最低得分阈值的边界框作为最终的检测结果输出。

5、网络结构改进

        增加稍许推断代价,但是可以提高模型精度的方法

        网络细节部分加入很多改进,引入各种能让特征提取更好的方法:注意力机制、网络细节设计、特征金字塔等

1)改进1:SPP-Net网络

        SPP-Net是何凯明《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》中提出的一种网络结构,可以不用考虑图像大小,输出图像固定长度,并且在图像变形情况下表现稳定。这种方法在速度上比R-CNN快24-102倍,并且在不同的数据集上面得到验证。在ImageNet 2014的比赛中,SPP-Net在检测中排名第二,分类中排名第三。

        SPP-Net的第一个贡献就是在最后一个卷积层后,接入了金字塔池化层(对输入的特征图放大或缩小达到固定尺寸),保证传到下一层全连接层的输入固定。在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。

        SPP-Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。

2)改进2:CSP-net网络

        CSPNet是作者Chien-Yao Wang于2019年发表的论文《CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN》中提出的一种新的网络结构,它可以增强CNN的学习能力,并且在轻量化的同时保持准确性。

做法:

        1、每一个block按照特征图的channel维度拆分为2部分。

        2、一份正常执行残差网络,另一份直接concat(拼接)到block的输出

        CSPNet主要是为了解决三个问题:

                增强CNN的学习能力;降低内存成本;以及减少计算瓶颈。

                它通过将梯度的变化从头到尾地集成到特征图中,从而减少了计算量的同时保证了准确率。在特征金字塔生成过程中采用跨通道池来压缩特征映射,可以减少内存使用。

                同时,CSPNet方法可以减少模型计算量和提高运行速度,还能和多种网络结构结合在一起。

3)注意力机制

        YOLOv4使用的是SAM,空间注意力机制

        CBAM(Convolutional Block Attention Module)是一种针对深度神经网络的注意力机制模块,用于提高模型在分类、检测和分割等任务中的表现。它结合了通道注意力CAM空间注意力SAM,几乎可以嵌入任何CNN网络中,在稍微增加一点计算量和参数量的情况下,可以大大增强模型性能。

         YOLOv4中的SAM:

4)PAN 路径聚合网络

        在原始的自顶向下的路径基础上,引入自底向上的路径,如图所示,使得底层信息更容易传到顶部

5)激活函数
        <1> Mish激活函数
        公式:

        激活函数图像:

        Mish激活函数在小于零的时候就一个小的值,防止w权重参数在最开始初始化的时候将其置0,使得特征提取出现问题

        <2> 消除网格敏感性

                eliminate grid sensitivity(消除网格敏感性),在YOLO系列的目标检测算法中,目标的中心坐标是通过网格(grid)来预测的。具体来说,输入图像被划分为若干个网格单元(grid cell),每个网格单元负责预测落在其内部的目标的中心坐标。然而,在原始的YOLOv3算法中,当目标的中心坐标非常接近网格单元的边界时,预测值需要达到极端值(如接近0或1)才能准确表示目标的中心位置。由于sigmoid激活函数的特性,其输出值很难精确地达到这些极端值,从而导致预测结果的不准确,这就是所谓的网格敏感性问题。

        为了消除网格敏感性,YOLOv4引入了一个缩放系数(scale),对sigmoid函数的输出进行缩放和平移。具体来说,YOLOv4修改了目标中心坐标的计算公式,即在原始的输出结果上乘以一个系数

6、整体网络架构

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

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

相关文章

【VR】PICO 手部追踪 steamvr内无法识别,依旧识别手柄的解决方案

一、问题描述 && 原因分析 1.PICO4 手部追踪 steamvr内无法识别&#xff0c;依旧识别手柄的解决方案 尽管平放&#xff08;或关闭手柄连接&#xff09;之后&#xff0c;在 PICO 一体机中进入了手部追踪状态&#xff0c; 但只要进入 steamvr&#xff0c;就无法正确识别…

Go 中的泛型,日常如何使用

泛型从 go 的 1.18 开始支持 什么是泛型编程 在泛型出现之前&#xff0c;如果需要计算两数之和&#xff0c;可能会这样写&#xff1a; func Add(a, b int) int {returb a b } 这个很简单&#xff0c;但是只能两个参数都是 int 类型的时候才能调用 如果想要计算两个浮点数…

年度目标5w浏览量达成

目录 前言&#xff1a;目标展示&#xff1a;达成展示&#xff1a; 前言&#xff1a; 去年定了一个目标&#xff0c;今年实现了&#xff0c;以后继续加油&#xff0c;争取2025可以获得15w的阅览量&#xff0c;3000的粉丝数量。 目标展示&#xff1a; 达成展示&#xff1a;

【Python TensorFlow】进阶指南(续篇一)

在前两篇文章中&#xff0c;我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用&#xff0c;并探讨了更高级的功能和技术细节。本篇将继续深入探讨TensorFlow的高级应用&#xff0c;包括但不限于模型压缩、模型融合、迁移学习、强化学习等领域&#xff0c;帮助读者进一…

你不得不知的几种常见的向量数据库产品

产品介绍 在使用 LLM&#xff08;大型语言模型&#xff09;知识库时&#xff0c;经常会用到以下几种向量数据库&#xff1a; Milvus&#xff1a;这是一款开源的向量数据库&#xff0c;具有高度可扩展性和高性能。它支持多种向量相似性搜索算法&#xff0c;适用于大规模数据处理…

企业IT架构转型之道:阿里巴巴中台战略思想与架构实战感想

文章目录 第一章&#xff1a;数据库水平扩展第二章&#xff1a;中台战略第三章&#xff1a;阿里分布式服务架构HSF&#xff08;high speed Framework&#xff09;、早期Dubbo第四章&#xff1a;共享服务中心建设原则第五章&#xff1a;数据拆分实现数据库能力线性扩展第六章&am…

征程 6 工具链性能分析与优化 2|模型性能优化建议

01 引言 为了应对低、中、高阶智驾场景&#xff0c;以及当前 AI 模型在工业界的应用趋势&#xff0c;地平线推出了征程 6 系列芯片。 在软硬件架构方面&#xff0c;征程 6 不仅保持了对传统 CNN 网络的高效支持能力&#xff0c;还强化了对 Transformer 类型网络的支持&#xf…

字符编码和字符集

1. 字符编码和字符集 1.1. 字符编码 编码&#xff1a;字符 –>字节解码&#xff1a;字节 –>字符字符编码Character Encoding : 就是一套自然语言的字符与二进制数之间的对应规则。 1.2. 字符集 字符集 Charset&#xff1a;是一个系统支持的所有字符的集合&#xff0…

Kafka面试题解答(二)

1.怎么尽可能保证 Kafka 的可靠性 kafka是可能会出现数据丢失问题的&#xff0c;Leader维护了一个动态的in-sync replica set&#xff08;ISR&#xff09;&#xff0c;意为和 Leader保持同步的FollowerLeader集合(leader&#xff1a;0&#xff0c;isr:0,1,2)。 如果Follower长…

Chromium127编译指南 Linux篇 - 获取Chromium源码(四)

引言 在前一节中&#xff0c;我们成功配置了 depot_tools 并验证了开发环境的基本可用性。接下来&#xff0c;我们将着手于拉取和初始设置 Chromium 的源码&#xff0c;这是进行 Chromium 开发的首要步骤。通过有效的源码管理和版本控制&#xff0c;我们能更高效、流畅地进行开…

LINUX离线安装Milvus

一.下载安装包 离线安装Docker需要你提前下载Docker的安装包&#xff0c;并将其传输到目标机器上进行安装。以下是一个基于Linux系统的离线安装Docker的简要步骤和示例&#xff1a; 从有网络的机器上下载Docker安装包。 将下载的安装包拷贝到离线的服务器上。 在离线的服务…

【HGT】文献精讲:Heterogeneous Graph Transformer

【HGT】文献精讲&#xff1a;Heterogeneous Graph Transformer 标题&#xff1a; Heterogeneous Graph Transformer &#xff08;异构图Transformer&#xff09; 作者团队&#xff1a; 加利福尼亚大学Yizhou Sun 摘要&#xff1a; 近年来&#xff0c;图神经网络&#xff08;GN…

书客、柏曼、爱德华护眼台灯护眼效果怎么样?真实测评告诉你真相

现在的孩子学习压力很大&#xff0c;在学校课程已经塞满了大半天&#xff0c;课后的作业更是不少&#xff0c;空闲时间还需要去课后补习班的数不胜数。用眼的次数非常的高&#xff0c;眼睛很容易感到疲惫&#xff0c;这时候我们的护眼台灯大有作用&#xff0c;好的护眼台灯可以…

(一)<江科大STM32>——软件环境搭建+新建工程步骤

一、软件环境搭建 &#xff08;1&#xff09;安装 Keil5 MDK 文件路径&#xff1a;江科大stm32入门教程资料/Keil5 MDK/MDK524a.EXE&#xff0c;安装即可&#xff0c;路径不能有中文。 &#xff08;2&#xff09;安装器件支持包 文件路径&#xff1a;江科大stm32入门教程资料…

Springboot 整合 Java DL4J 打造文本摘要生成系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

外排序之文件归并排序实现

1. 外排序 外排序&#xff08;External sorting&#xff09;是指能够处理极⼤量数据的排序算法。通常来说&#xff0c;外排序处理的数据不能 ⼀次装⼊内存&#xff0c;只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采⽤的是⼀种“排序-归并”的策略。在排序阶段&…

校园官网练习---web

HTML&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>西安工商学院</title><…

JAVA-08-继承

继承 父类&#xff1a;被继承的类 子类&#xff1a;继承父类的类&#xff0c;可以访问父类的公有和保护成员。 extends:使用 extends 关键字来表示一个类继承另一个类。 方法重写:子类可以重写父类的方法&#xff0c;以提供特定的实现。重写的方法必须与父类中的方法具有相…

Trimble X12三维激光扫描仪正在改变游戏规则【上海沪敖3D】

Trimble X12 三维激光扫描仪凭借清晰、纯净的点云数据和亚毫米级的精度正在改变游戏规则。今天的案例我们将与您分享&#xff0c;X12是如何帮助专业测量咨询公司OR3D完成的一个模拟受损平转桥运动的项目。 由于习惯于以微米为单位工作&#xff0c;专业测量机构OR3D是一家要求…

SpringBoot框架下的资产管理创新

4系统概要设计 4.1概述 系统设计原则 以技术先进、系统实用、结构合理、产品主流、低成本、低维护量作为基本建设原则&#xff0c;规划系统的整体构架. 先进性&#xff1a; 在产品设计上&#xff0c;整个系统软硬件设备的设计符合高新技术的潮流&#xff0c;媒体数字化、压缩、…