当前位置: 首页 > 编程日记 > 正文

网络运行时间提高100倍,Google使用的AI视频理解架构有多强?

640?wx_fmt=png

译者 | 刘畅
出品 | AI科技大本营(ID:rgznai100)

视频理解是一个很有挑战性的问题。由于视频包含时空数据,因此图像的特征表示需要同时提取图像和运动信息。这不仅对自动理解视频语义内容有重要性,还对机器人的感知和学习也至关重要,比如网络视频分类或体育活动识别。就和人类一样,机器人相机的输入很少是静态的快照,而是以连续视频的形式出现。

当今深层学习模型的能力在很大程度上依赖于其神经结构。视频的卷积神经网络(CNN)通常是通过将已知的2D架构(例如Inception和ResNet)人工扩展到3D来构建的,或者是通过精心设计将外观和运动信息融合在一起的双流CNN架构来构建的。然而,设计一个最佳的视频架构并充分利用视频中的时空信息仍然是一个有待解决的问题。

虽然为了发现更好的体系结构而进行的神经体系结构搜索(如Zoph等)已经被广泛地探索到了,但是用于视频的机器优化的神经体系结构还没有被开发出来。另外,视频CNN通常需要大量的计算和内存,因此设计一种在捕获其独特属性的同时又进行有效搜索是非常困难的。

为了应对这些挑战,本文作者对自动搜索进行了一系列研究,以寻求更理想的网络架构来进行视频理解。本文展示了三种不同的神经体系结构演化算法:学习层及其模块配置(EvaNet); 学习多流连接(AssembleNet); 和建立计算效率高且紧凑的网络(TinyVideoNet)。本文开发的视频架构在多个公共数据集上的性能明显优于现有的人工制作模型,并证明网络运行时间可提高10倍至100倍。

Evanet:第一个进化的视频架构

本文作者在ICCV 2019的“Evolving Space-Time Neural Architectures for Videos”中介绍过EvaNet,它是对视频体系结构设计神经体系结构研究的首次尝试。EvaNet是一个模块化的体系结构,重点是寻找时空卷积层的类型,以及它们的最佳序列或者平行轮廓。一个用于搜索并带有变异算子的进化算法,迭代更新一组体系结构。这样可以并行,更有效地进行空间搜索,对于视频体系结构研究来说,必须考虑各种时空层及其组合。EvaNet演化了多个模块(在网络中的不同位置)以生成不同的体系结构。

实验结果证实了这种视频cnn架构通过演化异构模块的优点。该方法经常发现,由多个平行层组成的非平凡模块最有效,因为它们速度更快,表现出比人工设计的模块更优的性能。另一个有趣的方面是,通过进化获得了许多类似的性能良好且多样的体系结构,并且没有额外的计算量。由于它们的并行性质,即使是一组模型在计算上也比其他标准的视频网络更有效率,例如(2+1)d EvaNet。作者已经开源了代码,若有兴趣大家可以去网上下载。

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

在“ AssembleNet:Evolving Space-Time Neural Architectures for Videos”中,作者研究了一种新的方法,该方法可以将不同的子网络融合到不同输入模式(例如rgb和光流)和时间分辨率中去。AssembleNet中也提供了一种通用方法来学习特征表示之间的“连通性”,同时也针对目标任务进行了优化。另外,作者也介绍了一种通用格式,该格式允许将多种形式的多流CNN表示为有向图,并结合一种有效的进化算法来探索高级网络连接。目的是通过视频中的外观和运动视觉线索学习更好的特征表示。与先前人工设计的两流模型不同,AssembleNet在连接权重学习指导其变异的同时,进化出了过度连接的多流多分辨率架构。

下图显示了一个AssembleNet架构的示例,该示例是通过对50到150轮回合中的随机初始多流架构进行演变而发现的。作者在两个非常流行的视频识别数据集上测试了AssembleNet:Charades和Moments-in-Time(MiT)。它在MiT上的表现是34%以上的第一位。Charades的性能更是令人印象深刻,平均精度(mAP)为58.6%,而之前最著名的结果是42.5和45.2。
640?wx_fmt=png
640?wx_fmt=png

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

