摘要

目前在计算能力和内存资源有限的移动设备上运行卷积神经网络模型的需求越来越大,这样一来就刺激了对高效模型的设计和研究。

MobileNet、ShuffleNet和MobileNetV2等高效的网络结构,然而这些模型高度依赖于深度可分离卷积网络,在很多深度学习框架中难以实施。

基于此,本文提出了一种有效的结构,名为PeleeNet,使用传统的卷积网络。

  • 在ImageNet ILSVRC 2012上,PeleeNet达到了很好的效果,且在NVIDIA TX2上比MobileNet 和 MobileNetV2 快1.8倍。
  • PeleeNet模型大小是MobileNet的66%
  • 本文提出了一个将PeleeNet和SSD结合起来的实时目标检测系统Pelee,在PASCAL VOC2007上的mAP达到了76.4%,MS COCO上的mAP达到了22.4,在NVIDIA TX2上进行实验,速度分别为8和125fps。
  • COCO上的结果比YOLOv2的精度要好,计算复杂度比其低13.6倍,模型大小低11.3倍。

1. 引言

在内存和计算受限的情况下高性能的运行CNN模型已经引起了人们的兴趣

目前也产生了很多新的结构,如MobileNets [1], ShuffleNet [2], NASNet-A [3], MobileNetV2 [4]。

这些结构的缺点: 高度基于深度可分离卷积,限制了实施

目前现有研究的盲点: 缺少有效模型和快速目标检测系统的结合

本文尝试将高效的CNN用于图像分类和目标检测任务,贡献点如下:

1)在移动端提出了DenseNet[7]变体结构——PeleeNet

PeleeNet借鉴了DenseNet的级联模式和主要步骤,被用于解决存储和计算能力受限的情况。

在斯坦福的Dogs[8]数据集上比DenseNet的准确率高5.05%,比MobileNet[1]高6.53%。

在ImageNet ILSVRC 2012 [9]上效果也很好,Top-1准确率为72.1%,比MobileNet高1.6%,且仅仅是MobileNet模型大小的66%

PeleeNet的主要结构:

  • Two-Way Dense Layer:

    灵感源于GoogLeNet[5],使用2路稠密层来获得不同尺度的感受野,一路使用3x3的卷积核,另一路使用两个堆叠的3x3卷积来学习大目标物体的视觉模式,结构如Fig.1(右)。

  • Stem Block:

    灵感源于Inception-v4[10]和DSOD[11],在第一个稠密层之前设计一个有效的stem block,结构如Fig 2,该结构可以有效的提升特征表达能力且不会增加额外的计算开销,比其他的方法(增加通道或增加增长率)都要好。

  • 瓶颈动态通道数

    另外一个有效的设计是,瓶颈层的通道数是根据输入形态可以动态调整的,而不是DenseNet中使用的固定的数量,是增长率的4倍。DenseNet中,前几个稠密层的瓶颈通道数比输入通道数多很多,这也意味着对这些层来说,瓶颈层增加了计算开销。

    为了维持结构的一致性,PeleeNet仍然给所有稠密层添加了瓶颈层,但是数量是依据输入形式而动态调整的,来保证通道数量不会超过输入通道数。

    本文的网络可以在减少28.5%的计算开销的同时,仅对准确率有微小的降低(Fig.3)

  • 无压缩的传递层

    实验验证了DenseNet中提出的压缩因子会损害特征表达,本文保持transition layers的输出通道数和输入通道数相同。

  • Composite Function

    为了加速实际过程,本文使用“post-activation”(卷积-BN[12]-Relu)结构来作为composite function而不是DenseNet中使用的pre-activation。post-activation中,在推断阶段(inference stage)所有的BN层可以和卷积层合并,可以促进加速。为了弥补这个改变给准确度带来的负面影响,本文使用更浅更宽的网络结构,在最后一个dense block后添加一个1x1的卷积层来获得更强的特征表达能力。

2)优化SSD的网络结构来提升速度,并将优化后的SSD与PeleeNet进行结合

本文提出的系统叫Pelee,在PASCAL VOC [14] 2007上达到了76.4%的mAP,在COCO上达到了22.4%的mAP。在准确度、速度和模型小型上都超越了YOLOv2,权衡速度和准确度的要点如下:

  • 特征图选择:

和传统SSD的构建过程不同的目标检测网络,仔细的选择了5种不同尺度的特征图(19x19, 10x10, 5x5, 3x3, 1x1),为了减少计算复杂度,没有使用38x38的特征图。

  • 残差预测模块:

    本文使用[16]中提出的设计思想,鼓励特征沿着特征提取网络进行传递。对于每个用于检测的特征图,在预测之前建立一个残差块(Residual Block,ResBlock),结构如图Fig.4。

  • 用于预测的小的卷积核:

    残差预测块使得利用1x1卷积核来预测分类得分和b-box偏移量成为可能,实验展示出实验1x1卷积核的模型几乎和使用3x3的卷积核准确率相当,且1x1的卷积核将计算复杂度降低了21.5%。

