深度学习论文导航 | 16 Pelee:移动设备上的实时目标检测系统

前言:这篇论文发表于NIPS2018,该研究试图探索设计一种高效的CNN架构,使得CNN能够在计算能力和内存资源有限的移动设备上运行。与常规的用于轻量级网络的深度可分离卷积不同,PeleeNet是通过常规卷积构建的。经过实验表明,PeleeNet在移动设备 NVIDIA TX2 和 iPhone 均能快速运行。且在一些著名的数据集上的测试结果显示,PeleeNet在不损失精度的情况下,速度都可以得到一定的提升,是一个不错的轻量级网络。

-> 前往【深度学习论文导航】总目录 <-
在这里插入图片描述


摘要

在计算能力和内存资源有限的移动设备上运行卷积神经网络(CNN)模型的需求不断增长,这鼓励人们进行有效模型设计的研究。近年来,已经提出了许多有效的体系结构,例如MobileNet,ShuffleNet 和 MobileNetV2。但是,所有这些模型都严重依赖于深度可分离卷积,这在大多数深度学习框架中缺乏有效的实现

在这项研究中,我们提出了一种名为PeleeNet的高效架构,它是通过常规卷积构建的。在ImageNet ILSVRC 2012数据集上,我们提出的PeleeNet具有比NVIDIA TX2上的MobileNet和MobileNetV2更高的准确度和1.8倍的速度。同时,PeleeNet仅是MobileNet型号尺寸的66%。

然后,我们通过结合PeleeNet和SSD方法并优化体系结构以实现加速,提出了一种实时目标检测系统。我们提出的检测系统名为Pelee,在PASCAL VOC2007上达到了76.4%的mAP,在MS COCO数据集上达到22.4的mAP,在iPhone 8上的测试速度为23.6 FPS,在NVIDIA TX2上的测试速度为125 FPS。根据实验发现,该方法在MS COCO数据集上的检测精度优于YOLOv2,其计算成本还降低了13.6倍,模型尺寸更小了11.3倍。

一、引言

在内存和计算预算受到严格限制的情况下,人们对运行高质量CNN模型的兴趣日益浓厚。许多创新的体系结构,例如MobileNets,ShuffleNet、NASNet-A 等都是近年来提出的。但是,所有这些架构都严重依赖于深度可分离卷积,缺乏有效的实施。同时,很少有研究将有效模型与快速目标检测算法结合在一起。这项研究试图探索一种高效的CNN架构的设计,该架构既可用于图像分类任务,又可用于目标检测任务。它做出了一些重要贡献,具体如下:

我们提出了DenseNet 的变体,它是一种被称为PeleeNet的移动设备架构。 PeleeNet遵循连通性模式和DenseNet的一些关键设计原则。它还旨在满足对内存和计算预算的严格限制。根据实验数据显示,PeleeNet比原始的DenseNet、MobileNet准确度都要高,同时模型比上述网络都要小。

