论RGB摄像头的故障及其在自动驾驶应用中的影响
一、引言
近年来,自动驾驶吸引了越来越多的关注,行业的需求和投资持续增长[17]。自动驾驶系统的目标是无需人类干预即可自行驾驶:车辆检测周围环境,确定自身位置,并进行操作以安全抵达指定目的地。
传感器技术、数据融合以及人工智能和机器学习(AI/ML)应用中的推理算法是自动驾驶系统中的关键技术,发挥着基石作用。这些技术参与了安全驾驶的大多数核心任务,例如传感器融合、环境表征、场景理解、语义分割、跟踪、目标检测与识别[15]。在各类传感器中,红绿蓝(RGB)相机被公认为最常用且不可替代的传感器[15]。尽管摄像头存在对外部光照敏感性强和视野有限等已知缺点,视觉识别系统仍是自动驾驶中最可靠的应用之一[33]。车辆相机已被广泛应用于交通标志识别、车道检测、障碍物检测等多种场景 [15],[16],[17]。此外,许多前瞻性应用正在研究中; 例如,在交叉路口,了解行人和骑行者的位置可使车辆做出复杂的优先决策[16]。同时,摄像头也是构建能够感知周围环境的自动驾驶系统的最具成本效益的解决方案之一[17]。
当相机提供的图像质量下降时,可能会发生致命事故。负责处理输入的人工智能/机器学习应用中的训练好的智能体可能依赖有偏数据,从而导致错误(不安全)的决策。
大量研究探讨了如何使训练好的智能体对人为制造或意外篡改的输入图像具有鲁棒性,以及如何保护相机免受可能干扰相机正常行为的直接攻击[35],[36],[37],[18],[19]。然而,很少或几乎没有研究关注从发生故障的红绿蓝相机中识别出真实且完整的图像意外修改集合。据我们所知,现有研究虽然考虑了一组可信的图像改变,但并未系统分析相机可能出现的故障类型,因此缺乏统一的故障模型以及用于复现该模型的软件库。
我们观察到,应系统地研究相机故障及其对整个系统的影响,以充分理解由此产生的系统级安全威胁,并仔细识别可能的缓解措施。此类研究将有助于系统和软件工程师在系统架构设计以及基于图像的AI/ML应用的鲁棒性评估方面的工作。
根据上述说明,本文的贡献定义如下:i) 我们通过分析不同故障、其原因及其对系统的影响,创建并讨论了自动驾驶领域中车辆相机的故障模式;ii) 我们回顾了组件级别现有的缓解措施;iii) 我们通过软件复现了故障对生成图像的影响;iv) 我们以自动驾驶应用为参考,验证了这些影响,并讨论了相关的安全风险。从技术上讲,我们分别通过以下方式实现这些贡献:i) 针对安装在车辆上的RGB相机组件,定义FMEA(故障模式与影响分析,[14]),并进行详尽的文献综述;ii) 开发了一个基于Python的故障库,我们已将其公开发布于[9], ,用于根据故障模式修改图像;iii) 在Carla自动驾驶模拟器[1],中,向运行来自[3]的训练好的智能体的模拟车辆的前视摄像头注入故障。最后这一项使我们能够讨论训练好的智能体的异常行为,主要体现在碰撞次数上。此外,我们观察到对图像的轻微修改就足以欺骗训练好的智能体,并且同一故障在不同天气条件下可能对训练好的智能体产生不同的影响。
本文的其余部分组织如下。在第二节中,我们介绍了本工作的基础原理。在第三节中,我们详细说明了相机组件的已识别故障、其对输出图像的影响以及可能的缓解措施。在第四节和第五节中,我们分别将故障模式实现在一组Python模块中,并将其注入模拟车辆的相机中,展示其影响并分析故障风险。最后,在第六节中我们讨论相关工作,在第七节中我们总结了论文的贡献并定义了未来的工作方向。
二. 背景概念
我们介绍了本研究的基础概念。在第二节II.A中,我们定义了作为本研究参考的RGB相机(以下简称相机)的架构;在第二节II.B中,我们描述了用于识别相机故障的FMEA方法。
A. 相机架构
我们将相机分为五个组件(图1):镜头、相机机身、拜耳滤镜、图像传感器和图像信号处理器(Image Signal Processor)[27]。这五个组件共同作用以生成输出图像。
镜头。 摄影镜头是能够收集和再现图像的设备 [7]。镜头是对图像质量影响最大的组件。摄影镜头可以由一个或多个镜头和/或反射镜组成,作为凹面镜和凸面镜的系统,通常还与屈光镜组合使用。区分不同镜头的主要基本因素是焦距,它可用于将镜头划分为不同的大类。表征镜头的第二个因素是亮度。第三个区别因素是微距:微距镜头能够从无穷远对焦到1:1放大率,即现实生活中物体的大小与其在传感器上成像的大小相同。另一个重要因素是对焦:对焦可以是手动或自动。镜头还包含最少的电子元件,用于对焦马达(当为自动时)以及变焦 [20], ,并且它们可能具备或不具备防抖功能。
相机机身。 相机机身是容纳相机所有电子元件的容器。拜耳滤镜、图像滤镜和图像信号处理器均包含在此处。通常,相机机身的功能是固定设备并保护内部组件免受暴露和与外界接触。例如,外壳可保护传感器免受光线和其他可能损害源的影响。
拜耳滤镜。 拜耳滤镜(或拜耳图案)用于数字图像的获取 [71]。图像传感器中的光电二极管本质上是色盲的:它们只能记录灰度。为了获得图像中的颜色,它们被覆盖上不同的颜色滤镜:根据拜耳滤镜指定的模型,使用红、绿、蓝( RGB)三原色进行排列。该滤镜将三个基本颜色RGB的传感器分组为2x2像素点的单元:每个单元包含两个绿色元素、一个红色元素和一个蓝色元素(图2)。每个像素被过滤以仅记录三种颜色中的一种:为了获得彩色图像,可以使用各种去马赛克算法来为每个像素插值出完整的红、绿、蓝数值。这些算法利用周围的像素来估计特定像素的值 [70]。
图像传感器。 图像传感器是一种将图像转换为其表示形式或电编码的换能器。本质上,它是一块能够捕捉和测量光(即到达芯片的光子数量)的硅芯片。传感器通常呈矩形形状,尺寸较小,具体尺寸因制造商和型号而异。传感器表面由数百万个微小的接收器组成,这些接收器以规则网格排列。这些接收器也称为像素点,是执行光子到电子转换的微传感器。每个独立的接收器都能够提供与照射到其上的光子数量成正比的电荷。检测到的电荷随后由专用的模数转换电路转换为数值。从各个像素点获得的每个数值将构成所获取图像的一个像素。目前市场上有两种类型的图像传感器: CCD(电荷耦合器件)和CMOS(互补金属氧化物半导体)。两者都基于使用模数转换器(ADC)将每个像素点的电荷转换为数字格式的概念,但在信息处理方式上有所不同。实际上,对于CCD传感器,电荷信息按行从像素点读取,并存储在一个寄存器中,寄存器的内容随后传递给放大器,再传送到模数转换器。当整行处理完成后,该行数据从输出寄存器中清除,并载入下一行进行相同处理。而在 CMOS传感器中,除了像素点外,还集成了一系列晶体管,用于对电荷进行放大并将其转换为电压。通过矩阵结构,可以通过每个像素点的 [行、列] 坐标单独选择该像素点,然后将电压发送到模数转换器进行最终的数字转换 [6],[42]。
ISP. 图像信号处理器是一种专用的媒体处理器或数字信号处理器(DSP),用于数码相机及其他设备中的图像处理 [42]。其功能多样,对图像初次采集后的最终结果至关重要,例如:去马赛克、图像传感器校正、降噪、图像锐度校正、图像缩放、镜头畸变校正、色差校正、图像压缩和JPEG编码、视频压缩、音频处理/压缩/编码等 [42]。
B. 失效模式与影响分析原理
失效模式与影响分析(FMEA,[14])是一种广泛使用的可靠性管理技术,旨在识别组件或流程中可能发生的故障,理解这些故障的影响,评估与这些故障模式相关的风险,并最终按重要性对问题进行分类[4]。这种故障识别有助于选择并实施纠正措施,以应对最严重的潜在故障。FMEA通常通过分析方式进行,包含四个阶段 [4],[5]:i) 识别系统所有已知或潜在的故障模式;ii) 确认每种故障的原因和影响;iii) 根据风险对已识别的故障进行排序,风险定义为故障发生概率与其严重程度的综合;iv) 针对风险最高的故障采取补救措施。
应用失效模式与影响分析(FMEA)的基本假设是,风险不仅与故障发生的概率相关,还与其后果的严重性以及避免或减轻该故障的能力相关。最终,FMEA提供了故障模式的知识库以及纠正措施的信息,可作为未来故障排除活动的资源,这与我们工作的目标一致,也是选择该技术的原因。
III. 相机故障分析
我们考虑车辆的前视摄像头,该摄像头按照第二节 II.A中讨论的五个组件进行组织,并假设输出图像将由基于图像的AI/ML应用进行处理。我们对相机的组件进行失效模式与影响分析(FMEA)。FMEA的应用可识别相机组件的故障模式、这些故障的原因及其在相机层面的后果,即对输出图像的影响。此外,我们通过一项关于相机故障的文献综述来补充该列表,以确保没有遗漏任何相关故障模式。与 FMEA通常的分析性应用相比,由于缺乏参考数据,我们无法为各个故障所对应的风险分配可信的评级(这与FMEA中风险评级公认的局限性一致 [4])。然而,我们通过第四节和第五节中对已识别的故障进行仿真,来缩小这一差距。
在第三节III.A中,我们按字母顺序列出故障;我们为每种故障分配一个形象的名称,并在本文其余部分使用这些名称。在第三节 III.B中,我们对故障进行总结,并报告来自现有技术的缓解措施。
A. 已识别的故障列表
条带现象。 在此类故障中,生成的图像背景中可见许多平行的水平和/或垂直线条。当观察较深的颜色时,这些线条更为明显,尽管在较浅的颜色上也能被察觉。另一种类型的条带现象出现在纯色背景的图像中,其色调逐渐变浅:这通常被称为抖动 [59]。图3展示了注入到 图4a中的条带现象故障。仅显示了部分条带图像,以便肉眼清晰地观察到条带现象的影响。条带现象故障体现在图像传感器中。
黑色、白色(亮度)。 这些故障代表了亮度的变化,从最低值(黑色图像)到最高值(白色图像),这可能是由于镜头基本组件(如快门、光圈或虹膜)发生故障所致(图4b)。例如,如果快门出现故障,无法让正确数量的光线通过镜头,则亮度可能会发生变化,从完全黑色到完全白色。这些亮度故障表现在镜头组件中。
Blurred。 如果设备拍摄的图像未对焦,可能会出现BLUR(图 4c)[69]。特别是在自动驾驶中,确保图像清晰至关重要,捕获的图像是高质量的,因此是对焦的。这一点显而易见,因为基于图像的AI/ML应用会根据相机图像的信息内容来做出关于车辆行驶的决策。模糊故障表现在镜头组件上。
咸水/盐水。 半咸水现象在沿海地区较为常见,若未使用合适的材料处理和/或未进行长期维护,将对材料的耐久性造成压力[6]。由于盐分含量较高,水和空气的腐蚀性可能会损坏镜头以及相机机身本身,导致外部物质侵入电路[43]。在最严重的情况下,这可能影响图像采集。图像可能以多种方式发生畸变;有关咸水/盐水影响的完整表征,请参见其他各类故障影响的描述。该故障体现在镜头和相机机身。
亮线。 这种故障在现有知识和技术条件下较为罕见。生成的图像可能出现明亮的垂直和/或水平线,这些线条用肉眼也能清晰辨别。这些线条的产生是由于使用了激光雷达:这种激光技术发射的光强度(对人眼不可见)可能会严重损坏相机的图像传感器。该故障可能在图像传感器上表现出来。
破损镜头. 一个或多个内部或外部镜头可能会破裂,例如由于车辆颠簸造成的机械应力,或附近车辆轮胎飞溅的碎石撞击所致。相机通常会输出图像,但图像中将包含一条额外的线(如果是划痕)或更复杂的图案(图 4d)。此故障出现在镜头组件中。
VR破损. 在此情况下,考虑的是负责减震功能( VR)的组件发生故障。该组件位于镜头内部,在许多相机模型中较为常见。其故障会导致失焦图像:因此,此故障的影响与模糊情况相似。VR破损表现在镜头组件中。
冷凝. 当外界空气温度急剧下降时,镜头上可能出现冷凝现象。冷凝或湿度会降低图像质量(图4e),如果渗入设备内部,还会损坏电子部件 [72]。图像能够被正常获取,但由于镜头上的光晕,每幅图像可能会出现严重变化 [72]。如果湿气渗入相机机身内部,可能导致故障,甚至使设备完全无法运行。冷凝故障表现在镜头和相机机身中。
坏点。 在此类故障中,输出图像出现一个或多个像素大小的缺陷。我们将此故障称为“坏点”,因为它与液晶显示屏上常见的故障具有相同的视觉效果:当某个像素停止正常工作时,会在屏幕上显示为一个黑点。单个损坏的像素可能不会妨碍人工智能/机器学习应用对捕获的图像进行良好解读,但故意修改的像素实际上可能会造成影响[39]。然而,多个坏点(例如,极限情况见图 4f)更有可能降低使用该图像的人工智能/机器学习应用的准确性。坏点故障表现在图像传感器上。
内部脏污 ‐ 外部脏污。 这两种故障(图4g)可以一并讨论,因为它们都涉及各种类型和尺寸的碎片(最常见的 是灰尘和污垢)沉积在内部或外部镜头上[72]。两者之间最显著的区别在于,外部脏污通常可以通过清洁物镜的第一个镜头(即最外层的镜头)来清除。而清除内部脏污则需要更多时间,有时还需要专业人员[44]。与脏污相关的故障表现在镜头组件上。
电过载。 由于电过载导致导体出现过度且危险的温度升高,可能会损坏相机机身内的电子部件,甚至很可能使其断裂。具有此类通用电气问题的设备可能会停止工作,或处于无法处理图像 [44] 的状态;其结果是图像生成错误,或者更可能的情况是完全无法生成图像。电过载可能出现在相机机身中。
Flare. 镜头组本身的结构会产生眩光。眩光是由于太阳或其他光源在镜头上的反射所引起的。生成的图像会显示出各种颜色的斑点,通常不止一个,并且集中在一条假想的直线上。显然,这些斑点可能会覆盖图像中的细节:即使图像被正确捕获,后续处理步骤也会受到这些斑点的影响。即使采用现代技术,也难以完全消除眩光,现代技术通过将一系列镜头组件以微小间距排列,每个镜头组件承担特定功能来减轻这一问题。眩光故障表现在镜头组件上。
Heat. 这类故障与镜头或相机机身在其运行寿命中所承受的热量有关。在极端情况下,过高的热量可能导致运动部件(例如变焦)中的润滑液体蒸发。因此,可能无法使用变焦功能(如果存在)以及其他旨在使图像尽可能清晰的子组件(例如对焦工具)。与咸水/盐水类似,图像可能会以多种方式被改变,关于热量影响的完整描述,请参见其他各类故障影响的说明。热量故障表现在镜头和相机机身上。
Ice. 冰可能是导致多种相机故障的原因。事实上,这可能会损坏相机镜头和相机机身的外部材料。此外,外部镜头可能被一层冰覆盖,从而阻碍图像的获取(图4h)。冰故障表现在镜头和相机机身上。
无操作。 图像信号处理器故障时无法响应,因此无法对采集到的图像进行处理:图像将保持原始格式,不经过任何类型的处理。其结果是,相机不会向车辆的其他处理组件传输任何信息。此故障出现在图像信号处理器中。
无拜耳滤镜。 通过此故障,我们想强调:若拜耳滤镜未能正常工作,生成的图像将出现颜色错误(图4i;此处的颜色错误指的是生成了灰度图像)。后续阶段将不可避免地处理色彩错误的图像。此故障出现在拜耳滤镜上。
无色差校正 ‐ 色差校正不完整。 此故障指的是图像信号处理器未能(完全或部分)应用色差消除色差对所获取图像的影响。在光学中,轴向色差是由于通过光学仪器 [67] 的光波长具有不同的折射率,导致图像形成出现缺陷。这种缺陷可能不同程度地影响所有光学镜头系统。该故障会导致图像中物体边缘出现彩色光晕:图像显示出各种颜色(主要是紫色)的“边缘”以及一种整体性的 BLUR(图4j)。此故障在图像信号处理器中表现出来。
无去马赛克 ‐ 去马赛克不完整。 在无去马赛克情况下,我们考虑图像以原始格式(图4k)获取的情形。这意味着尚未进行去马赛克过程,因此图像中每个像素仅包含红、绿或蓝值。此时拜耳阵列尚未被解析,图像比正常情况更显像素化。绿色色调的明显占优(如图4k所示)是由于拜耳滤镜中绿色部分所占百分比较高(为红色和蓝色部分的两倍),如图2所示。此故障出现在图像信号处理器中。
无镜头畸变校正 ‐ 镜头畸变校正不完整。 此故障可能仅影响安装了广角镜头摄像头的车辆[21],[73], ,这些镜头容易使图像变形。事实上,使用这些镜头时,所捕获的图像看起来像是映射在一个球面上,且在图像中心区域向观察者方向更加凸出。如果未能成功转换为正常比例(自然对称),图像可能在此处理阶段冻结,系统可能进入停滞状态。或者,如果输出图像被错误处理,人工智能/机器学习应用可能会使用包含扭曲比例和形状的周围物体的图像。此故障出现在图像信号处理器中。
无噪声减少 ‐ 降噪不完整。 设备捕获图像,但在处理阶段(降噪)出现错误,导致无法正确去除噪声,例如图4l。此故障出现在图像信号处理器中。
无锐度 ‐ 锐化不完整。 在此情况下,捕获的图像在锐化校正阶段处理失败。这会影响相机识别和定义两个相邻区域之间分界线的能力,这些区域具有不同的亮度和/或颜色 (图5,左侧)。此故障出现在图像信号处理器中。
雨。 指相机镜头上出现小斑点的情况,这些斑点大多为白色,是由于水滴沉积在外镜头上所致[72] (图5, 右侧)。当车辆停放且无降雨时,去除这些污渍可视为简单情况。然而,考虑到车辆可能遇到的天气变化,我们不能仅考虑这种简单情况。此故障出现在镜头中。
Sand. 由于沙子,镜头外部组件可能会受到腐蚀(盐分百分比在沙子中时,会导致外部物质进入设备内部,从而可能导致相机无法捕捉精确的图像。事实上,沙子可能会堵塞一些旨在使图像尽可能清晰的子组件(如对焦、变焦等工具)。该故障对输出图像的影响类似于内部脏污‐外部脏污。此类故障出现在镜头和相机机身。
斑点。 当灰尘(或其他类型的材料)微粒沉积在图像传感器上时,就会发生此故障。这种沉积物会导致在输出图像的浅色区域上方出现可见的小斑点或阴影。此类阴影大多呈圆形,在业余摄影中非常常见,尤其是在使用多个镜头时。事实上,在对相机进行维护操作期间,尺寸难以察觉的外部物质可能进入并沉积在暴露的图像传感器上[74]。该故障效果类似于图4g中的内部脏污‐外部脏污。此故障出现在图像传感器上。
水。 如果水进入镜头或相机机身,电子组件可能会失效,极有可能无法再获取图像,或者获取的图像没有任何内容[72]。此故障出现在镜头和相机机身上。
风。 我们考虑那些带有空腔的组件部分,由于风力作用(车辆行驶或停放时),可能导致轻微的外部损坏,进而使各种外部物质渗入相机内部。因此图像采集可能出现错误:镜头可能发生位移,图像偏移或被裁切等。这对于车载摄像头来说可以认为是非常罕见的。此故障出现在镜头和相机机身上。
B. 分析总结
表I 总结了故障模式及涉及的相机组件。每个故障都对应一个缩写;该缩写将在本文其余部分中使用。此外,我们还增加了关于可在相机中实施的可能的缓解措施的讨论。
IV. 故障注入与测试活动
为了更好地理解已识别的故障的影响和安全风险,我们在软件中复现了这些故障,并将其注入自动驾驶模拟器的车载摄像头中。我们开发的所有代码均可在[9]获取。
A. 使用Carla模拟器进行自动驾驶
我们选择使用开源城市驾驶模拟器Carla(学习驾驶的汽车, [1])来创建一辆仅以相机作为唯一输入传感器在城镇中自主行驶的车辆。
Carla 已作为虚幻引擎4(UE4,[2])之上的开源层实现,用于支持自动驾驶模型(包括感知和控制)的训练、原型设计和验证。Carla 包含城市布局、多种车辆模型、建筑物、行人、交通标志等。该模拟平台支持灵活配置传感器套件,特别是我们将使用的相机传感器,它能够以指定的每秒帧数(FPS)从前视摄像头获取图像。在我们将使用的固定时间步长模拟模式下,FPS 决定了每个模拟步长的时间长度;我们设置 FPS=10 ,即一个模拟步长对应 100 毫秒的模拟时间。Carla 提供有关模拟车辆的信息,如位置、方向、速度、加速度、碰撞和交通违规。还可以指定天气条件和一天中的时间。
在现有的各种用于Carla的自动驾驶智能体中,我们使用了来自[3]的训练好的智能体。有关该训练好的智能体的技术细节不在本文讨论范围内,已在[3]中报告;我们仅介绍说明我们的测试计划所需的若干概念。使用该训练好的智能体,在每个模拟步长中都会获取:i) 车辆前视摄像头拍摄的一幅分辨率为 384×160像素的RGB图像,以及ii) 来自速度传感器的当前速度。这些值由训练好的智能体处理,以预测相机坐标中的航点,然后将这些航点投影到车辆坐标图像[3]中。简单来说,训练好的智能体在图像上“设计”出由五个航点组成的轨迹。基于此,执行一个低级控制器来决定转向角、油门级别和制动力。最后,将油门、速度和制动力施加于车辆。
我们从各种可用的训练好的智能体中选择该智能体,原因如下:i) 其代码符合最新的Carla 0.9版本;ii) 它仅使用相机作为感知系统,而如果使用深度相机或激光雷达等其他 Carla传感器将会影响我们仿真实验的目标;iii) 它表现出非常好的性能,据我们所知,目前它是仅使用相机在 Carla中进行自动驾驶任务时性能最高的模型,表现出最少数量的车辆碰撞;以及iv) 它易于使用套件进行基准测试、数据检索和数据分析,包括记录仿真视频,以及对Carla 0.9.6的修复以支持行人过街。此外,该模型在训练中采用了图像增强方法,遵循[8], ,包括像素丢失、模糊、高斯噪声和颜色扰动,这些与我们的故障集合部分重叠。
我们更倾向于使用自动驾驶代理,而不是通常在讨论图像质量 [33],[35],[36],[37] 的研究中使用的目标识别代理。事实上,自动驾驶代理能够展示持续性故障对连续图像和动作的影响,而不仅仅是对缺乏连续上下文的单个图像的影响。
B. 注入策略和故障实现
我们的注入策略包括在每个模拟步长中执行以下操作: i)获取相机的输出图像;ii)在训练好的智能体处理图像之前,通过注入选定的故障来修改图像;iii)将修改后的图像输入到训练好的智能体。这可以通过修改模拟器的代码来实现:在名为 carla_img_to _ np 的方法中,模拟器会在将图像发送给决策与控制部分之前,从车辆的相机提取图像。在此方法中,注入了用 Python 实现的模拟故障。
表II. 模拟故障的实现与配置。
| 故障 | 实现细节 | 配置(命名为:故障缩写+配置标识符) |
|---|---|---|
| 条带现象 | 我们使用PIL图像模块[12]和 [9]中的图像 | BAND:我们使用 resize() 和 blend() 方法将一张图像(位于 [9])进行叠加 表示条带现象 |
| 黑色 | 我们使用PIL的图像模块[12] 使用 PIL 的 Image 和 ImageEnhance 模块引入 | BLA:通过PIL load方法将每个像素设置为黑色 亮度 [12] BRIGH1:使用 ImageEnhance.Brightness(img),系数为 1.5; |
| 白色 (亮度) | BRIGH2:使用 ImageEnhance.Brightness(img), | 系数为 2.5;WHI:通过 PIL 的 load 方法,将每个像素设置为白色 |
| 模糊(和VR破损)使用cv2[11]引入的BLUR | BLUR:我们设置 cv2.blur(img,(12,12)) | |
| 破损镜头 | 使用PIL图像模块[12]和在[9]处提供的破损镜头、污垢、 由车载摄像头获取的帧。 将两个不同的表示镜头上污垢的图像进行叠加。 | BRLE1、BRLE2:我们使用PIL的resize和blend方法将两张不同的图像叠加 破损镜头的 |
| Ice | 使用PIL图像模块[12]和在[9]处提供的破损镜头、污垢、 由车载摄像头获取的帧。 将两个不同的表示镜头上污垢的图像进行叠加。 | ICE1、ICE2:我们使用 PIL resize 和 blend 方法叠加两个不同的透明 图像 表示镜头上结冰的图像 |
| Rain | 使用PIL图像模块[12]和在[9]处提供的破损镜头、污垢、 由车载摄像头获取的帧。 将两个不同的表示镜头上污垢的图像进行叠加。 | 雨 RAIN:我们使用 PIL resize 和 blend 方法叠加一个表示水 滴在镜头上的图像 |
| 坏点 | 我们更改颜色通道和图像 使用cv2 [11]进行图像处理 | DEAPIX1:我们考虑在画面右下角引入一个单个黑色像素 DEAPIX50:我们考虑以网格形式(5列x10行)引入50个黑色像素 DEAPIX200:我们考虑以网格形式(10列x20行)引入200个黑色像素 DEAPIX1000:我们考虑以网格形式(25列x40 水平) DEAPIX-vcl:我们考虑在相机视野中心处的一条单条垂直线,该线由相邻的黑色像素组成,相机安装在车辆上 中心处的视野,相机安装在车辆上 DEAPIX-3l:我们考虑由相邻的黑色像素组成的3条线,其中2条是水平线 和1条是垂直线 DEAPIX-5l:我们考虑由相邻的黑色像素组成的5条线,其中3条是水平线 和2条是垂直的 DEAPIX-10l:我们考虑由相邻的黑色像素组成的10条线,其中5条是 5条水平线和5条垂直线 DEAPIX-r:我们考虑2条可能与直线轨道重叠的斜线(图3i) DEAPIX-ro:我们考虑如DEAPIX-r中的2条斜线以及一小块黑色像素 在中心(可能被解释为障碍物) |
| 无拜耳滤镜 | 我们打开并更改颜色通道的 图像与cv2 [11]并转换为一个 使用PIL图像模块进行灰度处理 [12] | NBAYF:使用cv2.imread(img)打开,使用cv2.cvtColor(img更改颜色通道, cv2.COLOR_BGR2RGB)并使用 .convert( ‘LA’ ) 方法转换为灰度 图像 |
| 无色差 色差 校正 | 使用PIL图像模块进行图像处理 模块 [12], NumPy [13]和 [68] | NOCHROMAB-b、NOCHROMAB-nb:我们引入了色差的影响 通过 [ 68 ] 中的代码,分别在有 BLUR 和无 BLUR 的情况下 |
| 无去马赛克 我们使用cv2 Image.ANTIALIAS) | [ 11 ] ,处理图像,并使用PIL图像模块 [ 调整最终图像大小 | 12 ] NODEMOS:cv2.imread(img)读取图像,处理后,imgOut.resize((h,w), |
| 无噪声 减少 | 使用cv2引入斑点噪声 [ 11 ] 和NumPy [ 13 ] | 无噪声1:在 np.random.normal 方法中,我们将三个参数设置如下:0, 0.5, img .size;然后 np .random.normal ( 0,0.5,im g .size ) 无噪声2:在 np.random.normal 方法中,我们将三个参数设置如下:0, 1, img .size;然后 np .random.normal ( 0,1,im g .size ) |
| 无锐度 | 使用 PIL 引入锐度 图像和图像增强模块 12 | NOSHARP:调用方法图像增强.锐度(图像),系数为‐3.5 |
| 冷凝 COND:我们使用 PIL resize 和 blend 方法将表示镜头上冷凝的图像叠加到内部脏污 / 外部脏污(以及斑点)上。脏污1、脏污2:我们使用 PIL resize 和 ble | ||
| ## C. 测试计划和执行 |
测试计划基于[1]中的corl2017基准。该测试计划由多次运行组成,其中目标车辆必须在超时前从起始位置A到达目标位置B。超时值是按照平均速度10公里/小时行驶从A到B的距离所需的时间,如[1],[3]所述(这与 corl2017基准的设置一致,已考虑车辆在交通灯和交通中的停车情况)。沿用[1],中的命名方式,选择起始位置A和目标位置B,以设定三个测试目标:
‐直路:目标位置B位于起始位置A的正前方。
‐转弯道路:目标位置B距离起始位置A有一个转弯。
‐导航:目的地位置B相对于起始位置A没有位置限制;这导致行驶距离较长且需要多次转弯。
对于每次单独运行,成功标准是在超时之前到达目的地B。失败标准是车辆发生碰撞或超时:我们修改了 corl2017基准测试,以便在发生碰撞时立即终止运行,因为在我们的研究中,我们优先考虑安全性而非行驶距离。
我们选择的目标城镇是Carla Town02,这是一个具有所有“T型路口”的基本城镇布局,也是在[3]中用于测试训练好的智能体的城镇。此外,我们选择了三种不同的天气条件,分别代表晴朗的正午、潮湿多云的正午和大雨的黄昏。在下文中,我们将分别称其为SUNNY、CLOUDYWET和 HARDRAIN。另外,在每次执行的运行中,城镇内都包含恰好50辆车辆和30名行人。我们始终使用相同的随机化种子,以确保在重复运行中车辆和行人的生成位置保持一致。
实验分为两个阶段进行。在第一阶段,我们进行了黄金运行以生成干净的数据,即在不修改相机捕获图像的情况下执行仿真运行。第二阶段重复前一阶段的相同运行,但对每个获取的图像注入相机故障。每次运行首先通过上述方法设置故障代码,然后启动Carla服务器,并因此也包括代表车辆并生成运行数据的Carla客户端。
三个测试目标在三种天气条件下,针对黄金运行以及每种故障配置注入情况均进行了150次运行(参见表III)。该运行次数是在统计证据和实验在合理时间内完成之间做出的折衷。总共4800次独立运行,在Carla中的模拟时间相当于大约160小时驾驶。仿真在配备Nvidia Quadro RTX 5000 GPU的Intel i9‐9920X@3.50GHz CPU上执行。
第五章 故障风险的结果与讨论
我们展示并讨论了测试活动的结果。描述各项运行的所有日志和部分视频可在[10]获取。
A. 碰撞和成功率
首先,我们讨论每种单独故障对训练好的智能体[3]决策的影响。图6和图7分别显示了在直路、转弯道路和导航三个测试目标下的成功率和碰撞次数,顺序按导航测试目标排列。
不出所料,黄金运行表现最佳,具有最高的成功率(图6右侧)和最少的碰撞次数(图7左侧:4次碰撞,全部发生在导航测试目标下)。DEAPIX1(5次碰撞)和BAND(6次碰撞)也取得了类似的结果:与黄金运行的差异很小。实际上, DEAPIX1对训练好的智能体影响不大是可信的:该故障仅在图像右下角引入一个单个黑色像素,此外,该智能体还经过了像素丢失增强训练。相反,训练好的智能体对条带现象(即叠加在图像上的水平和垂直线)具有鲁棒性,这是一个积极的惊喜。而白色(WHI)、黑色(BLA)、破损镜头 (BRLE1)、结冰(ICE2)和模糊(BLUR)这几种故障的表现最差。事实上,这些故障显著修改了图像。尽管如此,它们仍有一些成功的运行,特别是对于直路测试目标,在出现白色和黑色故障时的成功运行可能看起来尤为令人惊讶。这仅仅是因为车辆在没有障碍物的情况下盲目地沿直线前进,因此运行能够成功结束。
其余故障的性能各不相同,但对于每个故障而言,碰撞次数在导航中始终最高,在直路中最低,仅有如 DEAPIX‐10l之类的无关例外情况(转弯道路中为0次碰撞,直路中为1次碰撞)。这一趋势与黄金运行的结果一致,结合三个测试目标的描述可轻松解释。
应注意,图6和图7中故障的排序并不完全对称。这是因为某些运行由于超时而终止:通常,当车辆在特定事件后无法决定如何前进时会发生超时,例如,在为避免与处于碰撞轨迹上的车辆相撞而紧急制动后。由于这不会导致碰撞,我们认为超时发生在安全故障的情况下,因此不再进一步讨论。
B. 天气及其影响
另一个相关的论点是模拟故障在三种不同天气条件下的影响,我们将在表IV的帮助下进行讨论。首先,我们注意到黄金运行在不同天气条件下表现一致,在晴天条件下17次运行中有1次碰撞,在多云潮湿条件下17次运行中有2次碰撞,在大雨条件下16次运行中有1次碰撞。
表IV展示了每种天气下表现最好和最差的五种故障。这些结果与图6中表现最好和最差的五种故障相似,但也存在一些有趣的差异。在多云潮湿天气下,坏点故障得到了较好的缓解,DEAPIX1000、DEAPIX‐10l和DEAPIX‐vcl位于最佳位置,而DEAPIX1和DEAPIX50略低于前五名。然而,在晴天天气下,坏点故障的表现并不如此理想。我们推测,在多云潮湿条件下,坏点与阴天天空的融合并未对训练好的智能体造成混淆。
另一个有趣的观察是,BRIGH2在晴天(SUNNY)条件下的表现远差于多云潮湿(CLOUDYWET)和大雨( HARDRAIN)条件:在多云潮湿和大雨条件下获取的图像较暗,因此增加亮度带来的负面影响较小;而在晴天条件下增加亮度则负面影响更大。ICE1的情况则恰恰相反,其表现显示了晴天下的3次故障,以及多云潮湿和大雨情况下的其余22次故障。
C. 安全风险和结果总结
显然,我们的结果取决于目标应用,因此无法制定出统一的故障严重性和风险定义。然而,可以得出一些重要的结论性观察。第V.A节表明,在构建基于图像的自动驾驶系统和应用时,所描述的故障不应被忽视。事实上,我们展示了具有较小视觉影响的故障也会影响训练好的智能体的决策。即使是很小的问题,例如在分辨率为384×160 (超过6万个像素)的相机上散布50个坏点的DEAPIX50故障,也可能生成欺骗训练好的智能体的图像。此外,从第V.B节我们可以得出结论:故障相关的安全风险还取决于环境条件:某些故障的影响会随着自然光和天空颜色的不同而显著变化。
六. 相关工作
据我们所知,目前尚无研究工作讨论车载摄像头的完整故障模型,包括对影响和安全风险的分析以及提供软件库。然而,已有若干研究涉及类似或相关的问题。
RGB相机的性能、鲁棒性和安全性已被广泛研究,但通常仅关注特定元素或目标指标,而未涵盖所有故障类型。例如,Bijelic等人 [25]提出了一种测试和评估方法以比较传感器技术:该论文展示了标准CMOS相机与门控相机所拍摄图像之间的差异。Schops等人 [26],针对现有多视角立体相机基准测试的局限性(立体相机具有两个或更多镜头,每个镜头配备独立的图像传感器:这使得设备能够模拟人类双目视觉并捕捉三维图像 [34]),引入了一个新数据集以及一种最小化光度误差的技术。在 [32]中提出了一个仿真环境,其中包含为自动驾驶测试设计的车辆虚拟结构;通过典型驾驶场景分析传感器在真实情况下的响应,并验证环境条件的影响。另一方面,针对传感器安全问题,Petit等人 [19]使用多个光源使商用车辆中的商用相机系统失明。研究表明,利用激光或LED矩阵可导致相机失效。类似地,Yan等人 [34]通过直接将LED和激光照射到相机上成功使其失明:向车辆相机辐射激光束可能导致不可逆的损坏,并干扰相应的自动驾驶应用。总体而言,由于相机自身光学特性带来的脆弱性,构建完全安全的相机系统十分困难 [18]。
在基于图像的AI/ML算法和应用领域,许多研究承认相机输出图像发生意外改变的风险是现实存在的,例如[47]。然而,这种考虑通常只是对研究主要贡献的补充。尽管如此,AI/ML领域的研究极大地帮助我们完善并交叉验证了所识别的故障模式的完整性。事实上,色差、噪声、色温、模糊和亮度变化通常会被纳入基于图像的AI/ML训练好的智能体中,尽管这些因素主要用于训练过程中的数据增强[30]。例如,Toromanoff等人 [31]提出了一种新的卷积神经网络(CNN)模型,该模型通过基于平移和旋转的标签增强,仅使用短距离鱼眼(广角)相机即可生成数据。Menze等人[23]构建了一种用于3D场景流估计的新模型和数据集,并明确利用了安装在车辆上的相机所引起的背景移动。Behzadan等人 [24]展示了一种新的深度强化学习方法框架;为了开发出稳健的传感器和算法,在特定气象条件下进行测试被认为是确定恶劣天气对传感器影响的关键。
其他一些研究则集中于自动驾驶系统中训练好的智能体的安全性和鲁棒性,试图理解攻击者可能对相机图像进行的修改,或定义极端情况。攻击者可能会恶意地对图像进行变换,这些变换在概念上与非恶意故障可能导致的情况相似:这些研究在识别故障集时也非常有用。其中最为相关的是,K. Pei 等人 [35]应用输入空间约简技术来变换图像,能够模拟广泛的真实世界失真、噪声和形变。W. Wu 等人 [36]提出了一个针对深度神经网络分类器的故障模型,该模型包含基于输入图像修改的多种极端情况,其可能原因包括亮度、摄像头对准和物体移动。最后,逃避攻击是指对分类器的输入进行修改,使其被错误分类,同时使修改尽可能小 [37]。例如,为了生成此类对抗性图像,可以通过叠加精心设计的噪声 [38], ,或修改少数选定像素 [39], ,或通过旋转和平移 [40] 来修改原始图像。此类逃避攻击及其实现方法的代表性列表可在 [37] 获取。
七。结论与未来工作
一些研究承认车载摄像头图像在被自动驾驶应用使用之前可能意外或故意被修改。然而,据我们所知,目前仍缺乏对相机故障模式的明确定义以及用于故障复现的软件故障库。这些缺失的内容将有助于软件和系统工程师依赖参考模型来评估其自动驾驶应用和系统的鲁棒性。本文通过在车载摄像头上进行FMEA和文献综述,讨论了识别出的故障模式;同时补充了潜在缓解措施的分析,并提供了一个公开的库,可用于在图像集上复现这些故障。此外,我们将这些故障注入到自动驾驶模拟器中,以了解其对基于图像的AI/ML应用的影响。尽管结果依赖于具体应用,但显然即使是对图像仅有轻微扰动的故障,也可能影响训练好的智能体的决策。进一步有趣的是,与相机故障相关的安全风险还取决于环境条件:对于某些故障,碰撞次数与天气条件密切相关。
我们正在规划不同的后续工作。我们正在定义一种故障检测器,通过训练一个智能体来识别故障图像,从而发现错误图像。此外,我们正在开发一种交互式工具,以方便使用该软件库;这将允许在多个训练好的智能体和汽车数据集上使用该工具,以比较相机故障在不同基于图像的自动驾驶应用中的影响。
942

被折叠的 条评论
为什么被折叠?



