首页科技 › 干货 | 地平线:面向低功耗 AI 芯片上视觉任务的神经网络设计 | 职播间第 2 期

干货 | 地平线:面向低功耗 AI 芯片上视觉任务的神经网络设计 | 职播间第 2 期

原标题:干货 | 地平线:面向低功耗 AI 芯片上视觉任务的神经网络设计 |
职播间第 2 期

昨天下午,地平线在北京举办了一场芯片发布会,正式发布了两款芯片,分别命名为征程和旭日。在创业之初就定下目标想成为人工智能界的“Intel
Inside”,在两年半的时候里发布量产流片,对于余凯来说,这个速度不可谓不快。

AI 科技评论按:随着这几年神经网络和硬件(GPU)的迅猛发展,深度学习在包括互联网,金融,驾驶,安防等很多行业都得到了广泛的应用。然而在实际部署的时候,许多场景例如无人驾驶,安防等对设备在功耗,成本,散热性等方面都有额外的限制,导致了无法大规模应用深度学习解决方案。

图片 1地平线创始人余凯

近日,在雷锋网 AI 研习社第 2
期职播间上,地平线初创人员黄李超就介绍了 AI
芯片的背景以及怎么从算法角度去设计适合嵌入式平台高效的神经网络模型,并应用于视觉任务中。之后地平线的
HR
也进行了招聘宣讲,并为大家进行了招聘解读。公开课回放视频网址:

两款视觉芯片,分别面向智能驾驶与智能摄像头

黄李超:本科毕业于中山大学,在帝国理工硕士毕业之后于
2014
年加入了百度深度学习研究院,期间研发了最早的基于全卷积网络的目标检测算法——DenseBox,并在
KITTI、FDDB 等特定物体检测数据集上长期保持第一名。 2015
年,他作为初创人员加入地平线,现研究方向包括深度学习系统研发,以及计算机视觉中物体检测,语义分割等方向。

这次发布的两款芯片应用场景有所不同。

分享主题:面向低功耗 AI
芯片上视觉任务的神经网络设计

旭日是面向智能摄像头,核心技术在于通过深度学习算法来实现前端的人脸检测跟踪、视频结构化处理。根据地平线的规划,这款芯片将会主要用在智能城市、智能商业这两个场景下,主要是应用于安防等领域。这并不是车云菌主要关注的领域,因而这块芯片在本文也将不会更多展开讨论。

分享提纲

图片 2征程1.0处理器

  1. 介绍当前 AI
    芯片概况,包括现有的深度学习硬件发展情况,以及为何要为神经网络去设计专用芯片。
  2. 从算法角度,讲解如何设计高性能的神经网络结构,使其既满足嵌入式设备的低功耗要求,又满足应用场景下的性能要求。
  3. 分享高性价比的神经网络,在计算机视觉领域的应用,包括实时的物体检测,语义分割等。
  4. 地平线 2019 年最全的校招政策解读。

征程是今天的主要讨论对象。根据余凯的介绍,征程是面向智能驾驶,同样是嵌入式人工智能视觉芯片,能够实现行人、机动车、非机动车、车道线、交通标志、红绿灯等多种目标的实施检测与识别,目前可以支持L2级自动驾驶技术,也就是ADAS。

雷锋网 AI
研习社将其分享内容整理如下:

从介绍的性能来看,征程的功耗为1.5W,延时小于30ms,采用14*14mm*规格的封装,能够实时处理1080P@30帧的画面,对于每帧画面中最多能够同时对200个目标进行检测与识别。据地平线首席芯片架构师周峰的介绍,当画面中目标数量过多,超过200个时,芯片会自动降低帧频,从30帧降低到15帧。在发布会后的采访中,余凯表示,芯片已经推出量产流片,达到了量产状态。

今天,我将从以下三个方面来进行分享:

周峰在介绍中提到,地平线目前推出的嵌入式芯片是介于通用处理器(诸如CPU、GPU等)和专用功能芯片之间的一类芯片,可编程,基于地平线的高斯架构进行设计。目前的1.0产品支持4路视频信号接入。

第一,当前 AI 芯片发展的现状。这里的 AI
芯片并不是单指狭义的 AI 专用芯片,而是指广义上包括 GPU 在内所有可以承载
AI 运算的硬件平台。

图片 3目标识别效果展示

