论文地址:https://arxiv.org/pdf/2004.10934v1.pdf
code:https://github.com/AlexeyAB/darknet.
摘要
有大量的技巧可以提高CNN的精度。某些技巧仅在某些模型上使用或针对某些问题或小规模的数据集使用;有一些技巧例如BN,残差连接等,适用于大多数的模型,任务和数据集。我们假设这种普遍的技巧包括:Weighted-Residual-Connections (WRC),Cross-Stage-Partial-connections (CSP),Cross mini-Batch Normalization (CmBN),Self-adversarial-training (SAT)和Mish-activation.我们用了这些新的技巧:WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation, CmBN, DropBlock 正则项, 和 CIoU loss,以及组合的技巧以达到最好的效果。在COCO数据集上43.5%AP(65.7%AP50),TeslaV100上可以实时,速度65fps.
引言
作者主要目标是设计一个应用生产环境快速运行的目标检测器,易于训练和使用。
贡献总结:
1,我们设计了一种有效的,强有力的目标检测模型。可以让每个人能够用一个1080Ti或2080Ti就可以训练一个超快超精准的目标检测器。
2,我们证明了在检测器训练阶段sota的Bag-of-Freebies 和 Bag-of-Specials方法的影响。
3,我们修改了sota的方法,使得更有效和适用于单GPU的训练,包括:CBN,PAN,SAM等。
相关工作
1 目标检测模型结构
当前的目标检测器一般有两部分,分别是ImageNet上预训练的backbone,和用来预测class和bbox的head。
(1)backbone,run在GPU上的backbone可以是VGG,ResNet,ResNeXt或DenseNet。Run在CPU上的backbone可以是SqueezeNet,MobileNet或ShuffleNet。
(2)Head的部分一般分成两类:One-Stage和Two-stage。最具代表性的Two-stage的检测器是R-cnn系列,包括:fast rcnn,faster rcnn,R-FCN 和Libra rcnn。Two-stage的目标检测器也可以anchor-free就像RepPoints。对于One-stage最具代表性的模型是YOLO,SSD,和RetinaNet。近几年Anchor-free的one-stage的目标检测器有所发展,CenterNet,CornerNet,FCOS等。
(3)Neck :目标检测器在发展过程中加入了一些layers在backbone和head中间,这些层的作用通常是用来从不同的stage上选择feature map。我们可以把这些层叫做neck. 通常,neck由几个bottom-up和to-down的paths构成。具有Neck这种机制的网络结构有:Feature Pyramid Network (FPN),Path Aggregation Network(PAN),BiFPN,和NAS-FPN。
除了上述这些模型外,一些研究者把重点放在了直接building一种新的backbon(DeNet,DetNAS)或者一整个新的模型(SpineNet,HitDetector)for 目标检测。
综上,一般一个目标检测器包含以下几个部分:
• Input: Image, Patches, Image Pyramid
• Backbones: VGG16 [68], ResNet-50 [26], SpineNet[12], EfficientNet-B0/B7 [75], CSPResNeXt50 [81],CSPDarknet53 [81]
• Neck:
• Additional blocks: SPP [25], ASPP [5], RFB[47], SAM [85]
• Path-aggregation blocks: FPN [44], PAN [49],NAS-FPN [17], Fully-connecte