哇~这么Deep且又轻量的Network,实时目标检测

最近挺对不住关注“计算机视觉战队”平台的小伙伴,有段时间没有给大家分享比较硬比较充实的“干货”了,在此向大家表示抱歉,今天抽空之余,想和大家说说目标的实时检测。

论文:https://www.arxiv.org/pdf/1608.08021v3.pdf

文末有相应的代码,大家有兴趣的可以尝试去实现!

首先来具体介绍下这个技术的主要摘要:

摘要

主要介绍了如何通过调整和结合最新的技术创新,在最大限度地降低计算成本的同时,实现多类目标检测任务的最先进精度。根据CNN特征提取区域候选ROI分类的一般流程,主要对特征提取部分进行了重新设计,因为区域候选部分计算量不高,可以使用truncated SVD等常用技术对分类部分进行有效压缩

本次的设计原则是“减少多层的通道”,并采用一些构建块,包括级联的relu、in-ception和HyperNet。所设计的网络是一种深而轻量(薄)的网络,通过批量归一化、残差连接和基于平台检测的学习率进行训练。最终在著名的目标检测基准上取得了很不错的结果:

VOC 2007上的MAP(平均精度)为83.8%

VOC 2012(第二位)为82.5%

而在NVIDIA Titan X GPU上,Intel i7-6700 K CPU上的平均图像为750 ms/图像

从理论上讲,网络只需要12.3%的计算成本相比于ResNet-101。

近年来,卷积神经网络(CNNs)在目标检测方面取得了令人瞩目的进步。由于许多创新工作,最近的物体检测系统在汽车和监视等广泛的市场上达到了可接受的精确性。然而,在检测速度方面,即使是最好的算法也仍然面临着沉重的计算成本。虽然最近在网络压缩和量化方面的工作取得了很好的效果,但在网络设计阶段,降低计算量是非常重要的。

于是,提出了一种用于目标检测的轻量级特征提取网络体系结构——PVANET,它与其他先进的目标检测系统相比,在不降低精度的前提下,实现了实时的目标检测性能。

具体有如下体现:

  1. Computational cost:输入1065*640尺寸的图像在特征提取时,需要7.9GMAC(ResNet-101:80.5GMAC);
  2. Runtime performance:750ms/image (1.3FPS) ,Intel i7-6700K CPU (单核);46ms/image (21.7FPS),NVIDIA Titan X GPU;
  3. 精度: 83.8% mAP on VOC-2007; 82.5% mAP on VOC-2012 (2nd place)

关键设计原则是“多层少通道”。此外网络采用了一些最近的构建块(building blocks),可惜的事,一些都没有验证它们在目标检测任务中的有效性。

  • 将级联ReLU(C.ReLU)应用于CNN的早期阶段(即从网络输入的前几层),使计算次数减少一半而不失去准确性
  • Inception应用于特征生成子网络的剩余部分。在接收模块产生不同大小的接收字段的输出激活,从而增加前一层中接收字段大小的变化。可以观察到,叠加初始空间模块可以比线性卷积链更有效地捕获变化较大的目标
  • 采用了像HyperNet这样的多尺度表示的思想,结合了多个中间输出,从而可以同时考虑多层细节和非线性,如下图:

说了这么多,都没有给出详细框架图,现在我们直接开始解读网络细节问题。

网络的设计细节

  • C.ReLU

C.ReLU的动机来自于对CNN中间激活模式的有趣观察。在早期阶段,输出节点往往是“配对”的,因此一个节点的激活与另一个节点的相反。从这个观察来看,C.ReLU将输出通道的数量减少了一半,并通过简单地将相同的输出与负样本连接在一起,从而使早期阶段的速度提高了2倍,而不失去准确性。

下图显示了C.ReLU的实现。与原来的C.ReLU相比,在级联后增加了缩放和移位,使得每个通道的斜率和激活阈值可以与其相反的通道不同。

  • Inception:特征生成中Remaining构建块

对于目标检测任务,Inception既没有被广泛应用于现有的工作中,也没有被验证其有效性。

