【YOLO系列】 YOLOv4思想详解

前言

        以下内容仅为个人在学习人工智能中所记录的笔记,先将目标识别算法yolo系列的整理出来分享给大家,供大家学习参考。

        本文未对论文逐句逐段翻译,而是阅读全文后,总结出的YOLO V4论文的思路与实现路径。

        若文中内容有误,希望大家批评指正。


资料下载

        YOLO V4论文下载地址:YOLOv4: Optimal Speed and Accuracy of Object Detection

        项目地址:YOLO V4

回顾:

        YOLO V1:【YOLO系列】YOLO V1论文思想详解

        YOLO V2:【YOLO系列】YOLO V2论文思想详解

        YOLO V3:【YOLO系列】 YOLOv3论文思想详解


        大家可以发现YOLO V4论文的作者变成Alexey Bochkovskiy了,YOLO V1-3的作者都是Joseph Redmon, Ali Farhadi,不过不影响,YOLO V4作者提出了一大堆措施来提高YOLO的性能,我们这就来看看。


一、YOLO V4思想

        1、在训练阶段,YOLO V4使用Mosaic数据增强来提升模型的训练速度和网络精度。它利用CmBNSAT自对抗训练来提升网络的泛化性能。

        2、在Backbone网络中,YOLO V4使用了CSPDarkNet53作为基准网络,并利用Mish激活函数代替原始RELU激活函数,同时增加Dropblock模块来进一步提升模型的泛化能力。

        3、在Neck网络中,YOLO V4利用SPP模块融合不同尺度大小的特征图。同时,利用自底向上的PAN特征金字塔提升网络的特征提取能力。

        4、作者将YOLO V4分成了Two-Stage 检测器,即在Head部分使用了两级Prediction方法,一级目标检测器为Dense Prediction,用于生成密集的bbox二级目标检测器为Sparse Prediction,用于对一级检测器生成的bbox进行精细调整;还利用CIOU_Loss来代替Smooth L1 Loss函数,并利用DIOU_nms来代替传统的NMS操作,从而进一步提升算法的检测精度。


二、YOLO V4详解

        1、Bag of freebies(BOF)

        (1)BOF介绍

        作者将只改变训练策略只增加训练成本的方法称为“bag of freebies”,而在目标检测方法中经常采用的bag of freebies包括数据增强标签分布损失函数

        1)Data augmentation

        数据增强的目的是增加输入图像的可变性,使所设计的目标检测模型对来自不同环境的图像具有更高的鲁棒性。常用的方法包括光度失真几何失真处理两方面,处理光度失真时,可以调整图像的亮度、对比度、色调、饱和度和噪点处理几何失真,可以采用随机缩放、裁剪、翻转和旋转等方法(以上一些方法在YOLO V3中已经使用了)。

        作者也介绍了其他数据增强的方法,包括:random erase、CutOut、hide-and-seek、grid mask、DropOut、DropConnect、DropBlock、Mixup、CutMix、GAN

        2)Data balance(label distribution)

        对于不同类别之间存在数据不平衡的问题的解决方法,作者认为也属于bag of freebies。

        对于这类问题,作者介绍了hard negative example mining、online hard example mining、focal loss等解决办法。

        3)Objective function of bbox regression

        关于这个问题,作者介绍了GIOU loss、DIOU loss、CIOU loss等方法。

        2、Bag of specials(BOS)

        (1)BOS介绍

        作者将只增加少量推理成本,却能显著提高目标检测精度plugin 模块post-processing方法称为“bag of specials”。plugin模块是为了增强模型中的某些属性,比如扩大感受野(enlarging receptive field)、引入注意机制(attention mechanism)或者增强特征集成能力(feature integration capability)等post-processing主要用于对模型预测结果进行筛选。

        1)Enhance receptive field

        SPP、ASPP、RFB

        2)Attention mechanism

        Squeeze-and-Excitation(SE)、Spatial attention module(SAM)

        3)Feature integration

        SFAM、ASFF、BiFPN

        4)Activation function

        ReLU、LReLU、PReLU、ReLU、SELU、Swish、hard-Swish、Mish

        5)Post-processing

        DIOU-NMS

