铁道论坛网【视频】【PPT下载】如何克服ISP解决不了的复杂光线难题?眼擎科技朱继志给出了答案!-车东西

【视频】【PPT下载】如何克服ISP解决不了的复杂光线难题?眼擎科技朱继志给出了答案!-车东西

主讲导师|朱继志
本文编辑|梁家祥
4月20日起,智东西创课推出自动驾驶系列课第二季,9位自动驾驶新势力的创始人和高管将带来9节系列课。
第三课由眼擎科技CEO朱继志主讲,主题为《如何克服ISP解决不了的复杂光线难题》。本文为朱继志的主讲实录,共计14605字,预计18分钟读完。一起了解周朱继志的主讲提纲:
1、自动驾驶前端成像的现状
2、ISP架构及其在自动驾驶中的局限性
3、成像引擎如何在复杂光线下提高成像准确率
4、120dB如何在自动驾驶领域中实现
在浏览正文之前,可以先思考以下几个问题:
-实验室数据和现场数据最大的差别是什么?
-如何正确的理解ISP(图像信号处理)?
-动态范围的概念是什么?动态范围是如何导致复杂光线问题的?
-在自动驾驶领域中,视觉相比于激光雷达有哪些优点?
-eyemore用四年时间开发的成像引擎有什么特点和优势?
主讲实录
朱继志:大家好,我是眼擎科技朱继志。很高兴今天有机会在智东西的自动驾驶系列课上给大家分享关于复杂光线视觉成像这个难题。看到群里有很多在自动驾驶以及视觉相关的各种行业的小伙伴们,我先简单介绍我们公司,我们是一家创业公司,专注于做新型的成像引擎(我们不叫ISP),在复杂光线下如何进行视觉成像,四年来一直专注于做这一个事情。

视觉在图像、AI的各个领域应用都特别广,杨柳松自动驾驶就不用说了。群里可能有不少人是做图像识别的,大家经常会看到有很多图像识别能力现在做得很高,95%、97%或者98%都有可能,但这些通常指的是在实验室的数据或者是在光线比较好的环境下黄江南,实际上有很多客户包括很多在做智能驾驶的客户都反映一个问题,在实际应用中由于图像源的问题,导致识别的效果会变差,很多图像源可能有各种各样的问题,比如噪点太多、颜色不准确、发黑等。
这类似于我们在淘宝买东西时卖家秀跟买家秀一样,我们平时用来做训练、学习的视觉图片都是正常的,但是实际场景中经常会碰到不正常的图片。而我们要做的事情就是如何去帮助大家把实验室99%的识别率变成实际应用中99%的识别率。实验室和现场最大的差别就是光线的差异,因为所有视觉成像的来源在图像源的时候,主要受光线的影响,差别可能会非常大。
光线的差异会带来图像本质上的变化,最直接的影响就是会损失掉很多重要信息,比如会造成发黑、过曝、完全没有信息、颜色的灰度不对、颜色偏差以及边缘会失真、不清楚等一系列问题,反映在后端的视觉识别算法时看到的都是跟训练模型不一样的效果,出现信息量太少或者没法检测、没法分析等,因此导致结果会差别非常大,这是一个本质的变化。因为视觉本身就是物体本身的颜色对光线在不同环境下的响应,所以光线变化很大的时候,带来的差别是本质的变化,在各种环境当中,尤其是在自动驾驶里面,又不可避免地碰到各种各样的复杂光线的环境。

做自动驾驶的,或者普通的用户以及其他做图像产业相关的人会经常碰到一些问题,比如在过隧道的时候,尤其是在出隧道的时候,隧道里面会比较暗,外面特别亮,导致隧道外面一片看不清楚,出去之后车载摄像头还需要挺长的响应时间;另外在晚上碰到对面车开远光灯的时候,会感觉很刺眼,对机器也是一样的,识别的时候只有几个大的白圈,其他什么信息都没有;还有在夜间环境下的红绿灯问题,因为白天的时候,红灯的亮度是比较正常的,也比较容易看到,而到晚上的时候,一是因为路边有特别多的灯,红绿灯只是其中之一,二是因为暗光下红绿灯会特别的亮,所以它很容易过曝,显示出来就会看不清楚,比如指示牌上的箭头很可能变成一大块模糊的绿色或者红色。
这些都是复杂光线下视觉图像源在成像过程中产生的问题,除了在这些情况下,其他的比如办公室的玻璃墙、玻璃杯以及识别人脸时候的逆光,还有一些物体某部分是高光,比如白色和黑色的反差,以及人脸晚上的时候可能会变得非常不清晰等等,这些出现在前端的视觉现象在自动驾驶领域很容易就会导致后端识别不了的问题。从成像来看的话,不管它是什么现象,基本可以总结为三个:
1,弱光,光线太弱,太黑了,看不清楚;
2,逆光,逆光就是一个大灯,这种情况下也叫大光源;
3,背光,就有大片是白的亮的,一些小块前面是暗的。
这几种是最常见的场景,简单讲就是光线太暗,或者光比太大这两个问题。不管是什么现象,都可以用光线太弱或者光线的反差太大来解释。通常来讲,解决这个问题有几种基本的策略:
1,感光度不好的时候提高感光度,要大幅度地提高感光度;
2,调整曝光策略,比如我要怎么知道能够在哪一部分正确的曝光;
3,提高动态范围,后面会讲到动态范围的概念,其中动态范围是最常见的一个问题。

