【YOLOv4】

YOLOv4 论文地址::【https://arxiv.org/pdf/2004.10934】

YOLOv4 论文中文翻译地址:【深度学习论文阅读目标检测篇(七)中文版:YOLOv4《Optimal Speed and Accuracy of Object Detection》-CSDN博客】

yolov4的作者不是1-3的作者

采用IOU作为损失函数,由于IOU损失函数存在的一些问题,演化出GIOU DIOU CIOU

IOU:最开始的损失函数。没有考虑IOU=0的情况不可导,位置因素也没考虑

GIOU:加入了惩罚因子,BB和TG的外界。边界框和真实框的外界矩形面积,面积并集,再除以外界矩形面积,从而解决了IOU损失中,IOU不可导的情况

DIOU:优化DIOU 引出面积重合,中心点距离

CIOU:优化DIOU,引入长宽比,当IOU越大,应当考虑长宽比,当IOU越小,个更多应该考虑中心点距离

CSP:是一篇论文,减少计算量的同时保证准确率,实现一部分直接传递到下一阶段,另一部分通过卷积层进行处理后传递到下一阶段,然后1通过跨阶层次结构合并,翻译:跨阶段局部网络。

SPP:原论文中SPP是为了适配不同输入尺寸的图像,能够不resize就可以再特征提取之后跟上fc,YOLOv4中借鉴了这种思想,把提取的特征进行多角度池化,,结果堆叠,提升特征信息

并行:一起执行

串行:按照顺序一个一个

PAN:路径聚合网络

1、改进点和贡献

改进:

输入端改进:CutMix、Mosaic 数据增强

主干网络:CSPDarknet53 为 backbone、 SPP 额外添加模块

颈部网络:SPP(Spatial Pyramid Pooling)、PANet(Path Aggregation Network)

检测头:YOLOv3(基于 anchor 的)

损失函数:CIOU(Complete Intersection over Union )损失

激活函数:Mish 激活函数

样本匹配:增加了匹配样本的数量

YOLOv4 贡献主要内容如下:

算力要求低,单 GPU 就能训练好

从数据层面(数据增强等)和网络设计层面(网络结构)来进行改善

融合各种神经网络论文的先进思想

2、数据增强策略

2.1 Bag of freebies

  • 通常情况下,传统的目标检测器的训练都是在线下进行的。因此, 研究者们总是喜欢利用纯线下训练的好处而研究更好的训练方法,使得目标检测器在不增加测试成本的情况下达到更好的精度。我们将这些只需改变训练策略或只增加训练成本的方法称为 bag of freebies。目标检测经常采用并符合这个定义的就是数据增强。数据增强的目的是增加输入图像的多样性,从而使设计的目标检测模型对来自不同环境的图片具有较高的鲁棒性

  • 使用场景:Mosaic 数据增强、标签平滑、自对抗训练、损失函数 CIOU、CmBN

2.2 Bag of specials

  • 对于那些只会增加少量的推理成本插入模块后期处理方法, 但可显著提高目标检测的准确性,我们称其为 Bag of specials。一 般来说,这些插入模块是用来增强模型的某些属性的,如扩大感受野、 引入注意力机制、增强特征整合能力等,而后处理是一种筛选模型预测结果方法

  • 使用场景:Mish 激活函数、CSP 结构

2.3 CutMix 数据增强 【掌握】

  • 增强局部特征的学习:通过将不同图像的局部特征混合在一起,模型可 以学习到更多的局部信息

  • 提高训练效率:高价值信息增多,提升训练效率,优化算法性能

  • 防止模型过拟合:通过引入更多样的训练样本,CutMix 能够提高模型的泛化能力,减少过拟合现象

  • 数据稳定:由于采用填充的形式,不会有图像混合后不自然的情形,能够提升模型分类的表现