3、YOLO V4 方法论

        (1)基本目标

        基于神经网络在生产系统中的快速运行和并行计算的优化而不是以低计算量为理论指标(BFLOP)。

        于是,作者提出了两种Real-time的神经网络:

        For GPU:在卷积层中使用少量的(1-8)的CSPResNeXt50/CSPDarknet53

        For VPU:使用分组卷积,但是避免使用SE模块,包括EfficientNet-lite / MixNet / GhostNet / MobileNetV3

        (2)模型的选择

        这里的模型(architecture)可以理解为作者在为搭建YOLO V4时所选择的backbone、neck、head。

        目标一:在输入网络分辨率、卷积层数、参数数量(filter_size²* filters * channel/groups)和输出层数之间找到最佳平衡;

        目标二:选择额外的blocks来增加感受野,并从不同的backbone为不同的检测级别选择参数聚合的最佳方法。

        由于一个最佳的分类器不一定是一个最佳的detector,因此在文中作者提出了对detector的要求如下:

        1)更高的输入网络尺寸(分辨率)-用于检测多个小尺寸的对象

        2)更多的层-用于更高的接受域以覆盖增加的输入网络尺寸

        3)更多的参数-用于更大的模型能力,以检测单个图像中不用尺寸的多个对象

        而不同大小感受野的影响主要如下:

        1)直到目标大小——允许看到整个对象

        2)直到网络大小——允许查看对象周围的环境

        3)超过网络大小——增加图像点和最终激活函数之间的连接数量

        基于以上内容,最后作者通过实验选择了CSPDarknet53(Backbone)+SPP block+PANet作为在backbone与detector的参数聚合方法(Neck)+YOLO V3的head搭建了YOLO V4模型(Head)

        (3)额外的提升

        为了使所设计的detector更适合在单GPU上进行训练,作者进行了额外的设计和改进,具体如下:

        数据增强MosaicSelf-Adversarial Training(SAT)

        应用遗传算法选择最优的超参数

        修改过的SAM、PANCross mini-Batch Normalization(CmBN)

        (4)YOLO V4

        1)Backbone、Neck、Head

        Backbone: CSPDarknet53

        Neck: SPP、PAN

        Head: YOLO V3

        2)YOLO V4中的BOF

        a. BOF for backbone

        CutMix and Mosaic data augmentation,DropBlock regularization, Class label smoothing

        b. BOF for detector

        CIOU-loss, CmBN, DropBlock regularization, Mosaic data augmentation, Self-Adversarial Training(SAT), Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler, Optimal hyperparameters, Random training shapes

        3)YOLO V4中的BOS

        a. BOS for backbone

        Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)

        b. BOS for detector

        Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIOU-NMS


