YOLO Nano 论文学习


Convolutional Neural Network for Object Detection)

论文地址:https://arxiv.org/abs/1910.01271v1

Abstract

目标检测任务是当前计算机视觉中一个非常活跃的研究领域,通过设计深度卷积神经网络,我们在目标检测任务上取得了显著的进步。尽管很成功了,但是要在边缘侧、移动平台上部署目标检测网络仍然受到计算复杂度和内存大小的限制。因此,人们对边缘侧和移动端的高效率深度神经网络设计越来越有兴趣。在这篇论文中,作者针对目标检测任务提出了一个极其紧凑的CNN网络 — YOLO Nano。作者使用了人机协同的策略来设计 YOLO Nano,主要的网络原型设计是基於单阶段目标检测网络 — YOLO 系列的设计原理,然后结合结构搜索技术来创造出一个简练的网络,它有着模块级别的宏观结构设计,以及专门针对嵌入式平台目标检测的微观结构设计。YOLO Nano 的模型大小仅为 4.0 MB(要比 Tiny YOLOv2 和 Tiny YOLOv3分别小15.1倍和8.3倍),推理时的计算量为 4.57B 次运算(要比Tiny YOLOv2 和 Tiny YOLOv3分别低34%34\%17%17\%),但是取得的mAP约为69.1%69.1\%(要比Tiny YOLOv2 和 Tiny YOLOv3分别高12%12\%10.7%10.7\%)。作者在Jetson AGX Xavier 嵌入式平台不同的功率预算下,进行了推理速度和性能效率的实验,进一步证明了YOLO Nano 在嵌入式平台的性能。

1. Introduction

计算机视觉中一个非常活跃的领域就是目标检测,它不仅要在场景中定位到物体,而且要给该物体指定一个类别标签。该领域目前所取得的成绩基本都得益于深度学习带来的提升,尤其是深度卷积神经网络。人们起初关注在如何提升准确率,于是有了越来越复杂的目标检测网络如SSD、R-CNN 和 Mask R-CNN 等。尽管这些网络取得了 state of the art 的效果,但是受限于计算复杂度和内存大小,很难部署在边缘侧、移动端设备上。这些网络中即便是较快的变体,如 Faster R-CNN,在嵌入式处理器上的推理速度也只有几帧每秒。这就使得这些网络无法应用在很多场景中,如无人机、视频监控、自动驾驶等,这些任务需要在本地嵌入式平台上运算。

为了实现嵌入式平台上的目标检测,越来越的人开始探索和设计适合边缘侧、移动端的高效率目标检测框架。YOLO 系列是其中一个比较有趣的目标检测网络,该单阶段网络在高端GPU上实现了嵌入式目标检测的表现。但是这个网络结构对很多边缘侧、移动场景来说,仍然太大了(YOLOv3的模型大小有240MB),而且由于其计算复杂度比较高,在移动端处理器上运行的时候,它的推理速度比较慢(YOLOv3有65B 次的运算)。为了解决这个问题,Redmon 等人提出了 Tiny YOLO 结构,极大地降低了模型大小,但也会造成检测性能的退步。

在这篇论文中,作者探索了人机协同的设计策略,针对目标检测任务设计了一个非常简练的卷积网络,将网络的原型设计和结构搜索技术耦合起来。更具体点就是,作者基于YOLO系列的设计原理,利用人机协同的设计策略提出了 YOLO Nano,该网络非常紧凑简练,有着高度定制化的模块级别的宏观结构设计,以及专门针对嵌入式平台目标检测的微观结构设计。

2. Methods

这篇论文中,作者利用人机协同设计的策略,提出了 YOLO Nano,一个适合嵌入式平台目标检测的、极其紧凑的深度卷积神经网络。YOLO Nano 的设计策略主要由两个设计阶段构成:i) 主要网络原型设计,ii) 结构搜索。

2.1 Principled network design prototyping