在现实环境的设备中(例如机器人需要的环境),为了使视频CNN模型更好的使用,考虑实时、高效的计算是非常有必要的。然而,要在视频理解任务上取得最新成果,目前还需要非常大的网络,通常有数十到数百层的卷积层,这些层通常适用于许多输入帧。因此,这些网络经常受到运行速度的影响,需要在现在的gpu和cpu上每1秒钟至少有500+MS片段。在Tiny Video Networks中,我们通过自动设计网络来解决这个问题,这些网络以很小的计算成本提供了可比较的性能。Tiny Video Networks达到了竞争精度,并且在大约1秒钟的视频剪辑中,在CPU上运行37至100 ms,在GPU上运行10 ms时,能够以实时或更高的速度高效运行,比以前快了数百倍。

通过在架构演进过程中明确考虑了模型运行时间并利用算法去探索搜索空间。同时,为了以减少计算量,也考虑了空间和时间分辨率以及通道大小,这些都可以实现性能提升。下图显示了TinyVideoNet研究出的两种简单且非常有效的体系结构。有趣的是,学习的模型体系结构比典型的视频体系结构具有更少的卷积层:Tiny Video Networks更喜欢轻量级的元素,比如2D池,门控层和挤压激发层。此外,TinyVideoNet能够共同优化参数和运行时间,以提供可用于未来网络探索的高效网络。
640?wx_fmt=png
640?wx_fmt=png

总结

这是关于神经体系结构研究视频理解的第一项工作。本文使用新的进化算法生成的视频架构在相当大的程度上优于公共数据集上最著名的人工设计的CNN架构。另外,随着架构的发展,学习计算效率高的视频模型TinyVideoNets是一定可能性的。这项研究开辟了新的方向,展示了机器进化CNN用于视频理解的前景。

原文链接:

https://ai.googleblog.com/2019/10/video-architecture-search.htm

(*本文为 AI科技大本营编译文章,载请微信联系 1092722531


精彩推荐


2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。

即日起,限量 5 折票开售,数量有限,扫码购买,先到先得!

640?wx_fmt=png

推荐阅读

640?wx_fmt=png

你点的每个“在看”,我都认真当成了AI

相关文章:

iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)

2019独角兽企业重金招聘Python工程师标准>>> iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备、系统信息、应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息&#xff0…

吴恩达老师深度学习视频课笔记:单隐含层神经网络公式推导及C++实现(二分类)

关于逻辑回归的公式推导和实现可以参考: http://blog.csdn.net/fengbingchun/article/details/79346691 下面是在逻辑回归的基础上,对单隐含层的神经网络进行公式推导:选择激活函数时的一些经验:不同层的激活函数可以不一样。如果…

「2019中国大数据技术大会」超值学生票来啦!

大会官网:https://t.csdnimg.cn/U1wA经过11年的沉淀与发展,中国大数据技术大会见证了大数据技术生态在中国的建立、发展和成熟,已经成为国内大数据行业极具影响力的盛会,也是大数据人非常期待的年度深度分享盛会。在新的时代背景下…

校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)

背景: 开发中经常遇到取值属性的时候,需要校验数值的有效性。 例如: 获取props对象里面的friends属性 props.user && props.user.friends && props.user.friends[0] && props.user.friends[0].friends 对于深层的对…

Ring Tone Manager on Windows Mobile

2019独角兽企业重金招聘Python工程师标准>>> 手机铃声经常能够体现一个人的个性,有些哥们儿在自习室不把手机设置成震动,一来电就#$^%^&^%#$&$*,声音还很大,唯恐别人听不到。 Windows Mobile设备上如何来设置手…

OpenCV3.3中K-Means聚类接口简介及使用

OpenCV3.3中给出了K-均值聚类(K-Means)的实现,即接口cv::kmeans,接口的声明在include/opencv2/core.hpp文件中,实现在modules/core/src/kmeans.cpp文件中,其中:下面对此接口中的参数作个简单说明:(1)、data&#xff1a…

一文读懂对抗机器学习Universal adversarial perturbations | CSDN博文精选

作者 | Icoding_F2014来源 | CSDN博客本文提出一种 universal 对抗扰动,universal 是指同一个扰动加入到不同的图片中,能够使图片被分类模型误分类,而不管图片到底是什么。示意图:形式化的定义:对于d维数据分布 μ&…

Reactor模式与Proactor模式

