Press "Enter" to skip to content

NAS-FPN 论文翻译

Introduction

 

让电脑如何学习视觉特徵是一个基础的电脑视觉问题。在过去几年里,我们在设计网路结构中利用 deep convolutional networks(ConvNets) 在 image classification(图像分类) 与 objection detection(物件识别) 的项目中取得很大的进展。有别于图像分类仅预测图像为哪种类别的机率,物件辨识在各种尺度、位置上的检测和定位多个物件方面都有其自身的挑战。为了解决这个问题,许多现代物件检测方法普遍使用”the pyramidal feature representations”(金字塔型特徵萃取法)来表示具有多尺度的特徵图象层。

 

Feature Pyramid Network(FPN) 是生成用于物件检测的金字塔型特徵萃取法的代表性模型体系结构之一。FPN採用的backbone model(骨干模型)通常用于图像分类,藉由在骨干模型中按由上而下及横向的顺序组合特徵层次中的两个相邻层来建立 feature pyramid(特徵金字塔)取得具有高解释性但低位置精度的高阶特徵,经过 up-sampled(上採样)和连结其它高位置精度的特徵来产生具有高解释性及高位置精度的feature representations(特徵)。儘管FPN简单且有效,但它可能不是一个最佳架构设计。近期PANet(Path aggregation network for instance segmentation)显示在FPN特徵上额外新增由下而上的路径可以改善较低位置精度的 feature representation。近期许多研究提出了多种跨尺度连接或操作来连接特徵以产生pyramidal feature representations(金字塔型特徵萃取法)。

 

设计特徵金字塔结构的挑战在于其巨大的设计空间。有可能连接特徵组合的数量会随着层数增加呈指数成长。近期 Neural Architecture Search algorithm 展示了有希望的研究在巨大的空间中有效发现用于图像分类的顶级架构。为了实现这个研究, Zoph et al. 提出了一种可以重複并堆叠成可扩展架构的模组化架构。启发于此,我们提出了一种金字塔型的可扩展架构的搜索空间。本论文关键的贡献在于用多尺度特徵设计覆盖所有可能的跨规模连接搜索空间。研究过程中,我们的目标是发现一种atomic architecture(原子结构),具有相同的输入和输出特徵层数并且可以被重複应用。模组化搜索空间使搜索金字塔架构易于管理。模组化金字塔结构的另一个好处是可以随时物件辨识(anytime object detection)(或是early exist(提早退出))。儘管许多研究已经尝试手动设计这种提早退出的方法,但考虑到这种约束是非常困难的。

 

这种模型架构称为NAS-FPN,为建构物件辨识系统提供了极大的灵活性。NAS-FPN适用于各种骨干模型,例如MobileNet、ResNet 和 AmoebaNet。NAS-FPN为效率模型及精确模型提供了更好的效率与準确性折衷方法。结合RetinaNet框架中的MobileNetV2骨干网络,在相同的推理时间下,它比有MobilenetV2的SSDLite有着2 AP的领先。凭藉强大的AmoebaNet-D骨干模型,NAS-FPN通过单一测试规模实现了48.3 AP单一模型精度。检测精度超过Mask RCNN报告的推理时间更短。 我们的结果摘要如图1所示。

图1. 手持装置上精确模型(top)和效率模型(bottom)的每个图像平均精度和推时间

2. Related Works

 

2.1 Architecture for Pyramidal Representations

 

金字塔型特徵萃取法(Feature pyramid representations)是许多电脑视觉应用需要多尺度处理的解决方案的基础。然而使用深度捲积网路通过对图像金字塔进行特徵化来生成金字塔型会带来很大的计算负担。为了解决这个问题,最近关于人体姿态估计、图像估计和物件辨识的研究在深度捲积网路中引入了跨尺度连接,连接着不同尺度的内部特徵图层。这种连接有效地增强了特徵,使得不仅仅在解释性上增强,而且还包含高位置精度资讯。许多论文都在研究如何提升多尺度特徵。Liu et.al 提出一种基于FPN由下而上的路径。近期,Zhao et.al通过在骨干模型之后使用多个U-shape模组,扩展了建构更强的特徵金字塔的想法。Kong et.al 首先结合所有尺度的特徵,并通过对组合特徵的全局注意操作在每个尺度上生成特徵。儘管他是一个活耀的领域,但与骨干模型相比,大多数跨规模连接的架构设计仍然很浅。除了手动设计交叉尺度连接之外,提出藉由视觉记数的门控机制和密集标籤预测来学习连接方式。

 

