Bag of Freebies (BoF) for detector
YOLOv4检测器的BoF特性包括:
- CIoU-loss
- CmBN
- DropBlock regularization
- Mosaic data augmentation
- Self-Adversarial Training,
- Eliminate grid sensitivity,
- Using multiple anchors for a single ground truth
- Cosine annealing scheduler,
- Optimal hyperparameters
- Random training shapes
CIoU-loss
损失函数给出了如何调整权重以降低成本的信号。所以在我们做出错误预测的情况下,我们期望它能给我们指明前进的方向。但如果使用IoU,并且ground truth box和预测没有重叠,就不会发生这种情况。考虑两个预测都不与地面真相重叠,IoU损失函数不能告诉哪一个是更好的,甚至一个可能比另一个更接近GT。
Generalized IoU(GIoU)通过将损失细化为
但是这个损失函数倾向于首先扩展预测边界盒,直到它与GT重叠。然后它通过收缩增加来IoU。这个过程需要比理论上更多的迭代。
首先,介绍Distance-IoU Loss(DIoU):
它引入了一个新的目标来减少两个盒子之间的中心点分离。
最后,引入Complete IoU(CIoU):
- 增加地面真值盒与预测盒的重叠区域
- 使它们的中心点距离最小
- 保持盒子长宽比的一致性
CmBN
原始批次归一化收集一个小批次内样本的均值和方差,以白化输入层。然而,如果小批量尺寸是小的,这些估计将是有噪声的。一个解决方案是在许多小批量中估算它们。然而,随着权重在每次迭代中变化,在这些权重下收集的统计信息在新的权重下可能会变得不准确。一个天真的平均数将是错误的。幸运的是,重量是逐渐变化的。在交叉迭代批处理归一化(CBM)中,它通过下面的调整从前k次迭代中估计这些统计信息。
CmBN是一个修改后的选项,它只收集单个批内的小批之间的统计信息。
Self-Adversarial Training (SAT)
SAT是一种数据增强技术。首先,它对一个训练样本执行前向传递。在传统的反向传播中,我们通过调整模型权值来改进检测器对图像中目标的检测。这里是相反的方向。它改变了图像,使它可以降低检测器的性能。也就是说,它创建了一个针对当前模型的对抗性攻击,即使新图像在视觉上看起来是一样的。接下来,用带有原始边界框和类标签的新图像对模型进行训练。这有助于泛化模型和降低过拟合。
Eliminate grid sensitivity(消除网络敏感性)
边界框b计算如下:
对于bx = cx和bx = cx +1,我们需要tx分别产生一个巨大的负值和正值。但是我们可以用一个比例因子seeta来使这个过程更简单。下面是源代码更改:
Multiple anchors for a single ground truth
如果IoU(ground truth, anchor)和gt;借据阈值。(注意,在确定它在YOLOv4中的角色方面,我还没有足够的信息。)
Cosine annealing scheduler
余弦调度根据余弦函数调整学习速率。它开始缓慢地降低大的学习率。然后它在中途迅速降低了学习率,最终在降低学习率方面出现了一个小斜坡。
该图显示了学习速率是如何衰减的(下面的图中也应用了学习速率预热)以及它对地图的影响。这可能不是很明显,新的时间表有更多的稳定的进展,而不是停滞了很长一段时间才再次取得进展。
Hyperparameter selection using genetic algorithms (Evolutionary Algorithms)
进化算法是一种有根据的猜测方法。它遵循的是适者生存的概念。例如,我们随机选择100组超参数。然后,我们用它们来训练100个模型。之后,我们选择了前10个执行模型。对于每个选择的模型,我们根据其原始创建10个轻微变异的超参数。我们用新的超参数重新训练模型,并再次选择最佳模型。当我们保持迭代时,我们应该找到最佳的超参数集。或者,我们可以从默认的超参数开始,然后开始突变。
遗传算法采用YOLOv3-SPP算法进行GIoU缺失训练,最小5k集搜索300个epoch。遗传算法实验采用搜索学习率0.00261,动量0.949,IoU阈值分配ground truth 0.213, loss normalizer 0.07。
Random Training Shapes
许多单级目标检测器是在固定的输入图像形状下训练的。为了提高泛化效果,我们可以对不同图像大小的模型进行训练。(Multi-Scale Training in YOLO)