第二,在嵌入式设备的环境下如何设计高效的神经网络。这里我使用的案例都选自业界中比较重要的一些工作——也有一部分来自我们的地平线。同时这一节大部分的工作都已经落地到实际应用场景。

在今年初的CES上,地平线与现在已经成为投资方之一的英特尔共同展示了一款ADAS产品,就是将地平线自己开发高斯架构IP搭载在英特尔的FPGA平台上进行实现的。周峰告诉车云菌,这次推出的芯片就是当初合作探索的量产版。这也是地平线硬件开发的流程:在架构上,地平线会与英特尔进行联合开发,IP设计完成后,先搭载在英特尔的FPGA平台上进行测试验证,而后再到地平线自己的平台上进行部署,量产推出。

第三,算法+硬件在计算机应用上的一些成果。

需要特别提出的是,目前的征程1.0处理器并非是车规级的L2自动驾驶芯片,而是工业级芯片。余凯表示1.0会主打后市场应用,而非与车企合作。不过,余凯并没有介绍在后装市场是否有正在落地的合作项目。

介绍 AI 芯片之前,先介绍 AI
的大环境。大家都知道现在是机器学习时代,其中最具代表性的是深度学习,它大大促进图像、语音、自然语言处理方面的发展,同时也给很多行业带来了社会级的影响。例如在社交网络的推荐系统、自动驾驶、医疗图像等领域,都用到了神经图像技术,其中,在图像医疗,机器的准确率甚至大大超过了人类。

至于车规级芯片,地平线未来会与英特尔联合进行开发,但是鉴于车规级的高成本与长开发周期,因而目前地平线尚没有具体的规划可以对外公布。在下个月的CES上,地平线会与英特尔推出基于第二代架构——伯努利架构的升级版,增加对目标的动态预测功能。从当前进展来看,这个升级版依然不会是车规级产品。

图片 4

从工业级到车规级有多远?

从整个互联网发展的情况来看,我们先后经历了 PC
互联网、移动互联网时代,而接下来我们最有可能进入一个智能万物互联的时代。PC
时代主要解决信息的联通问题,移动互联网时代则让通讯设备小型化,让信息联通变得触手可及。我相信在未来,所有的设备除了能够互联之外,还能拥有智能:即设备能够自主感知环节,并且能根据环境做出判断和控制。现在我们其实看到了很多未来的雏形,比如无人车、无人机、人脸开卡支付等等。不过,要让所有设备都拥有智能,自然会对人工智能这一方向提出更多要求,迎接更多的挑战,包括算法、硬件等方面。

在这次发布会上,余凯宣布了地平线的几个新的合作对象,在汽车行业,是两家整车企业——长安与奥迪:与长安将会共同开发适合中国场景的自动驾驶技术;与奥迪在面向中国的自动驾驶技术之外,还会有全球范围内的技术合作,在2018年会有产品问世。

大规模运用深度学习需要去应对很多挑战。首先从算法和软件上看,如果把
AI
和深度学习用在某个行业中,需要对这个行业的场景有深入的理解。场景中也有很多痛点需要去解决,但是是否一定要用深度学习去解决呢?在特定场景下,往往需要具备能耗比、性价比的解决方案,而不是一个仅仅能够刷数据集的算法。随着这几年算法的快速发展,人们对
AI
的期望也在不断提高,算法的发展是否能跟上大家的期望,这也是一个问题。

关于这两家整车企业的合作,在发布会后的采访中,余凯并没有详细介绍,只是告诉车云菌,目前的合作还都是基于软件算法层面的,“在软件的框架,我们互相都磨得差不多了以后,我们就思考硬件,然后再开始投入”。不过对于车企而言,一旦提到量产阶段,可控与稳定必然是追求的重点。从当前车企与初创企业的合作来看,大多还是在技术预研层面,在量产开发上,传统供应商依然具备极大的优势。

从硬件上看,当前硬件的发展已经难以匹配当前深度学习对于计算资源的需求,特别是在一些应用场景中,成本和功耗都是受限的,缺少低成本、低功耗、高性能的硬件平台直接制约了
AI
技术和深度学习方案的大规模应用,这也是我们地平线致力于解决的行业难题。

能够看到,短期内,尤其是在车规级产品的开发阶段,地平线在汽车行业的合作依然会以软件层面为主。而之所以坚持要做硬件开发,余凯表示,“自动驾驶技术一定是软件和硬件的深度结合,如果不能深度结合的话,效率会不高,所以半导体企业一定要软件化,从软件去驱动硬件设计”。

