0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

行业 | 当Faster RCNN遇到FPGA,自动驾驶开始起飞!

ml8z_IV_Technol 来源:YXQ 2019-06-28 14:03 次阅读

当今的自动驾驶行业是一个百舸争流的局面,总体来看,还是西方引导东方的探索摸索,以 google 为主的以激光雷达为主的流派和以 Tesla 为主的机器视觉流派引导了整个市场。从发展趋势来看,两种方法正在进一步融合,最终会各取优势而相互补充发展。对整个自动驾驶领域,其核心技术是个拟人化的实现过程,即:感知->认知->决策->控制->执行五部分。感知,是所有智能体所要拥有的基本属性,自动驾驶要解决的第一个问题,就是汽车的感知系统,AI 算法的核心就是要解决感知问题。汽车的感知系统是多种传感器融合的系统。

图 1 自动驾驶技术框架图 来源:亿欧智库

如上图所示,多传感器融合共同组成自动驾驶的感知层已经成为行业共识,这是一个复杂的技术体系,本文主要讨论最主要的感知部分:机器视觉,以摄像头为主的计算机视觉解决方案,为汽车加上「眼睛」,能有效识别周边环境及物体属性。随着 AI 算法的蓬勃发展, 机器视觉由基于规则向基于 CNN 神经网络转变。

图 2 汽车传感器示意图 来源:亿欧智库

国内的主要发展方向集中在视觉上的突破,一种原因是激光雷达和毫米波雷达被国外几个大公司控制,核心技术短期内难以突破,成本居高不下。而做机器视觉, 则成本低廉,且容易上手,国内摄像头的供应链很完善,所以在这种情况下,国内厂商更倾向于 CNN 网络的机器视觉能做更多的事情,其实这种选择是正确的,国内厂商突破的最好的一个点就是视觉突破,视觉方案相对成熟和完善,可以利用国内的一些特点,找到差异化竞争的突破口,快速形成优势,再逐步迭代更新技术。如开车时任意变道的行为,这个国外的汽车检测方式是等尾部进入车道内再进行检测,这明显不符合国情,所以算法本土化,解决国人开车遇到的问题,就是差异化竞争,这也更需要对算法有自己的把控能力。

车载系统对 CNN 网络的目标检测识别的要求是很高的,而且越高越好,这不仅仅是为了检测车道和障碍物,还会在自动驾驶中的另一个必不可少的条件:高精度地图上有巨大的利用空间。因为传统的地图模式无法满足自动驾驶的需求,它需要更多的维度信息,更新更及时,精度达到厘米级。精度要想达到厘米级,仅仅依靠卫星是远远不够的,目前两个解决方案,一个是 RTK 方案,即在地面上建立大量的基准站,由基准站来弥补 GNSS 定位的不足,这个方案精准,但却很贵。另外一个方案就是先将地图上的多维度信息保存到数据库,然后通过车载上的多传感器(摄像头,雷达)所获取到的特征信息和数据库进行匹配,从而修正和弥补定位的精度问题,毫无疑问,这个方案更加实用和快速部署。国内地图公司更倾向于用这种方式,这就更加要求摄像头检测物体特征精准度的问题了。

由算法的精度问题,不得不提算法的实现芯片方案,现在的精度最好的算法还是基于 CNN 的 AI 算法模型,CNN 算法要求的计算量是很大的,目前很多厂商都是直接用 nvidia 的 TX2 做为运算主要载体,在 TX2 上运行对 GPU 友好的算法,这里其实有个误区,当算法对 GPU 不友好时,就直接宣判了该算法的死刑,这样操作是不合理的,GPU 成了前进路上的一个拐杖,拐杖用的多了就产生了依赖性,反而丧失了发现更多空间的创造性,我们用两条腿走路,还是要回归到问题的本质,根据问题的具体需求来寻求最优的解决方案。自动驾驶车载系统的基本要求低延时低功耗 以及算法的复杂性和多变性,决定了用 FPGA 做车载加速方案是一个理想的选择。用 FPGA 做加速方案的另外一个不可忽视的好处是:成本可以做的很低。