3)提供了一种基准测试

针对NVIDIA TX2嵌入式平台和iPhone 8上不同的高效分类模型和不同的单阶段目标检测方法

2. PeleeNet:An Efficient Feature Extraction Network

2.1 结构

本文提出的PeleeNet结构如Table 1中所示,整个网络由一个stem block和四阶特征提取器构成。

除过最后一个阶段的每个阶段的最后一层都是步长为2的平均池化,四阶段结构是一般大型模型设计的通用结构。

ShuffleNet [2]使用三阶段的结构,并在每个阶段的开始都压缩了特征图大小,尽管这样可以提升计算速度,但是我们认为前面的阶段对视觉任务尤为重要,且过早的减小特征图大小会损坏特征表达能力,因此我们仍然使用四阶段结构,前两阶段的层数是专门控制在一个可接受的范围内的。

2.2 消融学习

2.2.1 数据集

我们将斯坦福的Dogs数据集进行了预处理来进行消融学习。

Stanford Dogs [8] dataset包含了来自全世界的120种不同的品种。该数据集利用图像和从ImageNet中的标记来建立的,用于细粒度图像的分类。

我们认为用于这类任务的数据集足够复杂,足以评估网络体系结构的性能。

但是,原始的Stanford Dogs数据集仅包含14580个训练图像,每类大概120张图像,数据集不够大以至于不能从最初开始训练模型。

我们没有使用原始数据集,而是根据Stanford Dogs中使用的ImageNet wnid构建了一个 ILSVRC 2012子集,

训练集和验证集都来源于ILSVRC 2012数据集,下文中,“Stanford Dogs”就表示ILSVRC 2012的子集。

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

2.2.2 不同设计方法的性能测试

我们建立了一个类似于DenseNet的网络——DenseNet-41作为基准模型。两个模型中有两点不同:

  • 第一个卷积层的参数(第一个卷积层有24个通道,而非64个,卷积核大小为3x3而非7x7)
  • 每个dense block的层数是根据计算预算来确定的

本节中的实验都是用PyTorch训练的,小批量大小为256,迭代120次,训练集和超参数都是用RestNet在ILSVRC 2012中的参数。

Table 2中展示了不同设计方式对性能的影响。结合了这些设计方式的PeleeNet在Stanford Dogs数据集上的准确率达到了79.25%,比DenseNet-41高4.24%,且计算开销更小。

2.3 在 ImageNet ILSVRC 2012上的结果

PeleeNet是在PyTorch上以两个GPU上且批量大小为512的情况下训练的。

学习率:初始值为0.18,迭代次数为120,cosine降速学习率,与[18,19]中相同

微调:初始学习率为0.005,迭代次数为20次,其他超参数都是和Stanford Dogs数据集相同

  • Cosine Learning Rate Annealing:

    学习率以cosine曲线的形式下降,也就是对于第 t(t&lt;=120)t(t&lt;=120)t(t<=120) 次迭代,学习率设置为:
    0.5∗lr∗(cos(π∗t/120)+1)0.5 * lr * (cos(\pi * t/120)+1) 0.5∗lr∗(cos(π∗t/120)+1)

表3中展示了PeleeNet以更低的计算开销获得了比 MobileNet 和 ShuffleNet 更高的准确率,且模型大小不超过该两者的66%。PeleeNet的模型大小仅仅是VGG16的1/49。

2.4 实际设备上的速度

计算FLOPS(floating-point operations per second,每秒浮点运算次数)在判定网络的计算速度中应用的很多。

但是FLOPS不能测试在实际设备上的速度,因为实际中可能有很多因素都会影响实时速度,如缓存、I/O口、硬件设备等。

本节将在iPhone 8 和 NVIDIA TX2嵌入式平台上对该模型的性能进行测试。

速度的计算方式:对100张图像,处理10次,对时间求均值

Table 4中可以看出,PeleeNet 在TX2 上的运行速度比 MoibleNet 和 MobileNetV2 都快,尽管MobileNetV2在高准确率的情况下达到了300FLOPS的速度,但是实际的速度还是比MobileNet的569速度慢。

用半精度浮点数(FP16)代替单精度浮点数(FP32)是一种广泛使用的加速深度学习推理的方法,如图5所示,PeleeNet在FP16模式下比FP32模式下快1.8倍。