当前 AI 芯片发展的现状

从整体上来看,未来的地平线产品会包括IP、处理器和面向应用的整体解决方案三个部分,分别对应不同需求的合作对象。从整体解决方案来说,地平线也有在同步开发的雨果平台,根据官方提供的资料,目前的征程系列从性能上来看,应该是对应雨果2.0平台。不过,车云菌此前了解到,目前的雨果平台是基于FPGA进行开发,后续的平台还在开发中。

接下来我们介绍一下 AI
硬件的一些情况。大家都知道,最早神经网络是运行在 CPU 上的。但是 CPU
并不能非常高效地去运行神经网络,因为 CPU
是为通用计算而设计的,而且其计算方式以串行为主——虽然一些运行指令可以同时处理较多数据。除此之外,CPU
在设计上也花了很多精力去优化多级缓存,使得程序能够相对高效地读写数据,但是这种缓存设计对神经网络来讲并没有太大的必要。另外,CPU
上也做了很多其他优化,如分支预测等,这些都是让通用的运算更加高效,但是对神经网络来说都是额外的开销。所以神经网络适合用什么样的硬件结构呢?

要从工业级到车规级,对于地平线而言,要解决的问题还有很多。

图片 5

首先是数据问题。车规级不仅对硬件提出了更高的要求,对于软件算法也是同样。地平线的软硬件方案均是针对视觉,而软件算法要达到良好的效果需要有大量的数据积累。此前受限于政策问题,国内无法上路进行测试。而地平线目前正在与上海汽车城合作的一键泊车项目中,也是更多侧重在车辆定位。因而在算法层面,依然要经过大量的数据考验。目前地平线还没有开始大规模的上路测试,无论是从自身还是合作对象上,这一点或许与奥迪和长安的合作对于地平线而言,是个契机。

在讲这个问题之前,我们先从神经网络的特性说起:

其次,是硬件产品。硬件与软件不同,除了研发上需要更大的投入和更大的难度之外,硬件产品如果在发布之后发现bug,受到的影响也会更大,因而更加考验整体实力。更何况,对于初创企业来说,开发工具、品控、售后、大规模量产支持这些问题,都是车企和供应商在选择合作伙伴时候会着重考虑的。对于目前尚且没有开始量产供应的地平线来说,都是需要去逐一解决的。

第一,神经网络的运算具有大规模的并行性,要求每个神经元都可以独立并行计算;

车云小结

第二,神经网络运算的基本单元主要还是相乘累加,这就要求硬件必须有足够多的运算单元;

在这一场特别有苹果范儿的发布会上,余凯在最开始就表达出了地平线的野心:到2025年,地平线成立十周年,国内预计将有3000万台具备自动驾驶能力的车辆行驶在道路上,他希望这些车辆使用的都是地平线的芯片。

第三,神经元每一次运算都会产生很多中间结果,这些中间结果最后并不会复用,这就要求设备有足够的带宽。一个理想的设备,它应该有就比较大的片上存储,并且带宽也要足够,这样才能放下网络的权重和网络的输入;

如果以2020年为自动驾驶车辆上路的起始来看,现在这些车辆都已经进入了开发流程。那么地平线至少要在2018年有一款可以面向前装的IP,才可以开始前期的开发测试等一系列工作。从目前这个进展来看,稍微就显得有些慢。

第四,由于神经网络对计算的精度并没有那么敏感,所以在硬件设计的时候可以使用更简单的数据类型,比如整型或者
16bit 的浮点数。因此,这几年大家使用的神经网络解决方案,都是
CPU+比较适合于神经网络运算的硬件(可以是 GPU、DSP、FPGA、TPU、ASIC
等)组成异构的计算平台。

更不提无论是算法还是硬件,都有初创企业和传统供应商在严阵以待。竞争格局其实十分激烈。有英特尔这个合作伙伴,在车规级产品开发、代工等方面会给地平线带来优势,但是后续的产品推向市场,依然要看整体实力。推出硬件产品,仅仅是个开始。

最常用的方案是
CPU+GPU,这个是深度学习训练的一个标配
,好处是算力和吞吐量大,而且编程比较容易,但是它存在的问题是,GPU
的功耗比较高,延迟比较大,特别是在应用部署领域的场景下,几乎没有人会用服务器级别的
GPU。

图片 6