2.4 Mosaic 数据增强 【掌握】

  • Mosaic 数据增强则利用了 4 张图片,对 4 张图片进行拼接,每一张图片都有其对应的框,将 4 张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的框,然后将这样一张新的图片传入到神经网络当中去学习,这极大丰富了检测物体的背景

  • Mosaic数据增强的具体步骤如下:

    • 首先随机取 4 张图片

    • 分别对 4 张图片进行基本的数据增强操作,并分别粘贴至与最终输出图像大小相等掩模的对应位置

    • 进行图片的组合和框的组合

  • 注意:

    • 基本的数据增强包括:翻转、缩放以及色域变化(明亮度、饱和度、色调)等操作

  • 图示:先对单张图片做调整亮度、对比度、色调、随机缩放、剪切、翻转、旋转等基本数据增强,后把 4 张图片拼接在一起

  • 优点:

    • 增加数据多样性:通过将多张图像混合在一起,生成更多不同的训练样 本

    • 提升模型的鲁棒性:模型在训练过程中见过更多样的图像组合,能够更 好地应对不同场景下的目标检测任务

    • 减少过拟合:通过增加数据的多样性,有助于防止模型过拟合,提升泛化能力

    • 减少训练算力:由于一次性可以计算 4 张图片,所以 Batch Size 可以不用 很大,也为 YOLOv4 在一张 GPU 卡上完成训练奠定了数据基础

2.5 DropBlock 正则化

  • DropBlock 是一种用于卷积神经网络的正则化技术,旨在防止过拟合。它通过在训练过程中随机丢弃特征图中的连续区域(块)来增加模型的泛化能力。与传统的 Dropout 不同,Dropout 随机丢弃独立的神经元,而 DropBlock 丢弃的是特征图中的连续相邻区域,这样可以更有效地移除某些语义信息,从而提高正则化的效果

  • 图示:图(b) 表示 Dropout 、图(c)表示 DropBlock

2.6 Class label smoothing

  • 标签平滑(Label Smoothing)是一种正则化技术,用于减少模型在训练过程中对训练数据的过拟合提高模型的泛化能力。标签平滑的基本思想是通过在训练过程中对标签进行平滑处理,减少模型对单一类别的过度自信,从而使得模型更加鲁棒

  • 独热编码(高维稀疏矩阵)(One-Hot Encoding)是一种将分类变量转换为二进制向量的编码方法,通过 One-Hot 编码,可以将分类变量转换为数值形式,假设有一个分类变量,它有 𝐾 个不同的类别。One-Hot 编码会将每个类别映射到一个长度为 𝐾 的二进制向量,其中只有一个位置为 1,余位置为 0。这个位置对应于该类别的索引

  • 标签平滑的工作原理:

    • 在传统的分类任务中,标签通常是以 one-hot 编码的形式给出的。例如,对于一个三分类任务,标签可能是 [1, 0, 0][0, 1, 0][0, 0, 1]。标签平滑通过将这些硬标签平滑为软标签,使得每个类别的概率不再是 0 或 1,而是一个介于 0 和 1 之间的值

    • 公式:

      • y_{true}是原始的 one-hot 编码标签

      • y_{smoothed}是平滑后的标签

      • \epsilon是平滑系数,通常是一个较小的正数(例如 0.1)

      • K 是类别的总数

  • 案例:假设我们有一个三分类任务,原始的 one-hot 编码标签是 [1, 0, 0],平滑系数 𝜖=0.1,类别总数 𝐾=3。那么平滑后的标签计算如下:

2.7 CmBN 【了解】

  • 交叉小批量归一化(Cross mini-Batch Normalization,CmBN) 是 CBN 的修改版。CmBN会跨多个小批量对均值和方差进行积累和计算,逐渐形成一个全局的均值和方差,从而提升了统计量的稳定性和准确性,减少训练震荡

方法均值/方差计算方式是否跨 batch是否引入条件信息适用场景主要优势
BN当前 batch 内通用简单高效
CBN当前 batch + 条件信息多任务、生成模型控制特征分布
CmBN当前 batch + 历史 batch(滑动平均)小 batch size提升统计稳定性

