YOLO系列总结

YOLO系列总结

相比 RCNN系列,YOLO 系列的主要缺点:

  • 识别物体位置精准性差;
  • 召回率低;

主要原因是每个网格预测固定数量的物体使候选框数量减少;

网络结构

Backbone

YOLO v1

  • 改进 GoogLeNet,用 1x1 和 3x3 卷积核代替 inception modules;
  • Leaky ReL:f(x)=max(x, 0.1x);

YOLO v2 —— darknet19

YOLO v3 —— darknet53

  • resnet 思想,添加了 residual block,降低了梯度消失的风险;
  • 不使用 pooling 层,而是用步长为 2 的卷积层代替,避免了信息丢失;

Concat Layer

YOLO v1 —— 无

YOLO v2 —— 维度拼接,一次,第 16 层 26x26x512 → 13x13x2048 与第 24 层拼接;

YOLO v3 —— 维度拼接,两次

Fully Connected Layer

YOLO v1 —— 两层全连接层;

YOLO v2 —— 无(大大减少了参数规模);

YOLO v3 —— 无

Upsample Layer

YOLO v1 —— 无

YOLO v2 —— 无

YOLO v3 —— 非线性插值法,上采用两次;

Anchor Box

YOLO v1 —— 无

YOLO v2

  • k-means 聚类对数据集的ground truth聚类;
  • 聚类的计算方式:使用 IOU 参与距离计算,若使用欧氏距离会使较大的 BBox 比小的 BBox 产生更大的误差,而 IOU 与 BBox 尺寸无关;使用聚类方法达到相同的 IOU 结果时所需的 anchor box 数量更少。
  • 5 个尺度的 anchor boxes,使用 1 种尺度的 feature map;

YOLO v3

  • k-means:同 YOLO v2
  • 9 个尺度的 anchor boxes,使用 3 种尺度的 feature map,每个 feature map 分配 3 个尺度的 anchor boxes;

Bounding Box

YOLO v1 —— grid cell

  • 直接预测 BBox 的位置和大小;
  • 一个 grid cell 预测一个类;

YOLO v2 —— anchor box + offset + sigmoid activation

  • 预测 BBox 相对于 anchor boxes 的偏移量;
  • 一个 anchor box 预测一类,解决临近物体检测效果不好问题;
  • offset:相较于直接预测的 BBox 位置,预测物体的偏移量,更易稳定收敛;
  • sigmoid activation:当预测的 region proposal 的中心点相对于 anchor boxes 中心的偏移量较大时,不好收敛,导致模型在训练初期不稳定。将预测值加以 sigmoid 运算,将 region proposal 的中心点限定在 anchor box 的中心点所在的 grid cell 里;

YOLO v3 —— 同 v2;

模型输入

数据增强

YOLO v1

  • 饱和度
  • 曝光度
  • 色调
  • 抖动

YOLO v2

  • 同 YOLO v2;
  • 反转180°;
  • 多尺度训练;

YOLO v3 —— 同 v2;

图像输入大小

YOLO v1 —— 预训练模型输入大小为 224x224,检测模型输入大小为 448 x 448;

YOLO v2 —— Multi-Scale Training:每个 10 个 batches 随机选择一种分辨率输入(320~608,32的倍数);

YOLO v3 —— 同 v2;

模型输出

Output Shape

YOLO v1

  • 每个 grid cell 预测一个类别概率;
  • S × S × (B × [x, y, width, height, confidence] + C);
  • 7x7x(2x5+20);

YOLO v2

  • 每个 bbox 预测一个类别概率;
  • S × S × B × ([x, y, width, height, confidence] + C);
  • 13x13x(5x(5+80));

YOLO v3 —— 同 v2;

训练细节

防止过拟合

YOLO v1 —— 也使用了 BN,同时在 FC 中使用 dropout

YOLO v2 —— 取消 dropout 均使用 BN:提升模型泛化能力的同时使得模型更容易收敛;

YOLO v3 —— 同 v2;

优化器

YOLO v1 ——

YOLO v2 —— SGD

  • learning rate = 0.001
  • weight decay = 0.00005
  • momentum = 0.9

YOLO v3

损失函数

Obj Loss

  • 用于判断对应区域是否为物体的损失;
  • One-Stage 目标检测算法的正负样本不均衡的问题比较严重,对于设计损失函数还会有一些针对创新;

Cls Loss

YOLO v1

YOLO v2 —— Softmax Loss

YOLO v3 —— Logistic Loss

  • 这个改进主要是用于多标签分类。Softmax 输出的结果有互斥性,只能预测一类,而如果一个物体有多个标签(如:人和女人),Softmax 是做不到的。

  • Softmax 可被独立的多个 logistic 分类器替代,且准确率不会下降。分类损失采用 binary cross-entropy loss.

Loc Loss

YOLO v1 —— 对宽高都进行开根,使得预测相同的偏差时更小的框产生更大的损失;

YOLO v2 —— 使用 $2 - W_{ij}*h_{ij}$,使小物体的惩罚比大物体重;

YOLO v3 —— 同 v2;

你可能感兴趣的:(YOLO系列总结)