目标检测——YOLOv4算法解读

news2024/11/15 23:44:03

论文:YOLOv4:Optimal Speed and Accuracy of Object Detection
作者:Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao
链接:https://arxiv.org/pdf/2004.10934.pdf
代码:https://github.com/AlexeyAB/darknet

YOLO系列其他文章:

  • YOLOv1通俗易懂版解读
  • SSD算法解读
  • YOLOv2算法解读
  • YOLOv3算法解读
  • YOLOv5算法解读

文章目录

  • 1、算法概述
  • 2、YOLOv4细节
    • 2.1 Selection of architecture
    • 2.2 Mosaic data augmentation
    • 2.3 Self-Adversarial Training (SAT)
    • 2.4 CmBN
    • 2.5 修改SAM和PAN结构
    • 2.6 使用的BoF和BoS
  • 3、实验


1、算法概述

到2020年,有大量的改进手段和优化方式对提升网络精度有帮助,但有些只针对于特定数据集有用,有些改进却是针对所有数据集、所有任务通用的,比如:batch-normalization和残差连接。YOLOv4正是采用这些通用特征如:带权重的残差连接(Weighted-Residual-Connections, WRC),跨阶段部分连接(Cross-Stage-Partial-connections, CSP),跨小批量归一化(Cross mini-Batch Normalization, CmBN)、自我对抗训练(Self-adversarial-training, SAT),Mish激活函数,马赛克数据增强(Mosaic data augmentation),DropBlock regularization和CIoU损失函数,结合这一系列改进措施在Tesla V100显卡上实现了在MS COCO数据集上43.5%AP(65.7% AP50)的性能,并且推理速度为65FPS。相比YOLOv3在AP指标上有了非常大的提升。如图:
在这里插入图片描述
YOLOv4的主要贡献如下:
1、构建了一个简单高效的目标检测算法,降低了训练门槛,可以使用1080Ti或2080Ti GPU就能训练起来;
2、验证了直到本算法提出之前的最先进的Bag-of-Freebies和Bag-of-Specials方法的有效性。
3、修改了最先进的方法,使其更有效,更适合单GPU训练,包括CBN,PAN,SAM等。

在这之前先解释一下Bag-of-Freebies和Bag-of-Specials

  • Bag-of-Freebies:按照字面翻译是免费包的意思,指通过开发更好的训练策略或只增加训练成本的方法,使目标检测器在不增加推理成本的情况下获得更好的精度。目标检测方法中经常采用的符合免费包定义的是数据增强,有图像几何变换(随机缩放,裁剪,旋转),Cutmix,Mosaic等;网络正则化:Dropout,Dropblock等;损失函数的设计:比如边界框回归的损失函数改进CIoU。
  • Bag-of-Specials:指那些只增加少量推理成本,却能显著提高目标检测精度的插件模块和后处理方法,作者称之为“特品包”。一般来说,这些插件模块是为了增强模型中的某些属性,如扩大接受野SPP、ASPP等;引入注意机制SE、SAM模块;增强特征集成能力PAN、BiFPN;激活函数的改进Swish、Mish等;后处理方法改进如soft NMS、DIoU NMS对模型预测结果进行筛选。

其次作者总结了现如今检测算法的网络结构,给一阶段算法(比如YOLO, SSD, RetinaNet等)和二阶段算法(比如R-CNN系列)画了统一的网络结构图,很有参考意义,如下所示:
在这里插入图片描述


2、YOLOv4细节

2.1 Selection of architecture

在这里插入图片描述
虽然CSPResNext50分类性能比CSPDarknet53要好,但对于检测任务而言,后者比前者表现更好;对于感受野而言,CSPDarknet53虽然没有EfficientNet-B3大,但比后者推理速度快3倍左右。综合来看,作者最后选择了CSPDarknet53[1]作为主干网络,在主干最后加上SPP[2]扩大感受野,通过PAN[3]增强特征融合再接上YOLOv3[4]的检测头最后得到YOLOv4。其完整结构如下图[5]所示:
在这里插入图片描述

2.2 Mosaic data augmentation

马赛克数据增强是将4张图片合成一张图片,相对于CutMix只是混合了两张图片,这可以使得网络一次性在一张图片上见到更多的信息,也使得可以设置小的batchsize,从而使得单张显卡一次迭代可以见到之前4倍batchsize数量的图片信息。
在这里插入图片描述

2.3 Self-Adversarial Training (SAT)

