SpineNet:通过神经架构搜索发现的全新目标检测架构

SpineNet:通过神经架构搜索发现的全新目标检测架构_第1张图片

文 / 软件工程师 Xianzhi Du 和技术项目经理 Jaeyoun Kim,Google Research

为图像任务创建的卷积神经网络通常会把输入图像编码为一系列中间特征,以获取图像的语义(从局部到全局),而该网络中每个后继层的空间维度都较低。然而,这种尺度缩小的模型可能无法为多尺度的视觉识别任务提供强大的功能,而识别和定位对这些任务都非常重要(例如目标检测和分割)。一些研究(包括 FPN 和 DeepLabv3+)提出用 多尺度编码器-解码器架构 来解决这个问题,即首先将尺度缩小的网络(例如 ResNet)用作编码器(通常称为骨干网络模型),然后将解码器网络应用于骨干网络上以恢复空间维度信息。

虽然该架构在图像识别和定位任务方面取得了更大的进步,但仍然依赖于尺度缩小的骨干网络,但在这类网络中,通过降采样 (Down-sampling) 丢弃了空间信息,然后解码器必须尝试恢复这些信息。如果设计出一个可以避免此类空间信息丢失的替代骨干网络模型,且其从本质上非常适合同时进行图像识别和定位,那会怎么样?

在我们最近的 CVPR 2020 论文《SpineNet:学习用于识别和定位的尺度排列骨干网络(SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization) 中,我们提出了一种称为 尺度排列模型 (Scale-Permuted Model) 的元架构, 它对骨干网络架构设计进行了两项主要改进。首先,中间特征图的空间分辨率应该能够随时升高或降低,以便模型在深度增加时,仍能保留空间信息。其次,特征图之间应该能够跨特征尺度连接,以促进多尺度特征融合。然后我们借助全新搜索空间设计(具有上述特点)的神经架构搜索 (Neural Architecture Search),发现有效的尺度排列模型。我们证明此模型在多尺度视觉识别任务中取得了成功,比尺度缩小的标准骨干网络性能更好。

  • SpineNet:学习用于识别和定位的尺度排列骨干网络
    https://arxiv.org/abs/1912.05027

  • 神经架构搜索
    https://arxiv.org/abs/1611.01578

为了促进该领域的继续探索,我们已开放 SpineNet 的源代码,其中 TensorFlow 1 版本位于 TensorFlow TPU GitHub 代码库,而 TensorFlow 2 版本位于 TensorFlow Model Garden GitHub 代码库

  • TensorFlow TPU GitHub 代码库
    https://github.com/tensorflow/tpu/tree/master/models/official/detection

  • TensorFlow Model Garden GitHub 代码库
    https://github.com/tensorflow/models/tree/master/official/vision/detection

SpineNet:通过神经架构搜索发现的全新目标检测架构_第2张图片

左边显示的是尺度缩小的骨干网络模型,右边显示的是尺度排列骨干网络模型。每个矩形代表一个构建块,颜色和形状代表不同的空间分辨率和特征维度,箭头表示构建块之间的连接

SpineNet 架构设计

为有效设计 SpineNet 架构,我们选择利用 NAS 来确定最优架构,从而避免耗费大量时间进行手动搜索。骨干网络模型使用 COCO 数据集在目标检测任务上进行学习训练,该过程需要同时进行识别和定位。在架构搜索期间,我们对以下三个方面进行了学习训练:

  • 尺度排列:网络构建块的排序非常重要,因为每个块都只能从现有(即“排序较低”)块中构建。通过分别重新排列中间块和输出块,我们定义了尺度排列的搜索空间。

  • 跨尺度连接:我们为搜索空间中的每个构建块定义两个输入连接。父块既可以是任意排序较低的块,也可以是来自主干网络的块。

  • 块调整(可选):我们允许块调整自身的尺度级别和类型。

SpineNet:通过神经架构搜索发现的全新目标检测架构_第3张图片

从尺度缩小的骨干网络到尺度排列骨干网络的架构搜索过程

我们将 ResNet-50 骨干网络用作 NAS 搜索的种子,首先对尺度排列和跨尺度连接进行了学习训练。我们只是通过改变特征块顺序来获得候选模型,因此搜索空间中所有候选模型的计算量与 ResNet-50 大致相同。在目标检测任务中,经过学习训练的尺度排列模型的平均精度 (Average Precision) 比 ResNet-50-FPN 高出 2.9%。通过添加搜索选项来调整每个候选特征块的尺度和类型(例如 ResNet 模型系列中使用的残差块或瓶颈块),效率还可以进一步提高(FLOPs 减少 10%)。

我们将经过学习训练的 49 层尺度排列骨干架构命名为 SpineNet-49。SpineNet-49 可通过将块重复二、三或四次并增加特征维度,进一步扩展为 SpineNet-96/143/190。下图展示了 ResNet-50-FPN 和最终的 SpineNet-49 之间的架构比较:

SpineNet:通过神经架构搜索发现的全新目标检测架构_第4张图片

ResNet 骨干网络(左)与其衍生的 SpineNet 骨干网络(使用 NAS 搜索得到,右)之间的架构比较

性能

通过与 ResNet-FPN 模型进行比较,我们证明了 SpineNet 模型的性能。两者使用相似的构建块,在不同尺度上,SpineNet 模型的平均精度比 ResNet-FPN 模型高出了约 3%,而 FLOPs 则减少了 10% 到 20%。特别值得一提的是,层数最大的模型 SpineNet-190 仅用单个模型,且推理过程未进行多尺度测试,便在 COCO 上取得了 52.1% 的 AP 性能,这个表现明显优于之前的检测器。经过转换后,SpineNet 同样能够用于分类任务,可在极具挑战性的 iNaturalist 细粒度数据集上取得 5% 的 top-1 分类准确率提升。

SpineNet:通过神经架构搜索发现的全新目标检测架构_第5张图片

采用 RetinaNet 检测框架的 SpineNet 模型和 ResNet-FPN 模型在 COCO 边界框检测任务中的性能比较

SpineNet:通过神经架构搜索发现的全新目标检测架构_第6张图片

SpineNet 模型和 ResNet 模型在 ImageNet 分类和 iNaturalist 细粒度图像分类任务中的性能比较

结论

在本次研究中,我们发现即便使用解码器网络,传统的尺度缩小模型也无法有效地同时进行识别和定位。为解决这一问题,我们提出了尺度排列模型这一全新元架构。为证明尺度排列模型确实有效,我们使用神经架构搜索在目标检测方面对 SpineNet 进行学习训练,并证明其可直接用于图像分类。在未来,我们希望尺度排列模型能够在各种视觉任务中(不仅仅是检测和分类)成为骨干网络的元架构设计。

致谢

特别感谢本论文的联合作者:Tsung-Yi Lin、Pengchong Jin、Golnaz Ghiasi、Mingxing Tan、Yin Cui、Quoc V. Le 和 Xiaodan Song。我们还要感谢 Yeqing Li、Youlong Cheng、Jing Li、Jianwei Xie、Russell Power、Hongkun Yu、Chad Richards、Liang-Chieh Chen、Anelia Angelova 以及 Google Brain 团队的帮助。

更多 AI 相关阅读:

  • 推出 MediaPipe Iris: 不受限的虹膜跟踪和深度估计

  • 为了让“对口型”更有意思,我们做了个网页小游戏……

  • 快门背后的机器学习:实时 HDR+ 和双重曝光控制

  • 哪里找资料、报错怎么办?TensorFlow 工程师亲自答疑!

  • Coral 的近期更新

你可能感兴趣的:(网络,计算机视觉,神经网络,机器学习,人工智能)