三、YOLO V4中策略详解

        1、Backbone

        CSPDarknet53是借鉴了CSPNet(Cross stage partial networks,跨阶段局部网络)的思想,再加上YOLO V3中的Darknet53网络进行改进而形成的全新的主干网络结构。

        (1)CSPNet

        CSPNet的提出主要是为了解决以下三个问题

        1、加强CNN的学习能力

        2、消除计算瓶颈

        3、减少内存成本

        CSPNet的思想就是将基础层的特征图分成两部分一部分经过密集块和过渡层,然后将另一部分与传输的特征映射结合到下一阶段。它可以与ResNet、ResNeXt、DenseNet等网络结合形成新的网络。下图为CSPNet与DenseNet结合后的网络结构图。

        关于CSPNet的其他内容,大家可以下载论文CSPNet: A New Backbone that can Enhance Learning Capability of CNN 自行阅读,也是YOLO V4的作者写的(自产自销啦~)。

        (2)CSPDarknet53

        在这里给大家推荐一个网络可视化软件:Netron,大家可以自行下载安装后,导入模型配置文件就可以。

        网页版:Netron

        桌面版:Netron

        CSPDarknet53主要有5个DownSample结构组成,每个DownSample结构包含ConvBNMish和ResBlock,最后3个DownSample结构负责输出特征图进行下一阶段的处理。

        在CSPDarknet的卷积网络中所使用的激活函数为Mish函数(什么是Mish函数,请看【YOLO系列】 YOLOv4之Mish函数)

        下图为 CSPDarknet53网络

        2、Neck

        (1)SPP

        SPP(Spatial Pyramid Pooling,空间金字塔池化)是何凯明大神提出用于解决R-CNN中速度慢问题的方法主要思想将同一个特征图进行不同的池化,然后将池化后的特征图拼接在一起,这样解决不同尺寸的特征图如何连接全连接层。

        在YOLO V4中,通过DownSample3后的特征图经过3个卷积后,分别使用了池化核为13 * 13 , 9 * 9, 5 * 5的最大池化,padding模式为‘same', 然后将原来的特征图与池化后的三个特征图拼接在一起。

        (2)PAN

        PAN(Path Aggregation Network)结构其实就是在FPN(Feature Pyramid Networks,特征金字塔网络)的基础上进行改进得到的。

        原来多数的object detection算法都是只采用顶层特征做预测,但是我们知道低层的特征语义比较少,但是目标位置准确高层的特征语义信息比较丰富,但目标位置比较粗略

        另外虽然也有些算法采用多尺度特征融合的方式,但是一般是采用融合后的特征做预测,而不一样的地方在与预测试在不同特征层独立进行的。

        PAN主要分为3个模块也是3点贡献:

        1)改进的FPN: Bottom-up Path Augmentation

        2)改进之前的pool策略: Adaptive Feature Pooling

        3)改进mask分支: Full-connected Fusion

        1)Bottom-up Path Augmentation

        FPN已经证明了加入一条top-down的旁路连接,能给feature增加high-level的语义有利于分类。

        但是low-levle中的feature是很有利于定位的,虽然FPN中P5也间接得有了low-level的特征,但是信息流动路线太长了如上图红色虚线所示(其中有很多卷积层)。在PAN思想中,FPN的P2-P5又加了low-level的特征,最底层的特征流动到N2-N5只需要经过很少的层。

        具体如下图所示,在PAN原文中采用的addition,在YOLO V4中修改为concatenation。P2直接copy在N2,然后N2通过步长为2的3 * 3卷积后分辨率缩小2倍,和P3尺寸一致,然后concatenation。

        这样构建的优势在于缩短了底层尺寸的特征到高层尺寸小的特征之间的距离,让特征融合更加有效。

        2)Adaptive Feature Pooling

        在FPN的论文中可以知道FPN从P2-P6(P6仅用作生成proposal,不用作ROIPooling时提取特征)多尺度地生成proposal,然后做ROIPooling时会根据proposal的大小将它分配到不同的level去crop特征,小的proposal去low-level的层,大的proposal去high-level的层。

        这样做虽然简单也有效,但是不是最好的处理方式,尽管P2-P5(N2-N5)已经融合了low-level和high-level的特征,然后他们的主要特征还是以 它本有的level为主, 这时如果小的proposal能从high-level层获取到更多的上下文语义信息是有利于分类的,而大的proposal能从low-level层获取到更好的细节是有利于它定位的。

        PAN认为高低层特征各有其优势,高层特征的视野域更大,小的ROI可以在这些特征上获取更丰富的上下文信息。底层特征可以帮助大的proposal更好得定位。这里提出的池化方法则是在所有尺度的特征上操作,之后进行融合。

        3)Full-connected Fusion

        全连接FC是全图视野域对位置更敏感,看得更大,因此PAN多加一条用全连接层预测的支路来做mask预测,然后和FCN融合,具体如下:


四、YOLO V4网络模型

五、YOLO系列对比

Type

YOLO V1

YOLO V2

YOLO V3

YOLO V4

网络结构

Backbone

借鉴了GoogleNet的思想,24个卷积层+2层全连接层

Darknet-19

Darknet-53

CSPDarknet53