在讲到具体的成像过程之前,先给大家介绍一下基本的概念,因为从我们接触的很多客户来看,在成像这一端宥溪,大家对它的认知有很多误解,而且大部分做图像的人都是在做图像的分析,就是得到图像之后以及后面怎么来做识别检测这部分的分析。成像是一个感知层面的工作,相当于我们的大脑和眼睛的分工一样,我们做的前端成像是眼睛这部分的工作,而大部分做图像识别以及图像AI算法和深度学习都是做大脑的事情,这两个环节是分开的,总的来说,认知和感知是大脑做的事情,眼睛做的事情就是前端成像。
从技术上来看,成像叫Imaging,图像的分析叫Imaging Procession。视觉成像和图像处理是两个不同的领域,其中最基本的区别是处理信号,一个是有了图以后怎么进行分析,处理信号会涉及到很多硬件,还有很多对硬件的控制以及信号中的变换,不是一个纯软件的事情;图像分析更多的是纯算法层面的东西,大脑做的是图像分析,而眼睛做的更多是信号处理,所以信号处理很多时候是和硬件相关的。
我们做AI图像识别的时候,基本上都是从软件层面进行的。软件和硬件有一个最基本的区别是:一个是实时的,一个是非实时的。比如我们做图像处理的时候可以在CPU上运行,在ARM、英特尔等各种各样的CPU上运行,也可以在GPU上运行,但是在做成像的过程中是不能在上面运行的,必须是在FPGA或者是ASIC上运行,因为它必须是一个非常严格的有时序的硬件来保证它的时延是可控的,因为在CPU或GPU上都会有一定的不确定性,很多时候眼睛能做的事情只有一件,而图像分析等在很多时候都是软件进行的,这是几个基本的概念。

在讲到整个视觉的时候,我们可以把它看成整个链条,其中视觉的处理可以分成四个环节:
1、镜头,它是光信号进来,光信号出去,是一个光学器件;
2、CMOS传感器Sensor,它是光信号进来,电子信号出去;
3、ISP,我们叫成像引擎,它是电子信号进来,图像出去;
4、AI或者GPU,它是图像进来,结果出去。
这四个环节就像跑接力赛一样,每一棒都有它最大的价值和最独特的价值,通常情况下我们会关注谁负责最后冲刺,因此现在做AI图像处理是最热门的。
从镜头和CMOS来讲,第一棒是镜头,镜头主要是决定光学的特性,比如我们平时说是不是能看得很远,一百米还是一百米多少度的视角等,这些都是由镜头的焦距决定的,除此之外还有一些特性,比如炫光、镜头的品质和光圈的大小也是由镜头来决定的;第二棒就是CMOS传感器,它决定了很多电子的特性,比如分辨率、帧率还有一些曝光的策略等属性,这些都是由CMOS来决定的铁道论坛网,CMOS是一种非常重要的器件。这两部分基本上都不涉及到算法,主要类似于以模拟器件为主,因此是很难把算法加进去的。
而这两个产业已经是非常成熟的,镜头产业是很旁大的,同时CMOS产业也是很庞大的,这两个产业的特点都是很难在原理上有突破,除非是材料上发生了非常大的变化,因此目前的发展空间是有限的。后面两个环节都是和算法相关的,包括成像引擎和图像的分析。对于前面两个模拟器件的特点,可以说是一分钱一分货,仅从一个参数上观察,你很难看出这两个器件的差别以及好和坏,比如镜头,同样的镜头可能价格差别很大,对于卖的比较贵的,它在某一方面的特性可能会非常强,但不是所有的特性都能用参数直接标出来的,同样CMOS也是一样。
对于CMOS Sensor,同样的分辨率和参数,有些可能卖几块钱人民币,有一些可能卖到几百美金,其中会有很多的差别,比如在选择镜头和传感器时,不能只看参数,还要看它的性能束缚东宫,所有的模拟性质器件的特点都是这样的属性。它包含很多品质、质量的因素,对于大部分数字的东西,通过参数来进行衡量可能是比较容易的。因此很多做软件出身的人也不太容易理解,他们觉得参数是一样的,那它的产品就是一样的,其实不然,差别可能会是特别大,每个差别在实际应用场景当中都会产生很大的影响,比如镜头在逆光的时候,炫光大小就很有关系,会直接影响到后面的环节。

