魔王、杜伟编译

单CPU处理1s视频仅需37ms、GPU仅需10ms,谷歌提出TVN视频架构

谷歌机器人团队利用进化算法,获得低计算成本、高性能的视频网络架构 TVN,该网络运行高效,速度可达之前视频模型的 100 倍。

视频理解是计算机视觉领域中的重要问题,它有很多应用,如视频自动标注、行为识别和机器人感知。视频理解对自动智能体在现实世界中的应用有重大影响,目前它仍是一道难题。现有的解决方案计算成本高昂,最快速的算法需要在强大的 GPU 上运行才能处理超过 0.5 秒的视频片段。

为了解决该问题,谷歌机器人团队提出使用进化算法,自动设计出以原来计算成本的一部分提供相当性能的网络(即低计算成本、高性能)。具体来说,谷歌研究者提出了一种为视频理解任务设计「微」神经网络(tiny neural network)族的通用方法。

论文链接:https://arxiv.org/abs/1910.06961v1

这些微神经网络可实现相当高的准确率,且运行高效,可实时或者以更快的速度运行。它们在一块 CPU 上处理约 1 秒的视频片段需要 37-100 ms,在一块 GPU 上仅需 10 ms,速度是当前模型的 100 倍(见下图 1、2)。研究者将这些网络称为 Tiny Video Networks (TVN),因为此类网络仅需要极小的运行时,这在视频模型中尚属首例。

图 1:TVN 与之前方法的性能相当,但它在 CPU 上处理一个视频仅需 37 ms,在 GPU 上所需时间为 10 ms。TVN 的速度是当前视频模型的 100 倍,如 (2+1)D ResNet-101。

图 2:TVN 和主流 (2+1)D 视频理解模型在 Moments-in-Time (MiT) 数据集上的运行时和模型准确率对比情况。

之前的方法为什么那么慢?

视频理解是非常活跃的研究领域,存在大量成功的方法。架构搜索是新兴领域,近期也出现很多方法,其中大部分面向图像和语言理解领域。这些之前的方法中没有一个可为视频理解领域构建高效架构。其主要原因在于,视频的内容量大,需要更多处理,而架构搜索是时间密集过程,因此将架构搜索应用于视频领域需要费很大功夫,且在很多情况下计算成本高昂。

Tiny Video Network 为什么那么高效?

谷歌的这项研究解决了上文提到的两个问题,他们提出的新方法能够输出实时视频架构,从而实现高效搜索,无需过多计算资源。此外,如此快速的网络也为视频理解在现实生活应用(如在线机器人系统、手机等)中的部署和科研开发提供了机会。

对于视频理解领域而言,如此高效的网络前所未见,因为视频包含的内容远远多于图像,且包含很多耗费算力的元素。这使得优化视频模型成为难题,之前的研究没有找到准确率和运行时均得到优化的小型神经架构。

该研究的贡献如下:

  • 首个学习视频高效网络(TVN)的方法。TVN 是已知最快速的视频网络,在 CPU 和 GPU 上的运行速度均优于实时速度;

  • 架构搜索方法不仅解决了视频处理问题,同时能够输出快速准确的模型;

  • 微模型进一步扩展后可得到最快速模型,其性能堪比当前最优模型。

该研究学得的模型架构 TVN 与典型的视频架构不同,前者的卷积层更少;TVN 偏好轻量级元素,如 2D 池化、门控层、挤压和激励层(squeeze-and-excitation layer)。与之相反,现有的视频理解模型通常包含计算密集层,如 3D 卷积。有趣的是,TVN 通常不倾向于使用流行的非局部模块(non-local block module,Wang et al. 2018),因为该模块计算成本高且所获得的性能低。下图 3 为 TVN 架构的示例:

图 3:使用架构进化方法得到的 TVN 示例,它包含多个具备不同配置的模块。

此外,该方法使得以低成本探索视频架构成为可能,这也表明未来的视频架构工作会更加高效,计算负担也会更小。

研究者在四个流行的视频理解数据集上进行了实验,它们分别是:Moments in time 数据集、HMDB 数据集、Charades 数据集和 MLB-YouTube 数据集。该研究提出的网络在这四个数据集上均取得了堪比(或稍低于)当前最优模型的性能,但前者的运行时仅为后者的一部分。上图 2 展示了 TVN 的准确率-运行时曲线,在该区域内没有其他模型的一席之地。

Tiny Video Network 的技术细节

研究者没有使用手动设计架构的方式,而是在巨大的搜索空间内执行架构搜索,实现自动架构设计。

研究者搜索输入分辨率的最优组合,包括空间(宽高)和时间(帧数)、层数、层类型(如池化、卷积等),及其配置(卷积核大小、步幅等)。他们使用进化算法,因为该算法可以执行并行评估,允许群体中多个个体网络发生突变,且能够使用不可微目标函数高效探索不规则搜索空间,比如运行时。

