自动驾驶学习-车载摄像头ISP(2)

背景

智能驾驶ISP(Image Signal Processor,图像信号处理器)在自动驾驶和辅助驾驶系统中扮演着至关重要的角色。

典型的ISP通常会对摄像头输出的RAW数据先做黑电平矫正(BLC)、坏点矫正(DPC)、数字增益(Dgain)、镜头阴影矫正(LSC)等必要处理。然后通过去马赛克(DM)插值恢复出全彩色图像,在RGB域完成色彩矩阵矫正(CMC)、伽马矫正(GMA)。最后转到YUV域,进行锐度(SHP)、对比度(CON)、颜色饱和度(SAT)等调整后输出。在整个ISP pipeline中间会插入若干降噪(NR)模块。需要注意,某些处理可能会合并到一起,例如某些ISP方案将锐度调整合入到了DM内。

ISP 特点

智能驾驶作为ISP的进阶应用场景,需要ISP将车身摄像头的数据做必要的处理,然后送给后续的AI感知网络进行推理运算,进而对车辆周边环境做出快速准确的判断。为此,当下的智能驾驶芯片厂商,除了提供感知网络所需要的AI算力外,都会提供ISP能力。

为了在行驶当中对外界环境变化做出快速的响应,保证行车安全,ISP的处理延迟应该尽量小,为后续的感知和规控预留出尽量多的时间。所以一个低延迟的数据通路设计,在智能驾驶ISP中显得尤其重要。

行车过程中,光照条件千变万化,像进出隧道、地库等场景,其亮暗比例远远超过目前绝大部分摄像头单次曝光可以覆盖的动态范围。为解决该问题,智能驾驶使用多次曝光来提升动态范围捕获能力。目前主流智能驾驶摄像头动态范围超过140dB。为此,智能驾驶ISP需要考虑如何支持24-bit甚至更高位宽的RAW数据的处理。

为了覆盖更全面的视野,智能驾驶车辆配备了数量众多的摄像头,并且这些摄像头都是同时工作。此外,为了能够识别更细小的物体,摄像头的分辨率也逐渐升高,量产车型使用8M摄像头已经很常见,sensor厂商甚至已经有10M以上的产品。摄像头数量多、分辨率高,这就对ISP的处理能力提出了要求。

另外,智能驾驶ISP的输出是给感知网络使用,不是给人去做主观的美丑评判。这一点和其他领域,例如消费相机,有着本质区别。面向CV的ISP应该设计成什么样,学术界给出了一些参考。《Reconfiguring the Imaging Pipeline for Computer Vision》做了大量的实验,比较了传统ISP中各个模块对网络性能的影响。根据下图呈现的实验数据,该文作者认为Demosaic和Gamma对AI网络性能影响最大,是CV ISP中最重要的两个模块。

类似的,《ISP4ML:The Role of Image Signal Processing in Efficient Deep Learning Vision Systems》在实验中发现,有无去噪对网络性能影响不大。如下图浅蓝色和绿色的柱状条在各种情况下高度都差不多。甚至在某些情况下,没有去噪的时候反而网络的精度还略高一些。换句话说,去噪起了负作用。

技术现状

为减小开发难度,缩短开发周期,很多智能驾驶ISP都是在其他领域ISP基础上做增量开发。背着历史的包袱,必定带来不少问题。

架构层面,很多ISP都是多级结构,级与级之间通过DDR交互,如下图所示。该架构通过对DDR的利用,能够以较低成本实现需要frame buffer才能操作的复杂算法。同时,那些需要统计数据才能进行的计算,如tone mapping等,可以使用前级统计、后级运算的策略,让计算结果"当帧生效",避免由统计数据和图像内容不匹配引起的效果"振荡"。下图中绿色模块的统计数据由stage 1产生,该统计数据可以由stage 2使用。这种多级架构用极低的成本带来了极致的图像处理效果。但是对智能驾驶而言,每进出一次DDR都意味着带来额外一帧的处理时延。

算法层面,智能驾驶有其自身的技术关注点,例如对高饱和度红色的处理。传统的基于Bayer pattern的demosaic算法,会先对绿色通道进行插值,其他颜色通道再以绿色为基准,借助色差信息进行插值。如果此时绿色分量数值很小,则会引起作为基准的绿色通道插值误差变大,进而导致红色和蓝色的插值结果出错。尤其是在距离较远的情况下,物体小、像素少,demosaic变得更加困难。智能驾驶场景中远处的红色交通信号标识正好满足绿色分量数值小且体积小的条件。下图是几个ISP在该类场景下的表现。可以看到,下图左侧的左转箭头非常难以辨认,势必影响后续感知识别的结果。

虽然学术界对CV ISP的研究虽然已经有了一些成果,但是也有一定局限性。论文中使用的RAW数据很多都是用RGB数据反向生成的,并非真正实采的RAW。实验中使用的ISP pipeline,其规模相对较小,模块设计也非常简单,和真正商用量产的ISP相比差距明显。这些都会对最终的研究结论造成影响。

消费相机领域的ISP经过充分的市场竞争已经非常成熟。以手机为例,手机将拍照性能作为一大卖点,身为核心的ISP经过了10余年的迭代,从低分辨率到高分辨率,从单摄到多摄,从传统到AI。无论是芯片厂还是终端厂,都是各显神通,投入巨资不断提升ISP性能。反观智能驾驶领域,ISP的演进相形见绌。平台厂缺乏改进动力,IP厂又缺乏足够的数据来支持改进。再加上作为ISP输出图像使用者的AI网络,其本身拥有一定的鲁棒性,"细粮"和"粗粮"多少都能吃一点,因此改进ISP设计似乎不那么迫切。

