敞开生长之旅!这是我参加「日新方案 12 月更文应战」的第2天,点击检查活动详情。

  • 一,Scaled YOLOv4
  • 摘要
  • 1,介绍
  • 2,相关作业
    • 2.1,模型缩放
  • 3,模型缩放准则
    • 3.1,模型缩放的惯例准则
    • 3.2,为低端设备缩放的tiny模型
    • 3.3,为高端设备缩放的Large模型
  • 4,Scaled-YOLOv4
    • 4.1,CSP-ized YOLOv4
    • 4.2,YOLOv4-tiny
    • 4.3,YOLOv4-large
  • 5,试验
  • 总结
  • Reference
  • 参阅资料

一,Scaled YOLOv4

Scaled YOLOv4 的二作便是 YOLOv4 的作者 Alexey Bochkovskiy

摘要

作者提出了一种网络缩放办法,不只能够修改深度、宽度、分辨率,还能够修改网络的结构。

1,介绍

试验成果表明,依据 CSP 办法的 YOLOv4 方针检测模型在坚持最优速度和准确率的前提下,同时也具有向上/向下可伸缩性,可用于不同巨细的网络。由此,作者提出了一种网络缩放办法,它不只改动深度、宽度、分辨率,并且还改动网络的结构。

首要作业Scaled YOLOv4 的首要作业如下:

  • 规划了一种针对小模型的强大的模型缩放办法,体系地平衡了浅层 CNN 的核算价值和存储带宽;
  • 规划一种简略有效的大型方针检测器缩放策略;
  • 剖析各模型缩放因子之间的联系,依据最优组划分进行模型缩放;
  • 试验证明了 FPN 结构本质上是一种 once-for-all 结构;
  • 运用上述办法研制了 YOLOv4-tinyYOLO4v4-large 模型。

以往模型缩放,如 EfficientDet 无非是首要挑选网络基础模块,它往往又好又快,然后针对影响方针检测的重要参数如:网络宽度 ww、深度 dd、输入图画分辨率size 等进行(满足必定条件下依照必定规律)调参,或许 NAS 主动调参。

2,相关作业

2.1,模型缩放

传统的模型缩放是指改动模型的深度,如 VGG 变体,以及后边能够训练深层的 ResNet 网络等;后边 agoruyko 等人开始考虑模型的宽度,经过改动卷积层卷积核的数量来完成模型缩放,并规划了 Wide ResNet[43],同样的精度下,它的参数量尽管比原始 ResNet 多,但是推理速度却更快。随后的 DenseNetResNeXt 也规划了一个复合缩放版别,将深度和宽度都考虑在内。

何凯明等人提出的 ResNet 网络处理了随着深度添加带来的网络退化问题。

3,模型缩放准则

3.1,模型缩放的惯例准则

这段内容,原作者的表达不够严谨,核算进程也没有细节,所以我不再针对原文进行一一翻译,而是在原文的基础上,给出更清晰的表达和一些核算细节。

这儿,咱们得先知道对一个卷积神经网络来说,其模型一般是由 conv stageconv blockconv layer 组成的。我以 ResNet50 为例进行剖析,大家就能了解了。ResNet50 的卷积进程分红 4stage,别离对应的卷积 blocks 数目是 [3,4,6,3][3,4,6,3],卷积 blockbottleneck 残差单元,bottleneck 残差单元又是 111\times 1333\times 3111\times 1 这样 3 个卷积层组成的,所以 ResNet50 一共的卷积层数目为:33+43+63+33=483\times 3 + 4\times 3+ 6\times 3 + 3\times 3 = 48,再加上第一层的卷积和终究一层的分类层(全衔接层),一共是 50 层,所以命名为 ResNet50ResNet 模型的组成和结构参数表如下图所示。

大部分 backbone 都是分红 4stage

Scaled-YOLOv4论文解读

对一个基础通道数是 bb 的卷积模块(conv block),一共有 kk 个这样的模块的 CNN 网络来说,其核算价值是这样的。如 ResNet 的总的卷积层的核算量为 k∗[conv(11,b/4)→conv(33,b/4)→conv(11,b)]k\ast [conv(1\times 1,b/4)\rightarrow conv(3\times 3,b/4)\rightarrow conv(1\times 1,b)]ResNeXt 的总的卷积层的核算量为 k∗[conv(11,b/2)→gconv(33/32,b/2)→conv(11,b)]k\ast [conv(1\times 1,b/2)\rightarrow gconv(3\times 3/32, b/2)\rightarrow conv(1\times 1, b)]Darknet 网络总的核算量为 k∗[conv(11,b/2)→conv(33,b)]k\ast [conv(1\times 1,b/2)\rightarrow conv(3\times 3, b)]。假设可用于调整图画巨细、层数和通道数的缩放因子别离为 \alpha\beta\gamma。当调整因子改变时,可得出它们和 FLOPs 的联系如下表所示。