损失函数

均方差损失(sum-squared error loss)

Softmax loss

Logistic loss

CIOU

Anchor Box

无Anchor Box

提出聚类的方法生成Anchor Box,但未使用,还是采用了预设的方式确定先验框的尺寸

聚类生成Anchor Box

聚类生成Anchor Box

特征提取

Neck

--

Passthrough layer

采用了类似FPN的结构,进行多尺度特征提取

SPP、PAN

FPS

45 FPS

--

在Titan X GPU上的速度是45 fps,加速版的YOLO差不多是150fps。

65 FPS on Tesla V100

mAP

63.4

在VOC2007数据集上,以67FPS的速度可达到76.8mAP;

以40FPS的速度可达到78.6mAP。

55左右

AP为43.5% (AP50为65.7%)


        下篇YOLO V5再见!


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跟我学java|Stream流式编程——Stream 基础

一、流式编程的概念和作用 Java 流(Stream)是一连串的元素序列,可以进行各种操作以实现数据的转换和处理。流式编程的概念基于函数式编程的思想,旨在简化代码,提高可读性和可维护性。 Java Stream 的主要作用有以下几个方面: 简化…

vite 如何设置 pwa,让网页类似 app 那样运行,使用插件 vite-plugin-pwa

vite 如何设置 pwa,让网页类似 app 那样运行,使用插件 vite-plugin-pwa 一、概述 情况还是那么个情况,还是原来的项目 vue2 改为 vitetsvue3 遇到的问题,今天这个问题是如何 在 Vite 环境下设置 PWA。 PWA 就是网页应用可以像 a…

GFP-CERTIFIED®FLUOFORTE®钙离子检测试剂盒

Enzo Life Sciences的GFP-CERTIFIED FLUOFORTE Calcium assay kit提供了一种荧光分析方法,用于检测广泛生物靶标的细胞内钙动员情况。相对于其他商业化的染料,GFP-CERTIFIED FLUOFORTE染料是最亮和最灵敏的荧光钙指示剂。该试剂盒为贴壁和非贴壁细胞系提…

国产CPU--飞腾信息技术有限公司

一、发展历程 飞腾CPU最早是国防科技大学立项研究的科技项目。 2014年,由中国电子信息产业集团、天津市滨海新区政府和天津先进技术研究院联合支持成立飞腾信息技术有限公司。目前,CEC通过中国长城控股公司28.04%股份,为公司最大股东。 二、…

外贸SaaS软件功能有哪些?

外贸SaaS软件功能有哪些?主要有客户管理,销售管理,库存,财务等管理,均是用过saas模式实现的客户端软件功能,这里以孚盟外贸saas软件为例,具体如下: 外贸SaaS软件的功能主要包括以下几…

小程序系列--6.WXSS 模板样式

一. 什么是 WXSS WXSS (WeiXin Style Sheets)是一套样式语言,用于美化 WXML 的组件样式,类似于网页开发中的 CSS。 1.WXSS 和 CSS 的关系 二、rpx 1. 什么是 rpx 尺寸单位 rpx(responsive pixel)是微信小程序独有的&#x…

10个实用的产品说明书模板制作技巧

产品说明书是一个重要的工具,可以帮助用户理解如何使用和维护他们购买的产品。制作一个易于理解和使用的产品说明书对提高客户满意度和忠诚度具有重要价值。 而产品说明书模板是一种预先设计好的框架,它将设计、排版和内容结构的复杂性降到最低&#xf…

使用串口 DMA 模式接收不定长数据

一、简介 曾经遇到客户有一个需求,需要用串口 DMA 的方式接收不定长度的数据,DMA 有个缺点就是在每次传输前需要设定好传输的字节长度,这种方式显然对于接收不定长度的数据来说没有那么灵活。但 DMA 也有着显著的优点,如可直接访…

fail-safe 机制与 fail-fast 机制分别有什么作用