PeleeNet的一些关键特征在于:

  • Two-Way Dense Layer。受GoogLeNet 的启发,我们使用双向致密层来获得不同尺度的接收场。层的一种方式使用3x3内核大小。该层的另一种方式是使用两个堆叠的3x3卷积来学习大型目标的视觉模式。结构如下图所示:
    在这里插入图片描述
  • Stem Block。受Inception-v4 和 DSOD 的启发,我们在第一个稠密层之前设计了一种经济高效的Stem Block,其结构如下图所示。该结构可以有效地提高特征表达能力,而又不会增加过多的计算成本,比其他更昂贵的方法更好,例如增加第一卷积层的通道或增加增长率。
    在这里插入图片描述
  • Dynamic Number of Channels in Bottleneck Layer。另一个亮点是,瓶颈层中的通道数根据输入形状而变化,而不是原始DenseNet中使用的固定4倍的增长率。在DenseNet中,我们观察到对于前几个密集层,瓶颈通道的数量远大于其输入通道的数量,这意味着对于这些层,瓶颈层增加了计算成本,而不是降低了成本。为了保持体系结构的一致性,我们仍将瓶颈层添加到所有密集层,但是数量会根据输入形状进行动态调整,以确保通道数不会超过输入通道。与原始的DenseNet结构相比,我们的实验表明,该方法最多可以节省28.5%的计算成本,而对精度的影响很小。其结构如下图所示:
    在这里插入图片描述
  • Transition Layer without Compression。我们的实验表明,DenseNet提出的压缩因子会损害特征表达。在过渡层中,我们始终使输出通道数与输入通道数相同。
  • Composite Function 。为了提高实际速度,我们使用 post-activation (卷积-批量归一化 Ioffe&Szegedy) 作为我们的复合函数,而不是使用在DenseNet中的 pre-activation。对于post-activation,批量 归一化层可以在推理阶段与卷积层合并,从而可以大大加快速度。为了弥补此更改对准确性造成的负面影响,我们使用了浅而宽的网络结构。我们还在最后一个密集块之后添加了一个1x1卷积层,以获得更强的表示能力。

我们优化了SSD的网络架构,进行加速,然后将其与PeleeNet结合使用。 我们提出的名为Pelee的系统在PASCAL VOC 数据集上实现了76.4%的mAP。它在准确性,速度和模型尺寸方面均优于YOLOv2。为平衡速度和准确性而提出的主要增强功能包括:

  • Feature Map Selection。我们以不同于原始SSD的方式构建对象检测网络,并精心选择了5组比例尺特征图(19 x 19、10 x 10、5 x 5、3 x 3和1 x 1)。为了减少计算成本,我们不使用38 x 38特征图。
  • Residual Prediction Block 。我们遵循Lee等人提出的设计思想(2017),鼓励沿特征提取网络传递特征。对于用于检测的每个不同层级的特征图,我们建立一个残差模块(ResBlock),然后再进行预测。如下图所示:
    在这里插入图片描述
  • We provide a benchmark test。用于 NVIDIA TX2 嵌入式平台和 iPhone 8 上的不同有效分类模型和不同阶段的目标检测方法。

二、PeleeNet:一种高效的特征提取网络

2.1 网络结构(分类)

我们提出的PeleeNet的体系结构如下表所示。整个网络由一个Stem Block四个阶段的特征提取器组成。除最后阶段外,每个阶段的最后一层是步幅为2的平均池化层。四阶段结构是大型模型设计中的常用结构。 ShuffleNet使用三阶段结构,并在每个阶段开始时缩小要素地图的大小。尽管这可以有效地减少计算成本,但我们认为早期特征对于视觉任务非常重要,过早减小特征图的大小可能会损害表示能力。 因此,我们仍然保持四个阶段的结构。将前两个阶段的层数具体控制在可接受的范围内。
在这里插入图片描述

2.2 消融实验

2.2.1 数据集

本次数据集采用的是一个包含120类狗的数据集Stanford Dogs,此数据集是按照ImageNet的图像和标注格式构建的,用于进行细粒度的图像分类。具体内容如下:

  • 类别数:120
  • 训练集图像数:150466
  • 验证集图像数:6000

2.2.2 各种设计选择对性能的影响

我们建立了一个称为DenseNet-41的类似于DenseNet的网络作为我们的基准模型。此模型与原始DenseNet有两个区别。第一个是第一转换层的参数。第一转换层上有24个通道,而不是64个,内核大小也从7 x 7更改为3 x 3。第二个是调整每个密集块中的层数以满足计算预算。

我们在本节中的所有模型均由PyTorch训练,最小批量为256个,每次120代。我们遵循ILSVRC 2012上ResNet中使用的大多数训练设置和超参数。表2显示了各种设计选择对性能的影响。我们可以看到,综合所有这些设计选择之后,PeleeNet在Stanford Dogs上实现了79.25%的准确性,以较低的计算成本,其准确性比DenseNet-41高出4.23%。在这里插入图片描述

