
“神经编码”这词在视频技术圈出现的密度越来越高但我发现不少朋友的理解还是停在“AI 调参数”这个层面让模型给传统编码器估一个更好的 QP或者把 AV1 的模式决策换成神经网络来做就以为这是神经编码的落地形态。讲真这个想法也算有一定的实践基础因为传统编码链路里 AI 确实能在不少决策点上创造收益。但它把“神经编码”理解窄了。神经编码和“AI 调参数”之间差的不是工夫是换了一套底层函数。如果让我用一句话概括AI 调参数是在原有的加法器上换一个更聪明的人来按按钮神经编码则是把加法器换成一块可微的、能学习怎么处理信息的柔性电路。这篇文章想把这条分界线彻底讲透也顺带聊聊它离真正规模化落地还有多远。1. 传统编码器的“决策森林”AI 调参数到底在调什么想理解神经编码的本质得先把传统编码器的运作方式铺开。很多文章讲视频编码只会提“H.265 比 H.264 好”“AV1 压缩率高”却不讲它到底在算什么。实际上传统视频编码是一个非常庞大的搜索问题。1.1 找最优路径块划分、预测、变换和量化传统混合编码器把一帧图像拆成大小不一的块。64×64 的编码树单元可以一路拆分到 4×4。对每个块编码器先做帧内预测或帧间预测帧内预测参考当前帧已经编码的边界像素帧间预测则去参考帧里找内容最接近的匹配块记录运动矢量。预测完成之后拿原始块减掉预测块得到残差。残差再经过 DCT/DST 变换变成频率系数。系数经过量化量化索引最后交给熵编码器比如 H.264/H.265 里的 CABAC压缩成二进制码流。这个过程里每一步都是决策点。块怎么拆帧内用哪种方向模式帧间参考哪一帧、运动矢量精度取到几分之一像素量化步长取多少熵编码用哪个上下文模型一个块编码完通常要把成百上千种组合都试过一遍。这也是传统编码器特别耗 CPU 的原因它不是在做“一次计算”而是在做“一个搜索”。x265 的 preset 从 ultrafast 到 placebo 差别那么大就是因为搜索范围差了一个数量级。工业界那么多码率控制算法、预分析方法、快速模式决策算法本质上都是在帮这个搜索过程砍分支。1.2 率失真优化 J D λR 是整棵树的根传统编码器在这么多候选里做取舍靠的是率失真优化RDO。写成公式就是J D λRD 是把这个模式编码后重建图像产生的失真R 是估计要花的比特数λ 是拉格朗日乘子。编码器遍历候选模式时谁让 J 最小谁就胜出。λ 不是拍脑袋定的它和量化参数 QP 直接挂钩。QP 越大λ 越大编码器越倾向选择省比特的模式QP 越小λ 越小编码器越舍得花比特保质量。一个视频序列从头到尾QP 怎么变化直接决定了码率分配和质量波动。视频编码里大量“调参”工作调的其实就是这个 λ 和 QP 的关系。所谓“AI 调参数”最常见的就是用神经网络根据内容复杂度预测更合理的 QP或者用模型快速筛掉明显不可能胜出的模式让编码器把算力集中到更有希望的候选上。1.3 AI 增强编码增强的是“决策层”不是“表示层”近些年工业界确实有不少 AI 增强编码的项目。典型的方向有这么几类用神经网络做 QP/码率控制预测在编码前分析场景复杂度提前分配码率用小型网络做帧类型决策判断该不该放在 I 帧/P 帧配合场景切换检测用深度模型加速 AV1/H.266 的块划分搜索减少编码耗时神经网络环路滤波对重构像素做逐像素修正把更干净的帧留作后续参考。这些东西有没有用有用有些模型在固定码率下能带来可观的客观指标提升。但它们有一个共同点输出最终还是落回传统编码器的语法元素里。QP 还是 QP块划分还是块划分环路滤波后的像素还是喂给同一个运动补偿链路。重建出来的图像依赖的还是手工设计的 DCT 变换、手工设计的概率表、手工设计的上下文模型。我把这类做法叫“决策层增强”。它的天花板很清楚不管 AI 把决策做得多么聪明它能调的范围都局限在原有语法结构里。但神经编码不是在这个范围里调它是把语法结构连根拔了。2. 神经编码的底层替换从“手工变换查表”到“可微映射学习概率”神经编码走的是完全不同的路线。它不做“块搜索”而是用深度神经网络直接学习一个从像素到码流的映射再学一个从码流到像素的逆映射。中间不出现“DCT 系数”“运动矢量”“块划分模式”这些传统语法元素。2.1 深度编解码器的基本骨架最基础的神经编码器是个自编码器结构。编码端网络 g_a 把输入图像 x 映射到一个隐空间张量 yy 经过量化变成 ŷ解码端网络 g_s 把 ŷ 映射回重建图像 x̂。中间那个隐空间张量就是“压缩后的表征”。这和传统编码的差别在于传统编码的变换基函数是固定的DCT 的基就是那几条余弦波代码写死在那里无论图像内容是什么都用同一套基函数去分解。神经编码的变换函数是网络的权重这些权重是在大量图像上训练出来的。它可以把图像中重复出现的纹理、结构、边缘响应压进隐空间里从而用更少的维度表达同样的内容。实际操作上这个映射不是简单的一层卷积而是类似残差网络的结构在不同分辨率层级上做特征提取和合并。隐空间张量的通道数、空间分辨率和压缩率直接相关空间分辨率越低、通道数越少压缩得越狠但重建质量也会掉。网络怎么取舍不是人工设定规则而是靠损失函数逼出来的。2.2 超先验和隐变量的概率分布这里涉及一个关键问题y 量化之后到底用多少比特去编码它传统编码器有 CABAC它把语法元素映射到上下文再从上下文查一个概率表最后用算术编码输出比特。神经编码器没有现成的语法元素它必须自己估计每个隐变量的概率分布。现在通行做法是加一个超先验网络hyperprior编码器不仅产出主隐变量 y还产出一个额外的 zz 是“描述 y 分布参数”的边信息。解码端先解 z根据 z 算出 y 中每个元素的概率分布参数通常是一个高斯分布的均值和方差再用这个分布去对 ŷ 做算术编码。这个思路看着绕但本质很直观如果某个隐变量元素的方差大说明它的取值范围宽、不确定性高编码它需要相对多的比特方差小说明它比较确定用很少的比特就能描述。超先验相当于在码流里塞了一份“分布说明书”虽然它自己也要花比特但整体上能把比特花在该花的地方。2.3 端到端的损失函数这里的 λ 才叫真正的全局调参神经编码器的训练目标是极简的L R λDR 是码率的估计值通常用熵模型算出的比特数来衡量D 是重建质量损失可以是 MSE也可以是 MS-SSIM、感知损失等λ 是平衡两者的超参数。这句话看起来和传统 RDO 很像但含义完全不同。传统编码器里的 J D λRλ 是编码时算一次、用完即弃的参数。神经编码器里的 λ 是训练阶段长期作用于整个网络的超参数它控制网络权重往哪个方向收敛。λ 小网络会更激进地保留信息结果就是码率偏高、失真偏小λ 大网络会更激进地丢掉信息用更少的比特重建出相对可接受的质量。还有一个细节值得注意传统 RDO 里的 D 通常是为 PSNR 服务的 MSE。神经编码的 D 可以做成任何可微的度量——MS-SSIM、LPIPS、甚至对抗损失。这带来一个结果神经编码器很容易针对“人眼主观质量”优化而不是死磕像素级 PSNR。这一点在后文的实测里会表现得非常明显。3. 熵编码和上下文模型在神经编码里彻底换血很多讲神经编码的文章把“神经网络”和“熵编码”分开讲好像熵编码只是最后一步普通的后处理。实际上在神经编码框架里熵模型不是后处理它直接影响训练目标是压缩性能的核心。3.1 传统熵编码靠手工上下文传统编码器里的算术编码依赖条件概率比如 CABAC 会根据已编码的邻块信息、当前宏块类型、运动矢量差来切换上下文每个上下文绑定一个概率表。这些上下文模型是标准制定的时候手工设计的几十个上下文、几百个概率状态写成规范里的表格。这种手工模型的问题是普适但不精细。它照顾了常见的视频内容却没法针对特定纹理、特定运动模式做最优化的概率预测。概率模型稍有不准确码流长度就会有肉眼可见的膨胀。3.2 神经码流的概率由网络实时预测神经编码器的熵模型是一个神经网络。它根据已解码的一部分隐变量实时预测当前元素的条件概率分布再交给算术编码器。也就是说概率表不是查来的是算出来的。这意味着什么意味着网络在训练阶段就学会了“什么样的隐变量组合更常出现、什么样的情况更少见”。它针对训练数据学到的概率预测方式会比固定概率表在统计上更贴合内容分布。打个比方传统编码器像一本通用词典词条和释义固定神经编码器像一个学会了你说话习惯的输入法它给出的下一个词概率是结合上下文动态算出的预测越准你打出来的码流越短。3.3 自回归上下文让每个系数都“认识”邻居为了把熵模型的预测能力推到极限学界引入了自回归上下文。解码隐变量时按某种顺序逐元素恢复每恢复一个元素就把已恢复的邻居信息送入模型让它对下一个概率分布做更精细的预测。这套机制在“超先验自回归”这类结构里被打磨得相当成熟。主特征张量自带互相关超先验提供全局信息自回归补充局部依赖。三者结合起来神经网络对码流长度的控制能力远超手工概率模型。但自回归的代价是解码延迟高因为每个元素都得等它前面一批元素解码完才能算出概率并行度被大幅削弱。这也是神经编码器在工程化时最头疼的环节之一。后面聊落地时还会再提到。4. 我看到的实测情况部分指标真赢了部分还没赢读到这里可能有人会问说了这么多机制神经编码到底多大程度领先传统编码器这个问题不能一概而论。我自己的测试和跟踪的公开结果可以做几个分档描述。4.1 低码率段和感知指标是真优势区在同等主观质量下成熟的神经编码器相比 H.265 普遍能节省 30%~40% 的码率这个结论基本没有争议。即便和 H.266/VVC 这种最先进的传统标准硬碰硬神经编码在低码率段的率失真表现也已经站到同一水平线附近。更有意思的是感知指标。如果训练时用 MS-SSIM 或感知损失做 D神经编码重构出来的图像在纹理区域会表现得异常干净。传统编码器在低码率下容易出现块效应、振铃、纹理糊成一团神经编码器则倾向于把细节“藏”进隐空间的统计规律里重建时再按概率特性恢复出来。人眼看着更自然虽然 PSNR 不一定是最高。所以业界经常看到一个现象用 PSNR 排名时神经编码排在 VVC 后面几位换成主观测试或 MS-SSIM排位立刻反转。这不是刷分而是指标和优化目标的关系。传统编码器从头到尾都在为像素误差服务而神经编码器从一开始就可以为“看起来对”服务。4.2 中高码率段和复杂场景仍有差距但要说神经编码全面碾压传统编码器我不认同。在中高码率段、复杂运动场景、混合屏幕内容里神经编码的优势会明显收窄。原因在于神经编码器是在特定数据集上训练的经验模型。它学到的统计规律遇上训练集里没见过的内容泛化能力就会打折。比如含有大量文字、UI 界面、锯齿状图形的屏幕内容传统 VVC 可以用专门的工具精准保留锐利边缘神经编码器却可能把这些内容当成“自然纹理”抹平。再比如显著运动。传统编码器的运动矢量是显式编码的物体怎么移动、前后帧怎么映射编码器非常清楚神经编码器在这方面更多依赖隐空间的时序相关性一旦运动模式超出训练分布参考帧里的信息利用效率就会下降。这也是神经编码器通常先落地在监控、短视频、离线转码这类场景的原因——内容分布相对可控。4.3 算力开销高得惊人实测里最直观的另一件事是算力账。传统编码器在专用芯片上跑 4K 实时编码功耗做到几十瓦是常态。神经编码器目前想在 GPU 上跑到 4K 实时已经需要中高端显卡更别提移动端。解码端虽然比编码端轻但自回归解码的串行依赖会拉高延迟做低延迟实时通信非常吃力。有一家做视频传输的厂商和我聊过他们的试验神经编码压缩率确实诱人但端到端延迟从几十毫秒跳到几百毫秒产品经理直接把这个方案否了。编码理论再先进如果不能放进业务延迟预算它就是实验室里的好东西不是生产线上的东西。5. 工程化和芯片落地的坎儿真正的“下一代”分水岭很多人以为神经编码最大的挑战是算法还不够好我觉得不是。算法已经有可用性了真正卡壳的是整个工程生态。5.1 算力结构不匹配传统编码器的关键运算是变换、量化、运动估计、熵编码这些结构非常适合 ASIC 流水线实现高通、联发科、博通这些厂商早就把解码器做进电视芯片和手机 SoC。神经编解码器的关键运算是大量卷积和矩阵乘想跑得爽要么配 NPU/DSP要么干脆做一个专门的神经解码芯片。这不是换个硬件模块就行的工程。模型更新迭代很快芯片却不能像软件一样天天改。一旦算法结构变了前一版硬件可能就废了。所以现在芯片公司做神经编码普遍偏向于“支持可变结构”的通用硬件而不是为某个模型做死电路。5.2 延迟预算极紧前文提到自回归上下文把解码延迟拉高实际上还有另一层延迟神经编码器的编码端运行的是一个比较大的深度网络编码时间的稳定性也远不如传统编码器。传统编码器虽然也复杂但每个宏块的耗时相对可控能靠硬件调度保证帧率。神经网络的时间复杂度随机型输入内容不同会有波动帧率抖动量级对视频会议来说是致命的。对实时通信业务来说体验上的花销比压缩率上的收益更难接受用户不会因为省了 30% 带宽而容忍视频明显变卡。神经编码想切入 RTC 赛道必须先解决低延迟推理引擎、自回归并行化这些问题否则只能默默绕道。5.3 生态要成规模才有价值视频编码从来不只是编码器的事。一个视频要能被所有设备播放需要的是统一的码流格式、封装格式、解码器实现、硬件支持、版权管理、测试基准。传统 H.264 能达到今天的普及度是因为整个产业链花了十几年把工具链补齐了。神经编码到目前为止还没有形成一个统一、稳定、可归档的码流格式。各家模型各训练各的互相之间完全不能互通。你要在某个平台播放一段神经编码视频必须先在这个平台部署同一个模型。这种强绑定关系对大规模内容分发来说是很重的负担。所以哪怕工业界已经很看好神经编码短期内能看到的产品形态仍然是“专用场景闭环”比如一个云转码服务自己编码自己播放比如一个视频监控厂商自己训练自己的模型、自己的终端配自己的解码器。这种“围墙花园”模式其实是技术成熟前的正常过渡。5.4 哪些场景会先跑起来根据我观察到的产业动态离线转码、点播视频增强、监控视频压缩、云游戏画面传输这几个方向最可能率先商业化。离线转码对延迟不敏感可以采用最重的模型和最大的算力把压缩率压到极致。监控视频内容相对固定场景统计特性好建模而且通常不需要和其他平台互通。云游戏虽然对延迟敏感但画面是机器生成的统计分布可控且客户端形态本身就在演进可以接受额外解码硬件的加入。我个人现在的判断是神经编码不会沿着“替换 H.266”的线性路径发展它更像是从这些细分场景里长出一个新生态。等哪天你看到某个视频平台的“超低码率模式”不再调 H.265/QP而是动态加载一个神经网络解码器那就是它真正进入主流生活的时刻。最后再分享一个实际工作中的体会不要被“神经编码全面超越传统编码”这种口号带节奏也不要看到神经网络环路滤波就把它当成神经编码。判断一个方案是“决策增强”还是“编码范式变更”就看一件事——离开传统语法结构之后它还能不能工作。不能离开的只是工具能离开的才是另一个物种。