Bag of Freebies (BoF) for backbone
The BoF features for YOLOv4 backbone include:
- CutMix and Mosaic data augmentation,
- DropBlock regularization, and
- Class label smoothing
CutMix data augmentation
剪切数据增强去除图像的一个区域(见下图)。这迫使模型在进行分类时不能对特定的特征过于自信。然而,图像的一部分充满了无用的信息,这是一种浪费。在CutMix中,将图像的一部分剪切粘贴到另一个图像上。ground truth标签会根据斑块的面积按比例进行调整,比如0.6像狗,0.4像猫。
从概念上讲,CutMix对于一个对象可以由什么组成有更广阔的视野。裁剪区域迫使模型学习不同特征集的对象分类。这可以避免过度自信。由于将该区域替换为另一幅图像,图像中的信息量和训练效率也不会受到显著影响。
Mosaic data augmentation
Mosaic是一种将4张训练图像合并成一张进行训练的数据增强方法(而不是CutMix中的2张)。这增强了对正常上下文之外的对象的检测。此外,每个小批包含一个很大的变化图像(4),因此,减少了在估计均值和方差时对大的小批的需要。
DropBlock regularization
在全连接层中,我们可以使用dropoff来迫使模型从各种特征中学习,而不是对少数特征过于自信。但是,这可能对卷积层不起作用。相邻位置高度相关。因此,即使一些像素被删除(下面中间的图),空间信息仍然可以被检测到。DropBlock正则化建立在一个类似的概念上,工作在卷积层。
不是删除单个像素,而是删除像素的块block_size×block_size。
Class label smoothing
当你感觉绝对正确的时候,你可能就大错特错了。对预测有100%的信心可能表明模型是在记忆数据,而不是在学习。标签平滑调整预测的目标上限为一个较低的值,比如0.9。它将使用这个值而不是1.0来计算损失。这个概念缓解了过度拟合。
p = tf.placeholder(tf.float32, shape=[None, 10])
# Use 0.9 instead of 1.0.
feed_dict = {
p: [[0, 0, 0, 0.9, 0, 0, 0, 0, 0, 0]] # Image with label "3"
}
# logits_real_image is the logits calculated by
# the discriminator for real images.
d_real_loss = tf.nn.sigmoid_cross_entropy_with_logits(
labels=p, logits=logits_real_image)