2.3 ImageNet 2012上的结果

我们的PeleeNet经过PyTorch的培训,在两个GPU上的最小批量为512。该模型采用余弦学习速率退火进度表进行训练,类似于Pleiss等人的方法。初始学习率设置为0.25,总时期数为120。然后,我们以5e-3的初始学习率对模型进行20个时期的微调。其他超参数与Stanford Dogs数据集上使用的参数相同。

Cosine Learning Rate Annealing。表示学习率以余弦形状衰减(时期t的学习率(t <= 120)设置为0.5 ∗ lr ∗(cos(π∗ t / 120)+1)。

从表3中可以看出,PeleeNet在不超过66%的模型尺寸和较低的计算成本的情况下,比MobileNet和ShuffleNet的精度更高。 PeleeNet的模型大小仅为VGG16的1/49。
在这里插入图片描述

2.4 在移动设备上的速率

计数FLOP(乘法累加的数量)被广泛用于衡量计算成本。但是,考虑到还有许多其他因素可能会影响实际时间成本,它不能代替对实际设备的速度测试。例如:缓存,I / O,硬件优化等。

在 iPhone 8 and NVIDIA TX2两个移动设备上进行了测试。速度是通过以1批大小处理100张图片的平均时间计算得出的。我们分别运行100次图片处理10次并平均时间。

如表4所示,PeleeNet比TX2上的MoibleNet和MobileNetV2快得多。尽管MobileNetV2在300个FLOP的情况下实现了很高的精度,但是模型的实际速度却比在569个FLOP的情况下的速度慢。
在这里插入图片描述
使用半精度浮点(FP16)代替单精度浮点(FP32)是加速深度学习推理的广泛使用的方法。如图5所示,PeleeNet在FP16模式下的运行速度是在FP32模式下的1.8倍。相反,以深度可分离卷积构建的网络很难从TX2半精度(FP16)推理引擎中受益。在FP16模式下运行的MobileNet和MobileNetV2的速度与在FP32模式下运行的速度几乎相同。
在这里插入图片描述
在iPhone 8上,小输入尺寸的PeleeNet比MobileNet慢,但大输入尺寸的PeleeNet比MobileNet快。 iPhone上的不利结果有两个可能的原因。第一个原因与基于Apples Metal API构建的CoreML有关。 Metal是3D图形API,最初不是为CNN设计的。它只能保存4个数据通道(最初用于保存RGBA数据)。高级API必须将通道切成4分并缓存每个分片的结果。与传统的卷积相比,可分离的卷积可以从该机制中受益更多。第二个原因是PeleeNet的体系结构。 PeleeNet采用具有113个卷积层的多分支和窄通道样式构建。我们的原始设计被FLOP数量所误导,并且涉及不必要的复杂性。
在这里插入图片描述

三、Pelee:一种实时的目标检测系统

3.1 概述

本节介绍我们的目标检测系统和SSD的优化。我们优化的主要目的是以可接受的精度提高速度。除了上一节中提出的高效特征提取网络外,我们还以不同于原始SSD的方式构建了目标检测网络,并精心选择了5组比例尺特征图。同时,对于用于检测的每个特征图,我们在进行预测之前先构建一个残差块(图4)。我们还使用小型卷积核来预测对象类别和边界框位置,以减少计算成本。另外,我们使用完全不同的训练超参数。尽管这些贡献似乎很小,但我们注意到最终系统在PASCAL VOC2007上达到了70.9%的mAP,在MS COCO数据集上达到了22.4的mAP。考虑到更高的精度,COCO的结果优于YOLOv2,其计算成本降低了13.6倍,模型尺寸更小了11.3倍。

我们的系统中使用5种比例的特征图进行预测:19 x 19、10 x 10、5 x 5、3 x 3和1 x1。我们不使用38 x 38的特征图来确保在速度和准确性之间达成平衡。19x19特征图被组合到两个不同比例的默认框,而其他四个特征图分别被组合到一个比例的默认框。SSD与MobileNet结合使用时也没有使用38 x 38大小的特征图。但是,他们添加了另一个2 x 2特征图以保留6个比例的特征图用于预测,这与我们的解决方案不同。
在这里插入图片描述

3.2 VOC 2007检测结果

我们的目标检测系统基于SSD的源代码,以Caffe框架进行实现并训练的。批处理大小设置为32。学习率最初设置为0.005,然后在80k和100k迭代时分别减小了10倍。总迭代为120K。

3.2.1 各种设计选择的影响

表7显示了我们的设计选择对性能的影响。我们可以看到残差预测块可以有效地提高精度。具有残差预测块的模型比不具有残差预测块的模型具有更高的精度2.2%。使用1x1卷积核进行预测的模型的准确性与使用3x3卷积核进行的模型的准确性几乎相同。但是,1x1卷积核可将计算成本降低21.5%,并将模型大小降低33.9%。
在这里插入图片描述

3.2.2 与其他框架的比较

从表8可以看出,Pelee的精度比Tiny-YOLOv2的精度高13.8%,也比SSD + MobileNet 等的精度高。当我们按照第3.3节中所述在COCO trainval35k上训练的模型并在07 + 12数据集上对其进行微调时,Pelee达到了76.4%的mAP。
在这里插入图片描述

3.2.3 在移动设备上的速度

然后,我们评估Pelee在真实设备上的实际推理速度。速度由基准工具处理的100张图像的平均时间计算得出。该时间包括图像预处理时间,但不包括后处理部分的时间(解码边界框并执行非最大抑制)。通常,后处理在CPU上完成,可以与在移动GPU上执行的其他部分异步执行。因此,实际速度应该非常接近我们的测试结果。

尽管Pelee中使用的残余预测块会增加计算成本,但Pelee在iPhone和FP32模式下的TX2上仍比SSD + MobileNet运行得更快。从表9中可以看出,与FP16模式下的SSD + MobileNet和SSDLite + MobileNetV2相比,Pelee具有更大的速度优势。

在这里插入图片描述

3.3 在COCO数据集上的结果

我们进一步在COCO数据集上验证Pelee。在不包括5000个最小图像的COCO train + val数据集上训练模型,并在test-dev2015集合上进行评估。Batch_size设置为128。我们首先以0.01的学习速率训练模型,进行70k次迭代,然后继续以0.001的学习率进行10k次迭代和以0.0001的学习率进行20k次迭代。

表10显示了COCO test-dev2015的结果。 Pelee不仅比SSD + MobileNet 更准确。 而且在mAP [0.5:0.95]和mAP0.75方面也比YOLOv2 更准确。同时,Pelee的速度比YOLOv2快3.7倍,模型尺寸小11.3倍。
在这里插入图片描述

四、结论

深度可分离卷积不是构建有效模型的唯一方法。我们提出的PeleeNet和Pelee并非使用深度可分离卷积,而是使用常规卷积构建的,并且在ILSVRC 2012,VOC 2007和COCO上取得了令人瞩目的结果。

通过将高效的架构设计与移动GPU和硬件指定的优化运行时库相结合,我们能够对移动设备上的图像分类和目标检测任务进行实时预测。例如,我们提出的目标检测系统Pelee可以在iPhone 8上以23.6 FPS的速度运行,在NVIDIA TX2上以125 FPS的速度运行。

-> 返回【深度学习论文导航】总目录 <-

AI 菌 CSDN认证博客专家 博客专家 CSDN合作伙伴 算法实习僧
研究僧一枚,CSDN博客专家,公众号【AI 修炼之路】作者。专注于无人驾驶(环境感知方向),热衷于分享AI、CV、DL、ML、OpenCV、Python、C++等相关技术文章。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值