前段时间一个小伙伴去面试,遇到这样一个问题。 ”fail-safe 机制与 fail-fast 机制分别有什么作用“ 他说他听到这个问题的时候,脑子里满脸问号。那么今天我们来看一下,关于这个问题, 看看高手应该如何回答吧。 一、问题解析 fa…

MODBUS转PROFINET网关与全数字交流伺服配置案例

MODBUS转PROFINET网关连接与全数字交流伺服驱动系统的配置案例,这一通信方式极大地简化了工业自动化系统中的数据传输和控制过程。变频器和伺服电机可以实现数据交流和控制指令的实时传输,从而实现更精确更高效的生产过程。 案例简介:本案例是…

智慧灌溉解决方案(基于物联网的智能灌溉系统)

​ 详情:智慧水务数字孪生安全监测解决方案提供商-星创 (key-iot.com.cn) 随着农业IOT的快速发展,智慧灌溉正成为提高农业水资源利用效率,实现精准灌溉的重要技术手段。完整的智慧灌溉系统由实地各类传感设备以及后台管理软件平台组成,可以实现对整个灌区的监测和精…

MySQL 定时清理Binlog日志并自动清理

MySQL 定时清理Binlog日志并自动清理 MySQL的二进制日志(Binlog)对于数据库的恢复和复制是至关重要的。然而,随着时间的推移,这些日志文件可能会占据大量存储空间。因此,及时而安全地删除这些日志文件变得非常重要。 …

【python】OpenCV—Histogram(9)

学习参考来自 Python下opencv使用笔记(九)(图像直方图) 更多学习笔记可以参考 【python】OpenCV—RGB(1)【python】OpenCV—Rectangle, Circle, Selective Search(1.2)【python】…

CHS_02.1.3.2+中断和异常

CHS_02.1.3.2中断和异常 中断有哪些类型中断的作用中断有哪些种类型另一个内中段的例子外中段的例子 中断的分类中断机制背后的基本原理回顾 在这个小节中 我们会学习中断和异常相关的知识点 那首先我们会介绍中断的作用 这其实在上小节当中也有提到过 只不过由于这个内容十分重…

如何为图片加水印?

如何为图片加水印?在许多情况下,图片的分享和传播已经变得非常普遍。然而,随着图片的广泛传播,也带来了一些问题,例如盗用、未经授权的使用以及信息的混淆。为了保护自己的照片版权,标识归属或增加品牌的可…

使用Java读取Excel文件,实现数据批处理

一、前言 通过编程方式读取Excel数据能实现数据导入、批量处理、数据比对和更新等任务的自动化。这不仅可以提高工作效率还能减少手动处理的错误风险。此外读取的Excel数据可以与其他系统进行交互或集成,实现数据的无缝传输和共享,满足特定项目的需求。…

OSPF基础

0x00 前言 本篇简述OSPF相关知识 0x01 正文 为什么需要动态路由协议 静态路由无法适应较大的网络无法动态的随着网络的变化而自动化,耗费人力 动态路由协议 什么是BGP协议 基于距离矢量算法修改后的算法形成协议,被称为路径矢量路由协议 BGP工作…

Windows高性能模式的开启

高性能模式的开启 在高性能电源模式下,系统会获得性能提升,得益于电脑中的硬件始终允许运行在较高的性能下,从而带动了系统性能,运行程序会更流畅一些。 如果是笔记本的话,屏幕的亮度也会在高亮度下显示,…

AI交互数字人怎么应用在展览展厅?

随着AIGC的迅速发展,AI交互数字人成为展览展厅的新流量密码。越来越多文旅品牌、博物馆展馆等通过部署AI交互数字人,开创全新的交互模式。 如山西博物馆上线的主题云展览《且听凤鸣》中,打破了常态展示模式,以“数字人小程序”的方…

Java字符串拼接常用方法总结

使用场景:用某个分隔符拼接字符串 下边是我使用过的几种方式废话不多说,直接上代码初始数据 1.使用流2.StringBuilder3.[StringJoiner](https://blog.csdn.net/qq_43417581/article/details/126076152?ops_request_misc%257B%2522request%255Fid%2522%2…