智能驾驶对ISP的需求简单归纳起来有两点:一是低延迟,二是信号保真。

延迟越低,系统响应越快,智能驾驶安全性越高。目前大部分智能驾驶方案都采用离线处理的方式,摄像头数据先进入缓存,ISP从缓存读出数据再进行处理,如下图所示。该架构有利于以合理的成本支持数量众多的摄像头带来的海量图像数据,但是缓存的使用引入了延迟。

这里不得不提到手机领域的ISP。虽然手机ISP无法直接用于智能驾驶,但是其研发方式和方法值得借鉴。甚至某些技术方案,可能就是智能驾驶ISP的演进方向。例如手机ISP为了节省面积减少line buffer宽度,将图像切分成tile进行处理。Tile节省line buffer带来的收益在智能驾驶场景下一样适用。更重要的是,tile模式可以让下一级处理提前启动,甚至让ISP自身提前启动,借此有效减少系统延迟。

上图给出了3个不同方案的延迟示意。在第一个虚线框里的"传统方案"中,摄像头输出一帧后,ISP开始处理;ISP处理完一帧后,感知的AI网络开始处理。从摄像头输出完成到感知处理完成,延迟大概是两帧。在第二个虚线框里的"Tile Mode + 感知快速启动"方案中,一帧图像被切成了4个tile。摄像头输出完一帧,ISP启动处理;ISP每处理完一个tile,感知就开始该tile的处理。由此产生的延迟缩短到了一加四分之一帧。在最后一个虚线框里的"Tile Mode + ISP快速启动 + 感知快速启动"方案中,摄像头每输出一个tile,ISP就启动处理;ISP每处理完一个tile,感知就开始该tile的处理。这种方案下,延迟进一步缩短到了二分之一帧。虽然以上分析基于感知网络支持tile模式的假设,但是ISP的设计者必须考虑作为上游的ISP要先拥有这样的能力。

信号保真,目的是为感知网络提供尽可能正确的信息。一方面信息不能丢失,例如HDR技术的采用就是为了同时正确地获取高动态范围场景下高亮和低亮的信号。如何控制好摄像头的曝光,如何利用好摄像头输出的24-bit甚至更高动态范围的数据,在位宽压缩过程中不丢失重要信息,不仅需要对算法模块进行细致的打磨,甚至在最初系统架构设计的时候就需要考虑清楚。不要制造出虚假的细节,是信号保真的另一个重要方面。比如前面提到的demosaic算法,如果设计不当,则会引入虚假的细节。如下图左侧所示,红色数字经过某ISP的demosaic后出现异常的黑点。各种虚假细节对后续的感知网络都是潜在的干扰。

如何构建一个面向智能驾驶的ISP架构,在提供高保真、高性能处理的同时,尽量减小处理延迟,需要我们结合智能驾驶碰到的各种场景做细致的分析和研究。

去ISP化?

早在2021年底,新能源汽车的引领者特斯拉就表达了对ISP的看法。马斯克认为ISP为了让人眼舒适做了不必要的后处理,从而带来额外的延迟。

在2022年的Tesla AI Day上,特斯拉展示了occupancy network的架构,如下图所示。工程师介绍说:"We are giving the 12-bit raw photon count image to the network since it has four bits more information."根据这个架构图,摄像头的数据经过了一个名为"Rectify"的模块后,直接进入了网络。

虽然特斯拉对ISP颇有微词,但是对ISP的去留又始终语焉不详。推测特斯拉也在来回琢磨如何设计一个智能驾驶适用的ISP,因为从很多角度来看,ISP都应该在智能驾驶的数据链路中拥有一席之地。首先,获取智能驾驶网络训练图像的摄像头通常和项目量产的摄像头的成像风格有差异。为避免感知网络性能由此下降,需要借助ISP的调试灵活度来拉齐两个摄像头的成像差别。其次,针对摄像头模组本身的缺陷,传统ISP有着非常成熟的算法,能够高效的解决诸如坏点等问题。再者,摄像头的曝光控制和颜色管理等目前还没有看到完全依靠网络就能够稳定工作的方案,曝光正确与否决定了环境信息能否被摄像头正确捕捉,颜色是否正确则决定了诸如红绿灯等交通信号标识能否被正确识别,这些场合传统ISP仍然是第一选择。

总结

在可见的未来,ISP+AI感知网络仍然是一个较优的技术方案。虽然近几年新能源汽车发展迅速,但是针对车载ISP的深入研究还不太多,大家基本上都是处于有什么用什么的状态。如何以合理的成本设计出满足车载低延迟、高吞吐要求的ISP架构,如何针对CV的需求来规划pipeline算法方案使得CV性能最优,如何设计出简单易用的调试工具与流程从而加速量产,这些和ISP相关的方方面面都有着非常大的空间值得我们去探索。

相关推荐
lulu_gh_yu36 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
幼儿园老大*2 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
2 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_2 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
啦啦右一2 小时前
前端 | MYTED单篇TED词汇学习功能优化
前端·学习
霍格沃兹测试开发学社测试人社区3 小时前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
今天我又学废了3 小时前
Scala学习记录,List
学习
王俊山IT3 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java4 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka