目标检测算法 - YOLOv4

文章目录

    • 1. 简介
    • 2. YOLOv4整体结构
    • 3. Backbone
    • 4. Neck

1. 简介

YOLOv4是YOLOv3的改进版。YOLOv4并不是原YOLO项目的作者。发表于CVPR2020。

改进:

  • 主干特征提取网络:Darknet53 -> CSPDarknet53
  • 特征金字塔:SPP,PAN
  • 分类回归层:YOLOv3(未改变)
  • 训练时用到的小技巧:Mosaic数据增强、Label Smoothing平滑、CIOU、学习率余弦退火衰减
  • 激活函数:使用Mish激活函数

性能对比

目标检测算法 - YOLOv4_第1张图片

网络结构:

  • Backbone:CSPDarknet53
  • Neck:SPP,PAN
  • Head:YOLOv3

优化策略:

  • Eliminate grid sensitivity
  • Mosaic data augmentation
  • IoU threshold(match posotive samples)
  • Optimizered Anchors
  • CIOU

2. YOLOv4整体结构

YOLOv4整体结构

目标检测算法 - YOLOv4_第2张图片


3. Backbone

当输入是416x416时,特征结构如下:

目标检测算法 - YOLOv4_第3张图片

CSP模块

对于输入的特征层,首先将其分为两部分,part1和part2。

对于part2分支,它会通过一系列的dense block,然后通过transition,再将输出和part1上的输出进行融合concat拼接,再通过transition。

目标检测算法 - YOLOv4_第4张图片

在源码中,对于part1和part2是直接将输入特征层按照通道方向进行均分操作。

但是在YOLOv4论文中,并不是这样操作的,如下图。

目标检测算法 - YOLOv4_第5张图片

CSPDarknet53整体结构

作用:

  • 增强CNN的学习能力
  • 移除计算瓶颈
  • 降低显存使用

目标检测算法 - YOLOv4_第6张图片

总体来看,每个CSP模块都有以下特点:

  • 相比于输入,输出featuremap大小减半。
  • 相比于输入,输出通道数增倍。
  • 经过第一个CBM后,featuremap大小减半,通道数增倍。

CSP1和其他CSP有所不同:

  • 经过模块第二个CBM后,CSP1 featuremap大小和通道数都不变,但是其他模块featuremap大小不变,通道减半。

  • 经过最后一个CBM后,CSP1 featuremap大小不变,通道数减半,但是其他模块featuremap大小通道数都不变。


4. Neck

yolov4的Neck部分主要使用SPP和PANet模块。

SPP

SPP(空间金字塔)可以使得多个尺寸特征融合在一起,输入经过3个maxpool然后concat在一起,maxpool大小分别是13,9和5,yolov4中得SPP模块。

目标检测算法 - YOLOv4_第7张图片

PANet

PANet的网络结构由5个核心模块组成。其中(a)是一个FPN,(b)是PAN增加的自底向上的特征融合层,©是自适应特征池化层,(d)是PANet的bounding box预测头,(e)是用于预测掩码的全连接融合层。

目标检测算法 - YOLOv4_第8张图片

PANet是加强版的FPN,通过融合自底向上和自顶向下两个路径增加模型的表征能力。

目标检测算法 - YOLOv4_第9张图片

你可能感兴趣的:(Python,目标检测,算法,YOLO)