Scaled-YOLOv4论文解读

这儿以 Res layer 为例,进行核算量剖析。首要上表的 rr 应该是指每个 stage 中间的残差单元的核算量,并且还是 bottleneck 残差单元,因为只要 stage 中间的 bottleneck conv block 的第一个 111\times 1 卷积层的输入通道数才是输出通道数的 4 倍,只要这种状况算出来的核算量 rr 才符合表 1 的定论。

卷积层 FLOPs 的核算公式如下,这儿把乘加当作一次核算,公式了解请参阅我之前写的 文章。

FLOPs=(CiK2)HWCoFLOPs=(C_i\times K^2)\times H\times W\times C_o

关于上面说的那个特殊的 bottleneck conv block 来说,卷积进程特征图巨细没有发生改变,假设特征图巨细为 whwh,所以 bolckFLOPs 为:

Scaled-YOLOv4论文解读

这儿值得注意的是,尽管各个 conv block 会略有不同,比方 每个 conv stage 的第一个 conv block 都会将特征图缩小一倍,但是其 FLOPsr1r1 是线性的联系,所以,关于有 kkconv blockResNet 来说,其总的核算量天然就可大概近似为 17whkb2/1617whkb^2/16ResNeXtDarknet 卷积层的 FLOPs 核算进程相似,所以不再描绘。

由表 1 能够看出,图画巨细、深度和宽度都会导致核算价值的添加,它们别离成二次,线性,二次增加

Wang 等人提出的 CSPNet 能够应用于各种 CNN 架构,同时减少了参数和核算量。此外,它还提高了准确性,减少了推理时间。作者把它应用到 ResNet, ResNeXt,DarkNet 后,发现核算量的改变如表 2 所示。

Scaled-YOLOv4论文解读

CNN 转换为 CSPNet 后,新的体系结构能够有效地减少 ResNetResNeXtDarknet 的核算量(FLOPs),别离减少了 23.5%46.7%50.0%。因而,作者运用 CSP-ized 模型作为履行模型缩放的最佳模型

3.2,为低端设备缩放的tiny模型

关于低端设备,规划模型的推理速度不只受到核算量和模型巨细的影响,更重要的是有必要考虑外围硬件资源的限制。因而,在履行 tiny 模型缩放时,咱们有必要考虑以下要素:内存带宽、内存拜访价值(MACs)和 DRAM traffic。为了考虑到以上要素,咱们的规划有必要遵从以下准则:

1,使核算复杂度少于 O(whkb2)O(whkb^2)

作者剖析了高效运用参数的网络:DenseNetOSANet 的核算量,别离为 O(whgbk)O(whgbk)O(max(whbg,whkg2))O(max(whbg, whkg^2))。两者的核算复杂度阶数均小于 ResNet 系列的 O(whkb2)O(whkb^2)。因而,咱们依据 OSANet 规划 tiny 模型,因为它具有更小的核算复杂度。

这儿的 OSANet 其实是 VoVNet 网络,专门为 GPU 渠道规划的更高效的 backbone 网络架,其论文解读可参阅我之前写的文章。

Scaled-YOLOv4论文解读

2,最小化/平衡 feature map 的巨细

说实话,没看了解论文这段内容,这不是跟论文 CSPNet 一样的定论吗,即分割为通道数持平的两条途径。

为了取得在核算速度方面的最佳平衡,咱们提出了一个新概念:在CSPOSANet 的核算块之间履行梯度截断。假如咱们将本来的 CSPNet 规划应用到 DenseNetResNet 架构上,因为这两种架构的第 jj 层输出是第 1st1^{st} 层到第 (j−1)th(j-1)^{th} 层输出的积分,咱们有必要将整个核算块作为一个全体来处理。因为 OSANet 的核算块归于 PlainNet 架构,从核算块的恣意层制作 CSPNet 都能够到达梯度截断的作用。咱们运用该特性对底层的 bb 通道和核算块(computational block)生成的 kgkg 通道进行重新规划,并将其分割为通道数持平的两条途径,如表 4 所示。

Scaled-YOLOv4论文解读

当通道数量为 b+kgb + kg 时,假如要将这些通道分割成两条途径,最好将其分割成持平的两部分,即 (b+kg)/2(b + kg)/2

