跳转至

HiReFF: High-Resolution Feedforward Human Reconstruction from Uncalibrated Sparse-View Video

会议: ECCV 2026
论文: ECCV 2026 官方页 / 项目页
领域: 3D视觉
关键词: 无标定稀疏视角 / 前馈式3D高斯重建 / 人体体积视频 / 高分辨率新视角合成 / 尺度同步相机标定

一句话总结

HiReFF 以 VGGT 为骨干,加上高斯头、掩码头与一条高分辨率旁路,从四路相隔 90° 的无标定视频前馈重建人体 3D 高斯,在 2072×2072 分辨率下做 360° 动态人体的新视角合成,单张 RTX 4090 上流式重建速度 3.01 FPS。

研究背景与动机

全息通信、AR/VR 与体育转播都想让"人体体积视频"变得像视频通话一样随手可拍、实时可看,但目前能落地的方案要么依赖一整套精确标定的相机阵列再加逐场景数小时的迭代优化(3DGS-Avatar、HumanNeRF 这类),要么靠前馈网络在已标定的多视角输入上换取速度(GPS-Gaussian)。真正把标定这一环也省掉的是最近一批无标定前馈几何模型:DUSt3R、VGGT、MapAnything、π³ 可以直接从稀疏无位姿图像里回归相机参数与点云,AnySplat 更进一步预测 3D 高斯、做出逼真的新视角合成。可这些模型几乎都停在"单帧推理 + 518×518 输出"上,把它们直接搬到动态人体体积视频并不成立。

难处在于几个约束彼此打架。四个视角相隔 90°,视角之间几乎不重叠:相机头在训练中会大幅抖动,渲染损失方差很大,很难收敛;而只监督这 4 个输入视角又远远不够,想补新的监督视角就必须有真值相机,偏偏 VGGT 系预测出的坐标没有度量尺度(论文举例说预测出来的人可能只有 0.8 米高),真值相机没法直接拿来用。前景是另一个陷阱:人体重建当然只想要前景,但把输入裁成前景人像会让相机估计明显变差——论文的经验观察是输入区域越大、相机预测越准,于是"去背景"和"估相机"直接冲突。分辨率这一维更硬:几何 Transformer 的算力随输入分辨率平方增长,把主干输入从 518×518 直接提到 2K 会超出 80GB 显存。

本文的判断是:高分辨率渲染并不需要更高的几何与相机精度,需要的只是更丰富的外观属性,所以分辨率完全可以拆出去单独解决。HiReFF 以 VGGT 预训练权重为骨干接上高斯头与掩码头,做人体前景 3D 高斯的前馈重建;用尺度同步相机标定化解尺度歧义与相机抖动;用高斯级前景掩码在保留全图输入的前提下只让前景高斯存活;再用高分辨率侧调把 2K 图像从旁路注入高斯头。核心 idea:把"高分辨率"当作高斯属性的精度问题而非几何精度问题——主干保持 518×518 只负责相机与高斯位置,另一条旁路把 2K 图像特征补进高斯头以提供外观细节,从而以很小的显存代价拿到 2K 渲染;同时用尺度对齐后的真值相机渲染额外视角,间接监督一个被冻结的相机头,既补足监督又压住抖动。

方法详解

整体框架

输入是四路无标定的高分辨率 RGB 视频 \(\{V_i\}_{i=1}^4\),相邻视角间隔约 90°,第 \(t\) 帧记作 \(I_i^t\)。对每个时间步 \(t\),模型要输出两样东西:一组各向异性 3D 高斯 \(\{(\mu_g^t,\sigma_g^t,r_g^t,s_g^t,c_g^t)\}_{g=1}^{G}\)(位置、不透明度、旋转、尺度与球谐系数),以及与输入逐像素对齐的逐视角相机参数 \(\{p_i^t\in\mathbb{R}^9\}_{i=1}^4\)。高斯总数 \(G=4\times H_{\text{HR}}\times W_{\text{HR}}\) 恰好等于四路高清输入的像素总数(2K 下约 1717 万个),也就是"一个输入像素生一个高斯"。值得注意的是这套表示里完全没有参数化人体模型(SMPL / SMPL-X),人体形状完全由深度反投影定位的高斯承载,这也是它能应付宽松衣物与复杂形变的直接原因;动态则是逐帧前馈式的——每个时间步独立前馈一次,没有显式变形场或规范空间,时序一致性由帧间平滑的相机轨迹与训练时的跨帧稳定性来保证。

