YOLOv4:Optimal Speed and Accuracy of Object Detection
YOLOv4在YOLOv3的基础上进行大量的trick改进,包括使用CSPDarkNet53,PAN等网络
什么是 YOLOv4?
- 在 YOLOv4 中 CSPDarknet53作为BackBone和空间金字塔池化(SpatialPyramidPooling,SPP)块用于增加感受野,将显着特征分离,并没有降低网络运行速度;PAN用于来自不同主干级别的参数聚合 YOLOv3头用于预测头
- 改进网络 CSPDarknet53、SPP、PAN、DropBlock 正则化、CmBN(Crossmini-BatchNormalization)
- 改进数据预处理 Mixup数据增强、标签平滑(Classlabelsmoothing)
- 改进模型训练 CIOU loss、自我对抗训练SAT(Self-adversarial-training)数据增强
YOLOv4的网络结构?
- 输入:608x608x3 的图片
- 输出:3 个输出,76x76x255、38x38x255、19x19x255,其中 YOLOv3网络结构含义一致,表示每个网格使用 3 个先验框,每个先验框计算置信度 (1)、位置 (4)、类别 (80)
- YOLOv4 = CSPDarknet53+ 空间金字塔池化(SpatialPyramidPooling,SPP)+ PAN+ YOLOv3 的检测头
YOLOv4的正负样本判定?
- YOLOv1-YOLOv3均采取single-anchor(1个真实框分配1个先验框进行预测)的方式,而YOLOv4采用multi-anchor(1个真实框分配多个先验框进行预测)
- 正负样本判定: 只要真实框与某个先验框的IOU大于阈值,该先验框就是正样本,反之是负样本,不再考虑忽略样本
YOLOv4如何制作正样本?
- YOLOv4使用YOLOv3的检测头,因此其正样本制作方式YOLOv3制作正样本制作方式一样
YOLOv4的损失函数?
- YOLOv3损失函数 box位置损失替换CIoU loss ,其他部分的损失一样
YOLOv4的主干网络CSPDarknet53?
- CSPDarknet53 是 YOLOv3主干网 Darknet-53 的基础上,借鉴 CSPNet(Cross-Stage-Partial-connections)的经验产生的
- CBM: Yolov4 网络结构中的最小组件,由 Conv+Bn+Mish 激活函数三者组成
- CSPX: 借鉴了 CSPNet 网络结构,由 CBM 组件和 X 个 Res unint 模块 Concate 组成
YOLOv4的颈部网络组成?
- 特征增强模块,主要由CBL组件,SPP模块和FPN+PAN的方式组成
- CBL组件: Conv+Bn+Leaky_relu激活函数三者组成
- 空间金字塔池化(SpatialPyramidPooling,SPP): 采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合
- PAN: FPN层自顶向下传达强语义特征,而PAN则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行参数聚合,加速了不同尺度特征的融合,进一步提高特征提取的能力
YOLOv4的Bag of freebies有哪些?
- 用于 backbone: Mosaic数据增强,DropBlock 正则化,标签平滑(Classlabelsmoothing)
- 用于检测器的 BoF:CIOU loss,CmBN(Crossmini-BatchNormalization),DropBlock 正则化,Mosaic数据增强,自我对抗训练SAT(Self-adversarial-training)数据增强,消除网格敏感性,对单个 ground-truth 使用多个 anchor,学习率余弦衰减,最佳超参数,Random training shapes
YOLOv4的Bag of specials有哪些?
- 用于 backbone 的 BoS: 激活函数 Mish,CSPNet,多输入加权残差连接(Weighted-Residual-Connections,MiWRC)
- 用于检测器的 Bos: 激活函数 Mish,SPPNet,CBAM的通道注意力模块(ChannelAttentionModule,CAM),PAN ,DIOU Loss
YOLOv4为什么要进行Mosaic数据增强呢?
- 小目标的AP一般比中目标和大目标低很多。而Coco数据集中小目标占比达到41.4%,数量比中目标和大目标都要多。但在所有的训练集图片中,只有52.3%的图片有小目标,而中目标和大目标的分布相对来说更加均匀一些