YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO( 二 )


我们采用这个特征重组b个通道以及计算模块中的kg通道 , 将其以相同的通道数划分到两个分支 , 见下表 。 当通道数为 时 , 最佳的划分方式为均等划分 。 事实上 , 我们还要考虑硬件的带宽因素 , 此时的最佳划分则表示为 。 该文提出的CSPOSANet可以动态的调整通道分配 。
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
卷积后保持相同数量的channels
对于低端设备的计算复杂度评估 , 我们还需要考虑功耗 , 而影响功耗的最大因素当属MAC(memory access cost) 。 通常来说 , 卷积的MAC计算方式如下:
其中
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
分别表示特征图的高、宽输入与输出通道数、卷积核尺寸 。 从上式可以得出:当
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
时 , MAC最小 。
最小化卷积输入/输出(CIO)
CIO是一个用来评价DRAM的IO状态的度量准则 , 下表给出了OSA , CSP的CIO对比 。
当时 , 本文所提出的CSPOSANet具有最佳CIO 。
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
为高端GPU扩展大模型由于我们期望提升扩张CNN模型的精度 , 同时保持实时推理速度 , 这就要求我们需要从目标检测器的所有扩展因子中寻找最佳组合 。
通常而言 , 我们可以调整目标检测器的输入、骨干网络以及neck的尺度因子 , 潜在的尺度因子见下表:
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
图像分类与目标检测的最大区别在于:前者仅需要对图像中的最大成分进行分类 , 而后者则需要预测图像中每个目标的位置 。
在单阶段目标检测器中 , 每个位置的特征向量用于预测类别、目标的大小 , 而目标大小的预测则依赖于特征向量的感受野 。 在CNN中 , 与感受野最相关的当属stage , 而FPN结构告诉我们:更高的阶段更适合预测大目标 。
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
上表汇总了与感受野相关因素 , 可以看到:宽度扩展不会影响感受野 。 当输入图像分辨率提升后 , 为保持感受野不变 , 那么就需要提升depth或者stage 。
也就是说:depth和stage具有最大的影响 。 因此 , 当进行向上扩增时 , 我们需要在输入分辨率、stage方面进行扩增以满足实时性 , 然后再进行depth和width的扩增 。
3 Scaled-YOLOv4
接下来 , 我们将尝试把YOLOv4扩展到不同的GPU(包含低端和高端GPU) 。
CSP-ized YOLOv4YOLOv4是一种针对通用GPU设计的实时目标检测方案 。 在这里 , 作者对YOLOv4进行重新设计得到YOLOv4-CSP以获取最佳的速度-精度均衡 。
Backbone
在CSPDarknet53的设计中 , 跨阶段的下采样卷积计算量并未包含在残差模块中 。 因此 , 作者推断:每个CSPDarknet阶段的计算量为 。 从该推断出发 , CSPDarknet比DarkNet具有更好的计算量优势(k>1) 。
CSPDarkNet53每个阶段的残差数量分别为1-2-8-8-4 。
为得到更好的速度-精度均衡 , 作者将首个CSP阶段转换为原始的DarkNet残差层 。
Neck
更有效的降低参数量 , 作者将PAN架构引入到YOLOv4中 。 PAN架构的处理流程见下图a , 它主要集成了来自不同特征金字塔的特征 。 改进后的处理流程见下图b , 它还同时引入了ChannelSplitting机制 。 这种新的处理方式可以节省40%计算量 。
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
SPP
原始的SPP模块位于Neck中间部分 , 作者同样将SPP插入到CSPPAN中间位置 , 见上图b 。
YOLOv4-tinyYOLOv4是专为低端GPU而设计的一种架构 , 其计算模块见下图 。 在这里 , 作者采用CSPOSANet+PCB架构构成了YOLOv4的骨干部分 。
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
在计算模块中 ,
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图
。 通过计算 , 作者推断得到k=3 , 其对应的计算单元示意图见上图 。 至于YOLOv4-tiny的通道数信息 , 作者延续了YOLOv3-tiny的设计 。
YOLOv4-largeYOLOv4-large是专为云端GPU而设计的一种架构 , 主要目的在于获得更好的目标检测精度 。 作者基于前述分析设计了一个全尺寸的YOLOv4-P5并扩展得到了YOLOv4-P6和YOLOv4-P7 。
其对应的网络结构示意图见下图:
YOLOv4团队开源最新力作!1774fps、COCO最高精度,分别适合高低端GPU的YOLO文章插图