SpineNet:通过神经架构搜索发现的用于对象检测的新型架构

Posted 雨夜的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpineNet:通过神经架构搜索发现的用于对象检测的新型架构相关的知识,希望对你有一定的参考价值。

卷积神经网络通常将输入图像编码为一系列中间特征,这些特征捕获图像的语义(从局部到全局),其中每个后续层都有一个较低的空间维度。然而,对于识别和定位都很重要的多尺度视觉识别任务(例如,对象检测和分割),这种缩小比例的模型可能无法提供强大的特征。包括FPN和DeepLabv3+在内的多个作品提出多尺度编码器-解码器架构来解决这个问题,其中将尺度减小的网络(例如ResNet)作为编码器(通常称为骨干模型)。然后将解码器网络应用于主干以恢复空间信息。虽然这种架构在图像识别和定位任务方面取得了更大的成功,但它仍然依赖于规模减小的主干,该主干通过下采样丢弃空间信息,然后解码器必须尝试恢复。如果要设计一种替代的主干模型来避免这种空间信息的丢失,从而天生就非常适合同时进行图像识别和定位,那会怎样?在我们最近的CVPR 2020论文中“SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization ”,我们提出了一种称为比例置换模型的元架构,它可以对骨干架构设计进行两项重大改进。首先,中间特征图的空间分辨率应该能够随时增加或减少,以便模型可以随着它变得更深而保留空间信息。其次,特征图之间的连接应该能够跨越特征尺度以促进多尺度特征融合。然后我们使用神经架构搜索(NAS) 具有新颖的搜索空间设计,其中包括这些功能以发现有效的尺度排列模型。我们证明该模型在多尺度视觉识别任务中是成功的,其性能优于具有标准、减少尺度的主干网络。为了促进该领域的持续工作,我们已将 SpineNet 代码开源到 Tensorflow 1 中的Tensorflow TPU GitHub 存储库和Tensorflow 2 中的TensorFlow Model Garden GitHub 存储库。

SpineNet 架构的

