资讯动态

RawVLA:用神经ISP替代固定ISP,解决跨相机VLA策略泛化难题

发布时间:2026/10/15 11:09:46 来源:尧图企业网站定制
1. 从物理相机到具身策略RawVLA 到底在解决什么问题做具身智能这一行的朋友大概率都经历过一种“实验室里跑得通、换个相机就翻车”的尴尬。同一个抓取策略在 A 相机上成功率能到 80%换到 B 相机上直接掉到 40% 以下甚至连目标都识别不出来。这不是策略网络本身不行而是物理相机之间的成像差异在背后捣鬼。RawVLA 这个工作就是冲着这个痛点来的。先把概念说清楚。VLA 是 Vision-Language-Action 的缩写指的是把视觉感知、语言指令和动作输出统一到一个模型里的具身策略框架。它的输入是图像加语言输出是机器人动作。问题在于绝大多数 VLA 策略吃的都是已经处理过的 RGB 图像也就是相机内部 ISP图像信号处理器吐出来的成品图。而 ISP 这个东西每家厂商的调校风格都不一样——有的偏冷、有的偏暖有的锐化拉满、有的降噪激进白平衡、伽马、色调映射全是黑盒。结果就是同一块场景不同相机拍出来的像素分布差异巨大策略网络看到的“世界”根本不一致。RawVLA 的核心思路非常直接别用 ISP 处理后的图了直接用 RAW 数据然后让网络自己学一个“具身神经 ISP”。所谓具身神经 ISP就是用一个可学习的神经网络模块替代传统相机里那套固定的、厂商私有的 ISP 流程把 RAW 域的信号自适应地转换成适合下游 VLA 策略的特征表示。这样一来成像差异不再是一个需要人工去对齐的麻烦而是被网络在训练中自动吸收掉了。这个工作来自东京大学和港科大崔子藤教授团队标题里“自适应 RAW 处理”和“显著降低图像成像差异对 VLA 策略的影响”是它的两个关键词。适合谁来读如果你在做机器人操作、自动驾驶感知、或者任何需要跨相机部署视觉策略的工程这篇内容值得你花时间。哪怕你只是对 RAW 图像处理和具身智能的结合感兴趣里面的设计取舍也能给你不少启发。我先把结论摆在这儿RawVLA 的价值不在于它提出了一个多复杂的网络结构而在于它把“相机成像差异”这个长期被当作工程细节忽略的问题提升到了策略设计的一等公民位置。下面我会从整体设计、核心细节、实操流程、问题排查几个层面把这个方法拆开讲透。2. 整体设计思路为什么是 RAW为什么是神经 ISP2.1 传统 VLA 流程的隐性假设要理解 RawVLA 为什么这么设计得先看清楚传统流程里藏了哪些假设。一个典型的 VLA 策略训练管线是这样的相机采集 RAW 数据相机内部 ISP 做去马赛克、白平衡、伽马校正、色彩空间转换、锐化降噪输出 sRGB 图像然后策略网络拿这个 sRGB 图像做视觉编码再和语言特征融合最后解码成动作。这条链路里有一个非常强的隐性假设所有相机的 ISP 输出是可比的。但现实是这个假设几乎从来不成立。不同厂商的 ISP 参数是私有调校的同一厂商不同型号也有差异甚至同一相机在不同光照下自动曝光和白平衡的决策都不一样。你在 A 相机上训练的策略视觉编码器学到的特征分布是绑定在 A 的 ISP 风格上的。换到 B 相机特征分布偏移策略自然崩。有人会说那我做数据增强不就行了随机调亮度、对比度、色调。这个做法确实能缓解一部分问题但它是在 sRGB 空间做增强而 sRGB 空间已经经过了非线性伽马压缩和色彩变换很多原始信息已经被不可逆地丢弃了。你在一个已经失真的空间里做增强能补回来的东西有限。2.2 RAW 域的信息优势RAW 数据是相机传感器直接输出的、未经 ISP 处理的原始信号。它保留了线性响应特性动态范围更宽没有经过伽马压缩和色彩风格化。用生活化的类比RAW 就像生食材sRGB 就像已经炒好的菜。你在炒好的菜上再怎么调味也没法还原出生食材原本的质地。对于 VLA 策略来说RAW 域最大的价值是信息完整性和跨相机一致性。不同相机的 RAW 数据虽然也有差异传感器响应曲线、CFA 排列、噪声特性但这些差异是物理层面的、相对可建模的而不像 ISP 那样是人为调校的、黑盒的。RawVLA 正是看中了这一点把处理起点从 sRGB 前移到了 RAW。2.3 神经 ISP 替代固定 ISP 的逻辑既然用了 RAW那总得把它变成网络能吃的特征。传统做法是套一个固定的 ISP 管线但那就回到了老问题。RawVLA 的方案是用一个可学习的神经 ISP 模块端到端地和 VLA 策略一起训练。这个神经 ISP 的输入是 RAW 数据输出是适合下游策略的特征图。它的参数不是人工设定的而是通过策略的最终任务损失比如动作预测误差反向传播学出来的。这意味着神经 ISP 会自动学到“什么样的图像变换对抓取任务最有利”而不是“什么样的图像看起来最舒服”。这是一个非常关键的视角转换ISP 的优化目标从人眼观感变成了任务性能。提示神经 ISP 和普通图像增强网络的区别在于它不追求视觉质量只追求下游任务指标。你完全可能看到一个神经 ISP 的输出图在人眼看来“很丑”但策略成功率很高。这是正常的不要用主观观感去判断它好不好。2.4 自适应机制的设计考量标题里的“自适应”体现在两个层面。第一层是跨相机自适应神经 ISP 在训练时见过多种相机的 RAW 数据学到的变换对不同传感器特性有泛化能力。第二层是跨场景自适应网络根据当前 RAW 输入的统计特性动态调整处理策略而不是用一套固定参数应对所有光照条件。这种自适应是通过网络结构本身实现的不需要在推理时做额外的相机标定或参数调整。对于工程部署来说这一点非常重要——你不需要为每台相机单独调参插上就能用。3. 核心细节解析神经 ISP 的结构与训练要点3.1 RAW 数据的预处理与打包RAW 数据在送入网络之前需要做基本的打包和归一化。不同相机的 RAW 格式不一样常见的有 Bayer 排列的 12bit 或 14bit 数据。RawVLA 的常见做法是把 Bayer 图打包成 4 通道RGGB或者保持单通道但记录 CFA 模式然后做简单的线性归一化到 [0,1] 或 [-1,1]。这里有个实操细节不要对 RAW 做去马赛克再送入网络。去马赛克本身就是一个 ISP 步骤会引入插值伪影和信息损失。让网络直接在打包后的 Bayer 数据上操作把去马赛克也交给神经 ISP 去学效果通常更好。# RAW 打包的参考逻辑以 RGGB Bayer 为例 # raw: H x W 的单通道 RAW 数据数值范围 0-409512bit raw raw.astype(np.float32) / 4095.0 # 归一化 H, W raw.shape # 按 2x2 块拆成 4 个通道 r raw[0::2, 0::2] g1 raw[0::2, 1::2] g2 raw[1::2, 0::2] b raw[1::2, 1::2] packed np.stack([r, g1, g2, b], axis0) # 4 x H/2 x W/2归一化的时候要注意不同相机的黑电平black level不一样最好先减去黑电平再做归一化。黑电平可以从相机的元数据里读也可以用一个暗帧估计。这一步如果偷懒跨相机泛化会明显变差。3.2 神经 ISP 的网络结构选型神经 ISP 的结构没有唯一标准答案RawVLA 里用的是一种轻量级的编码器-解码器结构中间带若干残差块。选型时主要考虑三个因素感受野要足够大以处理空间相关的噪声和色彩伪影参数量要小以支持实时推理输出特征要适配下游 VLA 编码器的输入维度。我实测下来一个 6 到 8 层的卷积网络通道数从 32 起步配合几个空洞卷积扩大感受野就能覆盖大部分场景。不需要上 Transformer那个计算量对实时策略来说太重了。激活函数用 LeakyReLU 或者 GELU 都行输出层用 Sigmoid 或者直接线性输出取决于下游编码器的输入要求。结构选项参数量推理延迟适用场景4层卷积约 50K极低嵌入式部署算力紧张8层卷积残差约 300K低主流选择平衡性能与速度12层空洞卷积约 800K中高分辨率输入复杂光照轻量Transformer约 2M高离线训练追求极致性能3.3 与 VLA 策略的联合训练策略神经 ISP 不能单独训练因为它没有明确的监督信号——你没法定义“正确的”ISP 输出应该长什么样。它必须和下游 VLA 策略联合训练用任务损失来驱动。联合训练时有几种策略。一种是端到端全量微调神经 ISP 和 VLA 策略一起从预训练权重开始训练。这种方式效果最好但计算成本高而且容易过拟合到训练时见过的相机。另一种是冻结策略只训 ISPVLA 策略用预训练权重冻住只更新神经 ISP 的参数。这种方式训练快适合快速适配新相机但上限受限于冻结策略的泛化能力。RawVLA 采用的是折中方案先冻结策略训一段时间 ISP让 ISP 输出稳定下来再解冻策略做联合微调。这个两阶段流程在实践中比较稳不容易崩。注意联合训练时学习率要分开设置。神经 ISP 的学习率通常比策略网络大 5 到 10 倍因为它是从随机初始化开始的而策略是预训练权重。如果共用一个学习率要么 ISP 学得太慢要么策略被带偏。3.4 损失函数的设计细节任务损失是主损失比如动作的 L1 或 L2 误差、抓取成功率的交叉熵等。但光有任务损失不够训练容易不稳定。RawVLA 里加了两个辅助损失一个是色彩恒常性损失约束神经 ISP 的输出在不同光照下保持稳定另一个是平滑损失约束 ISP 输出的空间平滑性避免产生高频伪影。色彩恒常性损失的设计思路是对同一场景在不同色温光照下的 RAW 输入神经 ISP 的输出应该尽可能接近。这个约束帮助网络学到光照无关的特征表示。平滑损失则是对输出特征图做总变分约束抑制噪声放大。辅助损失的权重需要调。我的经验是任务损失占主导辅助损失权重在 0.01 到 0.1 之间。权重太大ISP 会只顾着输出“好看”的图而忽略任务权重太小训练不稳定。4. 实操过程从 RAW 采集到策略部署的完整链路4.1 数据采集与相机配置第一步是采集 RAW 数据。不是所有相机都开放 RAW 输出选型时要确认相机支持 RAW 格式导出并且能拿到曝光、增益、黑电平等元数据。工业相机通常支持消费级相机要看型号和 SDK。采集时要注意同一场景要用多台相机同时拍这样才能构造跨相机的训练数据。如果只有一台相机可以通过改变曝光、增益、白平衡设置来模拟相机差异但效果不如真实多相机。每个场景至少采集 3 到 5 种不同的相机配置覆盖不同的光照条件。数据量方面神经 ISP 虽然参数量不大但也需要足够的数据才能学好。我的经验是至少 5000 到 10000 个场景每个场景多种相机配置总共几万到十几万张 RAW 图。如果做数据增强可以对 RAW 做随机的曝光偏移和噪声注入但不要做色彩抖动那会破坏 RAW 的物理意义。4.2 训练环境搭建与参数配置训练环境需要 GPU显存建议 24G 以上因为 RAW 数据比 sRGB 大batch size 上不去的话训练会很慢。框架用 PyTorch 就行RAW 数据加载可以自己写 Dataset也可以用现成的 RAW 处理库做预处理。关键参数配置如下# 训练配置参考 batch_size: 32 learning_rate: neural_isp: 1e-3 vla_policy: 1e-4 optimizer: AdamW weight_decay: 1e-4 scheduler: CosineAnnealing warmup_steps: 1000 total_steps: 100000 loss_weights: task_loss: 1.0 color_constancy: 0.05 smoothness: 0.02batch size 如果显存不够可以用梯度累积。学习率方面神经 ISP 用 1e-3 起步策略网络用 1e-4这是经过多次实验比较稳的配置。warmup 很重要前 1000 步让 ISP 先稳定下来再让策略参与。4.3 训练过程监控与调优训练过程中要监控几个指标任务损失、辅助损失、神经 ISP 输出的统计特性均值、方差、直方图。任务损失当然是越低越好但如果辅助损失突然飙升说明 ISP 输出出现了异常可能是学习率太大或者数据有问题。我踩过的一个坑是神经 ISP 输出逐渐饱和所有像素都往 0 或 1 跑导致下游策略拿到的特征几乎没有区分度。排查后发现是输出层用了 Sigmoid 但没有做适当的初始化加上学习率偏大。解决办法是输出层改用线性输出或者在 Sigmoid 前加一个可学习的缩放因子。另一个常见问题是训练集和验证集的相机分布不一致。如果验证集用的是训练时没见过的相机任务损失会明显偏高。这时候不要急着调网络结构先检查数据采集是否覆盖了足够的相机多样性。4.4 推理部署与实时性优化训练完之后神经 ISP 和 VLA 策略一起部署到机器人上。推理流程是相机输出 RAW打包后送入神经 ISPISP 输出特征图特征图送入 VLA 策略策略输出动作。实时性是个大问题。神经 ISP 虽然轻量但加上 VLA 策略本身的计算量整体延迟可能超过控制周期。优化手段包括用 TensorRT 或 ONNX Runtime 做推理加速把神经 ISP 量化到 FP16 或 INT8以及把 ISP 和策略的推理流水线化。实测下来一个 300K 参数的神经 ISP 在 Jetson Orin 上跑 640x480 输入FP16 推理延迟大约 3 到 5 毫秒完全可以接受。如果输入分辨率更高可以考虑先做下采样再送入 ISP但要注意下采样会损失高频信息可能影响精细操作任务。5. 常见问题与排查技巧实录5.1 跨相机泛化突然变差这是最常见的问题。训练时好好的换一台新相机成功率就掉。排查思路如下第一检查新相机的 RAW 格式是否和训练时一致。Bayer 排列不同RGGB vs BGGR vs GRBG会导致通道错位ISP 输出完全乱掉。解决办法是在打包时根据相机元数据自动调整通道顺序。第二检查黑电平和归一化范围。新相机的黑电平如果和训练集差异大归一化后的数值分布会偏移。解决办法是统一减去各自的黑电平再归一化。第三检查曝光和增益范围。如果新相机的曝光范围超出训练集覆盖的范围ISP 可能没学过这种亮度分布。解决办法是在训练数据里加入更宽的曝光范围或者在推理时做自动曝光限制。问题现象可能原因排查方法解决措施换相机后成功率骤降Bayer 排列不匹配检查相机元数据 CFA 模式打包时动态调整通道顺序暗光下性能差黑电平未校正对比暗帧均值减去黑电平再归一化过曝场景失效训练曝光范围不足统计训练集亮度分布扩充曝光范围数据色彩偏差异常白平衡未对齐可视化 ISP 输出加色彩恒常性损失5.2 训练不收敛或损失震荡联合训练时损失震荡很常见尤其是神经 ISP 和策略网络的学习率不匹配时。我的经验是先把策略冻住只训 ISP 到损失稳定再解冻策略。如果还是震荡降低 ISP 学习率增大 warmup 步数。另一个原因是 batch size 太小。RAW 数据占显存batch size 上不去的话梯度噪声大。可以用梯度累积模拟大 batch或者用混合精度训练省显存。5.3 神经 ISP 输出退化输出退化表现为 ISP 输出趋近于常数图或者噪声图。常数图说明网络塌缩了可能是学习率太大或者损失函数设计有问题。噪声图说明网络在放大噪声可能是平滑损失权重太小。排查时可以把 ISP 输出可视化出来看。如果输出图看起来像原始 RAW 的简单缩放说明网络没学到东西可能是梯度没传过去。检查一下 ISP 和策略之间的梯度流是否被 detach 操作截断了。提示调试神经 ISP 时可以先用一个简单的恒等映射初始化输出等于输入然后观察训练过程中输出如何演变。如果输出一直不变说明梯度有问题如果输出剧烈变化说明学习率太大。5.4 推理延迟超标延迟超标通常是因为 ISP 和策略串行执行没有流水线化。解决办法是把相机采集、ISP 处理、策略推理分成三个线程用队列做缓冲。相机采集是 IO 密集型ISP 和策略是计算密集型流水线化后整体延迟取决于最慢的一环而不是三者之和。如果单帧延迟还是高考虑降低 ISP 的输入分辨率或者用更轻量的网络结构。实在不行可以把 ISP 量化到 INT8精度损失通常在可接受范围内。6. 这套方法还能怎么扩展RawVLA 的思路不仅限于 VLA 策略。任何需要跨相机部署的视觉任务都可以借鉴“神经 ISP 任务损失联合训练”的框架。比如自动驾驶的感知模型、工业质检的缺陷检测、甚至手机摄影的计算摄影管线都可以用类似的方法让图像处理自适应下游任务。扩展方向有几个。一是多模态融合神经 ISP 不仅处理 RAW还可以融合深度、红外等其他模态的原始数据输出统一的多模态特征。二是在线自适应在推理时根据当前场景的统计特性动态微调神经 ISP 的参数进一步提升跨场景泛化。三是硬件协同设计把神经 ISP 的部分计算固化到相机端芯片里减少数据传输带宽和主机计算负担。我个人在实际操作中的体会是神经 ISP 的训练稳定性比想象中重要。一开始我总想着把网络做大做复杂后来发现一个精心调参的小网络效果往往比一个没调好的大网络好。关键是把数据采集做扎实把黑电平、Bayer 排列、曝光范围这些基础问题处理好网络结构反而是次要的。另外不要迷信端到端全量微调两阶段训练虽然麻烦一点但可控性高很多出问题也容易定位。最后再分享一个小技巧训练时把不同相机的数据分桶采样每个 batch 里保证有多个相机的样本这样梯度信号里天然就带了跨相机一致性的约束比事后加损失函数更直接。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