接下来跟大家讲一下ISP,群里可能有做ISP的朋友,也有可能调过ISP的,也可能用过ISP的,也有可能了解过ISP的,如果你在网上查资料去了解的话很容易被误解,网上会说ISP是3A、自动曝光、自动白平衡和自动聚焦香辣干锅虾。其实3A只是ISP的一些功能,那该如何来理解ISP呢?ISP的英文是Image Signal Processing,意思是图像信号处理,包含四个部分:
1,CMOS的控制器,因为CMOS是一个大数据量的东西,没有单独的控制器,我们做硬件的都知道,一个触摸屏或者一个语音的东西都会有一个控制器。但是所有CMOS的控制器都是放在ISP里,因此CMOS的很多控制指令是通过ISP来实现的;
2,信号处理的算法,怎样从电子信号得到图像呢?过程中可能有很多CMOS的一致性不好等问题,通过CMOS不同的RGB表达方式及其原理是能够还原出图像的,其中也会包含很多的算法;
3,图像算法,得到图像以后,ISP也要做很多处理,都是基于图像算法来实现的;
4,接口,它输出的是智能硬件接口的格式。
这四部分加在一起就是一个实体的ISP所做的事情。
通常我们讲ISP的时候,更多强调的是功能实现,因此在算法尤其是在图像算法上要求并不是很高。我们重点是做图像的算法以及信号处理中很多新型算法的实现,这也可以看出做一个ISP是需要综合有很多方面的技术,首先如果你对CMOS不是特别熟悉,各种各样的CMOS都不一定是标准的,同时也需要懂电子信号的处理、图像的算法以及很多硬件相关的知识,这样才能够做一个单独的ISP产品。之所以做ISP的人比较少,是因为它需要的东西比较多,既有硬件又有信号处理以及软件算法等。
很多时候大家比较关注图像用的是什么CMOS来决定了所有的性能,其实不完全是这样子的。CMOS就像接力赛一样,每一棒的效果对后面都有影响。我们经常看到各种各样的COMS,它们的性能并不是一个确定的值,甚至会有很多参数,最关键的比如噪点的控制、信噪比,很多时候它取决于现有的控制。举个例子,比如CMOS的噪声噪点反映图像在很多时候取决于整个Camera里面的硬件设计,如果电源设计不好,那么CMOS本身会有很多电源的噪声干扰,对CMOS性能产生非常大的损伤。
因此在看CMOS的时候,需要看它的整体,而不能单看CMOS,另外不同公司的CMOS,其性能不一定有标记的那么高,或者在某些方面的参数也未必能达到预想的值,比如我们经常会看到有多少个dB的CMOS,但同样的标准和参数值可能有卖5块钱、50块钱或者500块钱的,因此CMOS不能够仅仅从参数来看,还要看实际经验的结果,这也是很多人不太了解的地方。另外一个是CMOS的性能在很大程度上取决于ISP,有点类似于发动机中的控制板ECU,发动机的控制板对发动机本身的影响是很大,这是双方之间的一个过程,所以这是在成像过程中一个很重要的环节。在理解CMOS的时候,如果大家使用过单反相机拍照,有几个基本的概念,其中曝光控制的概念是最基本的,我们叫正确的曝光。很多时候我们拍照拍不好是因为曝光不正确,同样我们在自动驾驶时的成像不正确,也是因为曝光控制不好。比如在对方开大灯的时候,如果曝光控制的好,能够把一些暗部的地方曝得清楚,但问题在于曝光控制自动曝光的时候,并不知道你想准确地让哪一部分清楚,这是曝光控制的一个难点,因为前端成像过程中并不知道后端你想看什么。
在曝光过程中会有几个核心的概念,大家如果玩过相机,就知道光圈、快门以及感光度这三个概念,在技术上叫作增益,即多少倍。这三个因素制约了整个曝光环节,光圈是指镜头的概念;快门是指曝光时间,是控制CMOS的时间来感光;通俗来讲,光圈是指开的门有多大,快门是指这个门要开多长时间,增益是指要把图像调高多少倍,所有的曝光最后都反映在这三个参数之间的平衡,如果想要曝亮一点,你可以把光圈开大一点,也可以把快门拉长一点,也可以把增益调高一点,但是每一个都会有相关的副作用。
比如,如果快门开的时间太短,它的好处是在我们运动的时候它不会拖影,而坏处是快门时间短,进的光就会少,噪点就会多,增益也是一样的。理论上来讲增益可以放的很大,感光度很高,但是感光度高了之后,噪点也有会变多。
关于理解光线和灯光,如果大家做过摄影就知道,摄影棚里面都会有很多灯,打这么多灯的目的是为了去平衡光线,让各个环境的光线反差不要太大,让每个地方拍出来都是清楚的,这是传统的ISP通过打灯的方式来解决拍的不好的问题。而在实际应用中会有各种各样的光线环境,在白天的时候可能还好一点,基本上光源就是外面的太阳,如果没有太阳,天空、云彩以及地面的反光基本上也会处于一个很大的光源,相对来说都是比较均衡的,但是光线在晚上的时候就会变得特别复杂。
我们都有晚上开车的经验,对于路灯,首先我们不知道灯的类型、高度以及灯与灯之间的距离,然后我们在城市道路上开的时候,路边到处都是景观工程,有着各种各样的灯,因此每一个现场的环境我们可以理解为有N多种不受控的光源,有些地方可能很亮,有些地方可能很暗,而且它是没有规则地出现,从而导致了光线环境的复杂性,因此是很难去预测光线的环境。另外,在同样的光线环境下,物体本身的颜色亮度也会有很大差异。
比如在晚上,我们把一件白色衣服和一件黑色衣服放在一起,会发现在同样的光线情况下,这两件衣服的反差非常大。因此整个物体的光线环境是由光源以及物体本身的特质所决定的,这样就能够理解在实际应用的现场当中会有N种可能性的光线,包括各种各样的反光以及一个物体上面可能有不同的颜色和不同的亮度,统一称之为很难预测的复杂光线。相反地,在摄影棚或者办公室的时候,其中的灯光环境是可控的,我们可以很容易的去调节。