所以机器视觉的好的方案已经不单单是好的算法,而是一个在合理的硬件成本里得到一个最优算法的求解问题。由算法来保证识别精度,由硬件来保证算法的实现速度,由成本来保证两者都需要性价比最优的搭配,这才是正确的解决思路。当然,想同时实现上述几点,并非易事。路,要一步一步的走,坑,要一个一个的趟,我们上述的问题一个一个的分析。

算法同源不同行,孰高孰低检测忙

在整个 AI 算法的大环境下,车载视觉系统的算法也是基于 CNN 的分割算法,这就引出目前主要的两个算法 Faster RCNN 系列和 yolo 系列,两者各有千秋,前者精度更准,后者速度更快。前者是 two-stage 的方案,即先用最好的网络来找出特征值,然后再调整框来检测目标。后者是 one-stage 的方案,即找特征值和画框在一个网络里完成。

通俗的理解,Faster RCNN 更符合人类「强强联合」的概念,即:找出目前性能最好的网络,然后再组装成一起,产生更优的效果,它是基于多网络融合的方案,所以它的特点就很明确:算的准,但是算的慢。yolo 的诞生,恰恰是解决了这个问题,yolo 的最大的特点就是快到没朋友,但在精度方面却逊色于 Faster RCNN。

数据对比:

图 3 Faster R-CNN 是精度最高的 来源:网络

COCO 数据集上,前 10 名中有 9 项都是来自于 Faster R-CNN 的变体。

这两种方法都有很多变体,one-stage 的方法在精度上不断想与 two-stage 的方法抗衡,two-stage 不断的在加快计算速度,但在数据集上的结论以及越来越快的 Faster R-CNN 变体的可以说明,Faster R-CNN 的 检测精度始终保持领先。但在速度上,yolo 是遥遥领先的。

图 4 yolo 的速度是最快的 来源:网络

正是 Yolo 在速度上明显提高,YOLO 的确受到车载系统的青睐,Yolo 真的是车载系统的首选吗?答案未必,正如上文所述,Faster RCNN 的精度是最好的,如果能将其速度也提上去,岂不是更好的选择。

为此,我们先分析下 Faster RCNN 精度高的原因:

首先,前景背景分离的区别。Faster RCNN 是有前景背景分离的。这会要求在训练该网络时需要进行正负样本都要训练,也就是说正确的范畴我要负责,错误的范畴我也要负责。这会大大减少误检率的概率,所以 Faster RCNN 的查全率(recall)会特别的高。

而 yolo 则没有这样的算法结构,它只有正样本训练,不会区分前景和背景的区别。其实这一点是对自动驾驶不太友好的,例如之前 Tesla 的自动驾驶事故就是因为检测算法没有区分前景和背景,将迎面开来的白色卡车和背景中的白云混为一体,从而导致事故发生。

其次,画框方式的区别。Faster RCNN 和画框的方式和 yolo 是不一样的,yolo 是将框的问题作为一个聚类问题解决,由算法去自适应物体形状。而 Faster RCNN 是按照一定规则的框去逼近物体形状。如下图所示,9 个矩形共有 3 种形状,长宽比为大约为(1:2,1:1,2:1)三种,通过 anchors 就引入了检测中常用到的多尺度方法。

图 5 框的类型 来源:网络

这种人为定义的框的结构更能精准的标定物体,当然,任何优势都是有代价的。Faster RCNN 为每一个点都配备这 9 种 anchors 作为初始的检测框,所以在原始图上,anchors 的个数特别多,然后让 cnn 来判断哪些是有目标的前景,哪些是没有目标的背景,然后再对目标 anchors 进行排序和 NMS(非最大值抑制),即能得到最好的效果。能量是守恒的,当获得优势 A 时,并将付出 B 的代价,关键看代价是什么。feature map 每个点设置 9 个 Anchor,所以他的 anchor 是很多的,如下图所示(网络截图):

图 6 anchor 的框图 来源:网络

当然,好处也是很明显的,举个例子,如下图:

图 7 框的平移转换示意图 来源:网络

每个 Anchor 的平移量和变换尺度,显然即可用来修正 Anchor 位置了。红色为提取的 foreground anchors,即便红色的框被分类器识别为飞机,但是由于红色的框定位不准,这张图相当于没有正确的检测出飞机,每个 Anchor 的平移量和变换尺度,即可用来修正 Anchor 位置了,表现结果即是由只标出主体的红框转换为标记更准的绿框,显然,绿框的精度更准。

