YOLOv3 SPP和YOLOv3有何不同?

时间:2019-03-05 08:18:25

标签: conv-neural-network object-detection yolo darknet

我找不到关于YOLOv3 SPP的任何很好的解释,它比YOLOv3具有更好的mAP。作者本人在回购协议中将YOLOv3 SPP声明为:

  

具有空间金字塔池或其他功能的YOLOv3

但是我还是不太明白。在yolov3-spp.cfg中,我注意到有一些补充内容

575 ### SPP ###
576 [maxpool]
577 stride=1
578 size=5
579 
580 [route]
581 layers=-2
582 
583 [maxpool]
584 stride=1
585 size=9
586 
587 [route]
588 layers=-4
589 
590 [maxpool]
591 stride=1
592 size=13
593 
594 [route]
595 layers=-1,-3,-5,-6
596 
597 ### End SPP ###
598 
599 [convolutional]
600 batch_normalize=1
601 filters=512
602 size=1
603 stride=1
604 pad=1
605 activation=leaky

任何人都可以进一步说明YOLOv3 SPP的工作原理吗?为什么在[route] layers中选择了-2,-4和-1,-3,-5,-6层?谢谢。

2 个答案:

答案 0 :(得分:2)

请参见图3. SPP解释。

yolov3-spp.cfg中,他们通过使用[route]将3个不同大小的最大池用于同一图像

然后,他们将创建的特征图收集为图3中的“定长表示法”。

enter image description here

答案 1 :(得分:1)

最后,一些研究人员在Yolo https://arxiv.org/abs/1903.08589上发表了有关SPP应用的论文。

对于yolov3-tiny,yolov3和yolov3-spp差异:

  • yolov3-tiny.cfg在Max-Pooling层中使用下采样(stride = 2)
  • yolov3.cfg在卷积层中使用下采样(stride = 2)
  • yolov3-spp.cfg在卷积层中使用下采样(stride = 2)+在Max-Pooling层中获得最佳功能

但是在原始框架上使用Yolov3SPP模型,他们在Pascal VOC 2007测试中仅获得 mAP = 79.6%

但是,即使使用yolov3.cfg模型,我们也可以通过使用AlexeyAB的存储库https://github.com/AlexeyAB/darknet/issues/2557#issuecomment-474187706

获得更高的精度 mAP = 82.1%

并且可以肯定的是,使用Alexey回购协议,我们可以通过yolov3-spp.cfg获得更高的mAP。 enter image description here

原始github问题:https://github.com/AlexeyAB/darknet/issues/2859