ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

0.01Lux夜视画质突破:基于RV1126B的AI-ISP降噪实战

0.01Lux夜视画质突破:基于RV1126B的AI-ISP降噪实战 1. 0.01Lux到底意味着什么夜视成像的痛点与分析1.1 从“满屏雪花”说起传感器在极暗光下真正遇到的是什么我最早做安防摄像头项目时最怕接到的需求就是“晚上一定要看得清”。很多客户以为晚上看不清就是补光灯不够亮换个红外灯或者加两颗白光灯就解决了。但真正到了0.01Lux这个照度级别事情完全不是加灯那么简单。先帮大家把单位理顺。Lux是照度单位0.01Lux是什么概念一个没有月光的深夜户外、拉着厚窗帘的室内大体就在这个区间。普通消费级摄像头标称“0.1Lux彩色”实际拿到0.01Lux场景里基本就是黑乎乎一片强行拉增益后满屏彩色噪点暗部全是紫色、绿色的色斑那种画面别说做人脸识别拿去当证据都嫌丢人。传感器本质上是一个光电转换器件。光越少光生电子越少信号幅度就越小。问题在于传感器本身还有读出噪声、暗电流噪声、放大电路的热噪声这些小信号在放大过程中被一起放大信噪比急剧恶化。传统ISP图像信号处理器能做的只是“事后补救”——通过空域降噪把噪点抹掉通过时域降噪让静止画面稳定下来。但噪点抹得太狠细节和边缘也一起没了人脸变成“蜡像脸”时域降噪拉太强人一动就拖影画面像在水里泡着。这就是0.01Lux场景下所有传统方案的共同困境降噪和保细节之间是一对天然矛盾。过去我们只能在这两头之间找一个勉强能接受的平衡点从来没有真正解决问题。1.2 传统ISP的极限在哪里2DNR、3DNR这些旧方案为什么不够用我先把传统夜视方案盘一下方便大家理解后面AI-ISP为什么值得折腾。传统安防摄像头的夜间画质主要靠三级杠杆第一级是光学和传感器层面的。大光圈镜头、大靶面传感器、像素合并Binning/Summing本质都是让更多光子被收集到。但镜头光圈做大景深变浅且成本上升传感器靶面做大模组体积和成本都压不住。第二级是曝光策略。拉长曝光时间、提高模拟增益和数字增益。曝光拉长到1/15s甚至1/10s帧率就掉下来了运动物体必然模糊增益拉高噪点也随之放大。第三级是ISP内部的降噪模块。2DNR管单帧空域去噪3DNR管多帧时域去噪配合黑电平校准、Gamma曲线、色彩校正矩阵把画面“洗”干净。问题在于2DNR和3DNR都是基于固定规则的信号处理。它们对高斯噪声有一定效果但低照度下传感器输出的噪声模型非常复杂混合了泊松噪声、读出噪声、列噪声、固定模式噪声FPN不是一两个滤波器能对付的。更麻烦的是低照度下拉高增益之后细节信号本身就比噪声强不了多少空间域和时间域的信息都极其有限传统滤波器分不清什么是细节、什么是噪声只能“一刀切”。所以传统方案做到极致0.01Lux下勉强能出一个“能看见轮廓但不清晰、不动还行一动就糊”的画面也就到顶了。1.3 RV1126B的AI-ISP路子让NPU参与降噪而不是只靠ISP硬算瑞芯微RV1126B出现在这个场景里最大的意义是换了一条技术路线。这颗芯片本身是面向IPC网络摄像头的SoCCPU是Cortex-A7跑Linux系统内置一颗2TOPS算力的NPU规格不算夸张但对安防场景足够用了ISP部分是瑞芯微自研的支持3AAE自动曝光、AWB自动白平衡、AF自动对焦和传统降噪管线。这些是基础盘真正拉开差距的是AI-ISP能力。所谓AI-ISP简单说就是把原本ISP里靠固定算法实现的降噪、去马赛克、超分等环节部分换成神经网络来做。在极低照度下先用合适的策略把原始RAW数据采出来然后通过NPU跑一个专门训练的降噪增强模型从噪声背景中“猜”出纹理和边缘再做传统的色彩恢复和编码。这套思路有点像我们拍星空照片时用的多帧堆栈加AI降噪单张RAW噪点爆炸但堆叠足够多的信息之后AI能从中恢复出原来肉眼都看不见的细节。RV1126B做的是把它变成实时视频管线而且是端侧本地推理不依赖云服务。0.01Lux画质能不能做好关键不再是“ISP参数调得有多激进”而是“NPU上的模型有没有训练好、和这颗sensor的噪声特性匹不匹配”。方向一变很多以前怎么调都压不下去的噪点就都有了解决的可能。这也是我决定做一套完整0.01Lux方案的原因。2. 动手前的硬件选型与电路设计清单2.1 传感器选型0.01Lux级别不能将就的几个规格AI-ISP再强也不可能凭空变出光信号。传感器的底子决定了画面质量的天花板这一步选错了后面调参调出花来也救不回来。我在这个项目里的选型思路按优先级排序如下靶面尺寸优先同样的像素数靶面越大单像素面积越大单位时间收集的光子越多。0.01Lux场景建议至少选1/2.7英寸以上的sensor预算充足直接上1/1.8英寸。像素尺寸单像素尺寸与低照度灵敏度直接相关。建议选2.0μm以上的太低照度的型号还要关心它的灵敏度指标如单位光强下的输出电压或DN值。最低照度标称值参考意义有但别全信。不同厂家测试条件不统一有的标“彩色0.01Lux”其实是开了长曝光和超高增益的结果实际动态画面完全不可用。噪声特性关注暗电流、读出噪声、PRNU这些参数。同一等级的sensor谁家的噪声模型更干净AI-ISP喂出来的画面就更干净。黑白/彩色切换能力极低照度下彩色模式需要保留Bayer滤色片光利用率天然低于黑白模式滤色片挡掉了一部分光。很多夜视方案会配IR-CUT切换器白天用彩色、夜间切黑白并配合红外补光。如果你要做的是“全彩夜视”传感器选型和后续调参会更苛刻。我这边测试过几颗常见的sensorSC3336和SC4336这类1/2.7英寸左右的型号在性价比上比较均衡IMX307的低照度表现也不错但这几年国产sensor的成熟度已经追得很快具体选哪颗还要结合量化成本和供应链情况定。这里不替你做决定只提醒一句做0.01Lux项目时把sensor的RAW噪声样本拍下来、用工具分析一下噪声分布再定方案比看任何数据手册都靠谱。2.2 镜头、IR-CUT与补光灯光路设计决定了AI-ISP的“输入质量”传感器选完了接下来是镜头和光路。这部分容易被忽略但实际对低照度画质影响极大。镜头方面光圈F值直接影响进光量F1.0比F1.6的进光量多一倍多。0.01Lux场景建议直接上F1.0或更大光圈的镜头但要注意大光圈带来的边缘解析力下降和紫边问题。焦距和视场角要根据监控距离来定这里不展开了。镜头的IR红外适配也要注意。如果做双光谱方案850nm/940nm红外补光 黑白模式镜头必须选红外共焦镜头否则白天对焦清晰晚上红外光下焦点偏移画面发虚。我给客户做方案时见过不少“白天清楚晚上糊”的案例最后发现不是sensor问题是镜头没选对。IR-CUT红外截止滤光片切换器负责白天切换到彩色模式时挡住红外光、夜间切掉滤光片让红外光进来。这里有个很多人忽略的点IR-CUT切换器动作时有机械震动和电机反向电动势如果电源和复位电路没做处理切换瞬间可能导致sensor输出花屏甚至整个系统复位。这个问题后面有专门的踩坑记录先记下。补光灯方面850nm红外LED比940nm效率高、照射距离远但会有微弱红光可见940nm完全不可见但效率低、价格高。0.01Lux级场景一般用850nm居多配合黑白模式sensor能获得很好的灵敏度。还要注意补光灯的角度和镜头的视场角匹配灯打出去的角度比镜头视野小的话四周就是黑的画面非常不协调。2.3 电源、复位与时钟最容易出问题的三个电路细节从原理图设计的角度看RV1126B这类IPC SoC的电路核心问题不是“怎么画”而是“上电时序对不对”。RV1126B需要多路供电核心、逻辑、IO、DDR各路的电压不同而且有严格的上下电时序要求。稳妥的做法是配套的电源管理芯片典型如RK809来处理它能按顺序输出各路电压省去自己搭时序电路的麻烦。如果自己用DC-DC和LDO组合供电一定要翻datasheet确认各路电压的上升顺序和延时窗口很多“开发板能跑、自己打样就不启动”的问题都出在这里。sensor供电方面要注意AVDD、DOVDD、DVDD三路电源的域划分和纹波。低照度下sensor的模拟增益会拉得很高电源纹波会直接耦合到图像上表现为横条纹或高亮噪点。给sensor供电的LDO后面建议加磁珠和去耦电容PCB布局时把模拟电源和数字电源分开敏感走线不要穿越高频数字信号区域。MCLK时钟也很关键。sensor的主时钟频率必须按datasheet要求给准常见的24MHz。时钟抖动太大输出图像会出现固定条纹而且这个纹路和电源噪声的纹路混在一起后非常难以排查。还有sensor的复位和PDN引脚初始电平状态要在设备树里配对否则出现“模组偶尔出图、偶尔不出图”的诡异问题排查起来非常痛苦。除此之外还要特别关注sensor I2C地址和CSI接口的映射关系。RV1126B的CSI2 DPHY lane数量有限设计时需要确认sensor的lane数和分辨率是否匹配。比如1080p60可能需要4 lane4K可能要更多带宽。0.01Lux这个项目我建议跑1080p25fps或30fps带宽压力小NPU和ISP的负载也更从容后续调整空间大。3. 系统侧落地SDK搭建、设备树与烧录3.1 从SDK到第一个能出图的固件先把基础链路打通拿到RV1126B的评估板和SDK之后我的习惯是第一步不做任何定制先用官方默认配置编译一个固件烧进去确认板子能正常启动、摄像头能出图然后再动手修改。这个“先跑通再改”的顺序能省掉大量“不知道是硬件问题还是软件问题”的排查时间。瑞芯微的SDK是基于Buildroot或Debian方案组织的针对RV1126B常见的路径结构包括u-boot、kernel、buildroot、app等几个层级。首次编译需要安装交叉编译工具链执行SDK里的编译脚本目标平台的配置文件一般已经放在device/rockchip/rv1126b目录下。编译完成后会生成统一固件或者拆分成各个分区镜像后面烧录要用。很多朋友第一次搞RK平台容易卡在“用哪个配置文件”上。我的经验是先看SDK里的README或者release note一般会写明评估板对应的defconfig名称。如果用的是第三方做的开发板可以直接问方案商要对应的配置或者对比SDK中不同配置的差异来选择。这一阶段不要急着改设备树画质参数先把系统启起来、串口有打印、网口能连通再通过命令行抓一帧图像看看sensor是否能正常工作。如果这一步就看到图像了恭喜系统侧90%的问题已经排除。3.2 设备树里传感器节点的改法以SC3336为例设备树是RK平台适配新硬件的核心环节。RV1126B的Linux内核里sensor设备节点一般在arch/arm/boot/dts/对应的dts文件中或者通过dtsi文件include进来。自己拼板子的时候要把sensor挂到正确的I2C总线上并正确配置CSI2 DPHY的lane数和时钟频率。下面是一个典型的sensor设备树节点的结构以我测试过的SC3336为参考不同sensor引脚定义和地址可能不同务必以数据手册为准i2c3 { status okay; clock-frequency 400000; sc3336: sc333630 { compatible smartsens,sc3336; reg 0x30; pinctrl-names default; pinctrl-0 sc3336_pins; reset-gpios gpio2 RK_PB4 GPIO_ACTIVE_LOW; pwdn-gpios gpio2 RK_PB5 GPIO_ACTIVE_HIGH; rockchip,camera-module-index 0; rockchip,camera-module-facing back; rockchip,camera-module-name default; rockchip,camera-module-lens-name default; port { sc3336_out: endpoint { remote-endpoint mipi_dphy0_input; >v4l2-ctl -d /dev/video0 --set-ctrl exposure20000 v4l2-ctl -d /dev/video0 --set-ctrl gain100注意不同驱动对gain的定义不一样有的是绝对增益有的是相对百分比。不懂就看内核驱动代码或者sensor datasheet。手动锁定曝光和增益后再切回自动模式观察AE是否能把亮度稳定在目标水平还是会出现亮度振荡。抓帧对比时我会在AI-ISP启用和禁用两种状态下分别抓同样的场景看三件事噪点颗粒度、边缘纹理保留程度、运动场景下的拖影表现。只看静态图是不够的很多公司送样时静态画面很漂亮人一走过去就露馅动态拖影比传统方案还严重。4.4 调参时的顺序纪律AE锁定、噪声评估、AI介入、回归验证画质调试这块我踩过的最大坑是“顺序混乱”。一开始我也以为既然AI模型能降噪传统ISP随便调调就行结果模型喂进去的输入本身就有问题怎么调都出不来效果。后来总结出一套固定流程先做硬件的底噪评估。盖上镜头盖在目标增益下抓全黑帧看sensor本身有哪些固定噪声模式。这一步能发现坏点、竖条纹、电源纹波耦合等问题这些不是算法能解决的必须回到硬件层面处理。再调传统ISP的曝光和增益策略。确保在0.01Lux下画面能稳定曝光、白平衡不飘、亮度不振荡。先跑一个“中庸”的传统NR参数把画面压到可接受但不完美的状态作为AI模型的输入基线。接入AI模型观察推理输出效果。如果噪点减少了但细节丢失严重大概率是模型训练的输入分布和真实sensor数据不匹配需要重新收集sensor RAW数据回去迭代训练。最后再回头调整传统NR和AI模型的配合比例。AI强了传统NR可以弱一点但不要让AI把全部压力扛下来留一点传统NR做兜底整体画面会更稳。这个流程看起来简单但执行起来非常耗时每轮改参数、抓帧、对比可能要好几轮。不要嫌麻烦0.01Lux画质没有一键拉满的神药都是磨出来的。5. 量产路上躲不开的那些坑5.1 AE振荡发光率与增益博弈画质调试完成后我以为大功告成结果实际放到走廊里测试很快发现一个诡异的问题画面亮度会周期性闪烁像有人在忽明忽暗地调灯光。排查之后发现是AE算法在特定场景下进入了振荡循环。0.01Lux环境下画面大部分区域是黑的只有局部有小光源或者反光点。AE的统计权重如果偏向这些高亮区域就会认为画面偏亮一直压低曝光和增益但压下去之后高亮区域占比变化统计结果又认为画面太暗反手又把曝光和增益拉上来。一来一回就形成了低频振荡。解决思路分两层一是调整AE统计区域的权重中心区域权重大一些四周或高亮区域做抑制二是给AE增益和曝光的变化速率加上更保守的阻尼避免大步长来回跳。不同IPC方案商的3A库配置方式不太一样RV1126B的rkaiq库里可以通过IQ参数里的AE表项调整具体字段建议直接查SDK里的文档或者咨询方案商FAE。这个坑的教训是静态暗室的测试环境和真实场景差异极大0.01Lux环境里各种“边缘场景”特别多AE、AWB这种闭环算法必须在真实场景中跑一阵子才能暴露问题。5.2 IR-CUT切换把系统复位了另一个影响体验的坑来自IR-CUT。白天切黑夜或者黑夜切白天时系统偶尔会直接复位重连有时候还会出现图像花屏、sensor掉线。拿到日志后发现复位发生在IR-CUT电机驱动动作的瞬间而IR-CUT切换时电机驱动消耗的瞬间电流很大如果这个电流突变导致板上电源跌落或者反向电动势串到sensor的复位线路就会引发异常。处理手段包括IR-CUT驱动电源用独立的MOS管开关在主电源上加大容量电容在电机两端加续流二极管或者RC吸收电路软件上把切换过程分成多个状态切之前先停图像、切换完成后再恢复而不是在出图过程中直接硬切。这个坑从原理图设计阶段就应该规避等板子打样回来再补电路的工作量和风险都会大很多。如果你只是买现成开发板做验证遇到IR-CUT切换异常先看模组供电上有没有足够大的储能电容再看控制逻辑是否有防抖和状态保护。5.3 DDR带宽吃满后NPU掉帧性能余量这笔账要提前算AI-ISP项目最容易低估的就是系统带宽。RV1126B的DDR带宽需要同时满足ISP写入、NPU读取、NPU写回、编码器读取、显示/网络输出等多路访问。当我把AI降噪模型跑起来后发现视频编码帧率上不去偶尔还会出现丢帧。一开始以为是NPU算力不够观察后发现NPU占用只是中等真正的瓶颈是DDR带宽。ISP连续输出RAW数据、NPU推理时连续读写特征图、编码器读取原始帧三路高带宽并发把DDR带宽挤满了。应对策略有几个方向建议组合使用降分辨率如果1080p带宽压力大先用720p把链路跑通验证功能和画质再逐步升回去。降低帧率25fps降到20fps甚至15fps带宽占用按比例下降。优化模型中间层有些模型中间特征图的通道数很大可以考虑剪枝或者换成更适合端侧的轻量backbone。合理配置内存分配策略RK平台的Rockit框架支持为不同模块分配独立缓冲池可以在性能要求高的场景里预留更多带宽资源。这个问题需要在方案早期就做预算不要等到demo跑通了才去测DDR带宽那时候改模型、改分辨率都牵一发动全身。5.4 模组发热导致暗电流漂移这个是比较隐蔽的问题。设备在0.01Lux下长时间运行比如一整个晚上画面会慢慢出现偏红或者其它色偏同时噪点逐渐增多。排查下来是模组温度升高导致sensor暗电流漂移黑电平随之变化而固定黑电平校准值没有跟着温度变化更新画面就越偏越厉害。尤其是在封闭外壳、没有散热的枪机或者球机里温升更快。解决思路一是硬件上做散热处理sensor和主控的导热垫、外壳散热片能贴就贴二是软件上做温度补偿定期读取sensor内部的温度寄存器动态更新黑电平参数。很多IPC方案商的3A库里都有温度补偿功能只是默认没开需要确认对应配置。这一类问题在实验室里很难发现因为调试环境有空调、裸板散热好。我后来养成了一个习惯所有低照度项目都要放到一个相对封闭的盒子里连续跑至少8小时检验长时间工作的画面稳定性这个流程帮我提前排掉过不止一个“过夜变红”的雷。6. 实测数据与可选扩展这套方案能走多远6.1 0.01Lux下AI-ISP开启前后的对比表现最后放一组我在暗室实测的数据参考方便大家建立预期不同sensor、镜头、模型配置下结果会有差异仅供参考项目传统ISP模式未开AIAI-ISP模式模型开启主观噪点满屏彩噪、雪花感明显画面干净暗部少量亮度噪声边缘纹理涂抹感严重人脸五官模糊边缘可辨认面部特征基本可识别动态拖影3DNR强时会明显拖影轻微拖影可通过曝光策略继续优化极限环境0.005Lux基本不可用能看出场景轮廓识别仍需提升1080p25fps稳定稳定需控制带宽和NPU占用需要说清楚的是AI-ISP不是“把0.01Lux变成白昼”的魔法。它更像一个在极暗环境下替你把潜力榨干的助手——尽可能保留细节、压制噪点让画面从“完全不能用”变成“可用、可识别、可做智能分析”。深度学习的特性决定了它在训练数据覆盖的场景里表现好换了完全没见过的场景可能打折扣所以量产前一定要在自己的目标场景里采集数据、做模型迭代。6.2 围绕这套底座的扩展思路人形侦测、周界报警与多光谱联动RV1126B本身有2TOPS NPU画质调通之后这颗NPU还能同时跑一些轻量级视觉模型把功能价值放大。我常给客户的扩展方向有几个人形/车辆检测在低照度画质基础上接目标检测模型夜间能做到有人进入监控区域就触发报警配合白光灯或语音提示对家庭安防、商铺防盗很有价值。周界越界分析这个场景很依赖夜视画质夜间误报率高是小区的痛点。AI-ISP先把画面洗干净检测模型再用上误报率会明显下降。多光谱联动RGB摄像头和热成像/雷达联动AI-ISP负责RGB通道热成像负责全天候人体/车辆检测两者做融合报警。RV1126B在算力上刚好能承担主控职责。更极端的全彩夜视目前0.01Lux全彩方案对sensor、镜头、AI模型的要求都比较高如果以后sensor灵敏度继续提升全彩夜视会成为标配。6.3 最后再分享一点经验做低照度AI摄像头的这些日子我最大的感受是AI-ISP给了我们一个“改赛道”的机会但它不会替你解决所有问题。硬件底噪、光路设计、电源纹波、带宽规划这些基本功一样都不能省。AI模型只能在信噪比达到基本要求的数据上发挥作用输入一团糟再强的神经网络也无从下手。如果你正要开始做类似方案我的建议是先别急着追求最高参数把“0.01Lux下稳定出图、AI降噪连续跑8小时不死机、画面无振荡无花屏”这三件事先做扎实再考虑如何把画质推到极限。稳和好在夜视项目里永远是先后顺序不是并列关系。
返回列表