相对来说,Yolo 系列不区分前景和背景,画框的方式也是做一个回归的问题,这会对密集的目标的画框方式导致不准,yolo 会把密集的目标会画成一个框。

图 8 yolo 密集目标检测 来源:雪湖实测

除了精度高之外,能做多网融合是 Faster RCNN 的另外一个很重要的特点。特别对于车载系统,由于现实的复制性和应用的广泛性,经常会需要添加不同的网络和良好的性能,如增加车道检测等,可以将不同的网络通过 interp(双线性插值)层来进行实现不同网络之间的平滑过渡。

利用这个特点,我们可以做很多启发性的探索,前面提到,多传感器融合来构建自动驾驶的感知层是行业共识,如激光雷达在自动驾驶中是个很核心的传感器,有没有将激光雷达和视觉同时融合到一个网络中的方案呢?有人提出这样的方案,如下:

图 9 用 FasterRCNN 来融合激光雷达和视觉算法 来源:网络

上图的方案,总体上沿用了 Faster RCNN 的检测框架,但是在输入、proposal 的形式以及 Faster RCNN 网络上做了较大的改动,以实现视觉与激光点云的信息融合。

这个网络给了我们很大的启示,多传感器融合方案框架是自动驾驶的必备技能,我们必然要考虑不同的传感器的特性和适应该传感器的算法结构,然后将多种算法结构融合到一个算法框架中来,而 Faster RCNN 网络本身就是基于多网络融合的方案制成的,所以用 Faster RCNN 来做车载系统有其兼容多传感器方案的巨大优势。

既然 Faster RCNN 这么多的好处,为什么用的人少呢?主要原因就是算的慢,如下图所示

由上面图表可以看出,Faster RCNN 在 TX2 的运行结果是非常慢的。算法慢,便无解了吗?未必。因为这里所谓的慢,是针对 GPU 而言的,是因为算法对 GPU 不友好导致的结果,而对 GPU 不友好,未必对其他异构计算平台不友好,事实证明,这恰恰是 FPGA 的优势所在。

安能得来偷天技?兼顾精度与速度

在 GPU 运行慢的网络,可以在 FPGA 上进行加速实现。而要想提高速度,就要对网络进行具体分析,是哪些层运算速度慢以及慢的原因在哪里?

图 11 Faster RCNN 的框架图 来源:网络

如上图所示,前半部分是基础网络来提取特征值,后半部分在画框,RPN 网络负责前景背景分离,排序算法负责筛选,最后全连接输出结果。

总体运行结果,进一步分析每层的耗时:

图 12 Faster RCNN 在 gpu 中每层的耗时 来源:雪湖实测

关键层 interp 层的分析:

图 13 Interp 层分析 来源:雪湖实测

通过图 12 的分析结果我们得出结论,耗时最长的都集中在了 proposal(排序)及以后的层(FC 层)。通过图 13 Interp 层(双线性插值)的分析,我们也得出结论,GPU 对 Interp 层的加速有限,速度没有 CPU 的运算快。通过这些数据的分析,我们就能很明白的知道 GPU 的优势和劣势在哪里,GPU 的优势在于能重复数据切片,在运算 cnn 图片时它是有优势的,因为图片可以分成不同的 tile 片,然后 GPU 会对每个 tile 进行并行计算,当算法并不能很好的完成切片动作时,GPU 便没有什么实质的优势,从上图可以看出,proposal 和 FC6 都很耗时,proposal 层就是在排序,排序对 GPU 是不友好的。Interp 层也是不好切片操作的,所以 proposal 模块及以后耗时比较大。

知道了相应的数据和原理,在 FPGA 上就能很好解决这些问题,对 FPGA 来说,FPGA 是可编程的,是可以将整个算法一分为二的,在 proposal 之前是一部分,在 proposal 之后是一部分,两者在全流水运算后是一个并行的状态。这样用并行的计算来抵消后面的耗时时间,就能大大的缩小计算时延。