在我们的研究中,我们使用可伸缩搜索空间的神经架构搜索算法和组合来代替手动设计金字塔的架构,以克服金字塔架构的大型搜索空间。我们限制搜索以找到可以重複应用的架构。因此,该体系结构可用于任何随时物件辨识(or early exit)。这种模型提前预测的方法与图像分类有关。

 

2.2. Neural Architecture Search

 

我们的论文与神经网路搜索的研究有关。值得注意的是,Zoph et.al 使用RNN控制器(controller recurrent neural network)进行强化学习来设计一个神经元(or 一层),命名为NASNet。此网路在ImageNet上实现了最先进的精度。同样,演化方法也被用于在NASNet和PNASNet之上的AmoebaNets。由于强化学习和进化控制器的表现同样出色,本论文仅尝试使用强化学习控制器。我们的方法有两点不同于 Neural architecture search with reinforcement learning 。(1)我们方法的输出是多尺度特徵,而另一篇论文的输出是单尺度特徵。(2)我们的方法专门搜索跨规模连接,而另一篇论文只关注于发现相同特徵位置精度内的连接。 除了图像分类之外,神经架构搜索还被用于改进图像分割网路。据我们所知,我们的论文是第一个成功在物件辨识中应用神经结构搜索金字塔结构。有关于神经网路搜索相关方法的更广泛概述,请参阅 Neural Architecture Search: A Survey

 

3.Method

 

我们的模型是基于简单且有效率的 Retina framework 。Retina framework有两个主要组成成分:一个骨干架构(通常是最先进的图像分类网路)和特徵金字塔网路(FPN)。该算法的目标是为RetinaNet发现更好的FPN架构。图2显示RetinaNet结构

图2:RetinaNet与NAS-FPN。在我们的提案中,特徵金字塔网路将通过神经网路架构搜索算法进行搜索。用于box predictions预测的骨干模型和子网路遵循RetinaNet中的原始设计。FPN的架构可以堆叠N次以获得更好的準确率。

为了发现更好的FPN,我们使用了Neural Architecture Search with Reinforcement Learning提出的神经搜索框架。神经架构搜索利用强化学习训练一个在给定的搜索空间找出最佳模型结构的控制器。控制器利用搜索空间中的子模型的準确率作为更新其参数的奖励信号。通过控制器,控制器学会了随着时间的推移产生更好的架构。正如之前的研究已经确定那样,搜索空间在结构搜索的成功中扮演至关重要的作用。

 

在下一节中,我们为FPN设计了一个搜索空间,以生成特徵金字塔。对于FPN的可扩展性(使得FPN架构可以在RetinaNet内重複堆叠),在搜索过程中,我们还强制FPN重複N次,然后连接成一个大型架构。我们称我们的特徵金字塔架构为NAS-FPN。

 

3.1. Architecture Search Space

 

在我们的搜索空间中,特徵金字塔网路由许多”merging cells”组合而成,它们将许多输入层组合成RetinaNet的形式。

 

Feature Pyramid Network

 

特徵金字塔网路将多尺度特徵图层作为输入,并以相同比例生成输出特徵图层,如图2所示。我们遵循RetinaNet的设计,它使用每组特徵图层中的最后一层作为第一个金字塔网路的输入。第一个金字塔网路的输出是下一个金字塔网路的输入。我们使用5个等级{C3,C4,C5,C6,C7}作为输入特徵,具有{8,16,32,64,128}像素的相应特徵间距。通过简单地将间距2和间距4最大池化应用于C5来创建C6和C7。然后将输入要素传递到金字塔网路,该网路由一系列引入跨规模连接的合併单元组成(见下文)。然后金字塔网路输出增强的多尺度特徵{P3,P4,P5,P6,P7}。由于金字塔网路的输入与输出都是相同比例的特徵层,因此可以重複堆叠FPN的结构以获得更好的準确率。在第4节中,我们显示控制金字塔网路的数量是衡量检测速度和準确性的一种简单方法。

 