数据流上,四帧图像先由 VGGT 的 Alternating-Attention(AA)Transformer 提特征,再由若干头并行解码:相机头给出每帧每视角的 9 维相机参数,深度头给出逐像素深度,二者配合反投影得到高斯中心(对像素齐次坐标 \(p=[u,v,1]^{\top}\)\(\mu=R^{\top}(d\,K^{-1}p-t)\)\(K\) 为内参、\([R|t]\) 为外参),从而让每个高斯与输入像素一一对齐;高斯头(DPT)把特征解码成高斯属性。此外还有一条高分辨率旁路把 2K 原图特征补进高斯头的中层,一个掩码头对高斯做逐点前景筛除,训练时再额外的 4 个新视角用尺度对齐后的真值相机渲染、与真值图像比对。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["四路无标定视频<br/>90° 间隔 / 2K"] --> B["AA Transformer 主干<br/>518×518 特征"]
    A --> C["High-resolution Side-tuning<br/>HR 旁路特征注入高斯头"]
    B --> D["相机头 / 深度头 / 高斯头"]
    C --> D
    D --> E["Gaussian-wise Foreground Masking<br/>掩码头筛选前景高斯"]
    E --> F["Scale-synchronized Camera Calibration<br/>冻结相机头 + 尺度对齐的 8 视角监督"]
    F --> G["2K 360° 动态人体高斯"]

关键设计

1. High-resolution Side-tuning:主干停在 0.5K,把 2K 细节从旁路喂给高斯头

几何 Transformer 的显存开销随输入分辨率增长,直接把 2K 图送进 AA Transformer 会直接 OOM(论文实测超过 80GB),而已有前馈模型(AnySplat、VGGT)也都工作在 518×518,渲染分辨率因此被锁死在 0.5K。这篇论文的突破口是一个观察:高分辨率渲染的质量主要取决于高斯头 \(F_G\) 输出的高维高斯属性 \(\Theta_g\)(颜色/球谐、尺度、旋转、不透明度),而对位置 \(\mu_g\) 与相机位置 \(p_i\) 并不敏感。既然如此,主干就不需要"看清"2K,只需要"看懂"几何。于是 LR 图 \(I_{\text{LR}}\) 照旧走 AA Transformer,其高斯头中间层特征 \(\mathcal{U}(F_G^{\text{mid}}(I_{\text{LR}}^t))\) 被上采样后,与 HR 图经补充网络 \(F_a\) 提取的特征相加,再一起送入解码 MLP \(F_D\)

\[\Theta^t = F_D\Big(F_a\big(I_{\text{HR}}^t\big)\oplus\mathcal{U}\big(F_G^{\text{mid}}(I_{\text{LR}}^t)\big)\Big)\]

其中 \(F_a\) 是由 EdgeNeXt 改造的 MLP,负责提供低层、细粒度的高频信息,补上 AA Transformer 高层语义特征缺失的细节;掩码头与深度头的输出同样被上采样到高分辨率后再参与渲染。训练时直接在 2K 上渲染新视角并与 2K 真值比对,再用 patch-wise 的感知损失控制显存。这样做的收益是实打实的:在高分辨率监督不变的前提下把输入从 0.5K 提到 2K,训练显存只增加 33.9%(44125 MiB → 59095 MiB),而去掉侧调、直接把主干输入提到 2K 则直接爆显存。

2. Gaussian-wise Foreground Masking:在全图上重建,但只让前景高斯活下来

