前言 :详细介绍了yolo系列目标检测算法的原理和发展过程。
系列:
【YOLO系列】YOLO.v1算法原理详解
【YOLO系列】YOLO.v2算法原理详解
【YOLO系列】YOLO.v3算法原理详解
【YOLO系列】YOLO.v4算法原理详解
【YOLO系列】YOLO.v5算法原理详解
论文参考:YOLO9000: Better, Faster, Stronger
yolo v1虽然简单便捷,但检测效果较差,相较于FRCNN和SSD,其性能有所不及。
而 yolo v2 作为 v1 的接续,在原有基础上,做出了很多改进,从而实现了更好、更快、更强悍的目标检测性能,开始迎头赶上FRCNN,SSD网络。
yolo v2整体网络架构如下所示

v1
v2
Batch-Normalization
- 对批样本的输出特征量分别进行归一化处理,分别使得每个特征数据均值为0,方差为1。该步骤不需要引入任何额外参数。
- 对上一步输出做线性变换,即 Z ′ = α Z + β Z' = \alpha Z+\beta Z′=αZ+β。这里的 α , β \alpha ,\beta α,β 是可训练的参数。该步骤是尝试恢复原本信息。
说明
v1
v2
说明
这里即是训练时候的一些细节。
可能考虑当时计算机算力低、图像标注样本太少等因素,存在了训练与测试图片分辨率不同的情况。这里不做深入讨论。
该方法使得 mAP 提升了4%。
v1
框的总数量: 7 × 7 × 2 = 98 7\times 7\times 2 = 98 7×7×2=98 个
yolov1输出向量: S × S × ( C + B × 5 ) S\times S\times (C+B\times 5) S×S×(C+B×5)
v2
每个 grid 预先设定一组不同大小和宽高比的先验框
gird num: 13 × 13 13\times 13 13×13
anchor num: 9 9 9
框总数量: 13 × 13 × 9 = 1521 13\times 13\times 9 = 1521 13×13×9=1521
每个 grid 中的九个框,各自独立,可预测不同物体
yolov2输出向量: S × S × B × ( C + 5 ) S\times S\times B\times (C+5) S×S×B×(C+5)
删去全连接层,删去一个池化层,增加了下采样操作(下述)
预测框输出 为 先验框的微调偏移量
更快收敛,更好训练
说明
关于聚类算法原理参见: 机器学习之聚类
v1
v2
说明
可以得到更符合样本特点的先验框尺寸,减少网络微调的复杂度
该方法使得 mAP 提升了4.8%。
v1
None
Faster R-CNN 中,RPN 从偏移量得到预测框坐标计算方式如下

该种计算方法下,训练值(即偏移量 t x , t y t_x, t_y tx,ty ) 无限制范围,因此预测框中心坐标可以为任意位置。这样会导致预测框训练过程中非常不稳定,从而导致模型不稳定。
v2
预测(x,y,w,h):调整新的计算方法,限制预测框范围

1.方格 grid cell 大小被归一化为1*1
2. σ ( x ) \sigma(x) σ(x)函数范围在 [ 0 , 1 ] [0,1] [0,1]
3. e x e^x ex 函数范围在 [ 1 , + ∞ ] [1,+\infty] [1,+∞]
预测 c
说明
σ ( t 0 ) = P r ( o b j e c t ) ∗ I O U ( b , o b j e c t ) \sigma(t_0) = Pr(object)*IOU(b, object) σ(t0)=Pr(object)∗IOU(b,object)
网络使用了下采样,输入从416*416变成了13*13,下采样了32倍。
对于小目标来说,如此下采样可能导致其特征完全丧失。
因此需要一些手段来保留小目标特征。
v1
v2
引申 yolov5 Focus 结构

说明
v1
v2
说明
从2.2.0 节知道,论文所用卷积神经网络结构,即Backbone 是基于 DarkNet。
完整 DarkNet 网络如下所示

yolo v2 使用了图中蓝色框选位置的结构,对应与 2.2.0 节蓝色框选位置。
标签示意如下:

yolo v1中是每个 grid 有 ( B × 5 + c ) (B\times 5+c) (B×5+c) 个值
yolo v2中损失函数共包含三项,即
yolo v2 相较于 yolo v1 使用的相关技巧及其提升如下:
