第三课由眼擎科技CEO朱继志主讲,主题为《如何战胜ISP办理不了的繁芜光芒难题》。本文为朱继志的主讲实录,共计14605字,估量18分钟读完。一起理解周朱继志的主讲提要:
1、自动驾驶前端成像的现状
2、ISP架构及其在自动驾驶中的局限性

3、成像引擎如何在繁芜光芒下提高成像准确率
4、120dB如何在自动驾驶领域中实现
在浏览正文之前,可以先思考以下几个问题:
-实验室数据和现场数据最大的差别是什么?
-如何精确的理解ISP(图像旗子暗记处理)?
-动态范围的观点是什么?动态范围是如何导致繁芜光芒问题的?
-在自动驾驶领域中,视觉比较于激光雷达有哪些优点?
-eyemore用四年韶光开拓的成像引擎有什么特点和上风?
「提醒:如果希望***自动驾驶第二季每堂课的完全课件,可以在车东西"大众年夜众号(ID:chedongxi)回答关键词“系列课”获取。如果你希望成为主讲导师,可以回答关键词“导师”,进行申请」
主讲环节朱继志:大家好,我是眼擎科技朱继志。很高兴本日有机会在智东西的自动驾驶系列课上给大家分享关于繁芜光芒视觉成像这个难题。看到群里有很多在自动驾驶以及视觉干系的各种行业的小伙伴们,我先大略先容我们公司,我们是一家创业公司,专注于做新型的成像引擎(我们不叫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的CMOS Sensor,这个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机器比人眼要看得更清楚,我们只做眼睛,不做识别的东西。在自动驾驶领域,我们要做的事情便是让车比人眼看得更加清楚,能够办理目前很多在视觉成像上的痛点。这便是我本日禀享的内容,感激大家。
Q&A环节提问一
熊林云-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的层数,我不知道你是怎么理解的。实在这个问题回归到实质上来讲还是动态范围的处理。信息量越大,减少的信息就越多,你说的多层叠加该当是指多帧的合成,常日情形下,我们是不用多帧合成的方法的,由于多帧合成随意马虎导致在运动时涌现很多不可预知的副浸染,这个在前面也讲过。要把稳到在我们提高了一个东西的同时会不会丢失其他东西。这是一个整体的观点,不能单方面地把参数提高。