雷锋网按:本文内容来自武汉极目智能CEO程建伟在硬创公开课的分享,由雷锋网旗下栏目“新智驾”整理。目前,单目视觉ADAS技术相对成熟,同时成本也比较低,应用最为广泛。那么,到底单目视觉ADAS背后有哪些技术原理(算法、硬件)?同时如何让广大用户触手可及?
以下分享也许可以解答您的疑问:
ADAS的实现途径;
单目视觉ADAS的基本原理;
单目视觉ADAS的技术难点(数据样本积累、算法、芯片、摄像头及前后装等);
视觉ADAS的发展趋势。
伴随着这几年自动驾驶概念的火热,ADAS越来越受大家关注,辅助驾驶作为自动驾驶的早期阶段,在整个流程里扮演着感和知的角色。
第一步是通过各种传感器来采集车身已经周边环境信息,包括但不限于GPS、车身传感器、摄像头及雷达等。目前汽车智能都离不开这几种传感器的融合运用,为车辆来建立周边的立体信息。
第二步则是根据采集到的信息来进行道路、车辆、行人和路标的识别。对各种工况下道路参与者的状态提取,给决策者提供决策信息。如果决策者为驾驶员,那么是辅助信息;如果决策者为制动部件,那么就上升到AEB或者LC等Level 2以上的驾驶辅助阶段。
各类传感器的机制从底层逻辑来说是比较类似的,都是光学或者模拟信号的数字化,采用算法来还原传感量的变化。而摄像头技术是目前ADAS领域最快速发展的传感器技术。
SA(Strategy analytics)分析指出:如果车辆前方只有一个传感器,那么最大可能是摄像头;如果车辆前方有多个传感器,那么确定的是会有一个摄像头在其中。
我们以目前基于摄像头的单目视觉为例来说明其基本原理。
整个流程包括样本的采集及标记,同时对标记的样本进行大范围训练来提取特征和模型,将模型作为实际图像数据进行分类识别。
另外一个维度,我们需要保证图像源的质量,通过宽动态、强光抑制、降噪等技术来保证输入数据源的干净,将真实环境清晰的数据进行边缘化和纹理化送入分类器进行识别。
同时,在这个环节我们要非常注重模型数据和图像源数据的一致性,即样本标记的数据和实际图像源要来自相同的镜头、图像Sensor和相同的ISP技术,来保证训练和实际的高匹配。
这部分是目前在实验室做数据时很难实现的,很多可能采用的是公开的样本库来训练,而公开样本库所采用的摄像头、镜头角度等并不是我们实际中使用的。
在产品开发中,难点在各个环节都有覆盖。
首先是算法本身的检测率,这是需要不断提升的环节。需要在鲁棒性和敏感性之间作平衡,来保证产品的良好体验。
同时从产品工程化的角度讲,很多时候并不能用检测率最高的算法,必须优化算法速度,因为我们没法将一颗i7芯片或者服务器搬到汽车上去;其次是正负样本的积累,考虑到源同步的问题,样本积累必须来自实测,同时保证大量。
第三个方面,既然做的是产品,那么硬件处理器和摄像头的选择必须考虑性价比、可量产性等。
第四,安装方面要尽可能的简化用户的安装步骤,降低安装难度,那么需要在算法设计的时候充分将内外参的兼容性考虑进去,并在不同车型的测试中验证,这部分是采用技术提升体验的关键。
最后是天气适应性,每种传感器都有自己的长处,但是也都有自身的短板,比如雷达对静态物体、激光雷达对天气,摄像头也会受制于天气和光照影响,在这些条件下,提升摄像头前端技术变得尤为重要(Mobileye也不仅仅是一个算法公司)。
当前阶段在嵌入式端工作的算法,普遍基于机器学习,其优点是工程化、量产化更有可行性。
任何人工智能算法的落地都必须具备可工程化。一方面是视觉前端的提升带来了运算量的降低;另一方面科研人员的探索可以给技术实现提供更丰富的组合可能。
同时摩尔定律的继续深化带来芯片可以实时的完成更多复杂的算法,特别是嵌入式芯片可以运行以前高配置电脑甚至服务器才能完成的功能。
当然硬币的另一面,依然有需要用更好的方法来解决的地方,包括有遮挡的目标物、检测率的继续提升等等。这些都有待摄像头前端技术的继续提升和深度学习算法的嵌入式应用来解决。
接下来我们通过两个简单的例子来介绍车辆识别、车道线识别、交通标志牌识别等功能。
对车辆识别和车道线识别只是前方碰撞预警和车道偏离预警的第一步,我们还需要综合速度、车辆自身行驶区域、前方车辆状态等信息来进行分析,参照ISO标准来进行报警信息的输出。
1、车辆识别及跟踪:
2、车道线识别:
3、交通标志识别:
基于前面基本功能和背景的分析,我们从以下几个方面来探讨ADAS技术的深化之路,它需要的是面向AEB(自动制动)、LC(车道中心保持)等。
视觉ADAS系统其实是一套严谨的光学系统或者相机。
但是它比普通相机运行的环境更加苛刻,包括振动、颠簸、高温等因素,我们从每一个环节来保证这套系统的一致性和可靠性,特别是图像源环节,比如说镜头标定、焦距控制、畸变系数的补偿,这些都构成产品可量产性的重要因素。
视觉ADAS系统的内参可靠性同时要结合外部参数的差异性。比如说车辆在平路和坡道时的视觉和测距完全不一样,我们通过对自身镜头的参数和外部目标的视角进行距离矫正,最终达到1个像素以内的误差。
精准的距离测试是前车碰撞预警乃至AEB的基础。
目前,基于单目视觉的测距方法集中于两类:
其一,就是通过光学几何模型(即小孔成像模型)建立测试对象世界坐标与图像像素坐标间的几何关系,结合摄像头内、外参的标定结果,便可以得到与前方车辆或障碍物间的距离;
其二,就是在通过采集的图像样本,直接回归得到图像像素坐标与车距间的函数关系,这种方法缺少必要的理论支撑,是纯粹的数据拟合方法,因此受限于拟合参数的提取精度,鲁棒性相对较差。
正因如此,我们采用了光学几何模型进行车距的计算。前面已经说过了,我们采用了严格的摄像头标定方法可以获得精准的内参和外参。
除此之外,影响测距精度的另一重要因素就是车辆边缘检测的精度。我们采用了精确的边缘检测和多帧综合检测的算法,可以在不同的光线环境下得到相对精准的用于车距检测的车辆坐标信息。
尽管如此,由于道路平面的多变特性,动态的距离测试必须考虑外参的动态改变量及图像处理时的随机误差。图像上几个像素的跳变,就可能引起远距离车距测量的较大误差。
因此,我们在误差来源分析的基础上,力图通过误差修正方法及算法优化方法,从多个层面降低测距误差:
道路环境的精准重构:
同时可以保证我们对周边其他参照系的精确重构。在这个模型图像里,我可以看到对道路环境进行了位置重构,对车道线距离、车辆距离、车道线角度以及车高等信息完成了提取,特别是车道线的距离检测可以达到厘米级的误差。
刚才讲到的是前端摄像头,接下来是算法端的核心。我们需要的是对样本进行大量的训练。我们在样本的训练方式上采用了一些创新,包括UGC(User Generated Content)、图像源同步、自动提取和人工校验相结合等。
算法的载体是硬件,硬件的选择需要从运算速度、功耗散热和成本三个方面来平衡。
摄像头、算法及硬件最终需要通过安装来保证设计者的意志得到体现,糟糕的安装会导致前面的工作功亏一篑。在有安装条件的情况下,我们通过专业安装人员进行标定板的安装;同时我们有大量的DIY用户,那么便可以通过精简的内外参和行驶数据总结来给用户提供个性化的报警机制。
我们目前近千台的激活用户经过上百万公里的行驶里程积累,产生了一些比较喜人的数据。
根据我们的驾驶行为评分系统,某个用户在为我们贡献了2950公里里程的实际数据的同时,他的驾驶得分得到了稳步的提高,充分体现了ADAS系统对用户的驾驶规范性提升价值。
最后,针对视觉ADAS的发展趋势,程建伟认为将包含以下方面:
问答环节:
雷锋网新智驾:请问基于摄像头如何得到物体的三维位置?基于slam能重建出运动的车辆吗?
程:根据摄像头的自身参数,得到目标物体的纵向距离和横向距离,进一步计算出物体的宽度高度信息;可以通过自运动模型得到车辆的纵向和横向运动。
雷锋网新智驾:能否说一下单目和双目的区别?基于视觉的测距为什么不选双目,会更准吗?
程:单目更加成熟,并且对性能要求更低,安装角度要求低;双目可以计算图像深度信息,能更准确的测量距离,但是运算要求高,有效距离近。人对距离的感知刷新是在0.1s级别,所以99米和100米之间的误差,实际对人的驾驶判断没有太高意义。单目测距完全符合ADAS的标准。
雷锋网新智驾:基于光学几何模型测距的方法依赖于物体在路面的假设,如果车辆被遮挡,或者行人下半身被绿化带遮挡,与路面没有交点,那么如何测距?
程:我们的镜头在标定时会计算FOE值,通过该参数与物体实际宽度值来计算实际距离,计算距离经过多次滤波来消除遮挡的干扰。
雷锋网新智驾:视觉ADAS技术需要处理的数据量多大? 需要怎么样的硬件资源?
程:数据处理量看功能以及优化,目前的情况是行人检测大于车辆检测大于车道线检测,目前车辆和车道大概40G FLOPS,如果加上行人,会翻倍。所以硬件的选择一方面是处理器性能,另外是优化性能的均衡。
雷锋网新智驾:您认为传统视觉算法与新兴CNN、RNN算法相比优劣势在哪里?未来,您更看好哪种?
程:传统视觉算法优势是目前成熟,计算量小,可以实现嵌入式化,低成本化;劣势是算法的提升后期比较困难;CNN在最近几年得到了长足的发展,目前更多的是在服务器后台端运行,对于嵌入式化还有一段路要走;未来随着摩尔定律的继续发展,硬件性能的进一步提升,CNN会有比较大的空间在嵌入式应用领域,我们这这块也已经在做一些测试工作,也有一些比较好的结果。
雷锋网新智驾:极目的单目ADAS方案与Mobileye有什么区别及优势?
程:Mobileye是单目ADAS的标杆,目前国内外单目的ADAS都是更多的在以他们为目标进行学习。极目做了更多的针对国内的路况适配,同时针对国人做了很多报警机制的优化。同时我们以移动互联网/车联网为载体,在大范围样本获取方面,做了很多UGC的落地工作。