赞
踩
由摄像头的原来到自动驾驶用的应用讲解哦~~
Camera 在智能驾驶中的地位——最核心/最重要没有之一的感知传感器
Camera:通过镜头和图像传感器实现图像信息采集与处理,随后在计算平台上利用计算机视觉算法实现车道线,红绿灯,交通标志和行人,车辆障碍物的环境感知任务,是最接近人类视觉的传感器。虽然由于其无源特性(不包括深度相机,主动式红外相机),其在暗光下表现一般,但由于在分辨率,色彩纹理,进一步的物体类型识别上的显著优于其他传感器的优势,Camera车载摄像头应用十分广泛。从早期的行车记录,倒车影像,泊车环视逐步延伸到前碰预警(著名的mobileye),车道偏离辅助,行人检测,更进一步的,成为了目前高阶智能驾驶最核心,最重要,绝对不可缺少的感知传感器,没有之一。
毕竟目前我只听过 "去lidar,纯视觉"的智能驾驶方案,好像还没听过"去Camera,纯lidar"的智能驾驶Sensor set?
Camera模组的硬件结构与基本原理
CCM(Camera Compact Module)一般译为摄像头模组,主要由镜头系统(lens system,一般会集成红外滤光片IR Filter),图像传感器(Image Sensor,CMOS or CCD)、ISP(Image Signal Process)(* 1),串行器(Serializer) 构成(* 2)。基本原理是通过外部光线照射在物体上,经过反射、折射后穿过镜头(Lens),再经过滤光片滤波投射到图像传感器(Image Sensor)感光面上。Image Sensor将Lens上传导过来的光线转换为电信号,经过ISP转换成GRB、YUV等格式图像信号,得到可视图像。
(* 1)若CCM内部Sensor内部未集成ISP,则通过DVP的方式传输,此时的数据格式为RAW RGB(原始数据),再在域控中进行ISP以及后续处理。目前阶段下的智能驾驶实际应用中,采用这种方式较多(尤其是非环视摄像头)。ISP是否在摄像头模组内集成,和摄像头模组与域控制器的距离,摄像头模组的安装位置对散热,体积的要求都有关系,需要综合考虑。
(* 2)在某些智能驾驶方案中,CCM还会集成了域控一些功能,在CCM中进行目标检测等感知算法Pipeline,构成所谓的Smart Sensor,例如鼎鼎大名的MobliEye。不过这种方式常见于较为简单的智能驾驶功能,在本章不做过多篇幅讨论。
CCM经典构成:Lens System→Image Sensor→ISP
CCM的硬件结构图
镜头系统(lens system)
负责聚焦光线到图像传感器(Image Sensor)上,将视野中的物体投射到成像介质表面,根据成像效果的要求不同,可能要求多层光学镜片。
一般情况下,用G(Glass)代表玻璃镜片,P(Plastic)代表塑料镜片,如2P,1G1P等。在车载使用中,由于玻璃镜片的耐高温,耐擦挂的性能较好,多使用玻璃镜片,对于某些高端的车载摄像头,会辅以非球面镜片设计。镜头系统的另外一个重要组成部分是IR Filter 滤光片,它可以将人眼看不到的光波段进行滤除,只留下人眼视野范围内的实际景物的可见光波段(320nm-760nm),以防止红外光线对图像传感器产生干扰,从而影响拍摄效果。
因此,如果有某些摄像头(比如地库摄像头需要暗光照情况下做红外补光)没有加装IR Filter 滤光片,那么面对越来越多的lidar(905/1550nm)传感器的时候,可能会有摄像头模组损坏的风险。所以尽量不要使用相机类设备对准lidar拍摄。
图像传感器(Image Sensor,CMOS or CCD):
图像传感器可以利用光电器件的光电转换功能将感光面上的光像转换为与光像成相应比例关系的电信号。主要分为 CCD 和 CMOS 两种。Sensor利用感光二极管(Photodiode)进行光与电的转换,将影像转换为数字信息,现阶段普遍分为CMOS(Complementary Metal Oxide Semiconductor)和CCD(Charge Coupled Device)两种影像测感组件。由于Sensor的每个像素只能感光R、G或者B光,因此每个像素储存的都是单色光,也就是RAW DATA(同RGB RAW DATA)。如果这个原始数据的排列格式是 RGRG/GBGB排列的,我们叫做 Bayer RGB(这个最常见)。所以 Bayer RGB是属于RAW DATA的,但是RAW data不一定是Bayer RGB,不同厂家的Sensor,其RAW DATA排列是不同的。目前使用的大多数用于智能驾驶的摄像头模组,均为CMOS器件。
CMOS和CCD有诸多差异,其演进历史和技术细节非常厚重,并非本书重点,不做过多篇幅介绍。下面仅给出前人总结好的差异点,需要了解技术细节的同学移步下面的专栏 4. 信号转换:CMOS与CCD图像传感器章节,这里不做赘述。
火车侠专栏中针对CCD与CMOS的对比
ISP(Image Signal Process)
前面提到过,Sensor只能感知单色光(R、G或B),ISP的主要工作,就是把Raw DATA格式转换成RGB格式或者是YUV格式(色彩插值,Demosaic)输出到相机外部。在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为整个相机拍照、录像的第一步处理流程,用于处理图像信号传感器输出的图像信号。它在相机系统中占有核心主导的地位,是构成相机的重要设备,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像机的成像质量,是拍照过程中的运算处理单元,其地位相当于相机的“大脑”。
一个典型的ISP pipeline,图片引用自Overview and Empirical Analysis of ISP ParameterTuning for Visual Perception in Autonomous Driving
Serializer串行器:
串行器是为了将ISP处理过的并行信号传输到远端(域控制器)。并行传送方式的前提是用同一时序传播信号,用同一时序接收信号,而过分提升时钟频率将难以让数据传送的时序与时钟合拍,布线长度稍有差异,数据就会以与时钟不同的时序送达另外,提升时钟频率还容易引起信号线间的相互干扰。因此,并行方式难以实现高速化。只有将并行数据串行化,才能够远距离且高速的传输数据。通常通过LVDS,同轴电缆与位于域控制器DeSerializer配套使用。
串行器在CCM架构中的作用,图片来自Aili-Light专栏
TOP3关键参数
由于汽车的工作环境相对严苛,对于车载camera模组来说,其制造工艺,可靠性要求等显著高于一般民用/工业摄像头模组,需要在高低温循环环境,强振动,高湿高热等复杂工况下稳定工作。其关键参数包括了使用寿命,输入电压,功耗,DR(Dynamic Range),使用温度范围,IP防护等级,FOV,焦距,分辨率,画面比例,白平衡等等诸多维度。对于高阶智能驾驶而言,除了一些常见的车载工业品参数维度(比如输入电压,功耗,IP防护等级,使用温度范围等),下面主要介绍在智驾场景使用中,笔者认为需要重点留意的TOP3维度:FOV,HDR,分辨率。
FOV(Filed Of View)
中文一般译为视场角,一般由三个维度描述,即HFOV(Horizontal Filed Of View,水平视场角),VFOV(Vertical Filed Of View,垂直视场角),DFOV(Diagonal Filed Of View,对角视场角)。
HFOV,VFOV与DFOV
在成像平面宽度和高度固定的情况下,FOV的大小由Focal Length(焦距)直接决定。焦距越大,看的越远,但FOV越小,反之FOV越大。镜头根据焦段,可以分为长焦镜头,标准镜头,(超)广角镜头。它们之间没有明显的划分,只需要了解大概范围即可。通常会把短焦距、视场角大于50°的镜头,称为广角镜头,如前视120°摄像头;把更短焦距的镜头叫超广角镜头,如环视(鱼眼)摄像头;而把焦距很长的镜头称为长焦镜头,如智驾域经常用到的30°前视摄像头。介于短焦与长焦之间的镜头就叫做标准镜头,如某些侧视摄像头。也是因为这个原因,对于目前的高阶智能驾驶而言,其前视模组系统为了兼顾视场角与感知距离,通常采用不同焦段(视场角)的33多个单目视觉系统组合而成。
FOV与焦距的关系,图片来自Shong桑专栏
HDR (高动态范围,High Dynamic Range)
Dynamic Range:指的是在拍摄的相同画面内,能正常显示画面中最亮和最暗物体的区间范围。动态范围越大,其能正常显示的过亮或者过暗的物体就越多,其显示细节层次也就越丰富,也就是所谓的HDR(High Dynamic Rang)。在车载使用环境中,经常会遇到光照强度对比强烈或暗光的场景,这时一个高动态范围的Camera模组就显得尤为重要。可以想象,在下图这种光照条件急剧变化的场景下,若车载摄像头的动态范围不够大,比如下图中Saturation区域如果停放一辆静止车,会导致ego(自车)漏检从而造成全责追尾事故。一般情况下,高阶智能驾驶因其应对的工况复杂,对车载摄像头模组的动态范围都较高,对于前视和环视摄像头而言,100dB左右为基本要求,其他的出于成本考虑,可以相对较低,一般也需要不低于80dB。
索尼IMX390的动态范围可达120dB
Resolution 分辨率
分辨率是用于度量图像内数据量多少的参数,通常表示了摄像头模组的解析能力,指在长和宽的两个方向上各拥有的像素个数,由其Image Sensor决定。可以想象,在不考虑其他情况下的前提下,这个分辨率越大越好。不过摄像头分辨率的提升,带来的是传输带宽,后级域控制器感知算力要求的成倍提高,且对于一个确定的高阶智能驾驶Sensor Set而言,通常情况下拥有10个起步的摄像头(3* 前视,2侧前,2侧后,4环视,1后视),对域控的处理能力要求很高。很多时候,这是一个系统性的trade off。
蔚来采用的7颗8M+4颗环视3M视觉系统,在4颗OrinX的驱动下,堪称【硬件堆料】性能怪兽
所以如果以后看见车企吹高清摄像头,哪怕是15M的高清摄像头都要淡定,image进入域控给感知算法用的时候resize一把成1024*1024,你多高的摄像头硬件像素都不好使,同理还有lidar的线束值。。这些都必须匹配后级域控的强大处理性能,才能发挥出摄像头本身的高清能力。
事实上,个人认为8M的摄像头是过剩的,因为后级域控明显不可能不做任何类似ROI Crop和Resize操作的情况下,有能力处理如此大的摄像头模组数据。关于这部分的讨论,在后续的2-13:关于智能驾驶”硬件堆料“的讨论中进一步阐述。
通常以万或者百万为单位进行描述,用于高阶智能驾驶的摄像头分辨率目前基本在100万起步,比如tesla的model3就是120万像素。蔚来在ET7发布时官宣了其800万(8MP)高清摄像头模组,也是目前分辨率最高的车载摄像头模组,紧随其后的,小鹏G9,极氪001都采用了8MP的摄像头模组。对于高阶智能驾驶而言,其前向摄像头尤为重要,所以前向一般会采用分辨率较高的摄像头模组,而用于低速泊车场景下的鱼眼摄像头会采用分辨率较低的模组。
Molieye SuperVision 中的Sensor set,除了环视摄像头之外,均为8MP
关于各个不同智能驾驶量产车型的Sensor Set,在下面的章节2-12 量产传感器Sensor汇总讨论 会详细比较介绍。
搭载在蔚来ET7上的8MP超高清摄像头模组爆炸图(exploded view)
除此以外,类似摄像头模组还需要关心的指标包括了快门速度(影响Rolling),抗频闪(影响夜晚特别是红绿灯识别),帧率等,这里不做过多讨论。感兴趣的读者可以自行查阅相关资料。
高阶智能驾驶中Camera分类
按照模组内包含的摄像头个数不同,车载摄像头可以分为单目,双目,多目等;按照镜头焦距不同,分为长焦,标准,广角/鱼眼等;按照其在智能驾驶汽车上的安装与视野位置不同,可以分为前视(Forward (Front) Camera),后视(Rear Camera),侧前视(Forward Side (Wing) Camera),侧后视(Rearward Side Camera),用于DMS(Driver Monitor System,驾驶员监测系统)的内置摄像头和环视(Surround View camera)。下来重点按照前视的单目,双目,三目与环视摄像头。侧前/侧后/后视均可以认为是单目摄像头的范畴。
Tesla的Camera Sensor Set,很有意思的是,Tesla没有环视鱼眼摄像头
单目摄像头模组
ZF与Mobileye合作的单目摄像头模组
顾名思义,单目摄像机模组只包含一个摄像机和一个镜头。这是成型最早的车载摄像头系统,结构简单可靠,成本较低。著名的mobileye便是以单目摄像机为基础,不断演化,发展,奠定了其智能驾驶行业龙头供应商的地位。由于很多图像算法的研究都是基于单目摄像机开发的,因此相对于其他类别的摄像机,包括标定,检测等单目摄像机的算法成熟度更高。
但是单目视觉系统的缺点也非常明显:单张图片里无法确定物体的真实深度信息。单目视觉情况下,测距使用的基本原理是透视原理。简单来说,就是近大远小,物体尺度会随着距离变化而变化。通过识别出来的目标类型,辅以目标占据的像素点数目,来判定目标的距离,这种方式可以应对一般结构化道路上绝大多数的情况:
近大远小的透视原理,注意红/黄/绿的目标车辆BBOX所占像素点和远近距离的比例关系(原图来自小红书https://www.xiaohongshu.com/explore/613ef387000000002103e381,侵删)
如上图,红色BBOX(Bounding BOX)所占的像素点显著大于黄色大于绿色,因此像素点占据更多的物体,距离越近(前提是这个两个物体为同类物体,即在系统中可以认为其Size真值相同)。在大刘的《三体·死神永生》的三个童话故事中,冰沙就是由于深水王子不符合透视原理,败于深水王子剑下:
冰沙冷冷一笑,“针眼不能画出你的画像,我的利剑却可以刺穿你的心脏!”说着他拔剑出鞘。
冰沙与深水的剑术不相上下,但由于后者不符合透视原理,冰沙很难准确判断自己与对手的距离,处于明显劣势。决斗很快结束,冰沙被深水一剑刺穿胸膛,从高高的台阶上滚下去,在石阶上拖出一条长长的血迹。
然而透视原理不是万能的,在不清楚类别的前提下,我们很难判断它是一个远处的大目标,还是一个近处的小目标。首先,要把物体类别判断准确,其次需要假设所有同一类别的物体,其同一类别的物体大小都一致(* )。实际上,目前的智能驾驶感知系统能够识别的物体非常有限,也就是所谓的”白名单“目标非常有限。一般情况下动目标的种类在10种上下,这也就意味着白名单之外的物体,或者由于深度学习NN Model泛化性不强造成的白名单内部的物体漏检以后,基本会直接造成紧急接管或事故。
除此以外,在实际工程中,还需要有更多的假设,这部分在后续3-1章:相机模型与坐标系中进一步讨论。
道理我都懂,为什么鸽子这么大系列:在不清楚类别的前提下,我们很难判断它是一个远处的大目标,还是一个近处的小目标
显而易见的,对于这种尺度变化造成的歧义性,单目视觉系统就无法很好的估计深度信息了,甚至估计出来的可能是完全错误的信息。其次,近处的物体,需要用几百甚至上千个像素点描述;而处于远处的同一物体,可能只需要几个像素点即可描述出来。这种特性会导致越远的地方,一个像素点代表的距离误差越大,因此对单目来说物体越远,测距的精度越低。当然,目前也有很多论文在研究单目视觉测距这一课题,通过各种手段比如运动三维重建(Structure from motion,移动的单目相机通过比较多帧差异可以得到深度信息),深度学习等。这部分在3-1章:相机模型与坐标系 中有更进一步的描述。
双目摄像头
五菱上搭载的大疆”灵犀智驾系统“,其前视为一对双目摄像头模组
前节提到,即使可以利用先验知识和图像中的上下文信息,但基于单目的3D感知的准确度并不能完全令人满意。尤其是当采用深度学习的策略时,算法的准确度非常依赖于数据集的大小和质量。对于数据集中没有出现过的场景,比如一些非常规的,智能驾驶常见的障碍物如:异形车,护栏,石墩,甚至各种奇怪形状的轮胎碎片,仅有单目的情况下,深度学习对这类障碍物是很难识别,进而进行有效的距离估计的。
为了解决单目视觉深度估计的不适定问题(ill-posed problem),参考人类视觉,进一步的设计了双目系统:
相近的两个摄像机拍摄物体时,会得到同一物体在摄像机的成像平面的像素偏移量。有了像素偏移量(视差,Disparity)、相机焦距和两个摄像机的实际距离这些信息,根据数学换算即可得到物体的距离。举个例子:现在,伸出你左右手的食指,放在离眼睛不同距离的位置上。先闭上左眼看两只手指,再闭上右眼观察两只手指,可以发现,左右眼看到的东西是不一样的,将同一空间物理点在不同图像中的映像点对应起来,这个差别,我们称作视差(Disparity)图像。参考下图:
其次,距离眼睛近的物体移动的距离(视差)更大,距离眼睛远的物体移动的距离(视差)更小。也就是说,视差与深度成反比。这样,我们可以根据视差,来估计该物体距离双目摄像头的深度信息了。同样的,本章中争取不涉及具体的数学公式推导,具体的推导见3-1 智能驾驶软件基本知识一节:
双目视觉可以解决透视变换带来的歧义性,因此从理论上来说可以提高目标感知深度信息的准确度。但是双目系统在硬件和软件上要求都比较高。
双目的结构设计:由于双目深度估计算法假设了左右目相机之间只存在已知的平移,没有旋转,双目部署到产品后可能会因为温度、振动等因素破坏了这个假设,因此对结构设计的要求是非常高的。
在线自标定算法:这个跟结构设计的要求一样,目的也是为了在双目相机部署后在线的对双目的外参进行自标定,以保证外参误差在算法可接受的范围内。
双目深度估计的实时算法:双目不同于激光雷达,深度信息并非通过传感器探测直接获取的,而是根据几何原理计算得到的。传统的双目深度估计算法通常计算量较大、对模型部署,访存带宽,系统算力要求很高。
最后,在实际工程中,同一个目标可能在两个视角中都不完整,需要大量的工程化后处理;且对于类似tesla事故这种白色大卡车的场景,其特征点不明显,难以获得视差。
与单目类似的,双目模组在固定焦距后,不考虑对ROI进行动态crop操作时,较远处物体在摄像头视野中占据的像素点位非常少。对于一个远处的物体,一个像素点代表的距离误差很大。且焦距短的双目镜头,也有确实远处信息的问题。这也就引出了下面的三目摄像机。
三目摄像头
由于单目和双目都存在着对较远物体深度信息测量不准的情况,因此广泛应用于智能驾驶的摄像机方案为三目摄像机。三目摄像机其实就是三个不同焦距单目摄像机的组合(* )。下图为特斯拉 AutoPilot 2.0安装在挡风玻璃下方的三目摄像机。
(* )理论上,也有一个双目和一个单目这种组合,不过我还没有在实际量产的项目中见过,如果有读者有相关信息,欢迎留言讨论哈
Tesla著名的前视三目摄像头
根据焦距不同,每个摄像机所感知的范围也不尽相同。如下图,可以看出三个摄像头的感知范围由远及近,分别为前窄视野摄像头(最远感知250米,28°)、前主视野摄像头(最远感知150米,50°)及前宽视野摄像头(最远感知60米,35°)。三目多焦段组合,也是目前主流的国内智能驾驶前视摄像头安装布置方案。
需要说明的是,车载摄像头模组能”看“多远,取决于诸多因素,前面在讨论8MP高清摄像头的时候已经有一定铺垫。具体这部分的讨论,会放在2-13:关于智能驾驶”硬件堆料“的讨论中进一步阐述。
特斯拉AutoPilot 2.0视觉传感器感知范围
特斯拉AutoPilot 前视三目摄像头基本参数
对于一个固定像素的摄像头模组来说,感知的范围要么损失视场角,要么损失距离。三目摄像机能较好地弥补感知范围的问题,因此在业界被广泛应用。且由于三目摄像机每个相机的视野不同,因此近处的测距交给宽视野摄像头,中距离的测距交给主视野摄像头,更远的测距交给窄视野摄像头。这样一来每个摄像机都能发挥其最大优势。不过同理,三目摄像机本质上是三个单目相机,因此,其测距也会收到尺度约束和先验知识,来辅助得到部分物体的深度信息。本质上也收到深度学习的训练集影响。因此也有引出了tesla各式各样的撞车事故。
Tesla的事故都非常类似,本质上是单目视觉目标检测原理所致。不过上了OCG以后应该会优化很多。
环视摄像头
环视摄像头(SVC,Surround View camera)是一类比较特殊的摄像头,前面的单目/双目/三目摄像头基本上都用于行车场景,焦段为广角/标准/长焦,而环视摄像头基本应用于低速泊车场景,且为鱼眼镜头(FOV大于170°),为了获得足够大的视野,镜头画面畸变较为严重,感知距离也比较近,一般在10米左右。其主要作用在于泊车时识别画线车位与较近距离的障碍物等。我们现在熟知的360°倒车影响功能,就是利用环视摄像头采集的图像拼接而成。一般情况下4个为一组,安装在前后车标附近与后视镜模组上。 whaosoft aiot http://143ai.com
对于可自动折叠的后视镜,其模组上安装的环视摄像头要特别留意安装位置,不能布置在可以运动的组件上。
四个环视摄像头拼接前的图像,可以看出图像畸变严重
通过标定值,进行图像的投影变换,可将图像还原成俯视图的样子。之后对四个方向的图像进行拼接,再在四幅图像的中间放上一张车的俯视图,即可实现从车顶往下看的效果。这步变换叫IPM(Inverse Perspective Mapping 逆透视变换)变换。在3-1 章节中会详细介绍。整体效果如下图。
IPM拼接后的360°泊车辅助影响
Camera在智能驾驶中的功能
如本章开头提到的:camera是最接近人类视觉的传感器,虽然在实际使用中,仍有这样或者那样的问题,但是依然在高阶智能驾驶中承担着最核心最重要,且没有之一的环境感知功能。从感知传感器的功能出发,camera的作用主要包括静态环境感知和动目标感知两部分。其中静态环境感知主要指的是道路中存在永久或临时设施,主要包括道路标志,标线,交通灯,道路边界等;动目标感知主要指的是周围环境中的交通参与者/道路使用者,主要包括各类车辆和VRU等。
Tesla 的感知效果页面,包括了感知的诸多任务元素
ENCAP中的VRU Targets
最后,我想说现在智能驾驶真的越来越卷了,小鹏都开始识别交警了,小鹏的同学们,你们是想做什么特殊策略么?(手动狗头)
最新的小鹏4.4版本加入交警识别*
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。