应用场景下用的更多的方案是 FPGA 或者
DSP
,它们功耗比 GPU
低很多,但是相对的开发成本较大。DSP 依赖专用的指令集,它也会随着 DSP
的型号变化有所差异。FPGA
则是用硬件语言去开发,开发难度会更大。其实也有一起企业会用 CPU+FPGA
去搭建训练平台,来缓解 GPU 训练部署的功耗问题。

虽然刚刚提了很多神经网络加速的解决方案,但是最合适的还是 CPU+专用芯片。我们需要专用 AI 芯片的主要原因是:
虽然现在的硬件工艺不断在发展,但是发展的速度很难满足深度学习对计算力的需求。其中,最重要有两点:

第一,过去人们认为晶体管的尺寸变小,功耗也会变小,所以在相同面积下,它的功耗能保持基本不变,但其实这条定律在
2006 年的时候就已经终结了

第二点,我们熟悉的摩尔定律其实在这几年也已经终结了。

我们可以看到芯片在这几年工艺的发展变得越来越慢,因此我们需要依靠专门的芯片架构去提升神经网络对计算平台的需求。

图片 7

最著名的的一个例子就是 Google 的
TPU,第一版在 2013 年开始开发,历时大约 15 个月。TPU
里面使用了大量乘法单元,有 256*256 个 8 位的乘法器;片上有 28MB
的缓存,能够存储网络的参数和输入。同时,TPU 上的数据和指令经过 PCN
总线一起发过来,然后经过片上内存重新排布,最后计算完放回缓冲区,最后直接输出。第一版
TPU 有 92TOPS
的运算能力,但是只针对于神经网络的前向预测,支持的网络类型也很有限,主要以多层感知器为主。

而在第二版的 TPU
里面,已经能够支持训练、预测,也能够使用浮点数进行训练,单个 TPU 就有
45TFLOPS 的算力,比 GPU 要大得多。

图片 8

其实我们地平线也研发了专用的 AI
芯片,叫做 BPU,第一代从 2015 年开始设计,到 2017
年最终流片回来,有两个系列——旭日和征程系列,都针对图像和视频任务的计算,包括图像分类、物体检测、在线跟踪等,作为一个神经网络协处理器,侧重于嵌入式的高性能、低功耗、低成本的方案。

图片 9

比较值得一提的是,我们在我们的 BPU
架构上设计了弹性的 Tensor
Core,它能够把图像计算所需要的基本单元,常用操作例如卷积、Pooling
等硬件化,非常高效地去执行这些操作。中间通过数据路由桥(Data Routing
Bridge)从片上读取数据,并负责数据的传输和调度,同时,整个数据存储资源和计算资源都可以通过编辑器输出的指令来执行调度,从而实现更灵活地算法,包括各种类型的模型结构以及不同的任务。

总的来说,CPU+专用硬件是当前神经网络加速的一个较好的解决方案。针对专用硬件,我们可以根据功耗、开发容易度和灵活性进行排序,其能耗跟其他两者(开发容易度和灵活性)是相互矛盾的——芯片的能效比非常高,但是它的开发难度和灵活度最低。

如何设计高效的神经网络

说了这么多硬件知识,接下来我们讨论怎么样从算法角度,也就是从神经网络设计的角度去谈怎么加速神经网络。相信这个也是大家比较关心的问题。

我们先看 AI
解决方案,它从数据处理的方式可以分为云端 AI 和前端 AI。云端 AI
是说我们把计算放在远程服务器上去执行,然后把结果传到本地,这个就要求设备能够时刻连接网络。前端
AI
是指设备本身就能够进行计算,不需要联网,其在安全性、实时性、适用性都会比云端
AI 更有优势,而有一些场景下,也只能使用嵌入式的前端 AI 去解决。

嵌入式前端的场景落地难点在于功耗、成本和算力都是有限的。以网络摄像头即
IP Camera 为例,它通过网线供电,所以功耗只有 12.5 瓦,而常用的嵌入式
GPU——Nvidia TX2,为 10-15 瓦。另外这个 TX2
虽然在计算资源、算力方面都比较强,能达到 1.5T,但它的价格是 400
美元,对于很多嵌入式方案来说都是不可接受的。因此要做好前端嵌入式方案,我们需要在给定的功耗、算力下,最大限度地去优化算法和神经网络模型,达到符合场景落地的需求。

图片 10

