YOLO算法最全综述:从YOLOv1到YOLOv5( 七 )


仍采用之前的logis , 其中cx,cy是网格的坐标偏移量,pw,ph是预设的anchor box的边长.最终得到的边框坐标值是b*,而网络学习目标是t* , 用sigmod函数、指数转换 。
YOLOv4YOLOv4: Optimal Speed and Accuracy of Object Detection
论文:
代码:
YOLOv4!
YOLO算法最全综述:从YOLOv1到YOLOv5文章插图
YOLOv4 在COCO上 , 可达43.5% AP , 速度高达 65 FPS!
YOLOv4的特点是集大成者 , 俗称堆料 。 但最终达到这么高的性能 , 一定是不断尝试、不断堆料、不断调参的结果 , 给作者点赞 。 下面看看堆了哪些料:

  • Weighted-Residual-Connections (WRC)
  • Cross-Stage-Partial-connections (CSP)
  • Cross mini-Batch Normalization (CmBN)
  • Self-adversarial-training (SAT)
  • Mish-activation
  • Mosaic data augmentation
  • CmBN
  • DropBlock regularization
  • CIoU loss
本文的主要贡献如下:
1. 提出了一种高效而强大的目标检测模型 。 它使每个人都可以使用1080 Ti或2080 Ti GPU 训练超快速和准确的目标检测器(牛逼!) 。
2. 在检测器训练期间 , 验证了SOTA的Bag-of Freebies 和Bag-of-Specials方法的影响 。
3. 改进了SOTA的方法 , 使它们更有效 , 更适合单GPU训练 , 包括CBN [89] , PAN [49] , SAM [85]等 。 文章将目前主流的目标检测器框架进行拆分:input、backbone、neck 和 head.
具体如下图所示:
YOLO算法最全综述:从YOLOv1到YOLOv5文章插图
  • 对于GPU , 作者在卷积层中使用:CSPResNeXt50 / CSPDarknet53
  • 对于VPU , 作者使用分组卷积 , 但避免使用(SE)块-具体来说 , 它包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3
作者的目标是在输入网络分辨率 , 卷积层数 , 参数数量和层输出(filters)的数量之间找到最佳平衡 。
总结一下YOLOv4框架:
  • Backbone:CSPDarknet53
  • Neck:SPP , PAN
  • Head:YOLOv3
YOLOv4 =CSPDarknet53+SPP+PAN+YOLOv3
其中YOLOv4用到相当多的技巧:
  • 用于backbone的BoF:CutMix和Mosaic数据增强 , DropBlock正则化 , Class label smoothing
  • 用于backbone的BoS:Mish激活函数 , CSP , MiWRC
  • 用于检测器的BoF:CIoU-loss , CmBN , DropBlock正则化 , Mosaic数据增强 , Self-Adversarial 训练 , 消除网格敏感性 , 对单个ground-truth使用多个anchor , Cosine annealing scheduler , 最佳超参数 , Random training shapes
  • 用于检测器的Bos:Mish激活函数 , SPP , SAM , PAN , DIoU-NMS
看看YOLOv4部分组件:
YOLO算法最全综述:从YOLOv1到YOLOv5文章插图
感受一下YOLOv4实验的充分性(调参的艺术):
YOLO算法最全综述:从YOLOv1到YOLOv5文章插图
YOLO算法最全综述:从YOLOv1到YOLOv5文章插图
感受一下性能炸裂的YOLOv4实验结果:
YOLO算法最全综述:从YOLOv1到YOLOv5文章插图
YOLO算法最全综述:从YOLOv1到YOLOv5文章插图


推荐阅读