但是发现,Inception可以是在输入图像中捕获小目标和大目标的最具成本效益的构建块之一。为了学习捕捉大目标的视觉模式,CNN的输出特征应该与足够大的感受野相对应,这可以通过叠加3x3或更大的核来实现。

另一方面,为了捕获小型目标,输出特性应该与足够小的感受野相对应,以便精确地定位感兴趣的小区域。

下图就清楚地显示了Inception可以满足这两个需求。1x1卷积是实现这一目的关键,它保留了前一层的感受野。它只是增加了输入模式的非均匀性,减缓了一些输出特征的感受野的增长,从而使小尺寸的目标能够被精确捕获。

下图展示了Inception的实现。用两个顺序的3x3卷积代替5x5卷积。

  • HyperNet:多尺度中间输出的级联

注:HyperNet将在下期详细介绍。

多尺度表示法及其组合在最近的许多深度学习任务中被证明是有效的,有兴趣的朋友可以期待我们下期的介绍。在特征提取层结合细粒度细节和高度抽象的信息,可以帮助后续区域候选网络和分类网络检测不同尺度的目标。

然而,由于所有抽象层的直接连接都会产生具有更高计算要求的冗余信息,因此需要仔细设计不同抽象层的节点和抽象层数。如果您选择目标候选和分类还为时尚早的层,当我们考虑额外的计算复杂性时,这将没有多大帮助。

本次的设计选择与ION和HyperNet的观测结果没有什么不同,后者结合了①最后一层和②两个中间层,其尺度分别为最后一层的2倍和4倍。选择中等规模的层作为参考比例尺(=2x),并将4x缩放层和最后一层分别用向下缩放(pool)和向上缩放(线性插值)连接起来。

接下来就是训练阶段

  • 深度网络训练

人们普遍认为,随着网络的深入,网络培训变得越来越麻烦。

通过采用residual structures来解决这个问题。与最初的残差训练思想不同,将残余连接添加到初始层,以稳定深层网络体系结构的后期。

还在所有ReLU激活层之前添加了批处理规范化层。小批量样本统计在预训练期间使用,moving average统计随后作为固定的尺度和移位参数使用。学习速率策略对于网络的成功训练也是非常重要的。

策略是在平台检测的基础上动态地控制学习速度。测量损失的moving average,并确定在一定的迭代周期内,如果它的改善低于一个阈值,它就处于平稳状态。每当检测到平台时,学习速率就会降低一个常数因子。

在实验中,学习速率策略获得了显著的准确性。


Faster R-CNN with our feature extraction network

下表显示了PVANET的整体结构。

在早期阶段(卷积1_1,...,卷积3_4),C.ReLU适用于卷积层,使KxK Conv的计算量减少了一半。在KxK Conv之前和之后分别添加1x1Conv层,以减小输入大小,从而扩大表示容量。