博主一脚刚踏进分布式的大门(看《分布式Java应用》,如果大家有啥推荐的书欢迎留言~),发现书中对NIO采用的Reactor模式、AIO采用的Proactor模式一笔带过,好奇心趋势我找了一下文章,发现两篇挺不错的文章&…

linux下使profile和.bash_profile立即生效的方法

使profile生效的方法1.source /etc/profile使用.bash_profile生效的方法1 . .bash_profile2 source .bash_profile3 exec bash --login转载于:https://blog.51cto.com/shine20/1436473

吴恩达老师深度学习视频课笔记:多隐含层神经网络公式推导(二分类)

多隐含层神经网络的推导步骤非常类似于单隐含层神经网络的步骤,只不过是多重复几遍。关于单隐含层神经网络公式的推导可以参考: http://blog.csdn.net/fengbingchun/article/details/79370310 逻辑回归是一个浅层模型(shadow model),或称单层…

Python中的元编程:一个关于修饰器和元类的简单教程

作者 | Saurabh Kukade译者 | 刘畅出品 | AI科技大本营(ID:rgznai100)最近,作者遇到一个非常有趣的概念,它就是用 Python 进行元编程。我想在本文中分享我对该主题的见解。作者希望它可以帮助解决这个问题,因为很多人说…

获取用户电脑的上网IP地址

在项目中经常要获取用户的上网的IP地址&#xff0c;如何获取用户的IP地址&#xff0c;方法很多&#xff0c;现在介绍以下2种。 /// <summary> /// 获取本机在局域网的IP地址 /// </summary> /// <returns></returns> …

数学图形(1.40)T_parameter

不记得在哪搞了个数学公式生成的图形. vertices 1000t from 0 to (2*PI) r 2.0 x r*(5*cos(t) - cos(6*t)) y r*(3*sin(t) - sin(4*t)) 给线加上一维变量的变化,使之变成面: vertices D1:360 D2:21u from 0 to (2*PI) D1 v from 0 to 20 D2x (v2)*cos(u) - cos((v3)*u…

K-均值聚类(K-Means) C++代码实现

K-均值聚类(K-Means)简介可以参考&#xff1a; http://blog.csdn.net/fengbingchun/article/details/79276668 以下是K-Means的C实现&#xff0c;code参考OpenCV 3.3中的cv::kmeans函数&#xff0c;均值点初始化的方法仅支持KMEANS_RANDOM_CENTERS。以下是从数据集MNIST中提取…

让学生网络相互学习,为什么深度相互学习优于传统蒸馏模型?| 论文精读

作者 | Ying Zhang&#xff0c;Tao Xiang等译者 | 李杰出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;蒸馏模型是一种将知识从教师网络&#xff08;teacher&#xff09;传递到学生网络&#xff08;student&#xff09;的有效且广泛使用的技术。通常来说&#xff0c;…

mac apache 配置

mac系统自带apache这无疑给广大的开发朋友提供了便利&#xff0c;接下来是针对其中的一些说明 一、自带apache相关命令 1. sudo apachectl start 启动服务&#xff0c;需要权限&#xff0c;就是你计算机的password 2. sudo apachectl stop 终止服务 ####3. sudo apachectl rest…

jQuery学习---------认识事件处理

3种事件模型&#xff1a;原始事件模型DOM事件模型IE事件模型原始事件模型&#xff08;0级事件模型&#xff09;1、事件处理程序被定义为函数实例&#xff0c;然后绑定到DOM元素事件对象上&#xff0c;实现事件的注册。例子&#xff1a;var btn document.getElementsByTagName(…

C++中的虚函数表介绍

在C语言中,当我们使用基类的引用或指针调用一个虚成员函数时会执行动态绑定。因为我们直到运行时才能知道到底调用了哪个版本的虚函数&#xff0c;所以所有虚函数都必须有定义。通常情况下&#xff0c;如果我们不使用某个函数&#xff0c;则无须为该函数提供定义。但是我们必须…

AI如何赋能金融行业?百度、图灵深视等同台分享技术实践

近日&#xff0c;由BTCMEX举办的金融技术创新研讨会在北京举办。BTCMEX投资人李笑来&#xff0c;AI技术公司TuringPass、百度、美国Apache基金会项目Pulsar、区块链安全公司SlowMist等相关专家参加了此次会议&#xff0c;共同探讨了金融技术在创新方面的现状。 图灵深视副总裁许…

【Win32 API学习]打开可执行文件

