前言 :详细介绍了yolo系列目标检测算法的原理和发展过程。
系列:
【YOLO系列】YOLO.v1算法原理详解
【YOLO系列】YOLO.v2算法原理详解
【YOLO系列】YOLO.v3算法原理详解
【YOLO系列】YOLO.v4 & YOLO.v5算法原理详解
论文参考:YOLOv4: Optimal Speed and Accuracy of Object Detection
回顾 yolo 发展过程:
从性能数据上看,yolo v3 已经是个很成熟很好用的网络了,具有较快检测速度和较高准确率;
事实上,也确会如此,现在 yolo v3 仍旧被诸多目标检测者广泛使用在诸多检测任务中。
AI 发展如此迅速,以至于各种网络训练、建构等小技巧层出不穷,研究者们一直在向着更快、更准的方向前进。
基于这样的背景,yolo v4 就是集技巧之大成者,调参之经典例。换句话说,就是将期间发展的各种深度学习 trick 加入到已立的大厦中。
yolo v5 似乎也有做了类似的事情。
如果简单概括地话,可以认为 yolo v4 是理论的集大成者, yolo v5 则是算法落地实现的实施者。
这也是为什么把两者放到了一个博客中。
整体网络如下所示:
backbone:
感受野大小影响:
- 达到目标大小:模型可以感受到整个目标对象
- 达到网络大小:模型可以考虑到目标对象的临近对象
- 超过网络大小:增加图像点之间联系和增加了最后的激活作用
neck:
head:
本部分就是向框架里堆积各种先进技巧,这些技巧可以分为两类:
- bag of freebies:不增加模型复杂度,不增加推理计算量的训练方法技巧,提升模型准确度
- bag of specials:增加少许模型复杂度或计算量,显著增加模型准确度
以下 (√) 表示 yolo v4 采纳的技巧
data augmentation
activation function
ReLU (×)
LReLU (×)
PReLU (×)
ReLU6 (×)
SELU (×)
hard-Swish (×)
Leaky-ReLU (by default)
Swish
Mish(√)
bbox regression loss
enhance receptive field
regularization method
normalization
Skip-connections
attention module
other methods
整体网络如下所示(以yolov5n为例):
Backbone
v4 & v5
CSPDarknet
Neck
v4 & v5
SPP/SPPF
PANET
Head
v3 & v4 & v5
(80个类别 + 置信度 + 4个坐标) * 3
注意: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
理论上来说,yolo v4 和 yolo v5 本质上只是在yolo v3 框架基础上“调参”的改进。事实上,确实会有很多人这么认为。
但无论如何,yolo v4 也好,yolo v5也罢, 相较于其前的网络都有非常明显的进步。