接下来我想跟大家讲一下信噪比这个概念,对于做过硬件和信号的人来说,不管做什么信号处理都会对信噪比有一个非常好的理解,因为所有信息的传输都跟信噪比有关系。但我发现很多做软件出身的人对信噪比没有概念,信噪比就是用信息量S除以噪声N,信噪比越高说明品质越好,也就是信息量S越大越好,噪声(Noise)N越小越好。
从视觉上看,一个物体是由它的颜色所决定的,颜色包含了灰度和亮度等,我们通常会说还原度非常高,颜色很准确,这是一个主观的说法,从技术上看,可以理解成信噪比很高,偏差很小,在同样一个识别算法中的任何场景下,我们可以简单地认为信噪比决定了可识别性,图像源的品质可以用信噪比来衡量,信噪比越高金源期货,可识别性就越高,图像源越好,那么在同样的识别软件情况下,识别的准确率就会越高。所以对于信噪比万足念什么,我们可以看成两个部分,第一部分是如何不断地提高信息量,第二部分是如何把噪声降到很小,这可以看成是一个降噪的过程,而ISP也有降噪的功能,但降噪并不是一个纯算法的事情,另外还由硬件、Sensor的属性和算法三个方面来共同决定的,如果你要做高精度的降噪,由于硬件设计精度的噪声本来就非常小,还取决于Sensor的属性,因此你要了解Sensor的属性,并采用不同的方法来控制它。另外降噪的算法可以分成单帧,多帧等多种算法,而算法与计算量是有很大的关系。
接下来是关于实验值和理论值的问题,从图像上来看,我们在做产品或技术的时候,更关心的是实验测量出来的值,并不太关心理论值是多少。在做信号处理时,会发现有很多理论认为这个项目的算法很好,那个项目的算法很好,或者是这样的方式很好,但这些都是理论值,我们不能仅看理论的推导,还要看实际的经验值。另外关于全局和局部的问题,有时候我们看一张图片,会发现它整体看上去是挺好的,但是在某些局部上会比较差,因此如何处理资源上的平衡也是需要考虑的。

上面是一个30秒的视频,其中有四个场景。
1、过隧道的场景,左边是我们的成像方案,和右边对比存在很大的差异,首先,隧道外面是没有过曝的,细节都非常清楚,隧道里面的亮度也是够的,而右边是普通的摄像机拍出来的图像,可以看到外面已经是过曝的了,而且里面很暗;
2、这是一个模拟大灯的场景,大家可以看出我是用手机拍的,一般情况下,这是一个很亮的LED灯罩,下面有一个车牌,这时如果用一般的摄像头拍,那么只能看到一大片白的,同时我们的眼睛在这种环境下也是看不清楚车牌的;另外可以看到后面有一个屏幕,屏幕上拍的是实时成像效果,上面的灯都是没有过曝的,灯珠都能看得很清楚,而且下面的车牌也能看得清楚;
3、这是一个暗光下的场景,用一般的摄像头拍出来是黑白的,而且有很多噪点荣毅仁家族,也看不清楚,右边是我们eyemore拍的图像,可以看到拍的很清楚,颜色还原也很好,这个场景是我们实验室经常演示给客户看的,我们公司把它叫做eyemore,意思是比眼睛看的更清楚。
这几个场景下基本上可以验证一点,在逆光和暗光的情况下,我们做的视觉比眼睛的视觉能力更强。
最后的场景是一个人背光的画面,我们经常会看到这样的场景,拍前面的人会过曝,但在我们屏幕上显示的实时画面就是精准的还原颜色。