Merging cell

 

在先前的研究中的一个重要观察是有必要以不同的比例”合併”特徵。跨规模连接允许模型将有高解释性的高度特徵与高位置精度的低度特徵合併。

 

我们提出”merging cell”,它是FPN的基本建构模组,将任意两个特徵输入层合併到特徵输出层。在我们的实现中,每个”合併神经元”(merging cell)採用两个特徵输入层(可以来自不同尺度),应用处理操作然后将它们组合以生成所需比例的一个特徵输出层。FPN由N个不同的”merging cell”组成,N是在搜索期间给定的。在”merging cell”中,所有特徵层都具有相同数量的捲积核(filter)。建构”merging cell”的过程如图3所示。

图3:merging cell 需要4个预测步骤。特徵输出层将被回推到候选特徵图层的堆叠中,并可供下一个merging cell 选择。

如何建构merging cell 由RNN控制器做出选择。RNN控制器选择任意两个候选特徵层和二进制操作以将它们组合成新特徵层,其中所有特徵层可能具有不同的分辨率。每个”merging cell”具有不同的softmax分类器产生的4个预测步骤:

 

Step 1. 从候选区选择一个 hᵢ 特徵层

 

Step 2. 从候选区中选择另一个无须替换的特徵层hⱼ

 

Step 3. 选择特徵输出分辨率

 

Step 4. 选择二进制op以组合在步骤1和步骤2中选择的hᵢ 和 hⱼ,并生成具有在步骤3中选择分辨率的特徵层

 

在第4步骤中,我们在搜索空间中设计了两个二元运算(sum and global pooling),如图4所示。选择这两个操作是因为它们的简单性及效率。它们不会额外添加任何可训练参数。sum operation 普遍用在组合特徵。global pooling operation 的设计灵感来自于 Pyramid attention network for semantic segmentation 。我们遵循金字塔注意网络,仅删除原始设计中的捲积层。在应用二进制操作之前,如果有需要调整特徵输入层的输出分辨率,我们会通过最近邻居上採样(nearest neighbor upsampling) 或 最大池化(max pooling)。合併的特徵层后面始终都会有线性整流单元(ReLU)、3×3捲积和批量规範化(batch normalization)图层。

j 图4:二进制运算方法

到金字塔网络的特徵输入层形成合併神经元(merging cell)输入候选区的初始列表。在步骤5中,新生成的特徵层被附加到现有输入候选区的列表,并成为下一个合併单元的新候选区。在架构搜索期间,可以有多个候选特徵共享相同的分辨率。为了减少已发现架构中的计算,我们避免在步骤3中为”中间合併神经元”(intermediate merging cells)选择步伐(stride)为8的特徵。最终,最后五个合併神经元(merging cell)被设计为特徵金字塔{P3,P4,P5,P6,P7}。输出特徵级别的顺序由控制器预测。然后通过重複步骤1,2,4,生成每个特徵输出层,直到完全生成特徵输出金字塔。与 Neural architecture search with reinforcement learning 相似,我们将所有尚未连接到任何输出层的特徵层与具有相应分辨率的输出层相加。

 

3.2 Deeply supervised Anytime Object Detection

 

使用堆叠金字塔网络扩展NAS-FPN的一个优点是可以在任何给定金字塔网络的输出处获得特徵金字塔。此属性允许”随时检测”(anytime detection),可以再提前退出(early exist)时生成检测结果。我们可以在所有中间金字塔网络(intermediate pyramid network)之后附加分类器和 box regression heads,并在 Deeply surprised nets 下对其进行训练。在推理期间,模型不需要完成所有金字塔网络的前向传递。相反,它可以停在任何金字塔网络的输出并生成检测结果。当计算资源或延迟是一个问题时,这可能是一个理想的属性,并提供一个解决方案,可以动态决定分配多少计算资源来生成检测。在附录A中,我们显示NAS-FPN可用于任何时间的检测。

 