我们加速神经网络的最终目标是:让网络在保持不错的性能下,尽量去降低计算代价和带宽需求。常用的一些方法有:网络量化、网络减支和参数共享、知识蒸馏以及模型结构优化,其中,量化和模型结构优化是目前看来最有效的方式,在业界也得到比较广泛的应用。接下来会重点讲一下这几个方法。

第一个是量化,它是指将连续的变量通过近似从而离散化。其实在计算机中,所有的数值表示都是离散化的,包括浮点数等,但是神经网络中的量化,是指用更低
bit 的数字去运行神经网络,而是不是直接使用 32bit
的浮点数(去运行神经网络)。近几年的一些研究发现,其实数值表达的精度对神经网络并没有太大的影响,所以常用的做法是使用
16bit 的浮点数去代替 32bit
的浮点数来进行计算,包括训练和前项预测。这个在 GPU 以及 Google 的 TPU
第二代中已经被广泛采用。此外,我们甚至发现,用半精度浮点数去训练数据,有时候还能得到更好的识别性能。实际上,量化本身就是对数据集正则化的一种方式,可以增加模型的泛化能力。

图片 11

此外,我们还可以将数据精度进行进一步压缩使用,将
8 bit 的整数作为计算的计算单元,包括训练和前项预测,这样带宽就只有 32bit
浮点数的四分之一,这类方法近年来也有不少工作,且已被业界所采用,比如
Tensorflow Lite 已经支持训练时模拟 8bit 整数的运算,部署时真正采用 8 bit
整数去代替,其在浮点和图像分类的性能上相当。我们地平线也有类似的工作,训练工具也是用
Int 8 bit 去训练、预测,并且我们的芯片支持 MXNet 和 TensorFlow
框架训练出来的模型。

能不能把精度压得更低呢,4 bit、2bit 甚至
1 bit?也是有的,但是会带来精度的极大损失,所以没被采用。

量化神经网络模型分为神经网络的权重量化、神经网络特征的量化。权重量化对于结果输出的损失比较小,特征量化其实对模型的输出损失会比较大,另外,大模型和小模型的量化造成的损失也不一样,大模型如
VGG16、AlexNet
这种网络模型,量化后几乎没有损失;而小模型则会有一些损失。现在 8bit
参数和特征量化可以说是一个比较成熟的方案,基本上可以做到跟浮点一样好,并且对硬件也更加友好。下面这个表,是在
Image Net 数据集上的进行的量化结果的评测,也是 Google Tensorflow Lite
的量化方案与我们地平线内部的量化方案的一个对比。

图片 12

我们可以看到,无论是哪一家的方案,损失其实都非常小,其中,小模型
MobileNet 0.25 在 Image Net 的损失方面,Google 在 1.6%
左右,而我们的量化方案能够维持在 0.5% 以内。同时我们这个量化方案在 2016
年就已经成熟了,而 Google
的去年才放出来,从这个角度上讲,我们这方面在业界内是领先的。

除了量化,模型加速还可以通过模型剪枝和参数共享实现。一个典型的案例就是韩松博士的代表性工作——Deep
Compression。减支可以是对整个卷积核、卷积核中的某些通道以及卷积核内部任意权重的剪枝,这里就不多说,大家有兴趣可以去看一下原论文。

图片 13

与网络量化相比,剪枝和参数共享从应用角度上来看,并非一个好的解决方案。因为关于剪枝方面的研究,现在这些论文在大模型上做的比较多,所以在大模型上效果比较好,但是在小模型上的损失比较大,当然我们这里说的小模型是比
MobileNet
等模型更小的一些模型。另外,剪枝所带来的数据稀疏(任意结构稀疏),通常需要一个明显的稀疏比例才能带来一个实质性的的加速。结构化的稀疏加速比相对更容易达到,但是结构化的稀疏比较难训练。同时从硬件角度上讲,如果要高效地运行稀疏化的网络结构或者带共享的网络,就要专门设计硬件去支持它,而这个开发成本也比较高。

知识蒸馏也是很常用的压缩模型方法,它的思想很想简单,用一个小模型去学习一个大模型,从而让小模型也能实现大模型的效果,大模型在这里一般叫
Teacher net,小模型叫 Student
net,学习的目标包括最终输出层,网络中间的特征结果,以及网络的连接方式等。知识蒸馏本质上是一种迁移学习,只能起到锦上添花的作用,比直接用数据去训练小模型的效果要好。

图片 14