YOLO Nano 设计的第一个阶段就是主要网络原型设计,作者首先构造一个初级的网络设计原型(用ϕ\phi表示),用人工设计原则来指导电脑结构搜索。更具体点,作者基于 YOLO 系列的设计原理构建了一个初级的网络原型。YOLO 系列的显著特征就是,基于候选区域的网络需要先构建一个 RPN 网络来产生可能存在目标物体的候选区域,然后再对这些区域进行分类,而 YOLO 直接用一个单阶段网络对输入图片进行处理,输出预测结果。因此,单次前向传播就可以得到一张图像的所有预测,而基于候选区域的网络则需要成百上千次的前向传播才可能得到最终的结果。这就使得YOLO系列速度非常快,更适合嵌入式平台的目标检测。

该原型设计受 YOLO 系列网络结构启发,由一组特征提取模块堆叠而成,在各模块之间穿插着 shortcut 连接。特征提取模块类似于特征金字塔,这样它可以在三个不同的尺度上表示特征。这些特征提取模块后面跟着多个卷积层,在三个尺度上,它们的输出分别是一个包括边框信息、是否有目标物体、类别预测的三维 tensor。这样,该原型结构设计就可以进行多尺度目标检测了。

YOLO Nano 网络结构中各模块和层具体的宏观和微观结构设计,以及网络模块的个数都留给结构搜索阶段去自动地作决定。

2.2 Machine-driven design exploration

在网络设计原型 ϕ\phi、数据,以及人为的针对各移动平台的设计要求的指导下,我们然后利用结构搜索技术来决定 YOLO Nano 模块级的宏观和微观结构设计。更具体点说,在这篇论文中 machine-driven 的结构搜索通过生成合成(generative synthesis)的方法实现,它可以判断网络中最优的宏观结构和微观结构设计,并且符合人为设定的要求条件。生成合成(generative synthesis)的整体目的是学习一个生成模型,它生成的 DNN 满足设计要求和条件,如下所述。作者将生成合成的概念用公式表述为一个约束优化问题,gg 是要判断的生成模型,对于给定的一个 seeds 集合 SS,该生成模型输出的网络{NssS}\{N_s | s \in S \} 能够最大化一个全局表现函数μ\mu,通过指标函数1r()1_r(\cdot) 来满足要求和条件限制:

g=maxgμ(g(s))subject to1r(g(s))=1,sSg = \max_g \mu (g(s)) \quad \text{subject to} \quad 1_r (g(s)) = 1, \forall s \in S

由于可行性区域太大了,要想找到上述等式中的全局最优解几乎是不可能的,作者转而通过迭代优化的方法来找到一个近似解 g^\hat g,初始解g^0\hat g_0ϕ,μ,1r()\phi, \mu, 1_r(\cdot) 指导,然后逐步更新,这样每个近似解 g^k\hat g_k 都会比之前的近似解(如 g^1,...,g^k1\hat g_1, ..., \hat g_{k-1})的 μ\mu 要更优,但仍然满足条件 1r()1_r(\cdot)。最终的近似解 g^\hat g 用于构建 YOLO Nano 网络。

为了引导生成合成阶段输出一个适合边缘侧和移动端的目标检测模型,该模型不仅高效、紧凑,而且它的检测效果要好,一个关键步骤就是指标函数 1r()1_r(\cdot) 要严格履行设计的要求。在这篇论文中,指标函数 1r()1_r(\cdot) 设计如下:(i) 在VOC数据集上,mAP65%mAP \geq 65\%,(ii) 计算成本 5B\leq 5B 次运算,(iii) 8-bit 权重精度。有了这些算力开支的要求,YOLO Nano 的计算成本就要低于 Tiny YOLOv3,这是目前最流行的、适合嵌入式平台的目标检测模型之一。

3. YOLO Nano 结构设计

YOLO Nano 网络的结构如图1 所示,下面将介绍几个有趣的发现。

3.1 Residual Projection-Expansion-Projection Macroarchitecture