Appendix A. Anytime Detection

 

NAS-FPN架构有可能在任何中间金字塔网络上输出检测。我们设计了实验来比较有任何时间检测的NAS-FPN与没有任何时间检测的NAS-FPN的。我们以不同数量的堆叠金字塔层作为基线对NAS-FPN进行训练和评估,并将性能与深度监督训练的模型进行比较,并在早期退出(early exist)时生成检测。在图11中,随时检测模型的性能接近基线模型,显示NAS-FPN可用于任何时间检测的证据。

图11: 使用R-50 @ 384 NAS-FPN,在有和没有深度监督的情况下训练模型的性能。经过深度监督训练并随时检测的模型与没有深度监督的模型相比具有相似的準确性。

4. Experiments

 

在本节中,我们首先描述我们的神经架构搜索实验,以学习RNN控制器来发现NAS-FPN架构。然后我们展示了NAS-FPN适用于不同的骨干模型和图像大小。通过更改金字塔网络中的堆叠层数和特徵维度,可以轻鬆调整NAS-FPN的容量。我们展示如何在实验中构建準确而快速的架构。

 

4.1. Implementation Details

 

我们使用RetinaNet 的开源github进行实验。模型在TPU上进行训练,批量处理64个图像。在训练期间,我们将[0.8,1.2]之间的随机比例应用于输出图像大小的多尺度训练。批量标準化层被应用在捲积层之后。 我们使用 α = 0.25 和 γ = 1.5 实现 focal loss。我们使用0.0001的权重衰减(weight decay)和0.9的动量(momentum)。该模型进行50次训练。初始学习率0.08适用于前30个epochs,并且在30和40个时期衰减0.1。对于 DropBlock [9]的实验,我们使用150个epochs的较长训练计划,第一次衰减为120个epochs,第二次衰退为140个epochs。逐步学习速率的计画会让我们使用1280×1280的图像,丢入AmoebaNet骨干模型训练时不稳定,因此,我们使用余弦学习速率计划。该模型在COCO train2017上进行了培训,并在COCO val2017上进行了大多数实验的评估。在表1中,我们报告了test-dev準确度,以与现有方法进行比较。

表1: RetinaNet的性能与NAS-FPN和其他最先进的辨识在test-dev的COCO集上。

4.2. Architecture Search for NAS-FPN

 

Proxy task

 

为了加速RNN控制器的训练,我们使用 Learning Transferable Architectures for Scalable Image Recognition ,它具有较短的训练时间并且与实际任务相关。代理任务(Proxy task)可以在搜索期间辨识一个好的FPN架构。我们发现可以简单地缩短目标任务的训练并将其用作代理任务。我们训练代理任务只用了10个epochs,而不是我们用来训练RetinaNet收敛的50个epochs。为了加速代理任务训练的时间,我们使用ResNet-10小骨干模型,输入的图片大小为512×512。通过这些减少,我们在TPU上运行代理任务的训练时间为1小时。我们在代理任务中重複金字塔网络(pyramid networks)3次。初始学习率0.08适用于前8个epochs,并且在第8个epochs开始以0.1的係数衰减。我们保留从COCO train2017随机选择的7392张图片作为验证集。我们用它来获取奖励。

 

Controller

 

Neural architecture search with reinforcement learning 相似,我们的控制器是一个递迴神经网络(RNN),它使用 Proximal Policy Optimization (PPO) 算法进行训练。控制器对具有不同架构的子网络进行採样。这些结构使用工作池来训练代理任务。我们实验中的工作伫列由100个张量处理单元(TPUs)组成。在held-on validation 上得到物件辨识率的平均精度(AP)被用作更新控制器的奖励。图5的左边显示了不同迭代训练的採样结构的AP。可以看出控制器随着时间的推移产生了更好的架构。图5的右边显示了採样架构的总数以及RNN控制器生成的唯一架构的总数。经过约8000步(steps)后,独特架构的数量趋于一致。在我们的实验中,我们在RL训练期间使用来自所有採样架构的具有最高AP的架构。该架构首先以8000步进行採样,然后对其进行多次採样。 图6显示了该架构的详细信息。