2.8 Mish 激活函数  

  • 与 ReLU 等非平滑激活函数相比,Mish 具有更好的平滑性,平滑的激活函数能够让模型获得更好的非线性,从而得到更好的准确性和泛化,Mish 激活函数的数学表达式为:

  • Mish 函数和 ReLU 一样都是无正向边界的,可以避免梯度饱和

  • 使用了Mish激活函数的 TOP-1 和 TOP-5 的精度比没有使用时都略高一些:

3、损失函数

  • MSE Loss 主要问题就是导数变化不稳定,尤其是在早期阶段(损失越大,导数越大),随着导数越来越小, 训练速度变得越来越慢。也因此有学者提出了 IOU 一系列的损失函数,IOU 损失函数演变的过程如下:IOU => GIOU => DIOU =>CIOU 损失函数,每一种损失函数都较上一种损失函数有所提升

3.1 IoU Loss

  • IoU 损失定义如下:交集越大,损失越小

  • 不适合的情况:

    • 情况 1 ,当预测框和目标框不相交时,IoU=0,无法反映两个框距离的远近,此时损失函数不可导

    • 情况 2 和情况 3 的情况,当 2 个预测框大小相同,2 个 IoU 也相同,IOU Loss 无法区分两者位置的差异

3.2 GIoU Loss

  • GIoU(Generalized loU)是对 IoU 的改进版本

  • 图中最大外接矩形为 C,红色区域为差集 A(C-并集),那么给出 GIoU Loss 的表达式如下:

  • 优点:

    • 在 GIoU 不仅关注重叠区域,还关注其他的非重合区域,能够更好的反映两者的重合度,即添加了惩罚因子,缓解了 IoU Loss 不可导的问题

  • 缺点:

    • 下面 3 种情况差集均相等,这个时候 GIoU Loss 就退化为了 IoU Loss,GIoU Loss 也无法反映 3 种情况的好坏,即无法区分相对位置关系

3.3 DIoU Loss

  • 为了解决 GIoU 遇到的问题,DIoU(Distance loU)就诞生了。DIoU 作者认为好的目标框回归函数应该考虑 3 个重要几何因素:重叠面积、中心点距离,长宽比

  • 针对 IoU 和 GIoU 存在的问题,DIoU 作者从两个方面进行考虑

    • 如何最小化预测框和目标框之间的归一化距离?

    • 如何在预测框和目标框重叠时,回归的更准确?

  • 针对第一个问题,提出了 DIoU Loss(Distance IoU Loss),DIoU Loss 考虑了重叠面积和中心点距离,当目标框包裹预测框的时候,直接计算 2 个框的距离,因此 DIoU Loss 收敛的更快

  • 公式:

  • 图示:

  • 效果图:

  • 缺点:

    • 如下图所示的 3 种状态预测框和真实目标框的中心点距离是相同的,DIoU Loss 也退化成了 IoU Loss。如上面提到的目标检测回归函数需要考虑到的 3 种因素,DIoU Loss 没有引入长宽比的衡量

3.4 CIoU Loss  【掌握】

  • 为了解决 DIoU 遇到的问题,CIoU(Complete loU) Loss 被提出来,CIoU 在 DIoU 基础上把目标框长宽比的相似程度考虑进去,利用惩罚因子进行约束

  • YOLOv4 采用 CIoU Loss 做回归损失函数,而分类损失和目标损失都使用的是交叉熵损失。对于回归损失,其数学表达式如下:

  • CIoU Loss 将目标框回归函数应该考虑的 3 个重要几何因素都考虑进去了:重叠面积、中心点距离、长宽比

4、网络结构

采用了称为 CSPDarknet-53 的新的主干网络结构,它基于 Darknet-53,并通过使用 CSP(Cross Stage Partial)模块来提高特征表示的能力

  • YOLOv4 = CSPDarknet53(骨干) + SPP 附加模块PANet 路径聚合(颈) + Yolov3(检测头)

 

 