为了学习新的高效视频架构,研究者最大化以下公式,其中输入为定义网络架构的变量/参数集。N 表示网络配置,θ 表示网络的可学习参数(|θ| 表示网络中的参数数量),P 是控制网络最大规模的超参数。R(N_θ) 计算网络在设备上的运行时,其中 N 是网络,θ是网络权重值,R 是最大期望计算运行时。

其中,F 是适应度函数。在此案例中,F 衡量训练模型在验证集上的准确率

研究者通过进化搜索来优化公式 1。注意,由于运行时和参数量的约束,该函数不可微。尽管一些研究尝试将运行时变为可微操作,但这需要估计每个操作在目标设备上的运行时。为简单起见,谷歌研究者选择使用进化算法,因为它可以轻松适配不同设备,并为参数量(如模型大小)添加约束,这对于移动应用来说尤为重要。此外,搜索空间设计好后,其他超参数无法调整,如学习率或损失缩放因子。

在实验部分我们可以看到,进化算法发现了非常高效、准确的架构。注意,由于搜索中考虑的每个架构都很高效,因此搜索本身的计算成本低于其他神经架构搜索方法。

进化方法

研究者使用具备离散突变算子的锦标赛选择进化算法(tournament selection evolutionary algorithm)作为搜索方法。

由于搜索空间很大,研究者首先生成 200 个随机网络,其中一部分性能很差。在对这些网络进行评估后,他们遵循锦标赛选择算法,从目前的 200 个网络中随机选择 50 个,选取其中性能最好的一个作为「母体」(parent)。然后随机改变该网络的一部分,从而对该网络应用离散突变运算(discrete mutation operaton)。

突变

突变运算仅随机选取了网络的一部分并进行随机改变。它可以是输入分辨率、模块数,或者模块内的层配置。

对新网络进行评估后,将其添加到当前网络群体中,删除其中性能最差的一个。将这一过程重复 1000 次。每个模型经历了 10000 次迭代训练,由于速度很快,因此平均训练时间为大约 1.5 小时。使用并行训练后,搜索可在一天内完成。

实验

研究者实施了以下实验:

在 4 个数据集上对比 TVN 模型和当前最优结果。注意,之前的视频理解工作很少涉及算法运行时,因此研究者额外添加了当前基线方法及其运行时。对搜索空间添加不同约束,得到具备不同性能和运行时的 TVN。研究者尝试扩展 TVN 以提升性能,同时维持原有的速度。

下表 1、2、3、4 分别展示了 TVN 在四个数据集上的性能。

表 1:TVN 和基线模型 (2+1)D ResNets、当前最优结果 † (Monfort et al. 2018) 在 Moments-in-time 数据集上的性能对比情况。TVN 以部分计算成本实现了相似的性能。

表 2:TVN 与当前最优模型在 MLBYouTube (RGB-only) 数据集上的性能对比情况。

表 3:TVN 与当前最优模型在 Charades 数据集上的性能对比情况。

表 4:TVN 与当前最优结果在 HMDB (RGB-only) 数据集上的性能对比情况。

下图 4 展示了多个模型的运行时和参数量对比情况。

图 4:TVN 和其他模型的运行时(上)和模型参数量(下)对比情况。

为了确定时间信息对性能的影响,研究者将 TVN-2 所用的帧数从 4 增加到 8 和 16。结果见下表 5:

研究者还发现,进化搜索比随机搜索更有效(见下图 5),因为该案例中的大型搜索空间包含很多性能差的网络。

图 5:对视频网络搜索空间执行随机搜索 vs 进化搜索。研究发现,进化搜索能够更快地得到更好的模型。

研究者扩展了 TVN,进一步展示了模型性能。下表 6 对比了原版 TVN-1 和具备更高空间分辨率、更大宽度(每一层中的卷积核大小)、更大深度(每个模块的重复次数)的 TVN 模型的性能。

表 6:在 Moments in Time 数据集上扩展 TVN 模型后得到的不同方法。

基于 EfficientNet 的研究发现,研究者从各个维度扩展了 TVN-1,如输入分辨率、宽度和深度。下表 7 对比了扩展后的网络和当前最优结果。TVN-1 EN 即为扩展后的 TVN-1 模型,它能够获得与规模更大模型相当的性能,且运行非常高效。

表 7:基于 EfficientNet 系数,在 MiT 数据集上扩展 TVN-1 模型,得到 TVN-1 EN,并与当前最优模型进行对比。

理论视频网络架构进化算法谷歌机器人团队
1
相关数据
学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

随机搜索技术

推荐文章
暂无评论
暂无评论~