设计为了有效地设计 SpineNet 的架构,并避免耗时的手动搜索最佳架构,我们利用 NAS 来确定最佳架构。使用COCO 数据集在物体检测任务上学习主干模型,这需要同时识别和定位。在架构搜索过程中,我们学到了三件事:

  • *比例排列*:网络构建块的排序很重要,因为每个块只能从那些已经存在的块中构建(即,具有“较低的排序”)。我们分别通过重新排列中间块和输出块来定义尺度排列的搜索空间。

  • *跨尺度连接*:我们为搜索空间中的每个块定义两个输入连接。父块可以是任何具有较低排序的块或来自主干网络的块。

  • *块调整(可选)*:我们允许块调整其比例级别和类型。

  • 以ResNet-50主干作为 NAS 搜索的种子,我们首先学习尺度排列和跨尺度连接。搜索空间中的所有候选模型的计算量与 ResNet-50 大致相同,因为我们只是排列特征块的顺序以获得候选模型。学习到的尺度置换模型在对象检测任务中以 +2.9% 的平均精度(AP)优于ResNet-50-FPN。通过添加搜索选项来调整每个候选特征块的规模和类型(例如,ResNet模型系列中使用的残差块或瓶颈块),可以进一步提高效率(-10% FLOPs)。

    我们将学习到的 49 层尺度置换骨干架构命名为 SpineNet-49。SpineNet-49 可以通过重复块 2、3 或 4 次并增加特征维度来进一步扩展到 SpineNet-96/143/190。ResNet-50-FPN 和最终的 SpineNet-49 之间的架构比较如下所示。

    性能

    我们通过与 ResNet-FPN 的比较来展示 SpineNet 模型的性能。使用类似的构建块,SpineNet 模型在各种规模上比其 ResNet-FPN 模型的 AP 高出约 3%,同时使用的 FLOP 减少了 10-20%。特别是,我们最大的模型 SpineNet-190在推理过程中无需多尺度测试的单个模型在COCO上实现了 52.1% 的 AP ,显着优于先前的检测器。SpineNet 还转移到分类任务,在具有挑战性的iNaturalist细粒度数据集上实现了 5% 的 top-1 精度提升。(编辑 2020-12-12: COCO 的实验结果可以在TensorBoard.dev上查看和下载. 度量定义和命名约定直接对应于COCO定义的那些。由于 TF1 到 TF2 的转换,以及管道中一系列随机变量的结果,TensorBoard 上的终端值可能会超过下表中的值。)

    结论

    在这项工作中,我们发现传统的缩减模型,即使有解码器网络,对于同时识别和定位也不是有效的。我们提出了尺度置换模型,一种新的元架构,来解决这个问题。为了证明尺度置换模型的有效性,我们通过神经架构搜索在对象检测中学习 SpineNet,并证明它可以直接用于图像分类。未来,我们希望尺度置换模型将成为跨越检测和分类之外的许多视觉任务的主干元架构设计。



    神经网络结构搜索(Neural Architecture search)

    参考技术A 神经网络搜索是生成和优化网络结构的有效工具 Neural Architecture Search 。
    在不确定网络的长度和结构的情况下,使用一个循环神经网络(recurrent network)作为控制器来生成网络结构的字段,用来构建子神经网络。将训练子网络之后的准确率作为控制器回馈信号(reward signal),通过计算策略梯度(policy gradient)更新控制器,这样不断的迭代循环。在下一次迭代中,控制器将有更高的概率提出一个高准确率的网络结构。总之,伴随着时间的推移,控制器将通过不断的学习来提高搜索结果。如下图所示就是网络结构搜索。

    神经结构搜索中,我们使用控制器产生神经网络的超参数。控制器使用的是一个循环神经网络。假设我们希望预测只有卷积层的前馈神经网络,就可以使用控制器来生成这些超参数的序列。

    控制器可以看到代理(agent),生成的超参数序列(网络结构的描述字符串)可以被看做代理一系列的动作(actions) 。子网络在收敛后将达到准确率 。随后,将 作为回馈信号并使用增强学习训练控制器。具体的说,为了优化的结构,需要让控制器最大化期望回馈,期望回馈可以表示为 :
    由于 不可微分,因此不能使用传统的BP算法。我们需要使用回馈更新代理的策略参数 ,进而实现回馈的最优化。这里我们使用 Williams 提出的REINFORCE,这个公式关联了回馈 和策略参数 :
    上述数值的可以近似表示为:
    是控制器一个批样本网络模型的数量, 是控制器生成的网络结构的超参数数量。 是第 个神经网络模型的准确率。
    上述更新的梯度是梯度的无偏估计,但是方差很大。为了减小方差,我们使用了一个基线函数: 。
    只要 不依赖与当前的动作,这个梯度导数将始终是无偏估计。这里,我们的 是准确率的指数移动平均值 EMA 。

    在神经网络搜索中,训练一个子网络可能需要几个小时的时间。使用分布式训练和并行参数更新可以加速控制器的学习过程。我们使用参数服务器保存所有参数,服务器将参数分发给控制器,控制器被分成 个,每一个控制器使用得到的参数进行模型的构建,由于得到的参数可能不同,构建模型的策略也是随机的,导致每次构建的网络结构也会不同。每个控制器会构建一个batch, 个子网络,然后并行训练子网络得到准确率。计算出参数的梯度。然后计算完梯度的控制器将梯度传递到参数服务器,分别对自己负责的参数进行更新。接下来控制器得到更新的参数开始构建新的神经网络模型。这里,每一个控制器独立的发送自己的梯度更新服务器参数,不需要控制器之间同步,这及时异步更新。这里子网络的训练次数固定(epochs)。这种并行架构如下图所示

    为了让控制器产生跳跃连接。在第 层中,添加一个锚点(anchor point)表示是否和前面的网络层连接:

    表示控制器第 层网络锚点的隐藏状态, 介于0到 之间。根据这些sigmoids的结果来决定哪些网络层被用作当前层的输入。 , 和 是可训练参数。[图片上传失败...(image-feb8fe-1558488967580)]

    为了产生循环元胞。控制器需要找到一个公式,以 和 作为输入, 作为结果。最简单的方式 ,这是一个基本的循环细胞的公式。一个更复杂的公式是广泛应用的LSTM循环元胞。
    基础RNN和LSTM都可以描述为一个树形结构,输入 和 ,产生 ,这些变量作为叶子。控制器RNN需要标明树上的每个节点的结合方法(相加,按元素相乘等)和激活函数,用于融合两个输入并产生一个输出。然后两个节点输出又被作为树上下一个节点的输入。为了控制器可以选择这些方法和函数,我们将树上的节点以一定的顺序编号,这样控制器可以顺序的预测。

    以上是关于SpineNet:通过神经架构搜索发现的用于对象检测的新型架构的主要内容,如果未能解决你的问题,请参考以下文章

    神经网络结构搜索(Neural Architecture search)

    一文看懂四种基本的神经网络架构

    经典深度神经网络架构解析 - VGG,ResNet,Inception

    微软&中科大提出新型自动神经架构设计方法NAO

    6s965-fall2022神经架构搜索 Neural Architecture Search

    自动化机器学习神经网络架构搜索综述(NAS)