上面这几个观点是我想用来说明前面提到的这些问题,包括复杂光线、暗光、逆光,比如隧道等等这些常见的场景。另外我也想引出下一个话题“动态范围”,在汽车中我们可以将大部分的问题归结为动态范围不够,可能大家对动态范围这个概念不太清楚,实际上用动态范围是一个很复杂的事情。由于我们是做这一行的,所以我们非常清楚,甚至可以说动态范围是导致复杂光线问题最主要的原因。
在自动驾驶中大概90%以上的场景都可以用动态范围不够来归纳,因为自动驾驶不会经常遇到完全黑的环境,至少我们的车是有灯的,周边也不会很黑。简单来讲,动态范围就是最亮地方和最暗地方的光强比值,这个比值可以说是非常吓人的。由于人眼会自动处理动态范围,因此我们感觉上反差没有那么大,比如对着夕阳,就是在逆光的时候,夕阳和前面人的反差可能会有1万倍或者几万倍,包括对着月亮的时候也是一样的,各种各样的场景光源和被调动的反差是非常大的。
因为我们的眼睛会自动处理这种反差,所以我们的大脑就感觉不到,感觉好像就差几倍或几十倍,实际上是远远不止的,这就是动态范围中一个比较麻烦的问题,明明眼睛看的清楚,感觉光线的反差也就是十倍或者二十倍,但就是识别不了,实际上这个动态范围远远不止我们所感觉的范围值。对于动态范围的概念,我们要理解三个值,第一个是环境中动态范围的值,比如在刚才讲的大灯的情况下,那个大灯光源是特别亮的;第二个就是车牌和光源的反差叫作实际环境的动态范围值;第三个动态范围值是Sensor的动态范围值,也就是Sensor最大能够记录的动态范围值。
我们通常讲,一个Sensor有多少个dB,指的就是动态范围值的概念,欧盟在自动驾驶领域的车规写的比较清楚,就是120dB,也就是2的20次方,意味着最亮和最暗的反差可以有2的20次方,大家可以算一下,这个是一个非常大的数值,但是有个地方在很多时候我们很容易误解,CMOS Sensor的值(我们叫作RAW的动态范围)以及后面识别软件可用的值,这两个值经常是不对等的,传统ISP存在一个非常大的问题,就是尽管CMOS的动态范围很高,但没办法输出给后面的识别软件。
传统的ISP可能就是八位的,八位ISP的动态范围是48dB,尽管前面接了一个120dB的CMOSSensor,这个ISP本身也并不具备处理该动态范围的能力,它输出的动态范围是不够的,所以这三个值大家要去理解。如果环境值能够被最后可用的值装得下动态范围,那么这个信息基本上就不会损失,也不会有特别大的问题,但很多时候环境的反差特别大,这时要么裁掉亮部,要么裁掉暗部,就相当于很多时候现场的环境是有20个车道的,突然之间前面变成只有四车道或者八车道,这样其他的车就开不进去了,这就是动态范围的概念,所以信息被大量丢失。
我们经常碰到一些客户会问,我们用的摄像头模组的动态范围是120dB或者100dB的,为什么测出来的效果这么差?有一种可能是因为ISP的输出没有这个能力,但他也并没有标错,他标的CMOS是可能有这么高范围值的,因此大家一定要确认。120dB可以说是接近我们人眼的处理能力,在隧道里面的动态范围是不会超过120dB的,大概100dB就能解决大部分的问题,除非在隧道出口就有一个太阳正对着。刚刚也讲过了120dB对应着2的20次方,如果是在CMOS中,相当于要用20位的数据来处理动态范围。
通常情况下,我们的ISP都是八位的,用八位的ISP是承载不了20位的ISP的。在前面看到的几段视频中,大镜头逆光那部分基本上是接近120dB的效果,如果真正实现端到端的120dB,就需要用到AI识别软件,如果输出已经是120dB的图像,那就可以解决绝大部分现场复杂光线的问题。晚上特别容易出现动态范围宽的问题,因为暗的地方会特别暗,而亮的地方又是个灯,这两个反差特别容易变大,因此在晚上动态范围特别容易出问题。
其中有一个难点,目前所有做AI识别和训练的库用到的图片都是基于八位的JPEG,但我们很难去改变这个东西,这是一个历史原因。如何用20位的东西输入到8位中来呢?大家可能知道有个传统的技术叫做Tone Mapping,但在历史上并没有人能很好地把它做好。eyemore花了很长的时间做了很多新型的算法来使得在八位JPEG标准下的输出能够承载20位的动态范围值。在刚刚的视频里面也有这个概念,这些都是标准的视频,所有动态范围的信息都已经在里面了,并没有过曝。
动态范围经常会有一些处理的情况,包括单次曝光和多次曝光。对于多次曝光,我们目前的手机在逆光时也清晰,比如OPPO和华为手机,他们都是通过多次曝光,也就是拍几张照片进行合成,这种方式的问题在于场景受限,对于静止的物体是可以的,但在车里面这种方式是有很大问题的,因为车在高速地运动,这时如果进行多次曝光合成的话是会有很多问题的,所以单次曝光会是一个更好的方案复茂小龙虾。另外动态范围要适应各种各样的场景,我们也花了几年的时间去对动态范围进行调整和处理,使它在各种各样的场景下都能够正常运行。
如果场景适应性不够,动态范围会影响很多东西,比如颜色不对、边缘不清晰、边缘上有很多条纹、亮度过曝等问题都是动态范围导致的。了解过专业电影摄像机的人都知道摄像机的Log格式,这是介于RAW和JPEG之间的一种压缩格式,其中动态范围是保留的,但我们做的是不一样的。

接下来我们要在链条中了解成像的概念是什么?做自动驾驶以及ADAS方案的人可能更关注的是摄像头,而摄像头里面用的方案可能是一个模组,模组中会有芯片,比如安防里面可能用海思的、OV的,这些芯片会有很多功能,其中成像这块是个IP,有着专门的内核,这几个不同的措施对应着不同的产业链,我们可能会比较关心输出的接口是什么?输出的接口可能是光纤的、USB的以及网口的,其中输出接口又分为内部接口和外部接口,这里我们会比较关注成像过程中的延时,而延时有很多环节,包括有曝光的延时、成像算法产生的延时以及传输中的延时。
在成像引出来时可能延时是非常低的,只有几十行的曝光时间,就是一帧的几十分之一,但是如果你用USB输出,那么USB要在接收端显示,就必须要缓冲一帧,假如一帧包含的时间是二十五分之一,产生40毫秒延时,因此可以看到延时是不同行业的不同环节产生的。另外是车规,在自动驾驶中,芯片在汽车行业中都是有滞后的,主要是由于汽车行业周期太长了,目前很多处理器要满足车规也是有难度的。在不同的层级解决的问题是不一样的,有些是通过摄像头或者镜头解决,有些是通过模组或者芯片解决,还有一些是由于芯片本身的属性所决定的,因此我们很难通过所谓的Tuning方式来解决这些技术问题。