4.2 CSPNet

  • CSPNet(Cross Stage Partial Network):跨阶段局部网络,主要从网络结构设计的角度解决推理中计算量很大的问题

  • CSPNet 的作者认为推理计算过高的问题是由于网络优化中的梯度信息重复导致的。因此采用 CSP(Cross Stage Partial)模块先将基础层的特征按照通道划分为两部分,一部分直接传递到下一个阶段,另一部分则通过一些卷积层进行处理后再传递到下一个阶段,然后通过跨阶段层次结构将它们合并,在减少了计算量的同时可以保证准确率

  • CSP 在论文《CSP:A New Backbone that can Enhance Learning Capability of CNN 》提出,把 CSP 应用到 ResNe(X)t,模型结构如下图所示:

  • Bottleneck 层通常由三个卷积层组成:

    • 第一个 1×1 卷积层:用于降低输入通道数,以减少后续卷积层的计算量

    • 第二个 3×3 卷积层:在降维后的特征图上进行卷积操作,提取特征

    • 第三个 1×1 卷积层:将通道数恢复到原始维度,以供下一层使用

  • 优点:

    • 增强 CNN 的学习能力,使得在轻量化的同时保持准确性

    • 降低计算成本、内存成本

4.3 YOLOV4 的 CSP

  • 空间金字塔池化网络(Spatial Pyramid Pooling Network,SPPNet)主要目的是解决图像在输入到卷积神经网络时尺寸不一的问题。通过将不同大小的输入映射到固定长度的输出,SPP 模块使得神经网络能够处理任意大小的输入,从而大大提高了模型的灵活性和泛化能力

  • YOLOv4 借鉴了 SPP 的思想,SPP 模块被集成在主干网络之后,用于增强模型对多尺度目标的感知能力。

  • 将经过不同尺度池化后的特征图沿通道维度进行拼接。由于每个池化操作的结果都是 13×13×256,而我们进行了 4 次不同的池化操作(包括原特征图),最终得到的是一个 13×13×(4×256)=13×13×1024 的特征图,在这个过程中,虽然我们改变了特征图的处理方式,但我们并没有改变其空间分辨率(仍然是 13×13),而是增加了通道数(从 256 增加到 1024)。这样做可以有效地增加网络的感受野,并结合了不同尺度的信息,有助于提高模型对于各种大小目标的检测性能

 

4.5 FPN+PAN

  • 路径聚合网络(Path Aggregation Network,PAN),在 FPN 的基础之上进一步优化而来,用于在不同尺度的特征图之间进行信息传递和融合,以获取更好的多尺度特征表示

  • 在 YOLOv4 中,PANet(Path Aggregation Network)是一种用于特征金字塔网络(Feature Pyramid Network, FPN)的改进版本,旨在增强特征的多尺度融合能力,从而提高目标检测的精度。PANet 通过自底向上的路径增强机制,进一步加强了特征图的跨尺度信息传递,这对于检测不同大小的目标尤其重要

  • YOLOV4 中的 PANet 主要由两部分组成:

    • 自顶向下的路径(FPN):这部分与传统的 FPN 类似,从高层(语义信息丰富但空间信息较少)到低层(空间信息丰富但语义信息较少)逐步上采样,并与低层特征图进行融合,生成多尺度的特征图,作用就是负责将深层的强语义特征传递到底层特征图中,增强低层特征图的语义表达能力,有助于检测大目标

    • 自底向上的路径(PAN):这是 PANet 相对于传统 FPN 的一个重要改进,它从低层到高层逐步下采样,并与高层特征图进行融合,进一步增强特征图的跨尺度信息传递,作用就是负责将浅层的精确定位特征传递到高层特征图中,增强高层特征图的定位能力,有助于检测小目标

  • 改进:YOLOv4在原始PAN结构的基础上进行了改进。原本的 PANet 网络的 PAN 结构中,特征层之间融合时是直接通过加法(addition)的方式进行融合的,而 YOLOv4 中则采用在通道方向上进行拼接(Concat)的方式进行融合

5、模型性能