相比之下,利用深度可分离卷积建立的网络很难从TX2的半精度(FP16)中获益,MobileNet和MobileNetV2在FP16模式下的运行速度几乎与在FP32模式下相同。

iPhone 8上,当输入维数小时,PeleeNet比MobileNet速度慢,当输入维数较大时,PeleeNet比MobileNet速度快,原因有两个:

  • 第一个原因与CoreML有关,CoreML基于苹果的Metal API。Metal是一个3D图形API,最初并不是为CNNs设计的。它只能保存4个通道的数据(最初用于保存RGBA数据)。高级API必须将通道切分为4个,并缓存每个切片的结果。与传统的卷积方法相比,可分离卷积可以从这种机制中更多的获益。
  • 第二个原因是PeleeNet的结构,PeleeNet是由113个卷积层组成的多分支的窄通道结构,我们的设计被错误的FLOPS计数所误导,涉及到了一些不必要的复杂性。

3. Pelee:实时目标检测系统

3.1 概述

本节将介绍所构建的目标检测系统和优化SSD。

优化的主要目标:在对精度没有太大损失的情况下,提高速度

本文建立的目标检测系统:

  • 使用仔细选择的5个尺度的特征图来建立,不同于SSD,
  • 对于每个用于检测的特征图,都在预测之前添加一个残差块(Fig.4)
  • 使用较小的卷积核来预测类别和定位框来减小计算开销
  • 使用不同的训练超参数

上述改变看起来很小,但最终在PASCAL VOC2007上达到了70.9%的mAP,在COCO上达到了22.4的mAP。

在COCO上的效果超越了YOLOv2,且运行时间低13.6倍,模型大小低11.3倍。

用于预测的五个尺度的特征图大小分别为:19 x 19, 10 x 10, 5 x 5, 3 x 3 和1 x 1

不使用38x38大小的特征图的原因:确保速度和准确率上的折衷权衡

19x19的特征图:被合并到两个不同尺度的默认框中,其他四种大小的特征图都被结合到一个默认框的尺度中。

SSD和MobileNet合并时:Huang 等人 [6] 也没有使用38x38的特征图,但是使用了2x2的特征图来保证使用6种尺度的特征图来进行预测。

3.2 在VOC 2017上的结果

本文目标检测系统是基于SSD源码在Caffe上训练的。batch size为32,初始学习率为0.005,之后分别在迭代次数为80k和100k时,减小10%,总迭代次数为120次。

3.2.1 不同设计方法的效果

Table 7展示了不同设计方法获得的性能。

残差预测模块可以很有效的提高准确率,有残差模块的模型比没有残差模块的模型准确率高2.2%。

使用1x1大小的卷积核来进行预测的模型和使用3x3大小的卷积核来预测的模型效果基本相同,但1x1的卷积核将计算开销降低了21.5,%,将模型大小降低了33.9%。

3.2.2 与其他框架的对比

Table 8中可以看出:

  • Pelee的准确率比 Tiny YOLOv2的准确率高13.8%
  • 比SSD+MobileNet的准确率高2.9%
  • 在计算开销仅仅为YOLOv2-228的14.5%的情况下,准确率也比YOLOv2-228高
  • 在使用COCO trainval35k(section 3.3)且在07+12数据集上进行微调的情况下,Pelee达到了76.4%的mAP

3.2.3 实际设备中的速度

本节测试Pelee在实际设备中的速度,通过将在基准设备中进行100次处理的实际平均而获得,包括预处理的时间但不包括 post-processing时间(也就是解码b-box和实现NMS的时间)。

通常post-processing是在CPU上进行的,也就表示该步骤可以于其他在移动GPU上执行的模块异步进行。

尽管残差模块可以提高计算开销,但是Pelee在iPhone和TX2上以FP32模式运行,仍然比SSD+MobileNet快

Table 9中可以看出,Pelee在FP16模式下,比SSD+MobileNet 和SSD+MobileNetV2 都快。

3.3 COCO上的实验结果

模型在COCO的train+val数据集上训练(除过5000个minival),在test-dev2015上测试。批量大小为128,前70k次迭代实验学习率为0.01,中间10k次使用0.001,后面20k次实验0.0001。

Table 10呈现了test-dev的结果,Pelee不仅比SSD+MobileNet效果好,也比YOLOv2效果好,且Pelee比YOLOv2速度快3.7倍,比YOLOv2模型小11.3倍。