图5: 左边: RL训练奖励。计算奖励的方式为代理任务上的採样结构的AP。右边: 採样的唯一结构的数量与採样结构的总数。随着控制器的收敛,控制器会对更多相同的架构进行採样。

Discovered feature pyramid architectures

 

什幺使金字塔结构成为一个好的功能?我们希望通过可视化发现的架构来阐明这个问题。在图7(b-f),我们绘製的NAS-FPN架构,在RL训练期间获得越来越高的奖励。我们发现RNN控制器可以在早期学习阶段快速获取一些重要的跨尺度连接。举例来说,它发现高辨识率输入和输出特徵层之间的连接,这对于生成用于检测小对象的高辨识率特徵至关重要。当控制器收敛时,控制器会发现具有自上而下和自下而上连接的架构,这与图7(a)中的vanilla FPN不同。随着控制器的收敛,我们还发现了更好的特徵被重複使用。控制器不是从候选池中随机选择任何两个输入层,而是学习在新生成的层上构建连接以重複使用先前计算的特徵。

 

4.3. Scalable Feature Pyramid Architecture

 

在本节中,我们将展示如何通过调整(1)骨干模型,(2)重複金字塔网络的数量,以及(3)金字塔网络中的特徵维度来控制模型容量。我们讨论这些调整如何权衡计算时间和速度。我们定义了一个简单的表示法来表示骨干模型和NAS-FPN容量。举例来说,R-50,5 @ 256 表示使用ResNet-50主干模型的模型,5个堆叠的NAS-FPN金字塔网络和256个特徵维度。

 

Stacking pyramid networks

 

我们的金字塔网络具有很好的特性,可以通过堆叠多个重複架构将其扩展为更大的架构。在图8a中,我们显示堆叠vanilla FPN架构并不总能提高性能,而堆叠NAS-FPN显着提高了準确性。这个结果突出了我们的搜索算法可以找到很难手动设计的可扩展架构。有趣的是,虽然我们在架构搜索阶段只为代理任务应用了3个金字塔网络,但是应用了多达7个金字塔网络,性能仍有所提升。

 

Adopting different backbone architectures

 

折衷对象检测结构的準确性和速度的一种常用方法是改变主干架构。儘管NAS-FPN中的金字塔网络是通过使用轻量级ResNet-10骨干架构发现的,但我们表明它可以在不同的骨干架构中很好地传输。图8b显示了NAP-FPN在不同的主干之上的性能,从较轻的体系性能(如 Mobilenet V2)到非常高容量的体系结构(如 AmoebaNet-D )。当我们在640×640的图像尺寸上应用具有MobilenetV2的NAS-FPN时,我们得到36.6 AP和160B FLOP。使用AmoebaNet 最先进的图像分类架构作为主干将FLOP增加到390B,但也增加了大约5个AP。具有轻量型和大型骨干架构的NAS-FPN受益于堆叠更多金字塔网络。

图6: NAS-FPN中发现的7个合併单元金字塔网络的结构,具有5个输入层(黄色)和5个输出特徵层(蓝色)。GP和R-C-B分别代表Global Pooling和ReLU-Conv-BatchNorm。

图7: NAS-FPN架构图。每个点代表一个特徵层。同一行中的特徵层具有相同的辨识率。辨识率在自下而上的方向上降低。箭头表示内部层之间的连接。构造图形使得输入层在左侧。绿色圆圈为金字塔网络的输入,红色圆圈为输出。(a)FPN的基本标準。(b-f)神经架构搜索通过RNN控制器的训练发现了7-cell NAS-FPN架构。随着代理任务的奖励(AP)逐渐改善,发现的体系结构趋同。(f)我们在实验中使用的最终NAS-FPN。

Adjusting feature dimension of feature pyramid networks

 

