YOLOv4利用了一系列的“Bag of Freebies (BoF)”和“Bag of Specials (BoS)”方法来提高性能。这些包括CutMix和Mosaic数据增强、DropBlock正则化、类标签平滑、Mish激活函数、交叉阶段部分连接(CSP)、多输入加权残差连接(MiWRC)、CIoU损失、自适应训练(SAT)、消除网格敏感性、使用多个锚点对单一真实框、余弦退火调度器、最优超参数、随机训练形状、SPP块、SAM块、PAN路径聚合块和DIoU-NMS。
公式通常表示为: Confidence Loss = − ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j log ( C ^ i j ) + λ n o o b j 1 i j n o o b j log ( 1 − C ^ i j ) \text{Confidence Loss} = -\sum_{i=0}^{S^2}\sum_{j=0}^{B} 1_{ij}^{obj} \log(\hat{C}_{ij}) + \lambda_{noobj}1_{ij}^{noobj} \log(1 - \hat{C}_{ij}) Confidence Loss=−i=0∑S2j=0∑B1ijobjlog(C^ij)+λnoobj1ijnoobjlog(1−C^ij) 其中, S 2 S^2 S2 表示网格单元的数量, B B B 表示每个网格单元预测的边界框数量, 1 i j o b j 1_{ij}^{obj} 1ijobj 是一个指示器,如果边界框 j j j 在网格单元 i i i 中包含对象则为1,否则为0; C ^ i j \hat{C}_{ij} C^ij 是模型预测的边界框包含对象的置信度; λ n o o b j \lambda_{noobj} λnoobj 是不包含对象的边界框的权重。
类别损失(Class Loss):
类别损失用于评估模型在分类预测的准确性。YOLOv4同样使用交叉熵损失来计算类别损失。
公式通常表示为: Class Loss = − ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j ∑ c ∈ c l a s s e s p i j ( c ) log ( p ^ i j ( c ) ) \text{Class Loss} = -\sum_{i=0}^{S^2}\sum_{j=0}^{B} 1_{ij}^{obj} \sum_{c \in classes} p_{ij}(c) \log(\hat{p}_{ij}(c)) Class Loss=−i=0∑S2j=0∑B1ijobjc∈classes∑pij(c)log(p^ij(c)) 其中, p i j ( c ) p_{ij}(c) pij(c) 是真实标签中类别 c c c 在边界框 j j j 和网格单元 i i i 的概率, p ^ i j ( c ) \hat{p}_{ij}(c) p^ij(c) 是模型预测的对应概率。
框坐标损失(Bounding Box Loss):
YOLOv4引入了CIoU损失(Complete Intersection over Union Loss)来替代传统的IoU损失,用于更精确地优化预测框的坐标。
CIoU损失考虑了边界框重叠区域、中心点距离和长宽比,提供了更全面的框坐标回归。
公式表示为: CIoU Loss = 1 − IoU + ρ 2 ( b , b g t ) c 2 + α v \text{CIoU Loss} = 1 - \text{IoU} + \frac{\rho^2(b, b_{gt})}{c^2} + \alpha v CIoU Loss=1−IoU+c2ρ2(b,bgt)+αv 其中,IoU是交集与并集之比, ρ ( b , b g t ) \rho(b, b_{gt}) ρ(b,bgt) 是预测框 b b b 和真实框 b g t b_{gt} bgt 中心点的欧几里得距离, c c c 是包含两个框的最小闭合区域的对角线长度, v v v 是长宽比的一致性度量, α \alpha α 是用于平衡不同项的权重系数。