在MFC中打开其他可执行文件常用到的方法有&#xff1a;WinExec、ShellExecute、CreatProcess。 1.WinExec WinExec 主要运行EXE文件&#xff0c;用法简单&#xff0c;只有两个参数&#xff0c;前一个指定命令路径&#xff0c;后一个指定窗口显示方式&#xff1a; UINT WinExec(…

支付宝接口使用文档说明 支付宝异步通知

支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类。 A服务器通知&#xff0c;对应的参数为notify_url&#xff0c;支付宝通知使用POST方式 B页面跳转通知&#xff0c;对应的参数为return_url&#xff0c;支付宝通知使用GET方式 &#xff…

完全隐藏Master Page Site Actions菜单只有管理员才可以看见

1. 在Master Page Head 增加下面的Style <style type"text/css"> .ms-cui-tt{visibility:hidden;} </style> 2. 增加SPSecurityTrimmedControl <SharePoint:SPRibbonPeripheralContent runat"server" Location"TabRowLeft&qu…

深度学习中的随机梯度下降(SGD)简介

随机梯度下降(Stochastic Gradient Descent, SGD)是梯度下降算法的一个扩展。机器学习中反复出现的一个问题是好的泛化需要大的训练集&#xff0c;但大的训练集的计算代价也更大。机器学习算法中的代价函数通常可以分解成每个样本的代价函数的总和。随着训练集规模增长为数十亿…

推荐系统中的前沿技术研究与落地:深度学习、AutoML与强化学习 | AI ProCon 2019...

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;个性化推荐算法滥觞于互联网的急速发展&#xff0c;随着国内外互联网公司&#xff0c;如 Netflix 在电影领域&#xff0c;亚马逊、淘宝、京东等在电商领域&#xff0c;今日头条在内容领域的采用和推动&…

运维日志管理系统

因公司数据安全和分析的需要&#xff0c;故调研了一下 GlusterFS lagstash elasticsearch kibana 3 redis 整合在一起的日志管理应用&#xff1a;安装&#xff0c;配置过程&#xff0c;使用情况等续一&#xff0c;glusterfs分布式文件系统部署&#xff1a;说明&#xf…

NLP学习思维导图,非常的全面和清晰

作者 | Tae Hwan Jung & Kyung Hee编译 | ronghuaiyang【导读】Github上有人整理了NLP的学习路线图&#xff08;思维导图&#xff09;&#xff0c;非常的全面和清晰&#xff0c;分享给大家。先奉上GitHub地址&#xff1a;https://github.com/graykode/nlp-roadmapnlp-roadm…

Go在windows10 64位上安装过程

1. 从 https://golang.org/dl/ 下载最新的发布版本go1.10即go1.10.windows-amd64.msi; 2. 双击go1.10.windows-amd64.msi ,使用默认选项&#xff0c;默认会安装到C:\Go目录下&#xff1b; 3. 将C:\Go\bin目录添加到系统环境变量中(默认已自动添加)&#xff0c;此目录下有go.exe…

Windows SharePoint Services 3.0 应用程序模板

微软发布的一些WSS模板&#xff0c;看了一下&#xff0c;跟以前看到的模板好像不同模板分两类&#xff0c;一类是站点管理模板&#xff0c;一类是服务器管理模板站点管理模板&#xff1a;董事会、业务绩效报告、政府机构案例管理、课堂管理、临床试验启动和管理、竞争性分析站点…

HAProxy+Keepalived高可用负载均衡配置

一、系统环境&#xff1a;系统版本&#xff1a;CentOS5.5 x86_64master_ip:172.20.27.40backup_ip:172.20.27.50 vip:172.20.27.200web_1: 172.20.27.90web_2:172.20.27.100二、haproxy安装&#xff1a;1.首先172.20.27.40安装上安装&#xff1a;1.1安装 tar zxvf haproxy-1.3.…

Go在Ubuntu 14.04 64位上的安装过程

1. 从 https://golang.org/dl/ 或 https://studygolang.com/dl 下载最新的发布版本go1.10即go1.10.linux-amd64.tar.gz&#xff1b; 2. 将下载的tar包解压缩到/usr/local目录下&#xff0c;执行以下命令&#xff0c;结果如下&#xff1a; $ sudo tar -C /usr/local -xzf go1.…