演讲嘉宾:自行科技总经理关艳峰
![](http://www.shujubang.com/UpLoads/Special/File/2017_06/636325404259095917.jpg)
各位朋友,专家,下午好,我来自深圳自行科技,今天介绍的题目是基于FPGA平台的ADAS和高度自动驾驶解决方案。
首先简单介绍下自行科技,自行科技是一家专注在智能汽车电子领域的创业公司,在基于嵌入式人工智能的ADAS和自动驾驶产品上持续研发,致力于推出满足智能汽车前装要求的核心模组和系统。自行科技提供的产品包括L0/L1级的车内车外联合ADAS产品, 以及L2+的模组和解决方案。公司的创始团队来自中兴、华为,并吸收了汽车产业的专家,在深圳和武汉设立了两个研发中兴,核心研发团队35人。
今天具体介绍三个方面的内容:一是,对于ADAS和自动驾驶产业,核心问题是什么;二是,我们如何解决的的;三是,我们做了什么产品。
首先看一下自动驾驶的目标,自动驾驶可以分为成长期和成熟期两大发展阶段,成长期就是ADAS,ADAS产品大部分还是基于传统的车身结构、车电架构、公共设施和法律法规实现的,目标是助人感知,助人决策,而自动驾驶需要创新的车身结构、车电架构,以及公共设施和法律法规的完善,目标是类人感知,类人决策,甚至类人感知、类人决策还不够,最终应该是超人感知、超人决策。比如:自动驾驶在夜晚环境下的感知最终应该超越人类,而在决策效率和决策安全方面应该超过目前的有人驾驶。
ADAS和自动驾驶之间存在非常大的Gap,至少经历三个大的阶段逐步实现自动驾驶。第一是以独立功能为主的安全预警类产品,在这个阶段道路感知逐渐成熟;第二个阶段是以传感器融合和功能融合为主的主动干预类产品,在这个阶段决策控制走向成熟;第三个阶段是自动驾驶,整个自动驾驶系统,以及道路设施、法律法规逐渐完善成熟。特别提一下: L0-L1的驾驶安全很多是由于驾驶员疲劳和注意力分散造成,L2-L3会存在驾驶员过度使用辅助驾驶和自动驾驶造成安全事故,L4和L5则需要新一代的智能座舱匹配自动驾驶,那么车内注意力辅助和人脸识别会在自动驾驶路径上有独特的作用,比如及时提醒,以及个性定制化的服务。
对于自动驾驶中的核心问题,至少有六个:高可靠、高性能、高速度、低功耗、低成本、和专业化。高可靠主要是要有车规级的软硬件系统,能够保障3年6万公里的寿命要求;高性能和速度主要是靠高效率的算法、高计算力的硬件,能够保证各种环境下准确和实时的感知、决策和执行。低功耗、低成本是车厂能够批量安装的重要保障;专业化主要是要合乎规范和测试流程,并提供良好的用户体验。
针对ADAS和自动驾驶的发展阶段和核心问题,自行科技的定位是提供适配当前市场需求的ADAS和自动驾驶核心模组和系统,在这个系统中,深度学习是算法核心,FPGA是计算核心。
其实,基于FPGA平台来实现深度学习挑战非常巨大,我们对神经网络和FPGA做了非常大量优化,从而实现单目的有效感知,并使得基于FPGA平台的CNN网络在多传感器融合、自动驾驶规划和执行方面具有通用价值。优化时需要考虑性能、速度、价格和功耗四个方面问题。
接下来,针对这些优化问题,重点讲下我们是怎么做的。
对于神经网络的优化我们主要考虑几个问题:泛化能力、回归精度、处理速度、和网络深度。泛化能力是环境多样性和目标多样性下可靠感知的重要保障;回归精度是目标测距和目标跟踪准确性的重要保障;处理速度是ADAS和自动驾驶实时性的重要保障,至少20-30fps的速度才有可能;网络深度则对多种指标产生影响,同时也有利于扩展新的功能模块;
下面是我们对神经网络整体的一个优化策略:从性能因子来看,图像尺寸和网络深度对性能影响最大,网络宽度次之,最后是权值精度;从速度因子来看,正好相反,权值精度对速度影响最大,网络宽度次之,最后是图像尺寸和网络深度;所以,权值精度的优化是神经网络优化的重点,同时对数据存储与数据计算做高速并行,从而实现性能优先的速度优化。这里,网络深度和尺寸的Benchmark:512*512 SSD
举个例子,权值优化主要是采用低精度权值代替32位浮点型权值,在实际的产品中我们采用的是1比特权值,也就是二值网络。二值网络优点在于摆脱了浮点计算,摆脱了对FPGA中受限资源DSP的依赖,采用加法、减法、或者移位操作来实现卷积等计算。说明一下,二值网络在大幅降低计算量的同时,性能降到浮点型网络的90%左右,但随着网络深度的增加,可以逼近浮点网络。
二值网络还有个特点,它依然保持了网络的对称性,非常利于后面要讲的FPGA加速。相比权值稀疏化而言,稀疏化计算量虽然也降低了,但是网络不对称,网络延时不对称,受限于最大延时路径,负载平衡可以得到某种缓解。对于VGG16,基于二值网络,输入输出各做32路并行,卷积9路并行,可提升9000倍的计算速度。
像SDD这种网络,即使做了二值化,计算量也非常大。在FPGA平台上实现难度依然很大,我们已经做了一年多FPGA优化工作。为了让CNN,尤其是大型CNN在低成本的FPGA内运行,我们做了一个关键性工作,就是在FPGA内将CNN平台化,用FPGA的各类资源将CNN的各个单元模块化,在CNN网络解释器的协调下快速构建新的网络和网络升级。
FPGA的并行优化,有四种,卷积操作并行、特征图内并行、特征图间并行、层/帧并行,我们主要做了卷积并行和特征图并行。
还有一个需要提一下,就是外部数据交换和优化。经过对FPGA平台的深度优化,性能有多大改善呢?以ZYNQ7020为例,可以看到,YOLO Tiny可达到60帧的处理速度,VGG16达到26帧的处理速度,SDD300也达到了16帧的处理速度,而且性能并未下降,功耗和价格也维持在合理可控的范围。对于更复杂的器件,更复杂的SDD500可达到20~30帧的帧率。
![](http://www.shujubang.com/UpLoads/Special/File/2017_06/636325404478186361.jpg)
通过对神经网络和FPGA平台的优化,我们的单目视觉模组在环境多样性和目标多样性下表现出了良好性能。例如:雨天、夜晚、雪天和隧道出口都能可靠的识别。对于侧向车辆、局部暴露车辆、以及异型车辆也能可靠识别,尤其在我们国家,道路复杂、路况混乱,对ADAS和自动驾驶来讲也是个不小的挑战。
除去目标多样性与环境多样性,对于单目感知,视场与识别精度的平衡也是一个重要问题。随着视角的增大,系统可以感知更多的道路信息,更好地进行趋势预测,但同时也会降低目标的识别精度。我们的解决办法是将像素投放到尽量大的视场里,确保道路语义解析和趋势预测,同时加强小目标的识别精度,对于轿车、大型车和行人,在像素高度为20、25、30时,都可以做到可靠识别。
总结一下,我们的单目视觉可以做到:对于各类车辆做到多姿态,多角度的识别,最大的可靠识别距离100m;对于各类行人和非机动车,最大可靠识别距离可以做到50m,并支持夜间行人识别功能。
![](http://www.shujubang.com/UpLoads/Special/File/2017_06/636325404623621633.jpg)
下面介绍下我们做的产品,目前,车内车外ADAS的产品样机都已完成,今年可以量产供货。
车外ADAS系统,也就是前向ADAS系统,我们提供预警类的PCW、FCW和LDW三大核心功能,也可以支持AEB和ACC、LKA等干预类产品。
车内ADAS系统,也就是驾驶员注意力辅助系统,包括驾驶员疲劳预警和身份识别。
大家可能已经注意,注意力辅助系统中还包含了身份识别或者人脸识别功能,人脸识别对于乘用车的个性化驾驶舱,以及未来新的商业模式都是十分必要的。我们提供软硬件两种服务,对于硬件服务,ARM上可实现3s的识别速度,而在FPGA上可实现毫秒级的处理速度,方法是深度学习。
![](http://www.shujubang.com/UpLoads/Special/File/2017_06/636325404832682395.jpg)
这是我们正在进行的一个自动驾驶方案项目。我们与某电动巴士企业合作,在大学校区或者景区内联合开发一款自动驾驶大巴,用于固定线路接送行人。目前我们的方案就是采用强可靠的功能设计,以及高冗余的架构设计,实现绝对高安全等级的自动驾驶系统。我们在车身周围安置了多组摄像头与雷达,分别管理车辆不同方向的不同功能,然后进行信号融合处理和决策规划,最后把自动驾驶关键决策信息传递给车辆主控。我们希望系统最终的安全性等级可以达到ASIL D级。
目前,我们已经与多家客户展开紧密合作。从传统车厂到新能源和互联网造车公司,也包括许多商用车客户与Tier1级别的汽车零部件供应商。
以上就是我今天想和各位朋友分享的主要内容。期待和各位在核心模组与控制器、整体解决方案或者定制化开发等方面取得合作,感谢大家的关注!