自动驾驶学习-车载摄像头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相关的方方面面都有着非常大的空间值得我们去探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/31255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何DIY出专属个性化的CSDN主页?一招教你搞定!

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 💯如何通过HTMLCSS自定义模板diy出自己的个性化csdn主页&#x…

SD3发布,送你3个ComfyUI工作流

大家好,我是每天分享AI应用的萤火君! 这几天AI绘画界最轰动的消息莫过于Stable Diffusion 3(简称SD3)的发布。SD3是一个多模态的 Diffusion Transformer 模型,其在图像质量、排版、复杂提示理解和资源效率方面具有显著…

ADC常用的十大滤波算法(C语言)

一、限幅滤波法 1、方法&#xff1a; 根据经验判断两次采样允许的最大偏差值&#xff08;设为A&#xff09; 每次检测到新值时判断&#xff1a; a. 如果本次值与上次值之差<A&#xff0c;则本次值有效 b. 如果本次值与上次值之差>A&#xff0c;则本次值无效&#xf…

QT MQTT (二)编译与集成

一、QT MQTT 提供 MQTT 客户端服务的 Qt 专用库基于标准化发布 / 订阅协议&#xff0c;用于在设备和组件之间可靠地共享数据。MQTT 是为保证状态正确性、满足高安全标准和交换最小数据而设计的协议&#xff0c;因此被广泛应用于各种分布式系统和物联网解决方案中。 Qt开发MQT…

【Oracle篇】Oracle数据库坏块处理:rman修复坏块实践与案例分析(第七篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

git配置ssh key

一、生成ssh公钥和私钥对 打开终端&#xff0c;输入命令&#xff0c;-C 后是git邮箱&#xff0c;在 Enter file in which to save the key (/home/my/.ssh/id_rsa): 后可以输入公钥和私钥对保存路径及文件名&#xff0c;默认是 /home/my/.ssh/id_rsa&#xff0c;其它的全部按回…

从0开始C++(五):友元函数运算符重载

友元函数 介绍 C中的友元函数是一种特殊的函数&#xff0c;它可以访问和操作类的私有成员和保护成员。友元函数可以在类的内部或外部声明和定义&#xff0c;但在其声明和定义中需要使用关键字 friend 来标识。友元函数可以是全局函数&#xff0c;也可以是其他类的成员函数。 …

Web APIs--Dom获取属性操作

目录 1.DOM&#xff08;操作网页内容、用户交互&#xff09; 2.DOM对象获取&#xff08;querySelect(‘’)、querySelectAll(‘’)&#xff09; 总结&#xff1a; 3.操作元素内容&#xff08;修改元素的文本更换内容&#xff09; 1. 元素innerText 属性 2.元素.innerHTML…

第一百一十六节 Java 面向对象设计 - Java 终止块

Java 面向对象设计 - Java 终止块 ​try ​块也可以有零个或一个​ finally​ 块。 ​finally ​块总是与 ​try ​块一起使用。 语法 使用 ​finally​ 块的语法是 finally {// Code for finally block }​finally​ 块以关键字 ​finally​ 开始&#xff0c;后面紧跟一对…

深入分析 Android BroadcastReceiver (四)

文章目录 深入分析 Android BroadcastReceiver (四)1. 广播接收器的深入优化与应用1.1 实时性要求高的应用1.1.1 示例&#xff1a;音乐播放器中处理耳机插拔事件1.1.2 动态注册接收器 1.2 处理耗时操作1.2.1 示例&#xff1a;使用 IntentService 处理耗时操作 1.3 安全性管理1.…

【机器学习】深度学习赋能:基于 LSTM 的智能日志异常检测

目录 1. LSTM 简介 2. 日志序列异常检测概述 3. 数据预处理 3.1 日志解析 3.2 数据清洗 3.3 序列化 3.4 特征提取 示例代码 4. 构建 LSTM 模型 4.1 模型结构 4.2 模型构建示例 5. 训练 LSTM 模型 5.1 数据准备 5.2 模型训练 示例代码 6. 异常检测 6.1 异常分数…

处理文本内容的命令和正则表达式

处理文本内容的命令 正则表达式匹配的是文本内容&#xff0c;linux的文本三剑客 都是针对文本内容 文本三剑客&#xff1a; grep 过滤文本内容 sed 针对文本内容进行增删改查 awk 按行取列 文本三剑客都是按行进行匹配。 grep grep的作用就是使用正则表达式来匹配文本内…

虚拟现实环境下的远程教育和智能评估系统(十一)

视频帧画面知识点区域划分 知识点区域精确分割技术: 在深度学习检测模型结果基础上使用基于交并比&#xff08;IoU&#xff09;阈值的目标合并算法&#xff0c;合并过度重合目标区域面积&#xff0c;实现知识点区域精确分割 多模态知识点内容匹配策略: 图像&#xff1a;利用…

【第18章】Vue实战篇之登录界面

文章目录 前言一、数据绑定1. 数据绑定2. 数据清空 二、表单校验1. 代码2. 展示 三、登录1.登录按钮2.user.js3. login 四、展示总结 前言 上一章完成用户注册&#xff0c;这一章主要做用户登录。 一、数据绑定 登录和注册使用相同的数据绑定 1. 数据绑定 <!-- 登录表单 -…

紧凑型计算微型仿生复眼

欢迎关注&#xff1a;GZH《光场视觉》 图1 研制的计算微型复眼的成像原理 1. 导读 微型曲面复眼由于具有大视场成像、大景深成像、体积较小的优势&#xff0c;在机器视觉、无人机导航、生物灵感机器人等领域引起了广泛关注。然而&#xff0c;传统的微型曲面复眼存在设计/加工…

HTTP详细总结

概念 HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 特点 基于TCP协议: 面向连接&#xff0c;安全 TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议&#xff0c;在…

SpringMvc—域对象共享数据和视图

一、向request域创建对象 先创建首页&#xff1a; 在testController这个类中&#xff1a; package com.pon.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; Controller public class test…

后台管理系统登录业务分析(图片验证码登录)

文章目录 1、登录业务分析2、登录开发流程2.1、获取图片验证码接口业务2.2、CodeImgServiceImpl2.2.1、响应 2.3、IndexController2.4、SysUserServiceImpl2.5、SysUserMapper.xml 3、springmvc拦截器创建&注册3.1、springmvc拦截器的创建3.2、springmvc拦截器注册3.3、Sys…

【Oracle APEX开发小技巧1】转换类型实现显示小数点前的 0 以 及常见类型转换

在 apex 交互式式网格中&#xff0c;有一数值类型为 NUMBER&#xff0c;保留小数点后两位的项&#xff0c;在 展示时小数点前的 0 不显示。 效果如下&#xff1a; 转换前&#xff1a; m.WEIGHT_COEFFICIENT 解决方案&#xff1a; 将 NUMBER&#xff08;20&#xff0c;2&#xf…

Vue 自定义ElementUI的Loading效果

import { loadingText, messageDuration } from "/settings";import { Loading } from "element-ui"; // loadingText、messageDuration 这两个参数我是调的公共配置文件,按自己需求来 const install (Vue, opts {}) > {/* 全局多彩Loading加载层 *…