• 【YOLO系列】YOLO.v4 & YOLO.v5算法原理详解


    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也罢, 相较于其前的网络都有非常明显的进步。

  • 相关阅读:
    输入验证在防止安全漏洞方面的重要性
    金仓数据库KingbaseES物理备份恢复命令选项(expire命令)
    Angular前端项目在Apache httpd服务器上的部署
    Java框架总结(高淇java300集+入门笔记)
    公共政策学考试题库
    vector 用法 说明
    ArrayList & LinkedList
    项目平台——项目首页设计(五)
    【校招VIP】前端浏览器之性能和加载优化
    Python学习的注意点(内容不全,个人学习使用)
  • 原文地址:https://blog.csdn.net/deepsprings/article/details/126347319