3,在卷积后坚持相同的通道数

评价低端设备的核算成本,有必要考虑功耗,而影响功耗的最大要素是内存拜访价值(MACMAC)。依据 Shufflenetv2 的推导证明,可知卷积层的输入输出通道数持平时,即 Cin=CoutC_{in} = C_{out} 时, MACMAC 最小。

4,最小化卷积输入/输出(CIO)

CIO 是一个能够丈量 DRAM IO 状态的指标。表 5 列出了 OSACSP 和咱们规划的 CSPOSANetCIO。当 kg>b2kg > \frac {b}{2} 时,CSPOSANet 能够取得最佳的 CIO

Scaled-YOLOv4论文解读

3.3,为高端设备缩放的Large模型

feature pyramid network (FPN)的架构告知咱们,更高的 stage 更适合预测大的物体。表 7 说明了感触野与几个参数之间的联系。

Scaled-YOLOv4论文解读

从表 7 能够看出,宽度缩放能够独立操作。当输入图画尺度增大时,要想对大对象有更好的预测作用,就有必要增大网络的 depthstage (一般每个 stage 都会降低特征图分辨率的一半)的数量。在表 7 中列出的参数中,{sizeinput,#stage}\left \{ size^{input}, \#stage \right \} 的组合作用最好。因而,当履行缩放时,咱们首要在 {sizeinput}\left \{ size^{input} \right \}#stage 上履行复合缩放,然后依据实时的环境,咱们再别离进一步缩放深度 depth 和宽度 width

4,Scaled-YOLOv4

4.1,CSP-ized YOLOv4

YOLOv4 是为通用 GPU 上的实时方针检测而规划的。

1,Backbone

为了取得更好的速度/精度权衡,咱们将第一个 CSP 阶段转换为原始的 DarkNet 的残差层。

没能了解这段内容。

2,Neck

Scaled-YOLOv4论文解读

3,SPP

4.2,YOLOv4-tiny

YOLOv4-tiny 是为低端 GPU 设备规划的,规划将遵从 3.2 节中说到的准则。

咱们将运用 PCBpartial in computational block) 架构的 CSPOSANet 作为 YOLOv4 backbone。咱们设 g=b/2g = b/2 为增加率,终究使其增加到 b/2+kg=2bb/2 + kg = 2b。经过核算,咱们得到 k=3k = 3YOLOv4 的卷积块(computational block)结构如图 3 所示。关于每个阶段的通道数量和 neck 网络结构,咱们采用 YOLOv3-tiny 一样的规划。

Scaled-YOLOv4论文解读

4.3,YOLOv4-large

专门为云端 GPU 规划的,首要意图便是为完成高精度的方针检测。咱们规划了一个完全 CSP 化的模型 YOLOv4-P5,并将其扩展到 YOLOv4-P6YOLOv4-P7Sacled-YOLOv4 large 版别的模型结构图,如下图所示。

Scaled-YOLOv4论文解读

咱们经过规划 sizeinputsize^{input}, #stage 来对 backbone 履行复合缩放。咱们把每个 stage 的深度设置为 2dsi2^{d_{s_{i}}}dsd_s 范围为 [1,3,15,15,7,7,7][1, 3, 15, 15, 7, 7, 7]。与之前的 ResNet 的卷积划分为 4stage 不同,这儿最多划分为 7stageYOLOv4-P7)。

5,试验

与其他实时方针检测检测器进行比较,对比试验成果如表 11 所示。

Scaled-YOLOv4论文解读

总结

通篇论文看下来,感觉这篇论文最首要的贡献在于经过简略的理论剖析和对比试验,验证了模型缩放的准则,进一步拓宽了 CSPNet 办法,并依据此规划了一个全新的 Scaled-YOLOv4。个人感觉便是针对不同的 GPU 渠道,能够依据作者剖析出来的模型缩放理论且符合其他一些准则的状况下,经过挑选不同的模型宽度和深度参数,让模型更深更宽。

anchor-free 的办法,如 centernet 是不需要复杂的后处理,如 NMSBackbone 模型的宽度、深度、模块的瓶颈比(bottleneck)、输入图画分辨率等参数的联系。

Reference

[43] Sergey Zagoruyko and Nikos Komodakis. Wide residualnet works. arXiv preprint arXiv:1605.07146, 2016.

参阅资料

  • Scaled-YOLOv4: Scaling Cross Stage Partial Network
  • Scaled-YOLOv4: Scaling Cross Stage Partial Network 论文翻译