5.1 数据增强性能影响

  • 选型:CutMix + Mosaic + Label Smoothing + Mish

5.2 增强对检测的效果

5.3 Backbone性能影响

5.4 mini-batch性能影响

5.5 推理时间和精度

5.6 COCO 数据集性能对比

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

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

相关文章

【秋招笔试】2025.08.03虾皮秋招笔试-第一题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 01. 蛋糕切分的最大收益 问题描述 K小姐经营着一家甜品店,今天她有一块长度为 n n n 厘米的长条蛋糕需要切分。根据店里的规定,她必须将蛋糕切成至少 2 2

2.0 vue工程项目的创建

前提准备.需要电脑上已经安装了nodejs 参考 7.nodejs和npm简单使用_npmjs官网-CSDN博客 创建vue2工程 全局安装 Vue CLI 在终端中运行以下命令来全局安装 Vue CLI: npm install -g vue/cli npm install -g 表示全局安装。vue/cli 是 Vue CLI 的包名。 安装完成后…

视觉图像处理中级篇 [2]—— 外观检查 / 伤痕模式的原理与优化设置方法

外观缺陷检测是工业生产中的关键环节,而伤痕模式作为图像处理的核心算法,能精准识别工件表面的划痕、污迹等缺陷。掌握其原理和优化方法,对提升检测效率至关重要。一、利用伤痕模式进行外观检查虽然总称为外观检查,但根据检查对象…

ethtool,lspci,iperf工具常用命令总结

ethtool、lspci 和 iperf 是 Linux 系统中进行网络硬件查看、配置和性能测试的核心命令行工具。下面是它们的常用命令分析和总结: 核心作用总结: lspci: 侦察兵 - 列出系统所有 PCI/PCIe 总线上的硬件设备信息,主要用于识别网卡型号、制造商、…

DAY10DAY11-新世纪DL(DeepLearning/深度学习)战士:序

本文参考视频[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili 参考文章0.0 目录-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授-CSDN博客 1深度学习概论 1.举例介绍 lg房价预测:房价与面积之间的坐标关系如图所示,由线性回归…

flutter release调试插件

chucker_flutter (只有网络请求的信息,亲测可以用) flutter:3.24.3 使用版本 chucker_flutter: 1.8.2 chucker_flutter | Flutter package void main() async {// 可以控制显示ChuckerFlutter.showNotification false;ChuckerF…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的私域流量拉新策略研究

摘要:私域流量运营已成为企业数字化转型的核心战略,其本质是通过精细化用户运营实现流量价值最大化。本文以“定位、拉新、养熟、成交、裂变、留存”全链路为框架,聚焦开源链动21模式、AI智能名片与S2B2C商城小程序的协同创新,揭示…

华为云云服务高级顾问叶正晖:华为对多模态大模型的思考与实践

嘉宾介绍:叶正晖,华为云云服务高级顾问,全球化企业信息化专家,从业年限超过23年,在华为任职超过21年,涉及运营商、企业、消费者、云服务、安全与隐私等领域,精通云服务、安全合规、隐私保护等领…

【机器学习(二)】KNN算法与模型评估调优

目录 一、写在前面的话 二、KNN(K-Nearest Neighbor) 2.1 KNN算法介绍 2.1.1 概念介绍 2.1.2 算法特点 2.1.3 API 讲解 2.2 样本距离计算 2.2.1 距离的类型 (1)欧几里得距离(Euclidean Distance) …

《Uniapp-Vue 3-TS 实战开发》实现自定义头部导航栏

本文介绍了如何将Vue2组件迁移至Vue3的组合式API。主要内容包括:1) 使用<script setup lang="ts">语法;2) 通过接口定义props类型约束;3) 用defineProps替代props选项;4) 将data变量转为ref响应式变量;5) 使用computed替代计算属性;6) 将created生命周期…

GitCode疑难问题诊疗