人体重建只需要前景,可如果把输入图像先分割再去背景,相机参数的估计会严重退化——在 90° 大间隔、视角几乎不重叠的场景下尤其明显。论文的做法是把"前景"这件事从输入端挪到输出端:输入始终是含背景的完整原图(保住相机头需要的上下文),另加一个掩码头 \(F_m\) 对预测出的高斯做逐高斯调制,用预测的前景概率去乘高斯参数,被判定为背景的高斯就被"关掉":

\[(\Theta^{t}_g,\mu^{t}_g)_{g=1}^{H}=F_m\big((\Theta^{t}_g,\mu^{t}_g)_{g=1}^{G}\big)\odot(\Theta^{t}_g,\mu^{t}_g)_{g=1}^{G}\]

(⚠️ 原文式 (2) 的符号在缓存中排版损坏,上式按正文文字描述复述,具体记号以原文为准。)掩码只在 4 个输入视角上用 L1 损失监督。它有效的原因有两层:一是相机头仍然拿到完整的图像上下文,避免了"去背景换精度"的取舍;二是掩码损失实际上在教高斯解码器"只在前景区域生成高斯",训练完成后解码器不再重建掩码边界以外的区域。由于输入视角近似正交、单视角掩码未必能覆盖所有背景,掩码后仍可能残留少量多余高斯,但实验显示这些高斯会在训练过程中自行消失,最终得到干净的前景重建。

3. Scale-synchronized Camera Calibration:冻结相机头,用尺度对齐后的真值相机做间接监督

这是全文最关键、也最绕的一步,它同时处理三个纠缠的问题。其一,只有 4 个 90° 间隔的输入视角时监督信号不足,必须引入额外的新视角监督,而渲染这些视角需要真值相机。其二,真值相机不能直接用:VGGT 系模型的预测没有度量尺度,高斯初始位置 \(\mu^t\) 只与预测相机自洽,直接套真值平移会得到完全错位的渲染。其三,大视角间隔会让相机头在训练中剧烈波动,渲染损失方差大、收敛困难。HiReFF 的解法是训练时冻结相机头,用真值内参 \(\hat{K}^t\)、真值旋转 \(\hat{R}^t\) 来把高斯投影到像平面,但先按预测尺度把真值平移整体缩放——以第 1 路为参考视角,对每个非参考视角 \(i\) 统计预测平移与真值平移的模长比,取全局尺度因子:

\[\bar{s}=\frac{1}{V-1}\sum_{i=2}^{V}\frac{\|\hat{\mathbf{t}}_i\|}{\|\mathbf{t}_i\|},\qquad \hat{\mathbf{t}}_i'=\bar{s}\,\hat{\mathbf{t}}_i\]

(⚠️ 原文式 (3) 同样在缓存中损坏,此处按正文对 \(V\)、参考视角与"调整平移以匹配预测尺度"的文字描述复述,以原文为准。)把真值相机整体缩放到预测坐标系所在的尺度上之后,就可以用它渲染 \(\{\mu_g^t,\Theta_g^t\}\) 并与真值图像比对。关键在于相机头只是"不被更新",并非被旁路:高斯中心 \(\mu_g^t\) 仍由预测的相机参数反投影得到,渲染损失因此会顺着"特征 → 相机头 → 反投影 → 渲染"这条通路回传到 AA Transformer,从而间接优化相机头所看到(以及所依赖)的特征。由于输出的相机参数仍然来自相机头,推理时完全不需要真值相机。训练时的额外监督视角从输入视角球外侧的正前、正上、正下方向采样(\(V_a=4\)),加上 4 个输入视角一共在 8 个视角上做监督。这一设计的收益是双重的:额外视角补足了监督,冻结与间接优化又消除了相机头的抖动,跨帧预测更稳定,从而缓解了逐帧重建结果之间的尺度漂移。

一个完整示例

以某个时间步 \(t\) 为例走一遍。四路 2072×2072 的高清帧进入网络:它们各自被下采样成 518×518 送进 AA Transformer,同时也经 \(F_a\) 走 HR 旁路;主干随后解码出该帧每个视角约 429 万(2072²)个候选高斯,四路合计 \(G\approx 1717\) 万个,每个都带位置、不透明度、旋转、尺度与球谐系数。掩码头给这 1717 万个高斯各打一个前景概率,逐点相乘后只剩下属于人体的那部分(论文记作 \(H\) 个)。渲染时,高斯中心用的是相机头预测的位姿反投影出来的位置,而把它们投影到像平面用的是真值相机——但真值平移先被统一乘上 \(\bar{s}\),把真值相机拉到预测坐标系的尺度上;随后在 4 个输入视角与 4 个额外视角(正前/正上/正下方向)共 8 个视角上渲染 2K 图像,与真值比对算 L1 + 感知损失。整个过程每个时间步独立执行一次,因此是流式的:上一帧的结果不参与下一帧的计算,只在训练时通过相机轨迹的帧间连续性约束来保持稳定。

损失函数 / 训练策略

训练目标由渲染损失、掩码损失与深度蒸馏损失组成。渲染损失在 \(4+V_a\) 个视角上监督合成图像,是 L1 与感知损失的加权和:

\[\mathcal{L}_{\text{render}}=\sum_{i=1}^{4+V_a}\|\hat{I}_i-I_i\|_1+\lambda_P\sum_{i=1}^{4+V_a}\text{Perceptual}(\hat{I}_i,I_i)\]

感知损失取 VGG 特征空间的距离(做法沿用 Animatable Gaussians),并用 computation graph surgery 降低感知损失的显存占用。掩码损失是 4 个输入视角上预测掩码与真值掩码的 L1。深度蒸馏损失则让处于训练状态的深度头与一个用 VGGT 权重初始化并冻结的参考深度头保持 MSE 一致,目的是防止深度头过拟合到输入视角上。总损失为三者加权和 \(\mathcal{L}_{\text{total}}=\lambda_{\text{render}}\mathcal{L}_{\text{render}}+\lambda_{\text{mask}}\mathcal{L}_{\text{mask}}+\lambda_{\text{depth}}\mathcal{L}_{\text{depth}}\)

初始化方面,AA Transformer、相机头与两个深度头都用 VGGT 预训练权重,而高斯预测头、侧调补充网络与掩码头做零初始化;渲染器基于 gsplat。HR 分辨率定义为 2072×2072,LR 为 518×518,额外监督视角数 \(V_a=4\)。损失权重为 \(\lambda_P=0.1\)\(\lambda_{\text{render}}=1.0\)\(\lambda_{\text{mask}}=5\times10^{-2}\)\(\lambda_{\text{depth}}\) 在原文中上标丢失,⚠️ 以原文为准。训练在 8 张 A800 上完成,使用自动混合精度。

实验关键数据

主实验

训练主要在 DNA-Rendering 上完成(153 位演员、439 段动作,每段含 48 路 2448×2048 同步视频及相机参数),并引入 ZJU-MoCap 与 MVHumanNet 提升泛化;验证取 DNA-Rendering 中 20 段不同身份的动作作为测试集。指标为 2072×2072 分辨率下的 PSNR / SSIM / LPIPS,对原本工作在更低分辨率的方法(GPS-Gaussian、AnySplat)先把输出双线性上采样到 2K 再算分,所有方法都在 4 视角、约 90° 间隔的输入下评测。"Aligned" 一列表示是否额外优化了 200 步相机参数以对齐真值——本文不需要任何优化。

方法 相机位姿 视角数 相机对齐 PSNR↑ SSIM↑ LPIPS↓
GPS-Gaussian 8 26.1039 0.9172 0.1384
4DGT × 1 × 17.1689 0.8395 0.2719
NoPoSplat × 2 × 22.6296 0.8876 0.1736
NoPoSplat × 2 23.4321 0.8939 0.1588
AnySplat × 4 × 23.7844 0.9040 0.1737
AnySplat × 4 25.5875 0.9140 0.1598
Ours × 4 × 26.5138 0.9164 0.1277

消融实验

表 2 是训练显存(输入分辨率 / 监督分辨率 / 是否启用侧调 / 显存),表 3 是单张 RTX 4090 上的推理显存与帧率。

输入分辨率 监督分辨率 侧调 训练显存 (MiB)
518 518 40503
518 2072 44125
2072 2072 59095
2072 2072 × OOM(>80GB)
输入分辨率 渲染分辨率 推理显存 (MiB) 帧率 (RTX 4090)
518 2072 10852 4.40 FPS
1036 2072 10886 4.02 FPS
2072 2072 14052 3.01 FPS

此外论文还做了高斯级前景掩码的消融(Fig. 7,只有定性结果、没有给出指标数字):去掉掩码后背景区域会被重建出来,启用掩码后前景干净,残留的少量多余高斯也会在训练中消失。

关键发现

  • 无标定四视角下全面领先:本文在全部指标上超过所有无标定输入的方法,而且是在不做任何相机优化的条件下取得的。相对最直接可比的 AnySplat(未做相机对齐那一行),PSNR 提升 2.7294(23.7844 → 26.5138)、SSIM 提升 0.0124(0.9040 → 0.9164)、LPIPS 降低 0.0460(0.1737 → 0.1277);即使 AnySplat 额外优化 200 步相机,本文仍有明显优势。
  • 与 GPS-Gaussian 的对比要谨慎解读:它拿到的是 8 个已标定视角、真值相机和预先分割好的前景图像,SSIM 0.9172 与本文的 0.9164 基本持平,但它无法从这么少的视角重建。论文进一步指出它的指标优势部分来自"输入已被分割":评测时所有方法的结果都会乘上统一掩码,于是本文依靠完整输入多重建出来的乐器区域(真值掩码里没有)拿不到任何指标收益,而 GPS-Gaussian 生成的伪影(多出来的脚)反而被掩码压掉——这是一个对本文不利的评测偏差。
  • 开销的瓶颈在渲染分辨率而非主干输入分辨率:训练端,在高分辨率监督不变的前提下把主干输入从 0.5K 提到 2K 只多 33.9% 显存(44125 → 59095 MiB),而去掉侧调直接提输入则爆显存。推理端,2K 渲染下把输入从 0.5K 提到 1K 只慢 8.6%(4.40 → 4.02 FPS),说明主干输入分辨率几乎不影响速度;真正拖慢的是高斯渲染器的输出分辨率(4.40 → 3.01 FPS)。⚠️ 注意论文正文称 3.01 FPS 相比 4.40 FPS "只低 24%",但按帧率折算实际低了 31.6%,两处数字对不上,此处以表格为准。
  • 定性上,本文在全局形状、衣物细节与人脸保真度上都优于对比方法;AnySplat 与 NoPoSplat 在 90° 大基线下相机估计不准,导致跨视角重建错位;4DGT 在只有单帧视频时无法给出合理结果。时序一致性上,复杂图案衣物在连续时间步上保持稳定。

亮点与洞察

  • "高分辨率不需要更高精度"这个解耦:作者把 HR 问题从 backbone 分辨率上摘下来,只在旁路补外观特征,让 2K 输入几乎不增加显存。这是全文最省算力、也最可复用的一步——任何"主干算不动高分辨率、但输出需要高分辨率细节"的前馈重建任务都能照抄这个思路。
  • 冻结相机头 + 保留梯度通路:冻结权重不等于切断梯度。渲染损失经"预测相机参数 → 反投影 → 高斯中心"回传到 AA Transformer 特征,等于把"额外视角监督"引进来的同时压住了相机头的抖动,还顺带让跨帧预测稳定。这个"冻结参数、间接优化"的手法可以迁移到其他"预测量无度量尺度又需要额外监督"的无标定前馈任务。
  • 尺度对齐只动平移:不去改旋转和内参,只用一个全局尺度因子把真值相机拉到预测坐标系,工程上极简却解决了"预测无度量尺度"这个拦路虎。
  • 掩码做成高斯级而不是图像级:把前景问题从输入端挪到输出端,既保住相机头需要的图像上下文,又通过掩码损失让解码器学会"只在前景生成高斯"——分类头的监督顺带约束了几何解码器,这一点比单纯做分割更有意思。

局限与展望

  • 作者承认的局限:被多个视角遮挡的区域会出现孤立点(如只有正视角能拍到的那块区域,因侧面信息不足而产生离散点),未来计划引入手部与人脸先验来提升这些区域的几何与拓扑精度。
  • 我自己的观察:四视角 90° 是一个相当规整且狭窄的配置,模型对这种等角布局的依赖程度没有被验证,非均匀或更少的视角布局下是否成立还是未知数;定量评测只在 DNA-Rendering 的 20 段动作上完成,规模偏小,另外两个数据集只用于训练端的泛化,"跨数据集泛化"缺少定量证据;所谓"无标定"指网络不接收相机参数,但训练与评测仍依赖 DNA-Rendering 自带的标定质量与真值内参/旋转,这套标定若不准则整个监督信号会随之偏移。掩码消融只有定性图,缺少去掉掩码后的指标数字,而掩码恰恰是影响相机估计的关键设计,量化它的贡献才能证明"高斯级"优于"图像级"。此外深度蒸馏把 VGGT 深度头当作教师,若 VGGT 在某些域上失效,蒸馏损失可能把错误传给学生。
  • 改进方向:引入手/脸参数化先验补几何;训练时随机抖动视角布局以增强对非均匀视角的鲁棒性;把旁路侧调推广到 4K 或任意分辨率;补上跨数据集的定量评测与掩码消融的数值。

相关工作与启发

  • vs AnySplat:同样是"无标定图像 → 3D 高斯"的前馈路线,但它是单帧推理、输出锁在 518×518,也没有处理动态人体。HiReFF 在它之上补了掩码头、尺度同步标定与高分辨率侧调三件事,把任务推进到动态、2K、360°。
  • vs VGGT / MapAnything / π³:这些无标定几何基础模型能给出相机参数、深度与点云,却不产出逼真图像。本文把它们当作 backbone 并保持在 518×518 使用,用额外的头与旁路补上"照片级渲染"与"高分辨率"这两块短板。
  • vs GPS-Gaussian:同为可泛化的人体高斯,但需要标定相机与更多(8 路)视角、分辨率更低。本文在无标定、4 视角、2K 的条件下取得可比甚至更好的指标,代价是引入了对 VGGT 特征的依赖。
  • vs Forge4D:Forge4D 首次从无标定视频做人体新视角合成,但只做正面视角;HiReFF 的目标是 360° 全覆盖,并且额外解决高分辨率与流式效率。
  • vs 逐场景优化方法(3DGS-Avatar / HumanNeRF 等):它们需要标定多相机并做长时间逐场景优化,本文完全前馈,3.01 FPS 即可流式重建。

评分

  • 新颖性: ⭐⭐⭐⭐ 把"无标定 + 稀疏 + 高分辨 + 流式"四个约束放到同一个前馈框架里,尺度同步标定与 HR 侧调都是有针对性、非套路的解法。
  • 实验充分度: ⭐⭐⭐ 主表对比扎实、开销分析清楚,但只在 20 段动作上做定量评测,跨数据集与掩码消融都缺数字。
  • 写作质量: ⭐⭐⭐ 方法动机讲得清楚(尤其"输入区域越大相机越准"这类经验观察),但 2K 速度的百分比与表格对不上、部分公式排版损坏。
  • 价值: ⭐⭐⭐⭐ 对全息通信/直播这类真实场景,"无标定机位 + 4 视角 + 2K + 单卡实时"是很实际的组合,侧调与冻结相机头两个技巧的迁移价值高。