HeadlinesBriefing favicon HeadlinesBriefing.com

无反向传播的神经纹理压缩 (ES)

Hacker News •
×

该仓库于2026年9月4日发布:https://github.com/richgel999/neural_texture_es。这里是GitHub README.md文件的镜像,附带Prior Art披露。关键词:神经纹理压缩、神经材料压缩、PBR材料压缩、无导数神经纹理优化、潜在纹理优化、方块压缩神经纹理、感知神经纹理训练、压缩域纹理优化。

一个小型、自包含的C++实验:RGB图像(或四个大小相同的RGB材质纹理)编码为共享的低分辨率潜在纹理加上一个微型MLP解码器,两者均完全使用进化策略训练——无反向传播、无自动微分、无训练框架。 (可选的后期训练调整 --mlp-fd 会将解码器切换到数值有限差分;仍无反向传播。) 依赖项包括 stb_image, stb_image_write 和 Open MP。

撰写:使用进化策略拟合神经纹理解码器 I(u,v) ≈ MLP( bilinear(Z, u, v), phi(u,v) ) Z为潜在纹理,phi为小型位置编码。在解码时,每个像素双线性采样 Z 在其 UV 处,附加 phi,并运行 MLP。一个可选的第二个、更粗粒度的潜在层 (--latent2) 在相同的 UV 处采样,并将其通道串联到第一层的通道上。

结果

512×512 的 kodim23 裁剪,3000 次迭代,潜在纹理量化为 8 位,MLP 权重计为 fp16:

Latent PSNR / bpp (raw) / bpp (entropy coded)

64×64×4 26.9 d B / 0.56 / 0.47

64×64×8 28.2 d B / 1.07 / 0.87

128×128×4 30.3 d B / 2.06 / 1.65

128×128×8 32.2 d B / 4.07 / 3.27

这些运行使用原始位置编码 uv,fourier:1 (--nfreq 1),这也是为什么下面的评估命令传递它的原因。当前默认仅使用 uv,在两者均运行的情况下得分高出 0.26–0.32 d B;本文后引用的结果除非另有说明,否则使用该默认设置。

128×128×8 运行使用 14 → 24 → 24 → 3 MLP (1035 个权重,leaky ReLU,sigmoid 输出) ,并在 32 线程 CPU 上训练约 150 秒。将潜在纹理量化为 8 位损失 0.04 d B。

该运行的输出 (out_128c8/):目标裁剪、3000 次迭代后的重建,以及并排的八个潜在通道。

目标 重建 (32.2 d B)

out_128c8/model.bin 是训练好的模型;使用 ntc kodim23.png --load out_128c8/model.bin --latent 128 128 8 --nfreq 1 --iters 0 加载它。

一个 4 种材质的铺石070 材质 (法线、粗糙度、反射率、环境光遮蔽;见测试图像) 共享一个 128×128×4 + 64×64×4 的潜在纹理和一个 10 → 36 → 36 → 12 MLP (2172 个权重),训练了 3000 次迭代,学习率在第二半段衰减, decoder 在最后一个季度使用每权重有限差分。 8位潜在纹理: 总计 2.64 bpp,每纹理 0.66 bpp。左边是目标,右边是量化潜在纹理的重建 (out_m1234/)。训练命令是:ntc m1.png m2.png m3.png m4.png --latent 128 128 4 --latent2 64 64 4 --mlp 36,36 --mlp-pairs 64 --iters 3000 --lr-anneal 0.5 0.05 --mlp-fd 0.75 --out out_m1234

法线, 23.2 d B

粗糙度, 31.5 d B

反射率, 23.2 d B

环境光遮蔽, 23.2 d B

输出 out_m1234/:目标 - 重建 (32.2 d B)

out_m1234/model.bin 是训练好的材质;使用 ntc m1.png m2.png m3.png m4.png --load out_m1234/model.bin --latent 128 128 4 --latent2 64 64 4 --mlp 36,36 --iters 0 加载它。

ES 训练如何工作

MLP: 谐抗 ES, 每步32对扰动对,每对在相同的随机 4096 像素小批量上评估。估计的梯度馈送到 Adam。可选后期阶段:全像素小批量 (--mlp-full)、每权重有限差分 (--mlp-fd) 或冻结解码器 (--mlp-freeze)。

潜在纹理: 所有潜在值同时被扰动,每对解码两次完整图像,每步4对。每个像素的损失变化仅归因于其双线性采样读取的最多 4 个纹素,在每个潜在层上。普通 ES 已经从一对反向扰动更新每个参数,但其方差会随着...