自我对抗训练也代表了一种新的数据增强技术,可以在两个前向后向传播阶段操作。在第一阶段,神经网络改变原始图像,不改变网络权重。通过这种方式,神经网络对自己进行对抗性攻击,改变原始图像以制造图像上没有期望对象的欺骗。在第二阶段,训练神经网络以正常方式检测修改后的图像上的物体。

2.4 CmBN

CmBN是CBN[6]修改后的版本,全称为Cross mini-Batch Normalization(CmBN)。BN是对当前mini-batch进行归一化。CBN是对当前以及当前往前数3个mini-batch的结果进行归一化,而CmBN则是仅仅在这个Batch中进行累积。如下图所示:
在这里插入图片描述

2.5 修改SAM和PAN结构

在这里插入图片描述
在这里插入图片描述

2.6 使用的BoF和BoS

  • Backbone使用的BoF:CutMix和Mosaic数据增强,DropBlock正则化,类别标签平滑(Class label smoothing)
  • Backbone使用的BoS:Mish激活函数,CSP连接,多输入加权残差连接(Multi-input weighted residual connections, MiWRC)
  • Detector使用的BoF:CIoU-loss,CmBN,DropBlock正则化,Mosaic数据增强,自对抗训练,消除网格敏感性(参考https://github.com/ultralytics/yolov3),一个gt框匹配多个anchor,余弦退火学习策略(Cosine annealing scheduler),采用遗传算法选择最优超参数,随机训练尺寸
  • Detector使用的BoS:Mish激活函数,SPP模块,SAM模块,PAN模块,DIoU-NMS

3、实验

作者在ImageNet(ILSVRC 2012 val)数据集上做分类测试,在MS COCO(test-dev 2017)数据集上做检测测试。分类数据集主要用于前期的数据增强消融实验,检测数据集用于评估检测指标。如下图所示,是YOLOv4与当前最新水平的检测算法对比结果
在这里插入图片描述


参考文献:
[1] Chien-Yao Wang, Hong-Yuan Mark Liao, Yueh-Hua Wu, Ping-Yang Chen, Jun-Wei Hsieh, and I-Hau Yeh. CSPNet: A new backbone that can enhance learning capability of cnn. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshop (CVPR Workshop),2020.2,7
[2] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun.Spatial pyramid pooling in deep convolutional networks for visual recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 37(9):1904–1916, 2015. 2, 4, 7
[3] Shu Liu, Lu Qi, Haifang Qin, Jianping Shi, and Jiaya Jia. Path aggregation network for instance segmentation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 8759–8768, 2018.1, 2, 7
[4] Joseph Redmon and Ali Farhadi. YOLOv3: An incremental improvement. arXiv preprint arXiv:1804.02767, 2018. 2, 4, 7, 11
[5] Terven J, Cordova-Esparza D. A comprehensive review of YOLO: From YOLOv1 and beyond. arXiv 2023[J]. arXiv preprint arXiv:2304.00501
[6] Zhuliang Yao, Yue Cao, Shuxin Zheng, Gao Huang, and Stephen Lin. Cross-iteration batch normalization. arXiv preprint arXiv:2002.05712, 2020.1,6

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

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

相关文章

【洛谷 P9232】[蓝桥杯 2023 省 A] 更小的数 题解(字符串+区间DP)

[蓝桥杯 2023 省 A] 更小的数 题目描述 小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 0∼9 组成的字符串,下标从 0 0 0 到 n − 1 n-1 n−1,你可以将其视作是一个具有 n n n 位的十进制数字 n u m num num,小蓝可以从 n…

数据结构奇妙旅程之红黑树

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

【Selenium(四)】

一、浏览器操作 1、设置浏览器缩放大小 driver.set_window_size(长,宽) 2、浏览器的前进后退 #前进 driver.forward()#后退 driver.back() 3、浏览器的刷新 driver.refresh() 二、webdriver常见方法

#linux(使用apt-get下载)

(一)发行版:Ubuntu16.04.7 (二)记录: (1)设置下载源 (2)在终端切换到root,然后输入apt-get update更新下载源 (3)安装一…

MATLAB的使用(一)

一,MATLAB的编程特点 a,语法高度简化; b,脚本式解释型语言; c,针对矩阵的高性能运算; d,丰富的函数工具箱支持; e,通过matlab本体构建跨平台; 二,MATLAB的界面 工具栏:提供快捷操作编辑器…

【机器学习】无监督学习算法之:自编码器

自编码器 1、引言2、自编码器2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥, 今天可以讲一讲 自编码器嘛 小鱼:请说清楚,是什么编码器? 小屌丝:自编码器 小鱼&#…

【LabVIEW FPGA入门】并行执行

利用图形化编程的并行特性以及 FPGA 上 LabVIEW 图的真正并行实现,您可以通过将应用程序代码划分为更小的进程来进一步优化执行速度。与整个应用程序在一个循环中运行相比,这使得每个进程能够实现更高的循环速率和更高的应用程序整体执行速率。 …

Java-SpringAop 编程式事物实现

SpringAop 编程式事物实现 1. 数据库事物特性 原子性 多个数据库操作是不可分割的,只有所有的操作都执行成功,事物才能被提交;只要有一个操作执行失败,那么所有的操作都要回滚,数据库状态必须回复到操作之前的状态 …

【11】工程化

一、为什么需要模块化 当前端工程到达一定规模后,就会出现下面的问题: 全局变量污染 依赖混乱 上面的问题,共同导致了代码文件难以细分 模块化就是为了解决上面两个问题出现的 模块化出现后,我们就可以把臃肿的代码细分到各个小文件中,便于后期维护管理 前端模块化标准…

杰理-手表-卡槽式的sd卡热插拔

杰理-卡槽式的sd卡热插拔 卡槽式的sd卡热插拔,需要把TCFG_SD_ALWAY_ONLINE_ENABLE这个宏关掉

KT1328A主从一体蓝牙模块方案_主机使用流程以及开机返回信息说明

在KT6368A芯片基础上,新增KT1328A蓝牙主从一体版本,实现的是主从一体相互切换,可以设置为主机【类似于手机的角色】,也可以设置为从机角色,通过AT指令 不支持SPP,不支持低功耗 。功耗和之前KT6368A双模版本…

C#,图论与图算法,图(Graph)广度优先遍历(BFS,Breadth First Search)算法与源代码

1 深度优先算法与 宽度优先遍历 深度优先算法(DFS,Deep First Search)与 宽度优先遍历(BFS,Breadth First Search) 是树、图数据结构的基础性、标准性的遍历算法。 2 深度优先算法(DFS,Deep First Search) 深度优先搜索(DFS)是一种用于搜索图形或树数据结构的算法…

C#进阶实践项目(俄罗斯方块)

CSharp进阶实践项目--俄罗斯方块 1.需求分析 2.复用贪吃蛇开始等场景切换的代码 (自己写一遍,不难!!!) 入口: 更新接口: Game 类: BeginOrEndBaseScene 类:…

Linux/openEuler系统部署spring boot+vue前后端分离项目(nginx均衡代理)

Linux/openEuler系统部署spring bootvue前后端分离项目(nginx均衡代理) 1、系统环境准备,安装openjdk和nginx 可以看我前面的文章 华为openEuler系统安装openjdk并配置环境变量 openEuler系统安装nginx 2、打包后端SpringBoot项目并部署到…

电机学(笔记一)

磁极对数p: 直流电机的磁极对数是指电机定子的磁极对数,也等于电机电刷的对数。它与电机的转速和扭矩有直接关系。一般来说,极对数越多,电机转速越低,扭矩越大,适用于低速、高扭矩的场合;相反&…

盘古信息2023工作总结表彰大会暨2024工作说明会圆满举行

春风拂面,万物复苏,正是扬帆起航的好时节。2024年3月16日,盘古家人们齐聚一堂,一场以“新产品 新市场 新商业模式 可作为”为主题的工作总结表彰暨说明会圆满举行。本次盛会采用线上线下相结合的方式,无论是盘古东莞总…

国创证券|初学炒股,想赚钱就得了解这些!

初学者炒股: 1、开户。 购买股票需要开立一个股票账户,有了股票账户后,才干生意股票。开立账户时,选择大型的、知名度高的证券公司比较好,例如国创证券、华泰证券、国泰君安、广发证券、招商证券、海通证券、银河证券…

了解常用测试模型 -- V模型、W模型

目录 V模型 测试流程 特点 优、缺点 w模型/双v模型 测试流程 特点 优、缺点 V模型 测试流程 用户需求:产品经理将用户需求转变为软件需求 需求分析与系统设计:验证需求是否正确,确定编程语言和框架 概要设计:项目结构设…

集简云数据表支持连接MySQL数据库,实现无缝数据连接

集简云数据表作为一款轻量级数据存储表单工具,已经帮助众多用户快速创建、管理、存储数据。在传统的数据处理中,如果想将企业原有的数据库数据同步到数据表,需要手动操作进行,工作量大且耗时耗力;同时,由于…

三维铁木辛柯梁Matlab有限元编程 | 弹簧支座 | 弹性支撑单元| Matlab源码 | 理论文本 | 三维梁 | 3D梁 | 空间梁

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…