精华内容
下载资源
问答
  • 要想识别大约 1 秒钟的视频片段,在 CPU 上只需要运行 37 至 100 ms,在 GPU 上只需要运行 10 ms,以前手动设计的网络快了数百。 我们通过在架构的演化过程中明确定义模型运行时间,并限制算法探索的搜索空间...

    点击我爱计算机视觉标星,更快获取CVML新技术


    本文转载自机器之心。

    选自谷歌博客

    者:Michael S. Ryoo、AJ Piergiovanni

    参与:王子嘉、Geek AI

    近年来,针对图像任务的神经网络架构搜索(NAS)逐渐成为了各大研究机构和业界关注的「明星技术」。然而,针对视频理解的神经网络架构搜索却由于其在时空上的复杂性而鲜为研究人员所涉及。

    近日,来自谷歌机器人的研究科学家 Michael S. Ryoo 和实习研究员 AJ Piergiovanni 连续发文介绍了他们在视频理解网络 NAS 方面的工作,对于该领域的研究具有很强的引领作用。

    视频理解是一个极具挑战性的问题。因为视频包含时空(Spatio-temporal)数据,所以需要通过特征表征同时提取其静态表观信息和画面动态信息。这不仅对于自动理解视频的语义内容(如网络视频分类或体育活动识别)是必不可少的,而且对于机器人的感知和学习也十分关键。与人类相类似,机器人摄像头的输入一般很少是对世界的「静态快照」,而是连续的视频。

    现在的深度学习模型的性能在很大程度上依赖于它们的网络架构。用于处理视频的卷积神经网络(CNN)一般是手动地将人们熟知的二维架构(如 Inception 和 ResNet)扩展成三维架构,或者是通过精心设计一种将静态表观信息和画面动态信息融合在一起的双流 CNN 架构(two-stream CNN)而实现的。然而,设计一个能够充分利用视频中的时空信息的理想视频架构仍然是一个有待探索的问题。

    对于图像任务来说,尽管用于探索性能优秀的网络架构的神经架构搜索(NAS)方案(如 Zoph 等人发表的「Using Machine Learning to Explore Neural Network Architecture」,与 Real 等人发表的「Using Evolutionary AutoML to Discover Neural Network Architectures」)已经被广为研究,但是用于视频任务的神经网络架构的自动优化方案(machine-optimized neural architectures)尚未被研究。用于视频的 CNN 通常需要大量的计算和内存,因此设计一种既能表征其独特的属性,又能进行有效搜索的方法非常困难。

    为了应对这些挑战,我们针对更理想的视频理解网络架构的自动搜索进行了一系列研究。

    我们展示了三种不同的神经架构演化算法:学习层及其模块配置的 EvaNet,学习多流连接的 AssembleNet,以及构建计算高效的简洁网络的 TinyVideoNet。

    我们开发的视频架构在多个公共数据集上的性能明显优于现有的手动设计的模型,并证明了我们的网络运行时间可减少至 1/10 至 1/100。

    EvaNet:第一批进化的视频结构

    我们在 ICCV 2019 上提出了「Evolving Space-Time Neural Architectures for Videos」(EvaNet),这是对于视频神经网络架构搜索设计的首次尝试。

    • 论文链接:https://arxiv.org/abs/1811.10636;

    • GitHub 链接:https://github.com/goog-research/goog-research/tree/master/evanet

    EvaNet 是一个模块级的架构搜索方法,主要关注查找时空卷积层的类型以及它们的最佳串行或并行计算配置。本算法使用带有突变操作符的演化算法进行搜索,迭代地更新结构的「种群」。这使得对搜索空间的并行化的、更高效的探索成为了可能,也是视频架构搜索考虑不同时空层及其组合的必要条件。EvaNet 中开发了多个模块(在网络中的不同位置)来生成不同的架构。

    我们的实验结果证实了通过演化异构模块获得的此类视频 CNN 架构的优点。该方法发现,由多个并行层组成的重要模块效率通常是最高的,因为它们比手动设计的模块更快,性能更好。

    另一个值得注意的方面是,由于使用了演化策略,我们获得了许多性能相似但结构各异的架构,并且无需进行额外的计算。对这些模型进行集成可以进一步提高他们的性能。由于它们的并行特性,即使是集成模型也比(2 + 1)维的 ResNet 这样的标准视频网络在计算上更加高效。

    EvaNet 产生的不同架构示例。每个大彩色框和小的彩色框都代表一个网络层,框的颜色代表其类型:蓝色代表三维卷积,橙色代表(2 + 1)维卷积,绿色代表 iTGM,灰色代表最大池化,紫色代表平均,粉色代表 1x1 的卷积。各个层一般会被分组成模块(大一点的框)。每个框中的数字表示卷积核(filter)的大小。

    AssembleNet:建立更强更好的(多流)模型

    在论文「AssembleNet: Searching for Multi-Stream Neural Connectivity in Video Architectures (https://arxiv.org/abs/1905.13209)」中,我们研究了一种将具有不同输入模态(如 RGB 和光流)的不同的子网络和时间分辨率融合在一起的新方法。

    论文链接:https://arxiv.org/abs/1905.13209

    AssembleNet 是一系列可学习的网络架构,它们提供了一种学习跨输入模态的特征表征之间「连通性」的通用方法,同时针对目标任务进行了优化。

    我们提出了一种通用方法,可以将各种形式的多流 CNN 表征为有向图,并结合一个高效的演化算法来探索高级网络连接。这样做是为了从视频中学习到更好的关于静态表观和动态画面视觉线索的特征表征。

    与以前使用后期融合或固定中间融合的手工设计的双流模型不同,AssembleNet 可以演化出很多过度连接、多流且多分辨率的架构,并通过对连接权重的学习引导突变。我们正首次研究具有各种中间连接的四流架构——每个 RGB 和光流都有 2 个流,每个流具有不同的时间分辨率。

    下图展示了一个 AssembleNet 架构示例,它是通过对一组随机初始化的多流架构进行 50 到 150 轮的演化发现的,我们在两个非常流行的视频识别数据集 Charades 和 Moments-in-Time(MiT) 上测试了 AssembleNet。AssembleNet 在 MiT 上的性能位列第一,准确率超过 34%。在 Charades 中它的表现更让人吃惊,平均准确率(mAP)达到了 58.6%,而之前为人所知的最佳结果是 42.5% 和 45.2%。

    使用 MiT 数据集进行演化的代表性 AssembleNet 模型。一个节点对应一个时空卷积层模块,每条边代表它们的连通性。较暗的边缘意味着较强的连接。AssembleNet 是一组可学习的多流架构,针对特定目标任务进行优化。

    在 Charades(左)和 MiT(右)数据集上,将 AssembleNet 与最先进的手动设计的模型进行了比较。AssembleNet-50 与 AssembleNet-101 的参数量和双流 ResNet-50 与 ResNet-101 相当。

    Tiny Video Networks:最快的视频理解网络

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

    为了使视频 CNN 模型在现实世界的设备上(如机器人所需的设备)上能够正常运行,必须进行实时、高效的计算。但是,要在视频识别任务上取得目前最先进的结果,需要非常大的网络,通常具有数十到数百个卷积层,这些卷积层将被应用于大量的输入帧上。这也就导致了这些网络的运行时间通常很长,对长度为 1 秒的视频片段进行识别至少需要在现在的 GPU 上运行 500+ ms 以上的时间,在 CPU 上则至少需要 2000+ ms。

    在 Tiny Video Networks 中,我们通过自动设计的网络取得了不错的性能,而其计算成本却大大降低。

    我们的 Tiny Video Networks(TinyVideoNets)有很高的准确率和运行效率,能够以实时或更高的速度高效运行。要想识别大约 1 秒钟的视频片段,在 CPU 上只需要运行 37 至 100 ms,在 GPU 上只需要运行 10 ms,比以前手动设计的网络快了数百倍。

    我们通过在架构的演化过程中明确定义模型运行时间,并限制算法探索的搜索空间(同时包括空间和时间分辨率以及通道大小),大大减少了计算量,从而实现了性能的提升。

    下图说明了 TinyVideoNet 发现的两种简单但非常有效的网络架构。有趣的是,本算法学习到的模型架构比经典的视频架构的卷积层数更少:因为 Tiny Video Networks 更倾向于轻量级元素,例如二维池化,门控层和挤压激发(squeeze-and-excitation)层。此外,TinyVideoNet 能够同时优化参数和运行时间,以提供可用于未来网络探索的高效网络。

    经过演化得到的 TinyVideoNet(TVN)架构,可以最大限度地提高识别性能,同时将计算时间保持在限制时间之内。例如,TVN-1(上面一列)在 CPU 上的运行时间为 37 毫秒,在 GPU 上的运行时间为 10 毫秒。TVN-2(下面一列)在 CPU 上的运行时间为 65 毫秒,在 GPU 上的运行时间为 13 毫秒。

    左图是 TinyVideoNet 模型与以前的模型的 CPU 运行时间对比图,右图是 TinyVideoNet 模型与(2+1)维 ResNet 模型关于运行时间和模型准确率的对比图。值得注意的是,TinyVideoNets 的点只占了这个时间—准确率空间的一小部分(这部分空间中不存在其它模型),也就是说 TinyVideoNets 可以非常迅速地找到准确率很高的架构。

    结语

    据我们所知,这是关于视频理解神经网络架构搜索第一项研究。我们用新型演化算法生成的视频架构在公共数据集上的表现要远远超过最著名的手动设计的 CNN 架构。我们还证明了通过学习得到计算效率高的视频模型(TinyVideoNets)是可行的。这项研究开辟了新的研究方向,并说明自动演化的 CNN 在视频理解任务中有很好的研究前景。

    原文链接:https://ai.googleblog.com/2019/10/video-architecture-search.html


    视频理解学习群

    学习交流视频理解、视频分类技术,扫码添加CV君拉你入群,如已为CV君其他账号好友请直接私信,

    请务必注明:视频):

    喜欢在QQ交流的童鞋可以加52CV官方QQ群:805388940

    (不会时时在线,如果没能及时通过还请见谅)


    长按关注我爱计算机视觉

    展开全文
  • 另外,ClariNet是全卷积模型模型隐状态(hidden states)之间没有顺序依赖关系,可以完全利用GPU这样的并行计算资源,因而训练速度起基于循环神经网络(RNN)的模型要快10以上。 ClariNet的网络结构如下图所示...
        
    稿件来源:百度硅谷研究院
    量子位授权转载 | 公众号 QbitAI

    语音合成(Text-to-Speech,TTS)是将自然语言文本转换成语音音频输出的技术,在AI时代的人机交互中扮演至关重要的角色。

    百度硅谷人工智能实验室的研究员最近提出了一种全新的基于WaveNet的并行音频波形(raw audio waveform)生成模型ClariNet,合成速度比起原始的WaveNet提升了数千倍,可以达到实时合成速度的十倍以上。

    更值得注意的是,ClariNet还是语音合成领域第一个真正的端到端模型:使用单个神经网络,直接从文本输入到原始音频波形输出。

    注:ClariNet名称由来——clari词根在拉丁语中是clear, bright的意思。同时clarinet是一种”端到端”的乐器,而且其声音与人的声音接近

    640?wx_fmt=jpeg

    最近,百度硅谷人工智能实验室的研究员提出的ClariNet(合成语音展示),是一种全新的基于WaveNet的并行音频波形(raw audio waveform)生成模型。

    WaveNet 是目前能够完美模仿人类声音的语音合成技术(注:Google I/O大会所展示的超逼真语音合成背后的支撑技术),自从其被提出,就得到了广泛的离线应用。

    但由于其自回归(autoregressive)的特点,只能按时间顺序逐个生成波形采样点,导致合成速度极慢,无法在online应用场合使用。ClariNet中所提出的并行波形生成模型基于高斯逆自回归流(Gaussian inverse autoregressive flow),可以完全并行地生成一段语音所对应的原始音频波形。

    比起自回归的WaveNet模型,其合成速度提升了数千倍,可以达到实时合成的十倍以上(实时合成即合成1秒音频波形需要1秒钟的计算)。

    ClariNet模型生成音频

    对比DeepMind稍早提出的Parallel WaveNet,ClariNet中所用到的teacher WaveNet的输出概率分布是一个方差有下界的单高斯分布,并且直接使用最大似然估计来学习,并不需要引入任何额外的训练技巧。

    特别值得瞩目的是,ClariNet中的概率分布蒸馏(probability density distillation)过程简单优美,直接闭式地(closed-form)来计算训练目标函数KL散度(KL divergence),大大简化了训练算法,并且使得蒸馏过程效率极高——通常5万次迭代后,就可以得到很好的结果(DeepMind的论文中需要100万步迭代)。

    同时作者还提出了正则化KL散度的办法,大大提高了训练过程的数值稳定性,使得蒸馏学习过程简单易训练 。而Parallel WaveNet由于需要蒙特卡洛采样来近似KL散度,使得梯度估计的噪音很大,训练过程很不稳定,外界极难重现DeepMind的实验结果——截至目前开源社区无人能够成功重现。

    更值得注意的是,ClariNet还是语音合成领域第一个完全的端到端系统(end-to-end system),可以通过单个神经网络,直接将文本转换为原始的音频波形(raw audio waveform)。而先前为业界所熟知的“端到端”语音合成系统(比如Google提出的Tacotron,百度之前提出的Deep Voice 3 ),实际是先将文本转换为频谱(spectrogram),然后通过波形生成模型WaveNet或者Griffin-Lim 算法,将频谱转换成原始波形输出。

    这种方法由于文本到频谱的模型和WaveNet是分别训练优化的,往往导致次优的结果。而百度研究员提出的ClariNet,则是完全打通了从文本到原始音频波形的端到端训练,实现了对整个TTS系统的联合优化, 比起分别训练的模型,在语音合成的自然度上有大幅提升(参见文末合成语音示例)。

    另外,ClariNet是全卷积模型,模型隐状态(hidden states)之间没有顺序依赖关系,可以完全利用GPU这样的并行计算资源,因而训练速度比起基于循环神经网络(RNN)的模型要快10倍以上。

    ClariNet的网络结构如下图所示。

    640?wx_fmt=png

    它使用基于注意力机制(Attention)的编码器-解码器模块(Encoder-Decoder)来学习文本字符与频谱帧之间的对齐关系。解码器的隐状态(hidden states)被送给Bridge-net来进行双向的时序信息处理和升采样(upsample)。最终Bridge-net的隐状态被送给音频波形生成模块(Vocoder),作为其条件输入(conditioner),来最终合成原始音频波形。整个网络的各个模块,使用一维卷积操作(convolution block)来进行时序信息的建模。

    传送门

    640?wx_fmt=jpeg

    论文地址:https://arxiv.org/pdf/1807.07281.pdf

    合成语音示例:https://clarinet-demo.github.io/

    资源推荐

    640?wx_fmt=png

    扫码或点击“阅读原文”,可查看腾讯WeTest最新测试福利。


    腾讯WeTest引入AI技术,开放“深度兼容测试”,并提供更多测试优惠,为广大测试者提高工作效率,降低测试成本

    640?wx_fmt=jpeg

    量子位 QbitAI · 头条号签约作者

    վ'ᴗ' ի 追踪AI技术和产品新动态


    展开全文
  • Transformer 用在图像识别上会存在计算效率过低的挑战,最近一篇向 ICLR 2021 大会提交的论文似乎很好地解决了这一问题,其研究的 PyTorch 代码也已在 GitHub 上开源。 在自然语言处理领域(NLP)成为重要力量的 ...

    Transformer 用在图像识别上会存在计算效率过低的挑战,最近一篇向 ICLR 2021 大会提交的论文似乎很好地解决了这一问题,其研究的 PyTorch 代码也已在 GitHub 上开源。


    在自然语言处理领域(NLP)成为重要力量的 Transformer 技术最近已经开始在计算机视觉领域展现自己的实力。不过到目前为止,由于 Transformer 注意力机制对内存的需求是输入图像的二次方,所以这一方向还存在一些挑战。

    近日,LambdaNetworks 的出现提供了一种解决此问题的方法,人们可以无需建立昂贵的注意力图即可捕捉长距离交互。这一方法在 ImageNet 上达到了新的业界最佳水平(state-of-the-art)。


    对长程交互进行建模在机器学习中至关重要。注意力已成为捕获长程交互的一种常用范式。但是,自注意力二次方式的内存占用已经阻碍了其对长序列或多维输入(例如包含数万个像素的图像)的适用性。例如,将单个多头注意力层应用于一批 256 个64x64 (8 头)输入图像需要32GB的内存,这在实践中是不允许的。

    该研究提出了一种名为「lambda」的层,这些层提供了一种捕获输入和一组结构化上下文元素之间长程交互的通用框架。

    lambda 层将可用上下文转换为单个线性函数(lambdas)。这些函数直接单独应用于每个输入。研究者认为,lambda 层可以作为注意力机制的自然替代。注意力定义了输入元素和上下文元素之间的相似性核,而 lambda 层将上下文信息汇总为固定大小的线性函数,从而避免了对内存消耗大的注意力图的需求。这种对比如图1所示。

     


    研究者证明了 lambda 层的通用性,展示了它们的实现可以被用来捕获全局、局部或掩模上下文中基于内容和位置的交互。利用lambda生成的神经网络 LambdaNetwork 计算效率很高,能够以很小的内存成本建模长程依赖,因而可用于高分辨率图像等大型结构化输入。

    研究者在计算机视觉任务上评估了 LambdaNetwork,在这些任务上,自注意力显示出了希望,但遇到了内存成本高昂和无法实际实现的问题。在 ImageNet 分类、COCO 目标检测和实例分割三方面的对照实验表明,LambdaNetwork 显著优于基于卷积和注意力的同类方法,并且计算效率更高、运行速度更快。

    最后,研究者提出了 LambdaResNets,它显著改善了图像分类模型的速度-准确性权衡。具体而言,LambdaResNets 在实现 SOTA ImageNet 准确性的同时,运行速度是 EfficientNets  的4.5 倍左右。
     

    建模长程交互

     

    在论文第二章开头,研究者定义了查询、上下文和交互等概念及各种用到的符号,此处不做赘述。

    注意力交互。首先缩小查询深度,创建查询和上下文元素之间的相似性核(注意力图),也就是所谓的注意力操作。该机制可以被看作激发查询、键和数值术语的可微内存的寻址。由于上下文位置 |m| 的数量越来越大,并且输入和输出维数 |k| 和 |v| 保持不变,所以在层输出是较小维数 |v| << |m| 的一个向量时,我们可以假设计算注意力图是不划算的。

    相反, 由于 y_n = F((q_n, n), C) = λ(C, n)(q_n) 拟合一些线性函数 λ(C, n),所以通过线性函数将每个查询映射到输出可能更有效率。在这种场景下,上下文聚合到一个固定大小的线性函数 λ_n = λ(C, n)。每个 λ_n作为独立于上下文(计算后)存在的小的线性函数,并在应用于关联查询q_n之后被丢弃。该机制令人联想到与lambda这个术语相关的函数式编程和 λ 演算。

    lambda层
    lambda层将输入  和上下文  作为输入,生成线性函数lambdas,然后将其应用于查询,从而得到输出 


    注意,在自注意力情况下可能有C=X。在不失一般性的前提下,研究者假设d_in=d_c=d_out=d。在论文的其他部分中,研究者将重点放在lambda层的特定实例上,并说明它可以在没有注意力图的情况下,处理密集的长程内容和基于位置的交互。

    lambda层:将上下文转换成线性函数


    研究者首先在(q_n,n)的上下文中描述lambda层。由于研究者希望生成一个线性函数  或将  矩阵当作函数。


    表1给出了lambda层的超参数、参数等量化数值。
     


    1.  生成上下文lambda函数
    lambda层首先通过线性投影上下文来计算键和值,通过softmax运算对键进行归一化,从而得到归一化键

    这种实现能可以看作是函数消息传递的一种形式,每个上下文元素都贡献一个内容函数 和一个位置函数 。λ_n 是通过将上下文贡献求和得到的,如下所示:

    其中还定义了内容lambda λ^c和位置lambda λ^p_n。内容lambda λ^c对于上下文元素的排列组合是固定不变的,在所有的查询位置n上共享,并且对如何转换仅基于上下文内容的查询内容q_n进行编码。相比之下,位置lambda λ^p_n对如何根据内容c_m和位置(n, m)转换查询内容q_n,从而可以对诸如图像之类的结构化输入进行建模。

    2.  将lambda应用于查询
    将输入x_n转换为查询 ,然后获得lambda层的输出为


    3.  lambda解释

    矩阵的列可以看作是|k|x|v|维的上下文特征的固定大小集合。这些上下文特征是根据上下文的内容和结构汇总得出的。利用lambda线性函数动态分配这些上下文特征,以产生输出 

    此过程可以捕获密集内容和基于位置的长程交互,同时不产生注意力图。

    4. 归一化
    可修改方程式1和2以涵盖非线性或归一化运算。该研究的实验表明,在计算查询和值之后应用批归一化是很有用的。

    带有结构化上下文的 lambda 层

    这一部分介绍了如何使 lambda 层适应结构化的上下文,如相关上下文和局部上下文。

    1. 平移等变性

    在很多学习情景中,平移等变性是一种很强的归纳偏置。基于内容的交互是置换等变的,因此它已经具备平移等变性。对于任意的平移 t,研究者通过确保位置嵌入满足 。在位置交互中得到平移不变性。在实践中,研究者定义了相对位置嵌入  的一个张量。其中,r 表示所有 (n, m) 对的可能相对位置,并将其重新索引到 ,从而使得 

    2. Lambda 卷积

    尽管长程交互有一定的优点,但在很多任务中,局部性依然是一种强大的归纳偏置。从计算的角度来看,使用全局上下文可能会增加噪声,增加算力消耗。因此,将位置交互的范围限制到查询位置 n 周围的一个局部邻域,就像局部自注意和卷积中那样,可能是一种有用的做法。这可以通过对所需范围之外的上下文位置 m 的位置嵌入进行归零来实现。但是,对于较大的 |m| 值,这种策略依然代价高昂,因为计算仍在进行。

    在这种上下文被安排在多维网格上的情况下,可以使用一个将 V 中的第 v 维视为一个额外空间维度的常规卷积来从局部上下文中生成位置 lambda。例如,假设我们想在一维序列上生成局部范围大小为 |r| 的位置 lambdas。相对位置嵌入张量 可以变为 ,然后被用作一个二维卷积的卷积核,计算所需的位置 lambda

    研究者将这个运算称为 lambda 卷积。由于现在的计算被限制在局部范围内,lambda 卷积可以得到与输入长度相关的线性时间和内存复杂度。lambda 卷积很容易用于 dilation 和 striding 等其他功能,并且在专用硬件加速器上享有高度优化的实现。这与局部自注意力的实现形成鲜明对比,后者需要物化重叠查询和内存块的特征块,从而增加了内存消耗和延迟(见下表4)。



    利用多查询 lambda 降低复杂度

    对于多个 |b| 元素,每个都包含 |n| 输入。应用 lambda 层所需算数运算和内存占用的数量分别为 Θ(bnmkv) 和 Θ(bnkv + knm)。由于E_nm 参数捕获了基于位置的交互 ,因此相对于输入长度,研究者拥有的内存占用仍是二次的。但是,这个二次项并不随批大小扩展,这与生成每个示例(per-example)注意力图谱的注意力操作一样。在实践中,超参数 |k| 设为很小的值,如 |k| =16,并且在注意力失效的情况下可以处理大批量的大型输入。

    多查询 lambdas 可以降低复杂度。lambdas 将注意力图 q_n ∈ R^k映射到输出 y_n ∈ R^d。如公式2所示,这意味着 |v|=d。所以,|v| 的较小值成为了特征向量 y_n上的瓶颈,但考虑到 Θ(bnmkv) 和 Θ(bnkv + knm) 的时间和空间复杂度,更大的输入维数 |v| 将导致非常高昂的计算成本。

    所以,研究者提出将 lambda 层的时间和空间复杂度从输出维数 d 中解耦。他们并没有强制地令 |v|=d,而是创建了 |h| 查询 {q^h _n},将相同的 lambda 函数 λ_n 应用到每个查询 q^h_n,并将输出串连接成 y_n=concat(λ_nq^1_n , · · · ,λ_nq^|h|_n )。

    由于每个 lambda 都应用于 |h| 查询,所以研究者将这一操作当做多查询 lambda 层。这也可以理解为将 lambda 约束到具有 |h| 等重复块的更小块矩阵。现在d=|hv|,并且时间和空间复杂度变成了 Θ(bnmkd/h) 和 Θ(bnkd/h + knm)。此外,研究者注意到,这类似于多头或多查询注意力机制,但motivation不同。在注意力操作中使用多个查询增强了表示能力和复杂度。而在本研究中,使用多查询 lambdas 降低了复杂度和表示能力。

    下表2比较了多查询 lambda 层和多头注意力操作的时间和空间复杂度:

    批量多查询 lambda 层可以使用 einsum 实现高效执行,具体如下

    局部位置的 lambdas 可以通过 lambdas 卷积来获得,具体如上文公式3所示。

    实验


    LambdaNetworks 优于基于卷积和注意力的同类方法

    在下表 3 中,研究者进行了控制实验,以比较 LambdaNetworks 与 a)基线 ResNet50、b)通道注意力和 c)以往使用自注意力来补充或替换 ResNet50 中的 3x3 卷积的研究方法。结果显示,在参数成本仅为其他方法一小部分的情况下,lambda 层显著优于这些方法,并且相较于 Squeeze-and-Excitation(通道注意力)实现了 +0.8% 的提升。

     


    在上表 4 中,研究者对比了 lambda 层和自注意力机制,并给出了它们的吞吐量、内存复杂度和 ImageNet 图像识别准确性比较,这一结果展示了注意力机制的不足。相比之下,lambda 层可以捕获高分辨率图像上的全局交互,并可以比局部自注意力机制获得多 1.0% 的提升,同时运行速度几乎是后者的 3 倍。

    此外,位置嵌入也可以在 lambda 层之间共享,以最小的降级花费进一步降低了内存使用的需求。最后,lambda 卷积具有线性内存复杂度,这在图像检测和分割任务中遇到非常大的图片时非常有用。


    LambdaResNets 明显改善了 ImageNet 分类任务的速度-准确性权衡

    下图 2 展示了 LambdaResNets与使用或不使用 channel attention 机制的ResNet 及最流行的 EfficientNets 相比的效果。LambdaResNets 在所有深度和图像尺度上均优于基准水平,最大的 LambdaResNet 实现了 SOTA 水平准确度 84.8。更值得注意的是,LambdaResNets 在准确性一定的情况下比 EfficientNets 要快大概 3.5 倍,速度-准确性曲线提升明显。

     

     

    计算效率

    在下表5和表6中,研究者发现构造 LambdaResNets 来提升大型 EfficientNets 的参数和 flops 效率也是有可能的。

    这样的结果表明,lambda层可能非常适合在资源有限的场景中使用,例如嵌入式视觉应用。

    目标检测与实例分割

    最后,研究人员评估了 LambdaResNets 使用 Mask-RCNN 架构在 COCO 数据集上进行目标检测和实力分割任务的效果。使用 lambda 层会在所有 IoU 阈值和所有对象比例(尤其是难以定位的小对象)上产生一致的增益,这表明 lambda 层容易在需要定位信息的更复杂的视觉任务中实现不错的效果。

    论文和源码获取

    展开全文
  • 更值得注意的是,LambdaResNets 在准确性一定的情况下 EfficientNets 要快大概 3.5 ,速度-准确性曲线提升明显。 计算效率 在下表5和表6中,研究者发现构造 LambdaResNets 来提升大型 EfficientNets 的参数和 ...

    本文经机器之心(almosthuman2014)授权转载,禁止二次转载. 

    选自OpenReview

    机器之心编译

    机器之心编辑部

    Transformer 用在图像识别上会存在计算效率过低的挑战,最近一篇向 ICLR 2021 大会提交的论文似乎很好地解决了这一问题,其研究的 PyTorch 代码也已在 GitHub 上开源。


    在自然语言处理领域(NLP)成为重要力量的 Transformer 技术最近已经开始在计算机视觉领域展现自己的实力。不过到目前为止,由于 Transformer 注意力机制对内存的需求是输入图像的二次方,所以这一方向还存在一些挑战。

    近日,LambdaNetworks 的出现提供了一种解决此问题的方法,人们可以无需建立昂贵的注意力图即可捕捉长距离交互。这一方法在 ImageNet 上达到了新的业界最佳水平(state-of-the-art)。

    论文链接:https://openreview.net/pdf?id=xTJEN-ggl1b


    GitHub链接:https://github.com/lucidrains/lambda-networks


    对长程交互进行建模在机器学习中至关重要。注意力已成为捕获长程交互的一种常用范式。但是,自注意力二次方式的内存占用已经阻碍了其对长序列或多维输入(例如包含数万个像素的图像)的适用性。例如,将单个多头注意力层应用于一批 256 个64x64 (8 头)输入图像需要32GB的内存,这在实践中是不允许的。

    该研究提出了一种名为「lambda」的层,这些层提供了一种捕获输入和一组结构化上下文元素之间长程交互的通用框架。

    lambda 层将可用上下文转换为单个线性函数(lambdas)。这些函数直接单独应用于每个输入。研究者认为,lambda 层可以作为注意力机制的自然替代。注意力定义了输入元素和上下文元素之间的相似性核,而 lambda 层将上下文信息汇总为固定大小的线性函数,从而避免了对内存消耗大的注意力图的需求。这种对比如图1所示。


    研究者证明了 lambda 层的通用性,展示了它们的实现可以被用来捕获全局、局部或掩模上下文中基于内容和位置的交互。利用lambda生成的神经网络 LambdaNetwork 计算效率很高,能够以很小的内存成本建模长程依赖,因而可用于高分辨率图像等大型结构化输入。

    研究者在计算机视觉任务上评估了 LambdaNetwork,在这些任务上,自注意力显示出了希望,但遇到了内存成本高昂和无法实际实现的问题。在 ImageNet 分类、COCO 目标检测和实例分割三方面的对照实验表明,LambdaNetwork 显著优于基于卷积和注意力的同类方法,并且计算效率更高、运行速度更快。

    最后,研究者提出了 LambdaResNets,它显著改善了图像分类模型的速度-准确性权衡。具体而言,LambdaResNets 在实现 SOTA ImageNet 准确性的同时,运行速度是 EfficientNets  
    的4.5 倍左右。

    建模长程交互

    在论文第二章开头,研究者定义了查询、上下文和交互等概念及各种用到的符号,此处不做赘述。

    注意力交互。首先缩小查询深度,创建查询和上下文元素之间的相似性核(注意力图),也就是所谓的注意力操作。该机制可以被看作激发查询、键和数值术语的可微内存的寻址。由于上下文位置 |m| 的数量越来越大,并且输入和输出维数 |k| 和 |v| 保持不变,所以在层输出是较小维数 |v| << |m| 的一个向量时,我们可以假设计算注意力图是不划算的。

    相反, 由于 y_n = F((q_n, n), C) = λ(C, n)(q_n) 拟合一些线性函数 λ(C, n),所以通过线性函数将每个查询映射到输出可能更有效率。在这种场景下,上下文聚合到一个固定大小的线性函数 λ_n = λ(C, n)。每个 λ_n作为独立于上下文(计算后)存在的小的线性函数,并在应用于关联查询q_n之后被丢弃。该机制令人联想到与lambda这个术语相关的函数式编程和 λ 演算。

    lambda层


    lambda层将输入  上下文  作为输入,生成线性函数lambdas,然后将其应用于查询,从而得到输出 


    注意,在自注意力情况下可能有C=X。在不失一般性的前提下,研究者假设d_in=d_c=d_out=d。在论文的其他部分中,研究者将重点放在lambda层的特定实例上,并说明它可以在没有注意力图的情况下,处理密集的长程内容和基于位置的交互。

    lambda层:将上下文转换成线性函数


    研究者首先在(q_n,n)的上下文中描述lambda层。由于研究者希望生成一个线性函数  或将  矩阵当作函数。


    表1给出了lambda层的超参数、参数等量化数值。


    1.  生成上下文lambda函数

    lambda层首先通过线性投影上下文来计算键和值,通过softmax运算对键进行归一化,从而得到归一化键

    这种实现能可以看作是函数消息传递的一种形式,每个上下文元素都贡献一个内容函数 和一个位置函数 λ_n 是通过将上下文贡献求和得到的,如下所示:


    其中还定义了内容lambda λ^c和位置lambda λ^p_n。内容lambda λ^c对于上下文元素的排列组合是固定不变的,在所有的查询位置n上共享,并且对如何转换仅基于上下文内容的查询内容q_n进行编码。相比之下,位置lambda λ^p_n对如何根据内容c_m和位置(n, m)转换查询内容q_n,从而可以对诸如图像之类的结构化输入进行建模。

    2.  将lambda应用于查询

    将输入x_n转换为查询 
    然后获得lambda层的输出为


    3.  lambda解释

    矩阵的列可以看作是|k|x|v|维的上下文特征的固定大小集合。这些上下文特征是根据上下文的内容和结构汇总得出的。利用lambda线性函数动态分配这些上下文特征,以产生输出 


    此过程可以捕获密集内容和基于位置的长程交互,同时不产生注意力图。

    4. 归一化


    可修改方程式1和2以涵盖非线性或归一化运算。该研究的实验表明,在计算查询和值之后应用批归一化是很有用的。

    带有结构化上下文的 lambda 层

    这一部分介绍了如何使 lambda 层适应结构化的上下文,如相关上下文和局部上下文。

    1. 平移等变

    在很多学习情景中,平移等变性是一种很强的归纳偏置。基于内容的交互是置换等变的,因此它已经具备平移等变性。对于任意的平移 t,研究者通过确保位置嵌入满足 
    在位置交互中得到平移不变性。在实践中,研究者定义了相对位置嵌入  的一个张量。其中,r 表示所有 (n, m) 对的可能相对位置,并将其重新索引到 ,从而使得 

    2. Lambda 卷积

    尽管长程交互有一定的优点,但在很多任务中,局部性依然是一种强大的归纳偏置。从计算的角度来看,使用全局上下文可能会增加噪声,增加算力消耗。因此,将位置交互的范围限制到查询位置 n 周围的一个局部邻域,就像局部自注意和卷积中那样,可能是一种有用的做法。这可以通过对所需范围之外的上下文位置 m 的位置嵌入进行归零来实现。但是,对于较大的 |m| 值,这种策略依然代价高昂,因为计算仍在进行。

    在这种上下文被安排在多维网格上的情况下,可以使用一个将 V 中的第 v 维视为一个额外空间维度的常规卷积来从局部上下文中生成位置 lambda。例如,假设我们想在一维序列上生成局部范围大小为 |r| 的位置 lambdas。相对位置嵌入张量 
    可以变为 ,然后被用作一个二维卷积的卷积核,计算所需的位置 lambda


    研究者将这个运算称为 lambda 卷积。由于现在的计算被限制在局部范围内,lambda 卷积可以得到与输入长度相关的线性时间和内存复杂度。lambda 卷积很容易用于 dilation 和 striding 等其他功能,并且在专用硬件加速器上享有高度优化的实现。这与局部自注意力的实现形成鲜明对比,后者需要物化重叠查询和内存块的特征块,从而增加了内存消耗和延迟(见下表4)。



    利用多查询 lambda 降低复杂度

    对于多个 |b| 元素,每个都包含 |n| 输入。应用 lambda 层所需算数运算和内存占用的数量分别为 Θ(bnmkv) 和 Θ(bnkv + knm)。由于E_nm 参数捕获了基于位置的交互 ,因此相对于输入长度,研究者拥有的内存占用仍是二次的。但是,这个二次项并不随批大小扩展,这与生成每个示例(per-example)注意力图谱的注意力操作一样。在实践中,超参数 |k| 设为很小的值,如 |k| =16,并且在注意力失效的情况下可以处理大批量的大型输入。

    多查询 lambdas 可以降低复杂度。lambdas 将注意力图 q_n ∈ R^k映射到输出 y_n ∈ R^d。如公式2所示,这意味着 |v|=d。所以,|v| 的较小值成为了特征向量 y_n上的瓶颈,但考虑到 Θ(bnmkv) 和 Θ(bnkv + knm) 的时间和空间复杂度,更大的输入维数 |v| 将导致非常高昂的计算成本。

    所以,研究者提出将 lambda 层的时间和空间复杂度从输出维数 d 中解耦。他们并没有强制地令 |v|=d,而是创建了 |h| 查询 {q^h _n},将相同的 lambda 函数 λ_n 应用到每个查询 q^h_n,并将输出串连接成 y_n=concat(λ_nq^1_n , · · · ,λ_nq^|h|_n )。

    由于每个 lambda 都应用于 |h| 查询,所以研究者将这一操作当做多查询 lambda 层。这也可以理解为将 lambda 约束到具有 |h| 等重复块的更小块矩阵。现在d=|hv|,并且时间和空间复杂度变成了 Θ(bnmkd/h) 和 Θ(bnkd/h + knm)。此外,研究者注意到,这类似于多头或多查询注意力机制,但motivation不同。在注意力操作中使用多个查询增强了表示能力和复杂度。而在本研究中,使用多查询 lambdas 降低了复杂度和表示能力。

    下表2比较了多查询 lambda 层和多头注意力操作的时间和空间复杂度:

    批量多查询 lambda 层可以使用 einsum 实现高效执行,具体如下

    局部位置的 lambdas 可以通过 lambdas 卷积来获得,具体如上文公式3所示。

    实验


    LambdaNetworks 优于基于卷积和注意力的同类方法

    在下表 3 中,研究者进行了控制实验,以比较 LambdaNetworks 与 a)基线 ResNet50、b)通道注意力和 c)以往使用自注意力来补充或替换 ResNet50 中的 3x3 卷积的研究方法。结果显示,在参数成本仅为其他方法一小部分的情况下,lambda 层显著优于这些方法,并且相较于 Squeeze-and-Excitation(通道注意力)实现了 +0.8% 的提升。


    在上表 4 中,研究者对比了 lambda 层和自注意力机制,并给出了它们的吞吐量、内存复杂度和 ImageNet 图像识别准确性比较,这一结果展示了注意力机制的不足。相比之下,lambda 层可以捕获高分辨率图像上的全局交互,并可以比局部自注意力机制获得多 1.0% 的提升
    ,同时运行速度几乎是后者的 3 倍。

    此外,位置嵌入也可以在 lambda 层之间共享,以最小的降级花费进一步降低了内存使用的需求。最后,lambda 卷积具有线性内存复杂度,这在图像检测和分割任务中遇到非常大的图片时非常有用。


    LambdaResNets 明显改善了 ImageNet 分类任务的速度-准确性权衡

    下图 2 展示了 LambdaResNets与使用或不使用 channel attention 机制的ResNet 及最流行的 EfficientNets 相比的效果。LambdaResNets 在所有深度和图像尺度上均优于基准水平,最大的 LambdaResNet 实现了 SOTA 水平准确度 84.8。更值得注意的是,LambdaResNets 在准确性一定的情况下比 EfficientNets 要快大概 3.5 倍,速度-准确性曲线提升明显。

    计算效率

    在下表5和表6中,研究者发现构造 LambdaResNets 来提升大型 EfficientNets 的参数和 flops 效率也是有可能的。

    这样的结果表明,lambda层可能非常适合在资源有限的场景中使用,例如嵌入式视觉应用。

    目标检测与实例分割

    最后,研究人员评估了 LambdaResNets 使用 Mask-RCNN 架构在 COCO 数据集上进行目标检测和实力分割任务的效果。使用 lambda 层会在所有 IoU 阈值和所有对象比例(尤其是难以定位的小对象)上产生一致的增益,这表明 lambda 层容易在需要定位信息的更复杂的视觉任务中实现不错的效果。

    END

    备注:CV

    计算机视觉交流群

    扫码备注拉你入群。

    我爱计算机视觉

    微信号:aicvml

    QQ群:805388940

    微博知乎:@我爱计算机视觉

    投稿:amos@52cv.net

    网站:www.52cv.net

    在看,让更多人看到  

    展开全文
  • 模型缩放的传统做法是任意增加CNN的深度和宽度,或使用更大的输入图像分辨率进行训练,而使用EfficientNet使用一组固定额缩放系数统一缩放每个维度,超越了当先最先进图像识别网络的准确率,效率提高了10,而且更...
  • 在开始学习之前推荐大家可以多在FlyAI竞赛服务平台多参加训练和竞赛,...每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。 摘要: 对于机器学习来说,参数可以算得上算法的关键:他们是历...
  • 2017年10月4日,Deepmind发表博客称,其一年前提出的生成原始音频波形的深层神经网络模型WaveNet已正式商用于Google Assistant中,该模型比起一年前的原始模型效率提高1000,且能目前的方案更好地模拟自然语音。...
  • 虽然准确率只之前最好的Gpipe提高了0.1%,但是模型更小更快,参数的数量和FLOPS都大大减少,效率提升了10! 开发EfficientNets是来自谷歌大脑的工程师Mingxing Tan和首席科学家Quoc V. Le,他们的文章...
  • 关注上方“深度学习技术前沿”,选择“星标公众号”,资源干货,第一时间送达!TinyBERT是谷歌开发的新模型,与传统BERT相比,它快10,小20,可在CPU上运行。作者:Jack ...
  • 1.3设备像素 1.3.1定义 window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例。 公式表示就是:window.devicePixelRatio = 物理像素 / dips dip或dp,(device ...
  • 更值得注意的是,LambdaResNets 在准确性一定的情况下 EfficientNets 要快大概 3.5 ,速度-准确性曲线提升明显。 计算效率 在下表5和表6中,研究者发现构造 LambdaResNets 来提升大型 EfficientNets 的参数和 ...
  • 精彩内容EfficientDet-d6在52M参数和229BFLOPs的情况下,实现了map在COCO数据集的最高水平(50.9),之前最好的检测器更小,使用更少的FLOPs (13xless FLOPs),但仍然更准确(+0.2% mAP)。传送门:...
  • 晓查 发自 凹非寺量子位 出品 | 公众号 QbitAI最近,...虽然准确率只之前最好的Gpipe提高了0.1%,但是模型更小更快,参数的数量和FLOPS都大大减少,效率提升了10!开发EfficientNets是来自谷歌大脑的工程师Ming...
  • YOLO Nano 大小只有 4.0MB 左右, Tiny YOLOv2 和 Tiny YOLOv3 分别小了 15.1 和 8.3 ,性能却有较为显著的提升。 ▲ https://arxiv.org/abs/1910.01271 https://arxiv.org/abs/1910.01271 目标检测在计算机...
  • DP 需要传输“数据”、“模型”、“输出”、“损失”、“梯度”。 DDP只传输 “梯度”。 另: Reduce 是输入多个、输出一个的意思,可以是求和,求积,取最大或最小值。 Gather 是组合多个的意思。 例如 A卡的...
  • 什么检测器能够兼顾准确率和模型效率?如何才能实现?最近,谷歌大脑 Mingxing Tan、Ruoming Pang 和 Quoc V. Le 提出新架构 EfficientDet,结合 EfficientNet(同样来自该团队)和新提出的 BiFPN,实现新的 SOTA ...
  • 阿里云城市大脑交通信号机系统使用含光800服务器处理车辆检测、品牌识别、车牌识别等算法模型,单张含光800全链路能够支持100路实时视频的分析和特征结构化数据的提取,相比GPU性能提升超过5。 阿里电商平台合规...
  • 阿里云城市大脑交通信号机系统使用含光800服务器处理车辆检测、品牌识别、车牌识别等算法模型,单张含光800全链路能够支持100路实时视频的分析和特征结构化数据的提取,相比GPU性能提升超过5。 阿里电商平台合规...
  • KeyDB项目是从redis fork出来...线程模型 KeyDB将redis原来的主线程拆分成了主线程和worker线程。每个worker线程都是io线程,负责监听端口,accept请求,读取数据和解析协议。如图所示: KeyDB使用了SO_REUSEPORT特...
  • 2.5 meta视口标签 属性 解释说明 width 宽度设置的是viewport宽度,可以设置device-width特殊值 initial-scale 初始缩放,大于0的数字 ...手机通常使用二图,还存在3/4图,看实际需求 3.3 背景缩放backgr
  • 创建新功能和应用程序性能更重要,因为我们有很多想法,我们需要尽快开发和营销这些想法。 现在,我们不再需要为数据模型和部署描述符编写繁琐且易于出错的xml描述。 我们也不需要使用名为“ ...
  • 晓查 发自 凹非寺量子位 出品 | 公众号 QbitAI...虽然准确率只之前最好的Gpipe提高了0.1%,但是模型更小更快,参数的数量和FLOPS都大大减少,效率提升了10!开发EfficientNets是来自谷歌大脑的工程师Mingxing ...
  • 在深入细节之前需要了解这两个方法间一个非常重要的区别,我想说的并不是他们接收的参数一个是标签名,另一个是整个CSS选择器。...这是文档对象模型(DOM,Document Object Model)中的一个大坑.NodeList...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 678
精华内容 271
关键字:

倍比模型