我们把"AI 测光表"从 GPU 服务器上的大管线,蒸馏成一个 5.11M 的轻量模型,部署到 Mac 的神经引擎(ANE); 又围绕它构建了原生实时播放器 Lumora——载入 SDR 片源,即以 HDR 亮度实时播放。 本页讲两件事:小模型是怎么训练出来的,以及播放器是怎么设计的。
我们已有一条经过验证的 SDR→HDR 转换管线(见上一篇): 用视频大模型 LTX 当"测光表",算出画面每个区域该提多亮。问题是它太慢——一帧要 40 秒,只能在服务器上离线跑。 实现实时化采用深度学习中成熟的模型压缩方法:知识蒸馏(knowledge distillation)。
监督学习通常受制于标注成本。本方案无需人工标注:教师管线对一部电影与一套公开测试集批量推理, 自动产出 2078 组「SDR 帧 → 参考增益图」训练样本对;单次训练仅 33 分钟。 更换片源后,训练集可按同一流程自动扩充。
在训练未见域的学术基准 HDRTV1K 上,学生模型(SSIM 0.9423)超过了包含 LTX 的完整教师系统(0.9117)。 机制:生成式教师存在逐样本随机性,单次输出含噪;学生在大量样本上回归教师输出的条件期望,等效于对教师噪声做平均。 该现象在蒸馏文献中已有报道,本项目在增益图任务上给出了定量验证。
每个版本解决一个明确的问题。单次训练 33 分钟,迭代成本低——主要成本在于确定正确的评测口径。
| 模型 | 参数量 | HDRTV1K SSIM ↑ | 高光峰值比 ↑ | 单帧耗时(M4 Max) |
|---|---|---|---|---|
| LTX 完整系统(教师推理链) | ~2B(大模型) | 0.9117 | 1.00(基准) | ~41 s(服务器 GPU) |
| 学生模型 v0 | 28M | 0.9419 | 0.60 | 88 ms |
| 学生模型 v1.1(现役) | 5.11M | 0.9423 | 0.863 | 8.88 ms(神经引擎) |
| 教师 GT 上界 0.9507;母版亮度校准漂移 2.1%(≤5% 线)。全部数字为实测,平台已标注。 | ||||
有了 9 毫秒的学生网络,还需要一个边解码边转换的实时播放器。核心设计:逐像素运算全部由 GPU 承担,网络推理置于异步支路—— 增益在解码时刻提前算好,画面在显示时刻逐帧渲染,两者只在「×增益」一步汇合。
早期版本用"最新可用增益"策略:渲染时拿手头最新算完的增益凑合用。结果切镜头/亮度突变时, 增益比画面慢 200–400 毫秒,肉眼可见"亮度跟不上画面"。重构后:解码器一出帧就为它算增益、 按时间戳(PTS)存表;显示哪帧,就查表取哪帧的增益——错配按构造归零。频闪测试片互相关实测:滞后 0 帧。
播放器里的整条数学链(线性化、增益、色域、色度增强、PQ/EDR)是用 Metal 重写的,怎么保证和服务器上验证过的 Python 参考链一模一样?我们不靠眼睛:让播放器把一帧的处理结果按 10bit 码值原样吐出来,与参考链对同一帧的输出 逐像素做差。验收线:99% 的像素差异不超过 2 个码值(10bit 每通道共 1024 级)。现役 12 组配置(色度开/关 × 多档位 × 多片源)实测 99% 像素差异均 ≤1 个码值——即 1024 级中仅差 1 级,远低于肉眼可辨阈值。 shader 里的每个常量都由脚本从 Python 源码自动生成,禁止手抄——两边永远同源。
现象:播放中画面剧烈抖动,抖动帧看起来是"画面被放大"。排查发现是零拷贝纹理的生命周期问题: 解码帧的显存(IOSurface)在还在屏幕上显示时,就被解码器的缓冲池回收去写未来帧了——推镜头里领先几帧的未来帧, 恰好就是当前画面的"放大版",于是抖动看起来像缩放。修复:显示路径持有像素缓冲直到 GPU 用完(双持有 + 一帧宽限)。 结论:零拷贝资源的所有权边界必须显式管理;异常的具体表现形态(此处为"放大")本身即是定位根因的关键线索。
吞吐打磨增益命中率从 97.4% 向 99.5% 收口(去 CPU 转置/回读)
色度三档播放器对齐生产的 off / F_APC / B 三档色度增强(F_APC 已有,补 B)
A/B 分屏SDR|HDR 左右分屏对比 + 30 分钟连播浸泡测试
电视芯片L3 路线启动:模型正在向 MTK Pentonic 700(MT9655)NPU 移植——输入位深实验进行中
| 维度 | 我们的做法 | 为什么这是优势 |
|---|---|---|
| 无虚构保证 | AI 只输出低频增益场,像素 = 原片 × 增益 | 按构造不产生新内容(chromaErr≡0),过审风险为零;蒸馏后该性质原样继承 |
| 蒸馏目标 | 只学增益图,不学像素 | 输出空间低频、低维 → 5.11M 就够;学生回归教师输出的条件期望、平均掉逐样本噪声,未见域反超 |
| 训练数据生成 | 教师管线自动标注,2078 对零人工 | 护栏烘进标签;换片源即扩容;33min/次的迭代速度 |
| 部署形态 | CoreML/ANE fp16 静态形状,全算子神经引擎常驻 | 8.88ms,GPU 全留给像素链;架构从 v1 起就为 NPU 设计(静态上采样、ReLU) |
| 实时架构 | 双速率解耦 + PTS 精确配对 + 全 GPU 常驻 | 增益不占帧预算;错配按构造为 0(互相关实测);1080p60 零掉帧 |
| 质量体系 | golden parity(逐位)+ 学术基准 + 专业母版对标 + 频闪互相关 | 每次改动都有客观回归线,不靠眼睛;验收规则盯"真裁判" |
| 可扩展性 | 同一教师可蒸馏不同档位/输入域(桌面 CoreML 版与电视 NPU 版并行) | L2 工作站已落地,L3 电视端(MT9655/NeuroPilot)推进中 |
本页数字均为实测:训练/评测在 H20 服务器,推理耗时在 M4 Max;学术基准 HDRTV1K 117 帧为训练未见域; 母版对标以 ASC StEM2 专业 HDR 母版为参照。撰写日期 2026-07,后续里程碑(gainMiss 收口、B 档、A/B 分屏、MT9655 移植)完成后本页会更新。