【Scaled-YOLOv4】

【Scaled-YOLOv4】_第1张图片

COCO数据集AP被刷到了55.4%(FPS=15),核心是在YOLOV4上研究模型缩放(model scaling)技术。尽管在算法设计上,该文并没有带来重要亮点,但从工程应用的角度讲, Scaled-YOLOv4 还是不错的,尤其是 YOLOv4-tiny,其设计不仅考虑到计算量和参数量还考虑到内存访问。

代码链接:https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-csp

Abstract

我们证明了使用CSP方法的YOLOv4目标检测网络在向下或者向上缩放时可以保持最优的速度和精度。我们提出了一种模型缩放方法,它不止是可以修改模型的深度、宽度、分辨率,也可以修改模型的结构。YOLOv4- large把coco刷到了55.4%(FPS=15,Tesla V100)

1. Introduction

模型缩放(model scaling )技术是非常重要的,因为它可以使得目标检测器在不同设备上实现较高的检测精度和推理速度。常用的model scaling technique主要有改变模型backbone的深度(卷积层数)和宽度(卷积核个数),这需要针对不同情况单独训练。比如ResNet网络,在算力低时我们用Resnet-18,算力高时可以用Resnet-152。

Cai等人试图研究一项技术,使得训练一次模型就可以部署到不同的设备上,他们使用了解耦训练、搜索、知识蒸馏技术去解耦和训练子网络,整个网络和子网络都是可以处理相同任务的。Tan等人提出了利用NAS技术在EfficientNet-B0上探索融合多种缩放因素,比如深度、宽度、分辨率。他们利用这个初始网络在给定的算力下寻找最优结构,并将其命名为EfficientNet-B1,然后使用线性缩放技术获得EfficientNetB2到EfficientNetB7结构。Radosavovic等人从庞大的参数搜索空间AnyNet中总结并添加约束条件,然后设计了RegNet,他们发现RegNet最优的深度是60,bottleneck ratio=1,cross-stage=2.5时,性能最优。

通过分析state-of-the-art模型,CSPDarknet53是做YOLO-V4的backbone是最合适的,其模型深度为65, bottleneck ratio=1,width growth ratio between stages=2,与NAS找出的最理想的模型结构非常接近。以YOLOV4为基础,作者进一步研究了model scaling方法,并提出了scaled-YOLOv4。

作者自认为的贡献:

  1. 针对小模型,设计了一个高效model scaling方法;
  2. 为scaling大的目标检测器,设计了一个简单但有效的方法;
  3. 详细的对比分析了所有的model scaling factors;
  4. 实验验证了FPN是一个一劳永逸的结构;
  5. 结合上面所有,提出了YOLOv4-tiny和YOLO4v4-large。

看下效果,相比V4提高了不少。

【Scaled-YOLOv4】_第2张图片

 

2. Related work

2.1. Real-time object detection

略。。。

2.2. Model scaling

传统的model scaling方法就是修改模型的深度,比如VGG-16,VGG-19。近些年NAS发展迅速,NAS-FPN搜索特征金字塔的组合路径,我们可以认为NAS-FPN就是一种模型缩放技术,其主要在stage level执行缩放。至于EfficientNet,它是基于深度,宽度,输入尺寸的融合搜索。EfficientDet是对模型的。。。。

3. Principles of model scaling

在做了模型缩放之后,Inference time和ap这些参数在不同设备和不同数据集上将有不同的增益。我们希望的是inference time越短越好,ap越高越好。

这一章其实都是再讲model scaling的理论,没什么用,会算Flops就行,可以跳过直接看第四章

3.1. General principle of model scaling

Table 1中是以ResNet, ResNext, Darknet为例,记录了模型尺寸因子变化是FLOPS变化的情况,可以看到FLOPS与size和depth的关系是二次关系,与width的关系是线性的。

【Scaled-YOLOv4】_第3张图片

Wang提出的CSPNet可以移植到不同的网络中,可以提高模型精度并且减少推断时间,tabel 2是应用了CSPNet之后,与table 1的对比,可以看到FLOPS要少一些。

【Scaled-YOLOv4】_第4张图片

其实这里并没有什么亮点,只是对比计算了CSP和原始的FLOPS区别,目的就是从数值上说明使用SCP的计算量优势。

3.2. Scaling Tiny Models for Low-End Devices

在进行小模型缩放时,我们还必须考虑内存带宽、内存访问成本(MAC)和DRAM流量等因素,作者从以下几个方面给出了理论依据。

  • Make the order of computations less than O(whkb2 )
  • Minimize/balance size of feature map
  • Maintain the same number of channels after convolution(当Cin和Cout相等时,MAC最小)

  • Minimize Convolutional Input/Output (CIO)

3.3. Scaling Large Models for High-End GPUs

略。。。

4. Scaled-YOLOv4

4.1. CSP-ized YOLOv4

先看下论文里图片,注意b是卷积层的输入channel数,其实模型上的改动很小。。。

【Scaled-YOLOv4】_第5张图片

4.2. YOLOv4-tiny

【Scaled-YOLOv4】_第6张图片

4.3. YOLOv4-large

使用了类似PANET的结构,很大的一个网络。。。

【Scaled-YOLOv4】_第7张图片

5. Experiments

作者的消融实验做了很多,tabel 11里总结的比较全面,各个state-of-the-art模型的指标对比

【Scaled-YOLOv4】_第8张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的