增加模型容量的另一种方法是增加NAS-FPN中特徵层的特徵维度。图8c 显示了具有ResNet-50骨干架构的NAS-FPN中128,256,384特徵维度的结果。不意外,增加特徵维度可以提高检测性能,但它可能不是提高性能的有效方法。在图8c中,R-50 7 @ 256具有较少的FLOPs,却与 R-50 3 @ 384有着相似的AP。增加特徵维度需要模型正则化技术,在第4.4节,我们讨论使用 DropBlock 来规範模型。

 

Architectures for high detection accuracy

 

通过可扩展的NAS-FPN架构,我们将讨论如何构建一个準确模型,同时保持高效。在图9a中,我们首先表明NAS-FPN R-50 5 @ 256模型具有与R-101 FPN基础模型相当的FLOPs但具有2.5 AP增益。这表明使用NAS-FPN比用更高容量的模型替换骨干模型更有效。为了获得更高精度的模型,可以使用更大的骨架模型或更高的特徵维度。图9a显示出了与现有方法相比,NAS-FPN架构在左上部分的精度与推理时间的关係。NAS-FPN与最先进的Mask R-CNN模型一样精确,计算时间更短。

图8:NAS-FPN的模型容量可以通过(a)堆叠金字塔网络,(b)改变骨乾架构,以及(c)增加金字塔网络中的特徵维度来控制。所有模型均在640×640的图像尺寸上进行训练/测试。圆圈上方的数字表示NAS-FPN中金字塔网络的数量。

图9:检测推理时间(左),FLOPs(中)和参数(右)的準确度。(a)我们与其他高準确度模型进行比较。所有模型的推理时间都在具有P100 GPU的机器上计算。绿色曲线突出显示具有不同骨干架构的NAS-FPN的结果。圆圈上方的数字表示NAS-FPN中金字塔网络的重複次数。每个数据点旁边都提到了NAS-FPN / FPN的特徵尺寸和输入图像尺寸。(b)我们与其他快速模型进行比较。所有模型的输入图像尺寸为320×320,推理时间在Pixel 1 CPU上计算。我们的模型使用MobileNetV2的轻量级模型进行训练。

Architectures for fast inference

 

设计具有低延迟和有限计算预算的物件辨识器是一个活跃的研究课题。在这里,我们介绍NAS-FPNLite用于mobile object detection。NASFPNLite和NAS-FPN的主要区别在于我们搜索具有从P3到P6的输出的金字塔网络。我们也遵循 SSDLite ,并用NAS-FPN中的深度可分离捲积替换捲积。我们发现了一种15-cell 结构,它可以产生良好的性能并在我们的实验中使用它。我们在RetinaNet框架中结合了NAS-FPN Lite和MobileNet V2。为了公平比较,我们创建了一个FPNLite基础模型,该基础模型遵循原始FPN结构并用深度可分离卷积替换所有捲积层。在图9b中,我们将NAS-FPN的特徵维度控制为48或64,以便它在Pixel 1上具有类似的FLOPs和CPU运行时作为基础,并显示NAS-FPNLite优于SSDLite和FPNLite。

 

4.4. Further Improvements with DropBlock

 

由于NAS-FPN架构中引入的新层数量增加,因此需要进行适当的模型正则化以防止过度拟合。按照 DropBlock: A regularization method for convolutional networks 中的技术,我们在NAS-FPN层中的批量标準化层之后应用块大小为3×3的DropBlock。图10显示DropBlock提高了NAS-FPN的性能。特别是,对于具有更多新引入的过滤器(filters)的架构,它进一步提高其性能。请注意,默认情况下,我们不会在之前的实验中应用DropBlock,以便与现有作品进行公平比较。

图10: NAS-FPN的特徵尺寸为256或384在训练时的性能比较与使用和不使用DropBlock(DB)。使用ResNet-50图像大小为1024×1024的主干模型。当我们增加金字塔网络中的特徵维度时,添加DropBlock更为重要。

5. Conclusion

 

在本文中,我们提出使用神经架构搜索来进一步优化用于物件辨识的特徵金字塔网络的设计过程。我们在COCO数据集上的实验表明,NAS-FPN具有灵活性和高性能,可用于构建精确的检测模型。在广泛的準确性和速度权衡中,NAS-FPN在许多骨干架构上产生了显着的改进。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注