问题诊断与解决框架通用问题排查流程&#xff08;适用于大多数场景&#xff09; 版本兼容性验证方法 网络连接与权限检查清单常见错误分类与解决方案仓库克隆失败场景分析 HTTP/SSH协议错误代码解读 403/404错误深层原因排查高级疑难问题处理分支合并冲突的深度解决 .gitignore…

告别物业思维:科技正重构产业园区的价值坐标系

文 | 方寸控股引言&#xff1a;当产业园区的竞争升维为“科技军备竞赛”&#xff0c;土地红利消退&#xff0c;政策优势趋同&#xff0c;传统园区运营陷入增长困局。当招商团队还在用Excel统计企业需求&#xff0c;当能耗管理依赖保安夜间巡检&#xff0c;当企业服务停留在“修…

GitHub 热门项目 PandaWiki:零门槛搭建智能漏洞库,支持 10 + 大模型接入

转自&#xff1a;Khan安全团队你还没有自己的漏洞库吗&#xff1f;一条命令教你搭建。PandaWiki 是一款 AI 大模型驱动的开源知识库搭建系统&#xff0c;帮助你快速构建智能化的 产品文档、技术文档、FAQ、博客系统&#xff0c;借助大模型的力量为你提供 AI 创作、AI 问答、AI …

Python 程序设计讲义(55):Python 的函数——函数的参数

Python 程序设计讲义&#xff08;55&#xff09;&#xff1a;Python 的函数——函数的参数 目录Python 程序设计讲义&#xff08;55&#xff09;&#xff1a;Python 的函数——函数的参数一、声明形参二、传递实参&#xff08;位置参数&#xff09;1、在调用函数进行传递参数时…

机器学习sklearn:支持向量机svm

概述&#xff1a;现在就只知道这个svm可以画出决策边界&#xff0c;对数据的划分。简单举例就是&#xff1a;好的和坏的数据分开&#xff0c;中间的再验证from sklearn.datasets import make_blobs from sklearn.svm import SVC import matplotlib.pyplot as plt import numpy …

Django ORM 详解:从入门到进阶,掌握数据库操作的核心

在 Django 中&#xff0c;ORM&#xff08;Object Relational Mapping&#xff0c;对象关系映射&#xff09; 是框架的核心之一。它允许你使用 Python 代码来操作数据库&#xff0c;而无需编写原始 SQL 语句。Django ORM 不仅简化了数据库操作&#xff0c;还提升了代码的可读性、…

mac中使用gvm install没有效果

问题表现&#xff1a; mac使用了gvm install一直没有效果&#xff08;添加代理也没效果&#xff09;&#xff0c;效果如下图所示&#xff0c;始终卡在downloading&#xff0c;但是gvm version是正常的解决办法&#xff1a; 手动安装go的版本&#xff08;版本号自行选择&#xf…

【React】状态管理

两个状态管理工具&#xff1a; dva 是一个基于 Redux 和 React Router 的数据流方案&#xff0c;它提供了对 Redux 和 React Router 的封装&#xff0c;使得在使用 dva 时可以更方便地进行状态管理和路由操作。React Redux是一个JavaScript状态管理库&#xff0c;它的核心包括s…

⭐CVPR2025 FreeUV:无真值 3D 人脸纹理重建框架

&#x1f4c4;论文题目&#xff1a;FreeUV: Ground-Truth-Free Realistic Facial UV Texture Recovery via Cross-Assembly Inference Strategy ✍️作者及机构&#xff1a;Xingchao Yang、Takafumi Taketomi、Yuki Endo、Yoshihiro Kanamori&#xff08;CyberAgent、Universit…

Google Chrome <140.0.7297.0 MediaStreamTrackImpl UAF漏洞

【高危】Google Chrome <140.0.7297.0 MediaStreamTrackImpl UAF漏洞 漏洞描述 Google Chrome 是美国谷歌&#xff08;Google&#xff09;公司的一款Web浏览器。 受影响版本中&#xff0c;当处理媒体流时&#xff0c;MediaStreamTrackImpl 组件在销毁前&#xff0c;未能清…