针对 Interp 层,FPGA 可以将相应放大的系数存入 BRAM 中,这样的时间更短,是 CPU 的 3 倍左右的速度。Interp 层的意义是很大的,因为前面我们分析过,自动驾驶的感知层很适合做多网络融合的方案,而 Interp 层正式这些网络结合的连接层,经过大量实验证明,用 Interp 做分辨率的上下采样切换,能最大的保留原始图片的特征信息,从而使多个网络间能够平滑过渡。这也就意味着多网络融合的方案更适合用 FPGA 来实现。

除了前面的优化方法之外,我们还可以考虑层合并,切割 featuremap,权重共享,减少 IO 读写时间等方式来进行进一步的优化。另外一个不得不提到优化方向就是量化成 8bit 数据进行计算,这样 FPGA 中的 DSP 每次都能运算两个数,这就可以使用性价比更高的 FPGA 芯片上进行运算,从而得到更高的收益。雪湖科技就是这样做的。

图 14 雪湖科技开发的 Faster RCNN 的性能参数

当然,并非说 yolo 算法没有优势,雪湖也对 yolo 系列做了 FPGA 加速的方案。

图 15 雪湖开发的 yolov3-tiny 的性能参数

雪湖做的工作只是说明用什么样的算法应该根据真实情况而定,而不单单是看 GPU 的运算指标,FPGA 有很多很惊艳的东西,它的潜力一直摆在那里,只是尚未被挖掘出来,雪湖在 FPGA 领域深耕多年,能把 FPGA 的潜力充分挖掘,只要能做到这一点,出来的结果就足够惊艳。

风景莫道塞外好, 江南深处藏雪湖

开发 FPGA 是有难度的,要对 FPGA 的逻辑实现和算法优化有很深的理解之外,

没有一支精干的团队,没有一个好的验证平台,没有强有力的 EDA 开发工具,

将这么复杂的算法要在一个资源有限的 FPGA 芯片上实现并达到很高的吞吐量,难度是可想而知的。

雪湖科技在这方面下足了功夫,十年磨一剑,打造出一套完全自主产权的完整的先进的工具系统,同时,针对 CNN 的 AI 算法这块,专门打磨出一套完整的开发/验证系统。

图 16 雪湖 CNN 算法实现框架图 来源:雪湖科技

如上图所示,我们将所有的计算模块都进行封装,并通过不同的 command 来执行不同的算子操作,最终会加快 CNN 算法的实现和落地。

将 AI 算法快速落地,是雪湖的优势所在。雪湖,以算力为根本,为加速而存在,不止步于自动驾驶,不畏惧于技术变迁。以拥有完全自主产权的核心技术为荣,以创新和拼搏为荣。在 FPGA 芯片加速计算领域 (包括但不限于 AI 算法) 绝对是一道亮丽的风景线,正所谓:风景莫道塞外好,江南深处藏雪湖!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21336

    浏览量

    593739
  • 自动驾驶
    +关注

    关注

    773

    文章

    13079

    浏览量

    163413

原文标题:当Faster RCNN遇到FPGA,自动驾驶开始起飞!

