CGPC2024 第三日

机器学习 + 图形绘制

霍宇驰,ZJU

  • 传统图形学:Modeling -> Rendering

  • 知识驱动 vs. 数据驱动

  • AI -> PPL

Neural Rendering

  • CV
    • Machine Learning + Physics knowledge
    • 照片分析
    • 自由视角视频(体积视频)
  • Graphics
    • 采用机器学习取代部分图形流水线步骤

Scene

  • Mesh -> Voxel + Neural(可微性更好)
  • 基于向量的场景表达
  • Mesh-based: Neural Material
  • 基于点云的表达
  • 基于网络的表达(NeRF)

Render

  • AO
    • DeepAO: 软阴影是个低频信号,运用神经网络预测AO信息
  • 直接光照
    • IBL
    • Texture -> 神经网络方法预测直接光
  • 间接光
    • Caustic难以预测(集中)
    • 多次弹射后的间接光较好预测
  • 体积、次表面散射
  • Human-related Rendering

Global Neural Render Pipeline

  • 缺少场景中多物体交互
  • Object-Oriented Pipeline
    • NeLT: Neural Light Transfer
    • 物体可交互性
    • Caustics, transmission…
  • 动态几何
    • LightFormer: Light Encoding -> Light Gathering

Post-processing

  • 对PT结果降噪
    • 图像域降噪
    • 路径域降噪
  • 改进PT采样策略
    • 神经采样函数(Neural Importance Sampling, TOG 2019)
    • 强化学习引导
  • 多估计器混合
  • 时空样本重用
    • 蓄水池(?
  • 帧预测 - DLSS3.5
  • 神经超分
    • NVIDIA DLSS
    • AMD FidelityFX

神经渲染:NeRF与3DGS 从隐式到显式

于涛,THU

讲的很好,深入浅出,理解率挺高的

NeRF - Neural Radiance Field

  • 最初用于宏观-场景光场重建
  • 远观:黑洞光场重建
  • 微观:显微光场重建

前置概念

  • 全光函数
    • 定义:对某一点看到的物体集合
    • ref: The Plenoptic Function and the Elements of Early Vision
  • 光场
    • 定义:空间中光线集合的完备表示
  • 成像
    • 反向追踪每个像素光线与场景交互(PT)
    • 定义:从某一个角度对光场采样得到图像的过程
    • 对全光函数的路径积分
  • 光场重建
    • 采样是离散的,但光场是连续的
    • 从有限、离散的多个视角重建出整体光场
  • 新视点合成
    • 输入:多视角图像
    • 过程:光场重建
    • 结果:新视角渲染结果

定义

  • 利用神经网络表示的空间辐射场
  • 辐射场
    • 设存在函数 ​ 描述空间光场
    • 为密度值(alpha通道?)
  • 神经网络
    • 多层感知器(MLP)
      • 任意分布数据的拟合
      • 每个节点是一个非线性映射函数(神经元)
      • 通过每个神经元参数的学习,可以实现任意非线性函数的拟合
      • 即MLP拟合全光函数
      • 优化:反向传播、
    • 隐式表征
      • 离散表征:像素插值
      • 神经表征:MLP是连续函数,支持任意分辨率表征和重建
      • 三维表征:Mesh -> 连续化、occupancy networks、DeepSDF、可微Volumetric Rendering
      • 节省存储空间:存储Neural Network函数
    • 渲染质量高、不依赖几何形状、可建模材质效果

实现

  • 问题:得到NeRF,如何进行新视点合成?

    • 渲染:不能对路径采样点直接积分(没有考虑遮挡关系)
    • 方案:体渲染(Volume Rendering)
  • 体渲染

    • 透过率在单根光线 相乘得到,一旦遮挡 (​),则总透过率结果为0

    • 【NeRF二次采样没理解】

    • https://blog.csdn.net/qq_45752541/article/details/130072505

  • 重建 = 优化

    • 体渲染后得到 Rendering Loss
    • 优化参数:神经网络权重
    • 优化目标:与实拍像素一致
    • 迭代训练神经网络,直到在所有输入视角可以与实拍一样
  • 不同观测角对Shading影响

    • 表面材质和环境光决定不同视角观测颜色不一致
    • 引入观测方向影响

其他工作

  • NeRF in the Wild: 网络照片多场景合成
  • Block NeRF: 街景合成
  • InstantNGP: 渲染速度提升
  • Neuralangelo【没懂】

三维高斯溅射 3D-GS

  • 更好的训练效率、更好的重建质量、更快速的渲染

3D-GS vs. NeRF

  • 显式辐射场
    • 使用体素、网络或点云离散集合表示空间辐射场
    • 渲染速度快,但优化困难(Mesh)、渲染稀疏(点云)、分辨率低(体素)
  • 隐式辐射场
    • 使用神经网络拟合空间辐射场连续函数
    • 支持任意分辨率渲染,但渲染速度慢,计算负载高,容易产生floaters
  • 3D-GS 辐射场
    • 综合结合光栅化和体渲染的优势

Pipeline

  1. 使用一组各向异性的3D高斯点实现非结构化辐射场表达
  2. GPU并行可微渲染,实现splatting和显式梯度计算
  3. 通过自适应密度控制添加或滤除3D高斯点,实现完整重建

定义 & 实现

  • 3D-GS 点:四个属性

  • 多元正态(高斯)分布函数

    • 描述3D椭球的位置、缩放程度
    • 协方差矩阵
      • 多元正态分布的协方差矩阵是半正定矩阵
    • 不透明度α
    • 球谐函数(Spherical Harmonics, SH)
      • 描述GS的各向异性颜色
      • 定义在球坐标系中的一组基函数,描述球面上任意方向的光强
      • SH阶数越高,系数越多,表达能力越强
      • 问题:常常选用4阶SH,但4阶拟合并不是很好
        • 空间中不同角度的观察变化一般不强烈,即使不太拟合可以大概描述
      • 问题:阶数越高优化难度越高
        • 源码先优化了0阶,然后再进行后续优化
  • 初始化
    • SfM稀疏点云初始化 3D-Gaussian
    • 输入:一组静态图像
    • SfM估计相机位姿,重建系数点云
    • SDGS Init:位置(u),协方差,不透明度(α)、颜色(SH)
  • 渲染:3D Gaussian Splatting
    • 将三维高斯(椭球)投影到二维图像平面(椭圆)进行渲染
    • 分块光栅化(Tiled-based Rasterizer)
      • 分块
      • Overlapping 检测
      • 存储每个 GS 对应的所有 Tile
      • 3D高斯点的 Key 由 Tile ID 和高斯点深度值构成,Value 为高斯球
      • Radix-Sort 按深度排序,得到了 Tile 对于哪几个高斯点及其深度上的排序
      • 每个像素顺序遍历相关高斯球,进行颜色混合(考虑不透明度)
    • 效率高:做到了像素级并行计算
      • CUDA: SIMT模型
      • 每个 Tile 对应一个 Thread Block,访问 Shared Memory
      • 每个 Thread Block 首先根据 Tile 信息把高斯数据存储到 Shared Memory
      • 只读取一轮 Global Memory,之后计算颜色时只用访问 Shared Memory
  • 参数优化
    • 每次生成像素后可以直接构建Loss
    • 图像差异化计算
  • 密度控制
    • 根据高斯点的梯度判断是否过于稀疏/密集

前沿方向

  • NeRF 的成果挪到 3D-GS 上
  • 4D-GS
  • LLM + Diffusion Model + 3D-GS
  • 3D-GS for MR

实际业务

  • 移动端实时交互
  • 透明物体、复杂结构
  • 占用空间
  • PSNR > 40dB
  • 代码长度(App编译大小)

总结

大学时光确实是美好的。暑假又能抛开校内那些繁杂的行政杂物、落后现实的培养方案,也有时间去学些自己想学的东西,做些想做的事了。也正是沉重的现实引力让兴趣更显光芒。

我自己的微信签名是法国作家Alain Fournier的一段话的节选:

“即便到了今天,我们仍无法自动建模一只在水里游泳的、细节栩栩如生的老虎(…)

The bad news is that we have still a long way to go. The good news is that we have still a long way to go.”

这段话被引用于图形学的基础教材虎书中,用以解释封面的来历;如今,随着NeRF等技术的一系列发展,我们正逐渐接近这个不依赖艺术家和程序员而自动建模的目标。

往小里说,I have a dream,正如毛星云前辈所期盼的那样,期待中国游戏产业能够先进化,由《黑神话》开辟一条3A游戏工业化的道路,作为玩家,自然期待会享受到更多的国产作品。

往大里说,渲染和重建领域的很多学术问题尚未解决,学术界除了热门的AI+CG方向,传统图形学仍在不断前进,正需要科研人不断前行;除了学术之外,工业界仍在探索效率问题,尽管软硬件方面都陷入了一些品鉴,但从30FPS到90FPS,优化的道路漫漫无期。

前路漫漫,亦悲亦喜。