最后讲一讲模型结构优化,它是对模型加速最有效的方式。下图可以看到从最初的 AlexNet 到今年的
MobileNetV2,参数已经从原来的 240MB 缩小到
35MB,模型的计算量也有了一定的减少,但是在图像分类的准确率上,从 57%
提到到了
75%,模型结构优化最直接的方式就是,有经验的工程师去探索小模型结构,而这些年来也有通过机器去进行搜索模型结构的工作。

图片 15

接下来讲一下在模型结构优化中,怎么去设计一个高效的神经网络结构,它需要遵循的一些基本原则。

图片 16

首先,要纠正几个误区:第一,是不是小模型跑得比大模型快?这个显然是不成立,我们可以看下图中
Google Net 和 AlexNet 箭头指向的方向,AlexNet 显然大一些,但它比 Google
Net
跑得快一些,计算量更小一些。第二,网络计算量小是不是就跑得更快呢?其实也不是,因为最终的运行速度取决于计算量和带宽,计算量只是决定运行速度的一个因素。

图片 17

所以说,一个好的、跑起来比较快的神经网络结构,必须要平衡计算量和带宽的需求,这里我们跟随
ShuffleNetV2
论文的一些观点——虽然这个并不是我们的工作,但是文章写得很好,其中有不少观点也和我们在模型结构优化过程中得到的一些结论是一样的。在分析的时候,我们以
1x1
的卷积为例,假设所有的参数和输入输出特征都可以被放到缓存当中,我们需要特别关注的是卷积的计算量——用
FLOPs(Float-Point Operations) 即浮点数的操作次数去表述,带宽用
MAC(Memorry Access Cost)
即内存访问的次数去表示。同时,我们需要额外关注的是带宽和计算量的比。对于嵌入式的设备来讲,带宽往往是瓶颈。拿
Nvidia 的嵌入式平台 TX2 为例,它的带宽比上计算力大概是 1:26。

图片 18

第一,要分析一下输入通道数、输出通道数以及输入大小对带宽和计算量的影响,ShuffleNetV2
提出的准则第一条是,在同等的计算量下、输入通道数和输出通道数下,带宽是最节省的
,公式为:

图片 19

。其实输入通道、输出通道和输入大小任意一个过小的话,对带宽都会产生不友好的影响,并且会花很多时间去读取参数而不是真正去计算。

图片 20

第二,卷积中 Group
的个数又对性能有什么影响呢?ShuffleNetV2 这篇文章指出,过多的 Group
个数会增加单位计算量的带宽,我们可以看到计算量的带宽和 Group
的个数近似为正比
。从这一点上来看,MobileNet 里头的 Depthwise
Convolution
实际上是一个带宽需求量非常大的操作,因为带宽和计算量的比值接近于
2。而实际运用的时候,只要带宽允许,我们还是可以适当增加 GROUP
个数来节省计算量,因为很多时候,带宽实际上是没有跑满的。

图片 21

第三,ShuffleNetV2
说到的第三条准则是,过度的网络碎片化会降低硬件的并行度,这就是说,我们需要思考
operator 的个数对于最后运行速度的影响
。其实 ShuffleNetV2
这种观点不够严谨,准确来说,我们需要把 operator
分为两类:一类是可以并行的(如左图),两个框可以并行计算,concat
的内存也可以提前分配好;另一类是必须串行去进行计算,没有办法并行的
operator 则会降低硬件的并行度。对于硬件来说,可以并行的 operator
可以通过指令调度来充分利用硬件的并行能力。从这条准测上看,DenseNet
这种网络结构在应用实际上非常不友好。它每次的卷积操作计算量很小,而且每次计算需要依赖先前所有的结果,操作之间不能并行化,跑起来很慢。另外,太深的网络跑起来也比较慢。

最后,ShuffleNetV2 也指出,Element-wise
对于速度的影响也是不可忽视的
——一定程度上可以这么说。因为 Element-wise
虽然计算量很小,但是它的带宽需求比较大。其实如果把 Element-wise
的操作和卷积结合在一起,那么 Element-wise
的操作对最后带宽带来的影响几乎为
0。常用的例子是,我们可以把卷积、激活函数和 BN
放在一起,这样的话,数据可以只读一次。

讲到这里,我们做一下总结,设计高效的神经网络,我们需要尽可能让 operator
做并行化计算,同时去减少带宽的需求
,因为最后的速度由带宽和计算量共同决定的,所以这两者哪个存在瓶颈,都会制约运行速度。

高效神经网络的自动设计