4. 总结

  • 可分离深度卷积网络并非建立有效模型的必须途径
  • 本文利用传统的卷积形式建立了PeleeNet和Pelee结构,并且在ILSVRC 2012, VOC 2007 和 COCO上取得了引人注目的成绩
  • 本文通过将有效的结构和移动GPU及特定硬件设备的结合,建立了一种在移动端上可以进行图像分类和目标检测的模型。
  • Pelee(本文目标检测系统),可以在iPhone 8上实现23.6FPS的速度,在NVIDIA TX2上实现了125FPS的速度,同时拥有高准确率。

感知算法论文(二)Pelee: A Real-Time Object Detection System on Mobile Devices(2018)译文相关推荐

  1. 实时目标检测--Pelee: A Real-Time Object Detection System on Mobile Devices

    Pelee: A Real-Time Object Detection System on Mobile Devices ICLR 2018 Code: https://github.com/Robe ...

  2. 【论文总结】Towards Open World Object Detection(附翻译)

    Towards Open World Object Detection 开放世界的目标检测 论文地址:https://arxiv.org/abs/2103.02603 代码地址:GitHub - Jo ...

  3. 论文解读:DETR 《End-to-end object detection with transformers》,ECCV 2020

    论文解读:DETR <End-to-end object detection with transformers>,ECCV 2020 0. 论文基本信息 1. 论文解决的问题 2. 论文 ...

  4. [论文解读]Deep active learning for object detection

    Deep active learning for object detection 文章目录 Deep active learning for object detection 简介 摘要 初步 以前 ...

  5. 论文阅读 [TPAMI-2022] Disentangling Monocular 3D Object Detection: From Single to Multi-Class Recognitio

    论文阅读 [TPAMI-2022] Disentangling Monocular 3D Object Detection: From Single to Multi-Class Recognitio ...

  6. 感知算法论文(十):Towards Universal Object Detection by Domain Attention(2019)

    文章目录 摘要 1. 引言 2. 相关工作 3. 多域目标检测 3.1 通用目标检测基准 3.2 单域检测器组 3.3 自适应多域检测器 3.4 SE 适配器 4. 通用目标检测器 4.1 通用检测器 ...

  7. 目标检测(二)--Hough Forests for Object Detection

    原文: http://www.cnblogs.com/walccott/p/4956860.html 09年cvpr上提出霍夫森林的文章--Class-Specific Hough Forests ...

  8. [论文解读] Rank Sort Loss for Object Detection and Instance Segmentation

    文章内容 问题提出 相关研究现状 1. 辅助头和连续标签 2. 基于排序的损失 3. 样本不平衡问题 本文工作 AP Loss的不足之处 RS Loss 定义 训练细节 代码解读 论文链接:Rank ...

  9. 论文精读——CenterNet :Keypoint Triplets for Object Detection

    论文地址:https://arxiv.org/abs/1904.08189 论文代码:https://github.com/Duankaiwen/CenterNet 发布时间:2019.4.17 发布 ...

最新文章

  1. 基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了
  2. AI芯片之争白热化的当下,如何设计一款真正适用于终端的AI芯片?
  3. python【Matlibplot绘图库】绘制用于学术论文投稿的黑白图片
  4. BugkuCTF-Misc:隐写2
  5. 模块怎么用_IC设计方法:模块划分与overdesign
  6. UnitTest in .NET 系列文章目录
  7. 如何释放mysql连接资源_CI框架出现mysql数据库连接资源无法释放的解决方法
  8. prototype.js教程及prototype中文手册
  9. 【爬虫】身份证前6位区域划分编码爬取
  10. ACOPTools:一步步帮你快速、高效构建多基因联合系统发育树
  11. 极坐标xy的转换_极坐标与直角坐标的转化
  12. .Net面试经验总结
  13. Apple自动化利器AppleScript
  14. php英文数字转为中文,利用PHP怎么将英文数字转换为阿拉伯数字
  15. Camera-roll,pitch,heading
  16. java_计算两个时间相差多少天、小时、分钟、秒
  17. 使用牛顿迭代法求根 一元三次方程的根
  18. R语言参数检验多重比较
  19. 2022-02-16 工作记录--Swiper-实现跑马灯效果:鼠标经过时停止滑动,鼠标离开后继续滑动
  20. Adobe Illustrator CC 关于路径查找器的使用

热门文章

  1. 在SuSE10.1上安装Oracle10g
  2. 模拟jquery链式访问
  3. 队列的其本应用_迷官问题
  4. java23中设计模式——结构模式——Flyweight(享元)
  5. [2015-10-28]Angularjs-----数据获取,关联
  6. win8: 清除iframe的缓存
  7. linux的mount(挂载)命令详解(转)
  8. python里、能用分支结构写出循环的算法吗_python变量运算符分支结构循环结构及例题...
  9. java 数据包含_如何高效判断java数组是否包含某个值
  10. 画验证曲线_椭圆曲线加密算法(ECC)