热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

yolov4和yolov5对比分析

YOLO(YouOnlyLookOnce)算法原理前言:详细介绍了yolo系列目标检测算法的原理和发展过程。系列:【YOLO系列】YOLO.v1算法原理详解【YOLO系列】YOLO

YOLO(You Only Look Once)算法原理

前言 :详细介绍了yolo系列目标检测算法的原理和发展过程。

系列:
【YOLO系列】YOLO.v1算法原理详解
【YOLO系列】YOLO.v2算法原理详解
【YOLO系列】YOLO.v3算法原理详解
【YOLO系列】YOLO.v4 & YOLO.v5算法原理详解



4. YOLO.v4 & YOLO.v5


4.1 基本概述

论文参考:YOLOv4: Optimal Speed and Accuracy of Object Detection

回顾 yolo 发展过程:



  • yolo v1 创新性提出了目标检测新框架,即 yolo 横空出世,那时候性能还很薄弱;

  • yolo v2 通过加入各种技巧,使得 yolo 性能有了跟其它主流目标检测网络较劲的底气;

  • yolo v3 基础网络的改变,大大提高了其性能,同时构建出了 yolo 的经典框架;至此,大厦已立。

从性能数据上看,yolo v3 已经是个很成熟很好用的网络了,具有较快检测速度和较高准确率;

事实上,也确会如此,现在 yolo v3 仍旧被诸多目标检测者广泛使用在诸多检测任务中。

AI 发展如此迅速,以至于各种网络训练、建构等小技巧层出不穷,研究者们一直在向着更快、更准的方向前进。

基于这样的背景,yolo v4 就是集技巧之大成者,调参之经典例。换句话说,就是将期间发展的各种深度学习 trick 加入到已立的大厦中。

yolo v5 似乎也有做了类似的事情。

如果简单概括地话,可以认为 yolo v4 是理论的集大成者, yolo v5 则是算法落地实现的实施者。

这也是为什么把两者放到了一个博客中。


4.2 从 YOLO v4


4.2.0 整体网络

整体网络如下所示:

 


4.2.1 框架建构

backbone:



  • CSPResNeXt50

  • CSPDarknet53(√)

  • EfficientNet-B3

 


感受野大小影响:



  • 达到目标大小:模型可以感受到整个目标对象

  • 达到网络大小:模型可以考虑到目标对象的临近对象

  • 超过网络大小:增加图像点之间联系和增加了最后的激活作用


neck:



  • SPP

  • PANet

head:



  • yolov3 head


4.2.2 技巧集成 (BoF, BoS)


本部分就是向框架里堆积各种先进技巧,这些技巧可以分为两类:



  • bag of freebies:不增加模型复杂度,不增加推理计算量的训练方法技巧,提升模型准确度

  • bag of specials:增加少许模型复杂度或计算量,显著增加模型准确度

以下 (√) 表示 yolo v4 采纳的技巧


data augmentation



  • photometric distortions: Brightness, Contrast, Hue, Saturation, Noise

  • geometric distortion: Scale, Crop, Flip, Rotate

  • random erase, CutOut

  • Blur

  • Hide-and-seek, grid mask

  • MixUp

  • CutMix(√)

  • Mosaic(√)

  • style transfer GAN

  • Class label smoothing 类标签平滑(√)

  • Self-Adversarial Training(SAT)自对抗训练(√)

activation function



  • ReLU (×)



  • LReLU (×)



  • PReLU (×)



  • ReLU6 (×)



  • SELU (×)



  • hard-Swish (×)



  • Leaky-ReLU (by default)



  • Swish



  • Mish(√)



bbox regression loss



  • MSE

  • IoU

  • GIoU

  • CIoU (√)

  • DIoU

enhance receptive field



  • SPP (√)

  • ASPP

  • RFB

  • BiFPN

regularization method



  • DropOut

  • DropPath

  • Spatial DropOut

  • DropBlock(√)

normalization



  • Batch Normalization(BN)

  • Cross-GPU Batch Normalization(CGBN or SyncBN) ×

  • Filter Response Normalization(FRN)

  • Cross-Iteration Batch Normalization(CBN)

  • Cross mini-Batch Noramlization(CmBN)(√)

Skip-connections



  • Residual connections

  • Weighted Residual connections

  • Multi-input Weighted Residual connections(MiWRC)(√)

  • Cross-Stage Partial connections(CSP)(√)

attention module



  • channel-wise: Squeeze-and-Excitation (SE)

  • point-wise: Spatial Attention Module (SAM) (√)

other methods



  • Eliminate grid sensitivity(√)

  • Cosine annealing scheduler(√)

  • optimal hyper-parameters by genetic algorithms(√)

  • modified PAN(√)

  • DIoU-NMS(√)

  • Dynamic mini-batch size(√)


4.3 到 YOLO v5


4.3.0 整体网络

整体网络如下所示(以yolov5n为例):

 


4.3.1 框架建构

Backbone


v4 & v5
CSPDarknet


Neck


v4 & v5
SPP/SPPF
PANET


Head


v3 & v4 & v5
(80个类别 + 置信度 + 4个坐标) * 3



4.3.2 技巧集成


注意:yolo v5 现在也在持续更新中,且更新频率很快,下面一些技巧可能是暂时的


Data Augmentation


v5
Scale
Hue
CutMix
Mosaic


Auto Learning BBox Anchors


v3
通过k-means 和 遗传算法 获得



v4
无自适应锚定框



v5
基于训练数据自动学习


Activation Function


v4
Mish



v5
中间层:Leaky ReLU
检测层:Sigmoid


Optimization Function


v4
SGD



v5
较小数据集:Adam
较大数据集:SGD


Cost Function


v4
bbox regression: CIoU loss



v5
class probability score: 二进制交叉熵
objectness score: Logits
bbox regression: GIoU loss



4.4 总结

理论上来说,yolo v4 和 yolo v5 本质上只是在yolo v3 框架基础上“调参”的改进。事实上,确实会有很多人这么认为。

但无论如何,yolo v4 也好,yolo v5也罢, 相较于其前的网络都有非常明显的进步。

from:https://blog.csdn.net/deepsprings/article/details/126347319

本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/16788325.html,如有侵权联系删除



推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ... [详细]
  • quartus管脚分配后需要保存吗_嵌入式必须会的一些硬件面试题,要试一试吗?你过来呀!...
    1、下面是一些基本的数字电路知识问题,请简要回答之。(1)什么是Setup和Hold时间?答:SetupHoldTime用于测试芯片对输入 ... [详细]
  • 湍流|低频_youcans 的 OpenCV 例程 200 篇106. 退化图像的逆滤波
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了youcans的OpenCV例程200篇106.退化图像的逆滤波相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了htmlJS相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Android 常用工具类源码大全
    Android常用工具类源码大全 ... [详细]
  • 一、死锁现象与递归锁进程也是有死锁的所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作 ... [详细]
  • java 单链表和双_Java链表,单链表和双链表
    Java-链表1、什么是链表?2、链表的特点是什么?3、链表的实现原理?4、如何自己写出一个链表?1、什么是链表࿱ ... [详细]
author-avatar
书友62908490
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有