文章出处:【微信号:IV_Technology,微信公众号:智车科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    未来已来,多传感器融合感知是自动驾驶破局的关键

    巨大的进展;自动驾驶开始摒弃手动编码规则和机器学习模型的方法,转向全面采用端到端的神经网络AI系统,它能模仿学习人类司机的驾驶遇到场景直接输入传感器数据,再直接输出转向、制动和加速信
    发表于 04-11 10:26

    LabVIEW开发自动驾驶的双目测距系统

    LabVIEW开发自动驾驶的双目测距系统 随着车辆驾驶技术的不断发展,自动驾驶技术正日益成为现实。从L2级别的辅助驾驶技术到L3级别的受条件约束的
    发表于 12-19 18:02

    自动驾驶“十问十答”

    ? 很多人下意识的认为自动驾驶是为了提升大家日常出行的舒适度和便捷性,实际上,自动驾驶的推动最开始的主要原因之一是为了【安全】,据国外研究表明,其中95%事故与人的因素有关,近70%由人为因素造成,所以
    的头像 发表于 11-29 07:40 303次阅读
    <b class='flag-5'>自动驾驶</b>“十问十答”

    农机自动驾驶显示系统组成部分以及配置

    随着科技的发展,传统的农机行业正趋于饱和,新生事物层出不穷,无论是传统农机还是从业者都面临如何转型升级的问题。农机自动驾驶系统就是当下最热的概念之一。身为新时代农机人,作业的提质增效是无论如何也绕
    发表于 10-17 17:52

    都2023年了,Faster-RCNN还能用吗?

    在多数深度学习开发者的印象中Faster-RCNN与Mask-RCNN作为早期的RCNN系列网络现在应该是日薄西山,再也没有什么值得留恋的地方,但是你却会发现Pytorch无论哪个版本的torchvision都一直在支持
    的头像 发表于 10-11 16:44 398次阅读
    都2023年了,<b class='flag-5'>Faster-RCNN</b>还能用吗?

    案例研究:什么是自动驾驶

    的日子已经屈指可数了。 许多人认为,我们将来甚至不会拥有汽车。 优步从梅赛德斯奔驰订购了10万辆自动驾驶汽车,以提供按需自动驾驶汽车服务。 甚至宝马也已计划开始“Airbnb for cars”业务。一、
    发表于 06-06 11:46 1次下载
    案例研究:什么是<b class='flag-5'>自动驾驶</b>

    初识自动驾驶系统

    近几年自动驾驶技术越来越火,前沿的人工智能、机器学习、大数据等技术也被应用到自动驾驶领域中,各大主机厂、自动驾驶解决方案提供商在不断加入和努力,行业在将
    发表于 06-06 11:21 0次下载
    初识<b class='flag-5'>自动驾驶</b>系统

    零基础如何入门自动驾驶

    随着自动驾驶行业的不断发展,越来越多的朋想进入这个行业,甚至有一些其他行业工作多年的朋友都想转入自动驾驶,那么新人应该怎样学习
    发表于 06-06 10:51 0次下载
    零基础如何入门<b class='flag-5'>自动驾驶</b>

    百度Apollo自动驾驶平台及自动驾驶等级

    阿波罗(Apollo)是百度发布的面向汽车行业自动驾驶领域的合作伙伴提供的软件平台。发布时间是2017年4月19日,旨在向汽车行业自动驾驶领域的合作伙伴提供一个开放、完整、安全的软
    发表于 06-02 16:18 3次下载
    百度Apollo<b class='flag-5'>自动驾驶</b>平台及<b class='flag-5'>自动驾驶</b>等级

    智能汽车和自动驾驶行业人才状态初探

    智能汽车和自动驾驶和最近这两年的热度有所升温。有朋友聊起来,正好看看自动驾驶行业目前的人才状态。 说起自动驾驶,就像美国一定会考虑到Google Waymo和Tesla一样,中国
    发表于 06-02 15:16 1次下载
    智能汽车和<b class='flag-5'>自动驾驶</b><b class='flag-5'>行业</b>人才状态初探

    为什么不能完全相信自动驾驶

    汽车行业一直在随着科技的发展也不断发展。近几年各大汽车企业开始对全自动驾驶汽车进行不断的测试,未来实现全自动驾驶不是 梦。但是据调查很多车友对自动
    发表于 06-01 16:19 0次下载
    为什么不能完全相信<b class='flag-5'>自动驾驶</b>

    自动驾驶技术概述

    自动驾驶汽车,通过技术实现车辆自动驾驶,目的是减少驾驶疲劳、增强驾驶安全。 自动驾驶汽车按自动
    发表于 06-01 14:50 1次下载
    <b class='flag-5'>自动驾驶</b>技术概述

    自动驾驶基础架构

    基础架构在互联网行业中,是一个相对比较成熟的领域。然而在自动驾驶领域,却是一个新鲜的话题。基础架构的工作包括硬 件、onboard(车载系统)、云端三大板块。在我们认为,自动驾驶领域中 “基础架构
    发表于 06-01 14:46 0次下载
    <b class='flag-5'>自动驾驶</b>基础架构

    00021 阿克曼ROS自动驾驶小车,让自动驾驶触手可及! #自动驾驶 #机器人 #编程

    自动驾驶
    学习电子知识
    发布于 :2023年05月22日 19:42:03