过去优化神经网络结构往往依靠非常有经验的工程师去调参,我们能不能直接让机器去自动搜寻网络结构呢?

图片 22

其实也是可以的,比如说 Google
前段时间进行一项工作叫
NASNet,就是通过强化学习,把图像分类的准确率和网络本身的计算量作为反馈,去训练网络结构生成器,让网络结构生成器去生成比较好的网络结构。

图片 23

Google 的这项工作大概用了 450 GPUs 和 4
天,搜索出了性能和计算量都还不错的网络结构,这两个图是网络结构的基本单元。然而,通过我们之前的分析,它这两个基本单元肯定是跑不快的,因为操作太零碎,而且很多操作没有办法并行。所以对于搜索网络结构,考虑真实的运行速度是一个更合适的选择。所以就有了后续的工作,叫做
MnasNet。

图片 24

Google
这次直接把手机上的运行速度作为强化网络的反馈。我们可以看到用这种方法搜索出来的网络结构合理很多,同时性能也比之前稍微好一些。

图片 25

在同时期,我们也有进行了类似的工作——RENAS,它实际上借鉴了
NASNet,但我们侧重于去解决搜索效率低下的问题。和 NASNet
不同,我们采用进化算法搜索网络结构,同时用强化学习去学习进化的策略。工作方式的链接放在上面,大家感兴趣也可以去看一下。

图片 26

RENAS
的一个优点是,它的网络搜索的效率要高得多:我们用了 4GPU 和 1.5
天就搜出比 NASNet 更好的结构。不过它的缺点也跟 NASNet
一样,都用了计算量作为一个衡量指标,因此它搜索出来的所有结果只是计算量低,但是运行速度并不一定特别快。

算法+硬件在计算机应用上的一些成果

讲了这么多,最后我们可以展示一下,经过优化后的网络在主流视觉任务上的应用效果:

最常见的图像级别的感知任务比如图像分类、人脸识别等,由于它们输入比较小,所以整体计算量并不大,对于网路的效率要求也没有那么苛刻。而在图像分类以外的工作比如物体检测
语义分割等等,它们的输入比图像分类大得多,往往在 1280x720
这种分辨率或者更大的分辨率。MobileNet 或者 ShuffleNet
在这个分辨率下的计算量,还是挺高的。另外在物体检测、语义分割的问题当中,尺度是一个要考虑的因素,所以我们在设计网络的时候,要针对尺度问题做一些额外的配置,包括并引入更多分支,调整合适的感受野等等。

图片 27

对于物体检测、语义分割任务,我们专门设置了一个网络结构,它的大概样子如上图中的右图所示,特点是我们使用了很多跨尺度的特征融合模块,使网络能够处理不同尺度的物体,另外,我们这个网络的基本单元都遵循了简单、高效的原则,用硬件最友好、最容易实现的操作去组建基本模块。

图片 28

我们在一些公开数据集上测试了这个模型的性能,主要有两个数据集,一个是
Cityscapes,它是语义分割数据集,图像分辨率很大,原始图像分辨率为
2048x1024,标注有 19 类。在这些数据集上,我们的网络跟旷世最新的一篇论文
BiSeNet 做比较——BiSeNet
是目前能够找到的在语义分割领域中速度最快的一个方法,它的计算在右边的表格中,其中的计算模型*Xception39
在 640x320 的分辨率,大概需要 2.9G
的计算量,而我们的一个小模型在同等规模的输入下,达到几乎一样的效果,只需要
0.55G 的计算量。

同时,在性能上,——语义分割里面我们用 mIoU
作为指标,在 2048x1 024 的分辨率下,我们稍微大一点点的网络跟 Xception39
非常接近。我们的网络还在 KITTI 数据集上做了一个测试,它的分辨率大概为
1300x300 多,特别是车和人的检测任务上所表现出来的性能,和 Faster
RCNN,SSD,YOLO 等常见的方法的模型相比,具有非常高的性价比。

下面展示一下我们算法在 FPGA
平台上实施的一个 Demo。

我们这个网络同时去做物体检测和语义分割,以及人体姿态估计。FPGA
也是我们第二代芯片的一个原型,第二代芯片年底会流片回来,单块芯片性能会是
FPGA 这个平台的 2-4
倍。这个数据是在美国的拉斯维加斯采集的,除了人体姿态的检测,我们还做了车载三维关键点定位,它的运行速度可以达到实时,也作为我们重要的产品在车厂中使用。Demo
只是我们工作的冰山一角,我们还有很多其他的方向的工作,比如智能摄像头、商业场景下的应用,目标是为万物赋予智能,从而让我们的生活更美好。这是我们的宣传片,相信大家在进职播间的时候都已经看过了。