将来自卷积3_4(具有向下缩放)、卷积4和卷积5 4的三个中间输出组合成512通道多尺度输出特征(卷积f),这些特征被输入到Faster R-CNN模块:

  • 为了计算效率,只有前128个信道被输入到区域候选网络(RPN)中。RPN是“3x3 conv(384个信道)-1x1 conv(25x(2)=150个声道”层的序列
  • R-CNN中产生感兴趣区域(ROIS)。对于每个ROI,6x6x512张量是由ROI 池化生成的,然后经过一系列全连接的“4096-4096-(21,84)”输出节点

实验

  • VOC 2007

下表展示了模型在不同配置下的准确率。由于Inception和多尺度特征,RPN产生的初始的候选非常准确。

因为结果表示超过200个proposals没有对检测的准确率起到显著的帮助,于是,在剩下的实验中把proposals 的数量固定在200个。其中也测量了当迭代回归不使用时用带有bounding-box voting的性能。

  • VOC 2012

总结了PVANET+和一些先进的网络在VOC2012数据集上的比较。PVANET+达到了82.5%mAP,位列排行榜的第二名,超过其他竞争者除了"Faster R-CNN + ResNet-101"。

然而第一名使用的ResNet-101比PVANET大很多,同时耗时。

例如全局上下文和多尺度测试,导致至少比PVANET慢40倍。在下表,还比较了computation cost。在所有超过80%mAP的网络中,PVANET是唯一一个运行时间小于50ms的。考虑精度和计算cost,PVANET+是排行榜中最有效的网络。

总结

说了这么多,一直在说现在网络固然好,变的更深更鲁棒,但是现有的网络却是高度冗余的,于是,可以设计一个足够适合复杂视觉任务的薄而轻的网络。

精心的采用和组合最近的技术创新对深度学习,使得大家有可能重新设计Faster R-CNN框架的特征提取部分,以最大限度地提高计算效率。

尽管所提出的网络是为目标检测而设计的,但我相信该设计原则可以广泛应用于人脸识别和语义分析等其他任务,网络设计完全不依赖于网络的压缩和量化。现有的各种压缩和量化技术也适用于该网络,以进一步提高实际应用中的性能。

作为一个例子,我们证明了像truncated SVD这样的简单技术可以在基于该网络的运行时性能上取得显著的改善。

原文发布于微信公众号 - 计算机视觉战队(ComputerVisionGzq)

原文发表时间:2018-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的Python

11- 深度学习之神经网络核心原理与算法-卷积核典型的CNN网络

2883
来自专栏鸿的学习笔记

精确控制模型预测误差(上)

当评估模型的质量时,能够准确测量其预测误差至关重要。然而,测量误差的技术常常会给出严重误导的结果。因为可能导致会过拟合,就是模型可以非常好地拟合训练数据,但是对...

871
来自专栏AI研习社

MIT 6.S094· 深度学习 | 学霸的课程笔记,我们都替你整理好了

计算机视觉,到目前为止都是深度学习。并且大部分成功理解图片含义的案例都是使用神经网络。

1292
来自专栏机器之心

前沿 | CNN取代RNN?当序列建模不再需要循环网络

在这篇博文中,我们来探讨循环网络模型和前馈模型之间的取舍。前馈模型可以提高训练稳定性和速度,而循环模型表达能力更胜一筹。有趣的是,额外的表现力似乎并没有提高循环...

1431
来自专栏数据科学与人工智能

【机器学习】机器学习在实践中如何正确应用?

前阵子看到一篇文章,学习了一段时间的机器学习算法后,再回头看机器学习问题,发现要想利用机器学习去很好的求解一个问题,其实并不是一件容易办到的事情,尤其是能够对整...

2618
来自专栏新智元

【干货】ICLR-17 最佳论文详解:理解深度学习要重新思考泛化

【新智元导读】ICLR-17 最佳论文《理解深度学习需要重新思考泛化》引起过广泛争议,但弄清深度神经网络泛化本质无疑是重要的问题。新智元在取得本文作者 Adri...

56213
来自专栏专知

【ICLR2018 最高分论文】利用分布鲁棒优化方法应对对抗样本干扰

【导读】近日,深度学习顶会ICLR2018评审结果出炉,得分最高的论文是 《Certifiable Distributional Robustness with...

5665
来自专栏量子位

视觉目标检测和识别之过去,现在及可能

作者:李习华 知乎专栏:碧空的cv之旅 量子位 已获授权编辑发布 计算机视觉中目标检测、跟踪、识别是最基本的几个task,尤其又以检测最为重要和基础。同时基本上...

4037
来自专栏机器学习算法工程师

AI从业者搞懂---这10种深度学习方法---老婆孩子热炕头

作者:王抒伟 编辑:王抒伟 首先,让我们来看看主要有啥 1 1.机器学习 过去的十年里已经爆炸了。 大伙几乎每天都会在计算机科学计划,行业会议和各大公众号看到...

4738
来自专栏数据派THU

一文读懂神经网络(附PPT、视频)

本文共6500字,建议阅读10分钟。 本文从神经网络的发展历史出发,为你介绍感知器模型、前馈神经网络及BP算法。 [导读] 提起神经网络,你会想到什么?关于深度...

5289

扫码关注云+社区

领取腾讯云代金券