关于 YOLO Nano,第一个值得注意的就是它独特的残差 projection-expansion-projection(PEP)宏观结构,除了 expansion-projection 宏观结构。惨差PEP结构的构成如下:i) 一个由 1×11\times 1卷积构成的 projection 层,将输出通道映射为一个维度较低的输出tensor,ii) 一个由 1×11\times 1 卷积构成的 expansion 层,将通道数增大为较高的维度,iii) 一个 depthwise 卷积层对 expansion 层的每一个输出通道,用不同的滤波器进行空间卷积,iv) 一个由 1×11\times 1卷积构成的 projection 层,将输出通道映射为一个较低维度的输出 tensor。残差PEP结构极大地降低了计算复杂度和模型复杂度,而保留了模型的能力。

3.2 Fully-connected Attention Macroarchitecture

第二个值得注意的点就是,网络结构搜索阶段中轻量级的全连接注意力(fully-connected attention, FCA)机制,这和其它结构搜索方法中固定的 module-level introduction 不同。FCA 结构由2个全连接层构成,学习各通道间动态的、非线性的相互依赖关系,通过 channel-wise 相乘来产生各通道的权重。基于全局信息,FCA 有助于动态特征校正,对于富含信息的特征给予更多的关注,因此能更好地利用网络的能力。这就有助于在模型结构复杂度和计算复杂度降低的同时,很好地平衡模型的表现力。

3.3 Macroarchitecture and Microarchitecture Heterogeneity

第三个值得注意的点就是高度多样性,不仅是指宏观结构(PEP模块、EP模块、FCA,以及3×33\times 31×11\times 1卷积层的多样混合),也指单个特征提取模块和网络层的微观结构,每一个模块或网络层都有独特的微观结构。YOLO Nano 中微观结构的高度多样性有一个好处,网络结构中每个部分都能独特地设计,进而在结构复杂性、计算复杂度和模型能力上实现很好的平衡。该结构多样性也证明了结构搜索策略的优势与灵活性,否则,要是由人为来设计一个颗粒度这样强的网络结构几乎是不可能的。

4. Experiment Results and Discussion

为了研究 YOLO Nano 在嵌入式平台上目标检测的表现,作者在 PASCAL VOC 数据集上检验了其模型大小、目标检测准确率和计算成本。为了比较性能,作者将 Tiny YOLOv2 和 Tiny YOLOv3 网络用作为 baseline 模型,因为它们模型较小、计算复杂度较低,是最常用的、适合嵌入式平台的深度卷积网络。VOC2007/2012 数据集由自然图片组成,标注了20个不同的物体类别。作者用 VOC2007/2012 训练集来训练模型,在VOC2007测试集上计算 mAP,评价目标检测的准确率。

表1展示了 YOLO Nano 模型、Tiny YOLOv2、Tiny YOLOv3 的大小,目标检测的准确率。首先,我们可以看到 YOLO Nano 模型只有4 MB,比 Tiny YOLOv2 和 Tiny YOLOv3 分别小 15.1 倍和8.3 倍,这对边缘侧和移动端场景非常重要。其次,YOLO Nano 尽管模型很小,但是它在 VOC 2007 测试集上的 mAP 为 69.1%69.1\%,这比 Tiny YOLOv2 和 Tiny YOLOv3 分别高 12%12\%10.7%10.7\%。第三, YOLO Nano 的推理仅有 45.7 亿次的运算,比 Tiny YOLOv2 和 Tiny YOLOv3 分别低 34%34\%17%17\%

最后,为了研究 YOLO Nano 在嵌入式实际场景中的表现,作者在 Jetson Xavier 嵌入式平台上、不同的功率预算下,测试了推理速度和功率效率。在15W和30W的功率预算下,YOLO Nano 取得的推理速度为 26.9 FPS 和 48.2 FPS,功率效率为 1.97 张图片每秒每瓦特和1.61张图片每秒每瓦特。这些实验结果表明,YOLO Nano 网络可以在准确率、模型大小、计算复杂度之间取得很好的平衡,适合边缘侧、移动端场景的目标检测。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章