yolo_v2原理

实现方法

整体上,v2对v1的问题进行了优化,通过多个方面进行改进

  1. Batch Normalization mAP提升2.4%

    • V2版本舍弃Dropout,卷积后全部加入BatchNormalization
    • 网络的每一层的输入都做了归一化,收敛相对更容易
    • 通俗来讲,就是对每一层加上干预,使其向我们希望的方面预测
    • 批归一化有助于解决反向传播过程中的梯度消失和梯度爆炸问题,降低对一些超参数(比如学习率、网络参数的大小范围、激活函数的选择)的敏感性,并且每个batch分别进行归一化的时候,起到了一定的正则化效果(YOLO2不再使用dropout),从而能够获得更好的收敛速度和收敛效果。
  2. 更大的分辨率 mAP提升了3.7%

    • V1训练时用的是224 * 224,测试时使用448 * 448
    • V2训练时额外又进行了10次448 * 448的微调
  3. 聚类提取先验框 召回率大幅提升到88%,同时mAP轻微下降了0.2

    • 先验框:去掉了全连接层,去掉了网络中一个Pooling层。416 * 416用作输入尺寸最终能输出一个13 * 13的Feature Map,使用Anchor Box会让精确度稍微下降,但用了它能让YOLO能预测出大于一千个框。
    • Dimension clusters(聚类提取先验框的尺度信息):优化先验框,对训练集中标注的边框进行K-mean聚类分析,在model复杂性与high recall之间权衡之后,选择聚类分类数K=5,K-means聚类中的距离如下
      image-20211019161825616
    • 约束预测边框的位置:YOLO调整了预测公式,将预测边框的中心约束在特定gird网格内,
  4. passthrough层检测细粒度特征 mAP提升1

    • 因为感受野的原因,小目标信息可能丢失
    • 就是在最后一个pooling之前,特征图的大小是2626512,将其1拆4,直接传递(passthrough)到pooling后(并且又经过一组卷积)的特征图,两者叠加到一起作为输出的特征图。
    • 根据YOLO2的代码,特征图先用11卷积从 2626512 降维到 2626*64,再做1拆4并passthrough。
  5. 多尺度图像训练

    • 都是卷积操作,因此可以不同尺度图片进行训练
    • 每10个Batch,网络会随机地选择一个新的图片尺寸,由于使用了下采样参数是32,所以不同的尺寸大小也选择为32的倍数{320,352…..608},最小320320,最大608608,网络会自动改变尺寸,并继续训练的过程。

总结:v2就是在细节上对v1的问题进行了优化,提升了mAP值

posted @ 2021-05-19 16:39  Je丶随  阅读(94)  评论(0)    收藏  举报