最后回归本次做直播的一项非常重要的目的——校招。我们今年的校招马上要开始了,接下来由
HR 姐姐来介绍一下地平线招聘的情况。

地平线 2019
年最全的校招政策解读

大家好,我是地平线负责招聘的 HR
赵红娟,接下来我来整体介绍一下公司的情况以及校招流程。

地平线(「公司」)是国际领先的嵌入式人工智能(「AI」)平台的提供商。公司基于自主研发人工智能芯片和算法软件,以智能驾驶,智慧城市和智慧零售为主要应用场景,提供给客户开放的软硬件平台和应用解决方案。经过三年的发展,地平线现在有
700-800 的正式员工,加上实习生,大概有 900 人左右。同时,公司 70%
多的员工都是研发人员,我们的平均工业界经验为 7 年左右。

我们公司的技术团队实力雄厚,除了国内的各大厂之外,同时也有来自如
Facebook、华为、高通等国际知名企业的成员。目前,我们的业务横跨「软+硬,端+云」领域,后续会持续深耕嵌入式人工智能。

目前,我们也对已经确立的业务方向内部做了一个总结归类,叫「一核三翼」,「核」是指我们的芯片,应用到智能驾驶、智慧城市和智慧零售三个领域。其中,智慧城市主要是泛安防领域——这是一个非常有潜力的市场,而我们的智慧零售的具体方向是基于我们嵌入式人工智能芯片技术,将线下零售数据线上化、数据化,为零售管理者提供多层次解决方案。

下面进入关键点,即我们希望什么样的同学加入?用几个词来概括就是:Dedicated、
Hands-on、 Team working。

我们能够提供给大家什么呢?这也是大家比较感兴趣的点。我将从职位、工作地点和福利三个方向讲一下。

职位方向有算法、软件、芯片、硬件、产品五大方向。

工作地点,总部在北京,同时在、南京、上海、厦门、深圳、杭州、硅谷都有
office,大家可以选择自己喜欢的城市。

福利则包括:

  1. 拿到校招 Offer
    的同学,毕业前能来地平线实习,可以享受到跟毕业以后正式员工相同的薪酬标准;

2.
试用期结束以后,所有毕业生统一组织转正答辩,根据转正答辩成绩有推荐大家去参加各种国际顶级会议,或者前往硅谷工作或参观等诸多开眼界的机会。

3.
针对大家从学生到职场人的转型,我们会提供升级版地平线大学,助力职业生涯发展。地平线大学分为必修课和选修课,同时会有常用的礼仪方面的培训

4.
其他福利其他公司可能都有,但是我们公司会更贴心,比如电竞椅、升降桌,补充医疗、入职&年度体检、全天零食供应、餐补、交通补、租房补贴、带薪年假
10 天、产假 6 个月、陪产假 15 天、多彩
offsite、各种兴趣社团等等。

最后,我们附上校招通关秘籍:

图片 29

宣讲学校:东南大学、哈尔滨工业大学、华中科技大学、南京大学、清华大学、上海交通大学、西安交通大学、浙江大学、中国科学技术大学和
中国科学院大学等十所学校。

校招流程:宣讲会当天笔试,当晚出笔试成绩,隔天进行面试,面试通过就会发录用意向书,十一后发正式
Offer。

简历投递方式:包括网申和宣讲会现场投简历。

总之,地平线非常重视校招生及其培养,希望给大家更好的发展空间,培养一代又一代的地平线人,为公司创造更大的价值,为科技进步贡献自己的力量!

下面是中科院站的宣讲群二维码,欢迎同学们前来围观。

分享结束后,两位嘉宾还对同学们提出的问题进行了回答,大家可以点击文末阅读原文移步社区进行详细了解。

以上就是本期嘉宾的全部分享内容。更多公开课视频请到雷锋网
AI 研习社社区观看。关注微信公众号:AI
研习社(okweiwu),可获取最新公开课直播时间预告。返回搜狐,查看更多

责任编辑:

转载本站文章请注明出处:亚洲城手机客户端登录 https://www.little-lily.com/?p=4668

上一篇:

下一篇:

相关文章