目前所有汽车的安防摄像头都来源于同一个源头“数码相机”,比如索尼、尼康和佳能的单反以及电影的摄像机及高端产品,在安防中,都是先有数码相机才有数码摄像头,相比于这些专业的设备,汽车中的安防摄像头都是非常低端的。我们每个人可能都有开车的经验,都知道车上的摄像头实在是让人难受,比手机的都要差很多,因此核心最高端的成像引擎都是日本公司做的,而其他的公司都是来copy或者抄他们同样的架构来实现。
传统的摄像头拍出来的图片是给人看的,在过去的很多年里,大部分做图像的包括做手机或者相机的,都把很多功夫花在了P图上面,就是怎么样让颜色变得更好看一点,但这对于识别来讲是没有任何帮助的。在AI之前的所有相机和成像技术都是做来给人看的,但在AI开始之后,包括自动驾驶的图像都是要给机器看的,这是一个非常大的变革,从胶卷时代转到数码时代再到AI时代,这对每个行业都有很大的变革,而很多传统的P图方式对于识别是没有什么效果提升的。
目前手机相机中会有很多像素,做图像识别的都知道,识别对于像素的要求并不高,关键的是像素的质量,像素的质量比像素的数量要更加重要,像素的质量反映出来的是信噪比,整个图上的信噪比越高,那么图像的识别就会越准确。

相信做视觉的人都用过激光雷达,我认为激光雷达产生的原因主要是因为现在摄像头的成像品质太差,无法很好地处理一些复杂关系。由于还有一些特殊场景,比如下雨、雾天遮挡等等,因此激光雷达变得越来越重要。激光雷达和视觉相比,我个人认为主要有三个大方面:
1,成本,数字芯片的成本是可以无穷低的,这是被证明过的;而激光雷达它是一个光机电一体化的产品,它是成本不一定能够做到很低。
2,从生态来看,视觉的生态是一个开放的生态,不只是在自动驾驶,在人脸识别等各个领域都做的特别多,因此它是个开放的生态;而激光雷达更多的是一个封闭的生态,做雷达的人自己在做着各种各样的模型和学习训练,很难把它变成一个完全开放的生态。
3,从效率上来看,视觉的效率是非常高的,比如我们能经常看到一秒钟产生多少个T的数据。而激光雷达在很多时候数据的信息量非常少,只是相当于一个非常低分辨率的黑白照片,这跟视觉有很大的差别。
我们跟特斯拉也会有一些交流,特斯拉认为以后的自动驾驶一定要解决全天候的被动光学成像,意思是在各种光线环境下都能够看得很清楚,其实就是eyemore所做的复杂光线的事情。目前很多人都认为多传感器有用,但我认为多传感器有一个悖论,就是当每一个传感器都不可靠的时候,加上更多的传感器不会提高整个系统的可靠性。假如我每个系统都是99%的可靠性或者可用性,那么多加一个系统这叫作备份。但是如果每个系统的功能只有60%,你放五个60%就相当于五个60%相乘,乘出来以后会发现整个系统的不稳定性肯定是更高。当然现在每个方面都在进步,以后肯定还是多处理器以及多传感器融合的方式。

