目标检测——YOLOv4算法解读

论文: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.hqwc.cn/news/541295.html

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

相关文章

扛着半个互联网前进的core-js,其作者快被钱“拖垮”了。

Core-js 的作者是 Denis Pushkarev,他是一位俄罗斯的 JavaScript 开发者和贡献者。他在 2013 年创建了 core-js 项目,并一直积极地维护和更新这个库。 一、神奇的core-js Core-js 的月均 NPM 下载量为 2.5 亿次,总下载量高达 90 亿次&#xf…

城乡居民基本医疗信息管理系统|基于Springboot的城乡居民基本医疗信息管理系统设计与实现(源码+数据库+文档)

城乡居民基本医疗信息管理系统目录 目录 基于Springboot的城乡居民基本医疗信息管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、病例管理 2、医院资讯信息管理 3、医院资讯类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

HTML_CSS练习:HTML注释

一、代码示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>HTML注释</title> </head> <body><marquee loop"1">马龙强<!--下面的输入框是可以滚动的&#x…

PMP和软考,考哪一个?

PMP跟软考有部分知识点是重合的&#xff0c;软考高项比较适用于计算机 IT 行业&#xff0c;而 PMP 不受行业限制&#xff0c;各行各业都适用&#xff0c;至于哪个更合适&#xff0c;看你想去国企还是民企&#xff0c;国企软考吃香&#xff0c;民企PMP 吃香 下面说下两者具体有什…

Nginx介绍、架构和安装

Nginx介绍、架构和安装 文章目录 Nginx介绍、架构和安装1.Nginx介绍2.Nginx架构3.Nginx安装3.1 主机初始化3.1.1 设置网卡名和ip地址3.1.2 配置镜像源3.1.3 关闭防火墙3.1.4 禁用SELinux3.1.5 设置时区 3.2 Nginx版本和安装方式3.3 包安装3.3.1 CentOS 安装3.3.1.1 查看当前系统…

P1149 [NOIP2008 提高组] 火柴棒等式

题目描述 给你 &#xfffd;n 根火柴棍&#xff0c;你可以拼出多少个形如 &#xfffd;&#xfffd;&#xfffd;ABC 的等式&#xff1f;等式中的 &#xfffd;A、&#xfffd;B、&#xfffd;C 是用火柴棍拼出的整数&#xff08;若该数非零&#xff0c;则最高位不能是 00&…

穿越半个世纪,探索中国数据库的前世今生

引言 在数字化潮流席卷全球的今天&#xff0c;数据库作为 IT 技术领域的“活化石”&#xff0c;已成为数字经济时代不可或缺的基础设施。那么&#xff0c;中国的数据库技术发展经历了怎样的历程&#xff1f;我们是如何在信息技术的洪流中逐步建立起自己的数据管理帝国的呢&…

css入门基础(二)链接伪类细节详讲

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.链接伪类的使用顺序规范 2.链接伪类的使用效果 3.浏览器安全策略对visited伪类造成的影响 4.visited伪类的工作原理 源码&#xff1a; index.html <!DOCTYPE html> <html lang"en"> <head&…

MySQL--执行一条 select 语句,期间发生了什么?

执行一条 SQL 查询语句&#xff0c;期间发生了什么&#xff1f; 连接器&#xff1a;建立连接&#xff0c;管理连接、校验用户身份&#xff1b;查询缓存&#xff1a;查询语句如果命中查询缓存则直接返回&#xff0c;否则继续往下执行。MySQL 8.0 已删除该模块&#xff1b;解析 …

Unity中的网格创建和曲线变形

Unity中的网格创建和曲线变形 3D贝塞尔曲线变形贝塞尔曲线基础线性公式二次方公式三次方公式 Unity 实现3D贝塞尔曲线变形准备工作脚本概述变量定义 变量解析函数解析 获取所有子节点GetAllChildren 获取所有子节点UpdateBezierBend 控制点更新CalculateBezier Bezier 曲线公式…

网络建设与运维培训介绍和能力介绍

1.开过的发票 3.培训获奖的证书 4合同签署 5.实训设备