下面介绍一下我们的成像引擎是怎么解决这个问题的。成像引擎是个非常复杂的系统,并没有大家想象得那么简单,我们用了四年时间只做这一个事儿,而且我们团队在这方面都有很丰富的经验,做这个事情之前我们会先给自己定目标:
1,我们的输入和输出必须都是传统行业标准的CMOS模式,都是大家可以识别的图像输入和输出;
2,我们要求是所见即所得,就是在取景的时候,原始看到的东西就是最后所得到的东西,不会允许有很多后端软件的处理在我们环境里面;
3,我们希望能够适应绝大部分场景,我们不会允许有很多种模式都让它去试,而是一个成像引擎应该能够适应绝大部分的产品;
4,不能有明显的副作用,之前做视觉成像的,包括图像的识别处理都有很多明显的副作用,比如由多帧合成的方式来解决动态范围的问题,副作用就是只要人一动它就有拖影,我们也是不允许的;
5,要做统一的架构,并不是不同的场景有不同的系统架构;
6,要兼顾全局和局部,不能是整体看上去很好,而局部却是不好的,或者局部是挺好的,而全局看上去结果很差;
7,以颜色还原度为唯一的准绳,各种情况下颜色还原度怎么样?我们的要求是在不正常光线环境下的结果也跟正常光线环境下的结果一样的。
这是我们创立公司去合作开发架构时给自己定的原则,做所有的东西,如果没有原则和方向,就需要去试验现存的几百种方法,系统也很难成熟,这也是目前我们为什么会碰到这么多视觉问题的原因。
现在我们的实现方式有几个,第一,我们做了一个全新的硬件处理架构,这个架构是能够处理所有的RAW数据,不管它是多少位的,在这个架构之上,我们要做到很多以效果为核心的新算法,包括很多降噪的算法以及解决动态范围变化的算法。
成像端和所有的算法都是理论值,它能不能够解决你的问题,现场各种光线环境是有无穷多种组合,我们也花了大量的时间去测各种各样的场景,最后才变得开始熟练,它在绝大部分场景下都是正常的。这三个东西加在一起,我们把它叫作一个新的成像引擎技术,由于这个与ISP的出发点是完全不一样的,因此我们不把它叫做ISP。有很多客户和合作伙伴在看到我们公司的展示后都会觉得很惊奇,都会问是怎么做到的,是不是发明了什么新的原理。其实我们并不是发明一个新的原理和paper,而是理解Know How,就是不断的经验值积累,这就像发动机一样,所有发动机的原理都是一样的,但是做5.0的发动机跟做1.0的发动机,其中有很多的Know How是不一样的。
最后,只有看到结果才能验证理论值是否有用,尤其是适应环境的时候更要看到这个结果,需要在这个地方测过它是OK的它才是OK的,这就是eyemore所做的事情,跟传统ISP的思路是完全不一样的,ISP是实现功能,而我们是要解决问题,我们解决的问题出发点是因为传统所有的ISP在几十年以来都没有解决好复杂光线下的问题,在以前来说,这些都是没有关系,因为拍照拍得不好埃及亡灵书,我可以到光线好的地方拍。但到了AI之后,比如自动驾驶汽车事故,包括Uber撞人等问题都是因为环境太复杂所造成的,因此是必须要解决这个问题的,同时这也是我们给自己设定的方向,以及在这个方向我们花了四年时间来实现这些东西。

我们发布了一个针对汽车行业的参考设计方案,叫作DX120。它包含两个方面,第一个方面,从某种层面来看,前端输入的是车规级Sensor;第二个方面,输出的是120dB和标准的八位JPEG或者YUV格式的图像,也就是说后面的识别软件可以把它当成一个正常的视频进行浏览处理,但是所有动态范围的信息已经包含在里面,同时也是采用了我们的全新的eyemore成像引擎架构,它是一个完整的模组,也可以说是技术方案,对于所提供的标准接口,我们也会不断地去丰富我们的接口,包括USB、光纤、HDMI网口以及可定制的接口。
这个产品会在5月底正式上市,对于做自动驾驶汽车的人来说,首先它是一个测试产品,我们会提供一个类似于工业相机大小的模组,它包含供电设备以及输出的接口。关于成像方面的东西,一定是要先要测试效果能不能满足,然后才是第二步的接口方案问题。我们是来帮大家来解决这个问题的,如果这个方案不能解决问题,就可以不用考虑我们的方案。而我们的方案是能够适应95%以上的复杂环境的,包括动态范围不够场景下的问题。
在拿到这个模组去测试之后,如果测试的结果跟大家的要求是匹配的,能解决问题的,这时我们再去沟通具体的对接模式(包括有硬件接口和软件接口),在5月底大家就可以拿到这个模组的成品了。
我的介绍大概就是这么多内容。最后有一个小广告,eyemore,意思是要让AI机器比人眼要看得更清楚奥戴丽赫本,我们只做眼睛,不做识别的东西。在自动驾驶领域,我们要做的事情就是让车比人眼看得更加清楚,能够解决目前很多在视觉成像上的痛点。这就是我今天分享的内容,谢谢大家。
提问环节
提问一
熊林云-Motovis-ISP工程师
1、自动驾驶的模组镜头选型需要重点考虑哪些参数指标?
2、自动驾驶技术用到的ISP除了3A,sharpen,denoise等基础功能外,还需要哪些必要的功能,如WDR?
朱继志:1,这些参数指标在上面也讲过了,镜头是一个模拟器件,很多时候大家一定要去实测。在自动驾驶领域,影响最大的因素是炫光,造成不同的炫光,可能有镜头的原因,也有CMOS和成像的原因,这是综合因素。但是镜头是第一关,镜头对炫光的影响是复杂光线下影响最大的,因此这个一定要测。很难用一个参数就直接表述出来。
2,ISP是个笼统的概念,所以我们叫作成像引擎。前面也讲过,ISP最基本的功能,首先是CMOS Controller,第二部分是信号的处理,第三部分是图像的处理,最后是接口上面的事情。WDR对传统ISP来讲是可用可不用的,做的好不好没有人关注,但是在动态范围处理是自动驾驶中必须要有的基本功能,比如120dB,那么可能要90个dB或者是100个dB。
提问二
熊林云-Motovis-ISP工程师
1、后端视觉理解对于前端成像和isp图像处理有哪些重点要求?
2、自动驾驶主要场景分哪几类,建议ISP用何策略识别和切换场景参数?
3、对于多路Sensor接入,如何帧同步和AE同步?不同角度的成像如何尽量保持拼接后整体画面的均衡,拼接处过渡自然?
朱继志:1,这是个很好的问题。通俗来讲,在没有大脑之前,前面的眼睛是很差的,但在AI大脑强大之后发现眼睛不行了,要提高眼睛的能力。比如按照我们的方案发展下去,眼睛也会变得很强大,这就产生了第三个问题,大脑跟眼睛该如何交互?我们人的大脑跟眼睛交互是一件非常神奇的事情,大脑跟眼睛是协同工作的,目前并没有很好的方法来鉴定。我也跟很多人探讨过这个问题,对于后端的识别,哪方面做的好一点更容易识别等问题。在以前没有识别的时候,可能还能做一些事情,现在到AI深度学习就变得特别麻烦。
为什么会特别麻烦呢?因为AI识别的深度学习层次太多了,可能很少有做AI、做Training的人能够把底层的东西讲清楚,这个系统太复杂了。从原则上来讲肯定是希望边缘越清晰也好,但是这些东西都有待于验证,因此以后我们也会逐渐地去跟合作伙伴以及客户一起完善和升级范海辛是谁。
2,实际上,我认为这个问题是有一定道理的,但很多时候它是个伪命题。要去知道某个场景是很难的,无论是前端还是后端或者是成像端去明确场景都是不太现实的。最理想的方案是不用分场景,一个模式能够自动适应绝大部分场景。这样,在后面少部分的情况下,比如在我们能检测到但识别不出来的时候,可以将这个指令发给前端和成像端来解决,这是一种比较好的方式。
场景最好是在成像端解决,这就是eyemore做的方向和原则,我们的目标就是要让成像端无论在什么环境或者什么场景下,所有看到的都是清楚的,就跟光线正常一样,这样以来幽灵客栈,后端的识别软件就可以什么都不用管了。传统的方式在很多行业里面是可以人工去控制的,但是在自动驾驶和AI里面就不是这个逻辑了,因为没办法在那么短时间之内进行人工干涉或者让系统自动去识别场景,因此我们认为最好的方案就是前面成像端能够解决绝大部分环境适应性问题,这就是我们做的事情。
3,前面的一个问题是个非常具体的问题。对于帧同步,在前端成像部分会有相关的硬件接口。在不同的Sensor之间,需要多个摄像头之间协同处理,这是硬件层面的问题。对于硬件的接口方式,我们都有各种硬件接口和软件的控制协议,因为行业没有标准的东西,是需要大家去探讨的。对于不同角度的成像如何尽量保持拼接后整体画面的均衡,拼接处过渡自然,这是一个特别综合的问题,这个问题不仅仅涉及到图像拼接,还有每个画面本身的程度。
比如我们看到一个很自然的图像,这个图像可能有一边很暗,一边很亮,这样对后面的识别拼接一定是很有困难的。而我们更关注的是从源头上能够把每一个图像都做的更好,那么在后面拼接的时候就会更容易。另外是拼接的算法问题,也有一部分属于源的问题,从源的层面来看,永远都只有一个原则,就是它的保真度越高越好化龙道,这样它能够看的非常清楚,后面的拼接也会跟识别一样变得更加容易。
提问三
王润柱-征图三维-slam
怎样将视觉slam应用到夜间?
朱继志:我自己个人也花了很多时间在晚上各种各样的环境下进行测试,发现夜间主要有高感光度和动态范围两个问题。其实在很多道路上主要的问题不是感光度,因为都有路灯和各种各样的灯,而更多是动态范围的问题。如果在很暗的情况下,它的动态范围容易变大。举个很简单的例子,比如分别有个穿白衣服和黑衣服在一个正常灯光的情况下,这两个的反差不会很大,但是如果在一个很暗的情况下,白色和黑色的反差会特别大,动态范围会变得更宽,因此相比于白天,晚上的问题会更多。
对于SLAM该怎么应用。首先我们不做SLAM,但是我们认为SLAM也是一样的原则,只要图像的信噪比越高,噪点越少,信息量越大,那么SLAM的准确度就会越高,我相信未来SLAM的发展会随着成像水平的提升而越来越高,如果信噪比还原得非常精准,那么SLAM的精度也会大幅度的提升,SLAM有SLAM对应的算法,源图也非常重要,如果源图是模糊的,噪点很多,就会极大地影响SLAM的精确度。
提问四
王吉志-贵师大-经管
ISP可否增加图像采集层数,削减收取信息的缺失,多层叠加,更趋于实际数据?
朱继志:对于ISP的层数,我不知道你是怎么理解的。其实这个问题回归到本质上来讲还是动态范围的处理。信息量越大,削减的信息就越多,你说的多层叠加应该是指多帧的合成,通常情况下,我们是不用多帧合成的方法的,因为多帧合成容易导致在运动时出现很多不可预知的副作用,这个在前面也讲过。要注意到在我们提高了一个东西的同时会不会损失其他东西。这是一个整体的概念,不能单方面地把参数提高。
资料获取
如果想要获取本次课程完整课件及音频,可以在车东西公众号后台回复关键词“系列课”获取
「提醒:如果你希望成为主讲导师,可以回复关键词“导师”,进行申请」
课程预告
#智东西公开课#6月5日,自动驾驶系列课第二季第七课由经纬恒润科技前瞻技术负责人张大鹏开讲,主题为《自动驾驶仿真测试-安全高效测试的必由之路》 ,速速扫码报名吧!
2014-08-07 | 热度 450℃ 全部文章 | Tags: