Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

To GS-er, to pay tribute to our great GS author(s): all (open-sourced so far) dynamic/4d GS (generative) in one picture. #586

Closed
yuedajiong opened this issue Jan 1, 2024 · 6 comments

Comments

@yuedajiong
Copy link

yuedajiong commented Jan 1, 2024

2310.08528 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering
image

2312.16812 Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis
image

2312.17142 DreamGaussian4D Generative 4D Gaussian Splatting
image

2312.17225 4DGen Grounded 4D Content Generation with Spatial-temporal Consistency
image

2310.10642 Real-time Photorealistic Dynamic Scene Representation and Rendering with 4D Gaussian Splatting
image

@yuedajiong
Copy link
Author

yuedajiong commented Jan 3, 2024

水平有限,理解的不对,欢迎指正!

image

@yuedajiong
Copy link
Author

yuedajiong commented Jan 3, 2024

水平有限,斗胆乱点评一通:

  1. task-definition & generative: 现在这些GS的4D(dynamic/temporal-spatial/space-time/time-dependent)的算法,都还是中间/临时/过渡算法。
    GS方向4D算法,最终一定是个generative问题而不是reconstruciton问题。按照构造一个高质量的human为例,几千张图片都未必够: 1)components-details: face, eyes, hands, ... 2)dynamic: ..... (likes SMPLX). 做专业的电影可以放松成本,如果做个to-C的应用,用户最多绕一个人拍一段几秒几十秒的普通质量的视频,甚至更方便的只是在人的正面拍若干帧。
    最理想的任务定义:
    1.1 dynamic even interactive-supported:
    GS++-static(accurate surface) + dynamic-delta= f_perfect_interactive(image[s], [text for detial or motion], [ui], timestape)
    1.2 visual-only:
    GS + dynamci-detal = f_perfect_visual-effect-only(image[s], [text for detial or motion], [ui], timestape or timeloop)

  2. dynamic-representation: 从4D且interactive来看,除了dynamic,还有与不同对象互作,比如shape改变
    仅仅dynamic来说,个人感觉smpl-x的这种,就比较好:
    (standard) mesh + delta-matrix(for shape, ...)
    类似的,
    (standard, static) GS (with surface-optimized) + delta-matrix(for shape, ...)
    这样可以delta-matrix表示的很小,甚至进一步矩阵分解来减小,非常快的把运动表示出来,在渲染时计算。 一句话,就不需要保存MLP甚至更大的网络中了。
    (个人没有CG背景,学习的有限,一下想不清楚,当有复杂的灯光和反射的时候,SH上的变化如何表示和计算。仅仅变化SH可能就不够了,因为灯光和视角的变化,导致可能很大的GS点需要细化成小点的)
    上面 4D方向比较好的文章,三篇都不包含color,最复杂的关于颜色/纹理,也只是变换了O和C/feature。当视角甚至灯光变化的时候,比如“怼“到一个人物眼睛上去看的时候,整个眼睛就一个高斯椭球都有可能。

  3. priori & generation
    上面后面两篇,侧重了gen,其先验(多视角和一致性)哪里来? 现在都是在2D的模型上的。所以我们可以看到那两篇文章,为了辗转去利用2D priori,搞得网络非常复杂。(mesh方向也是一样的,99%的研究者都是从objvarse->zero123(-xl)来获取shape的priori,有但很少的算法直接gen到mesh-3d/4d,我感觉不是这条路不行,而是去构造数据集的的工作量超过了很多组可以承受的成本)
    个人大胆估计,可以搞直接3D的。 比如从objvarse上,硬算法或者fit的方式构造出GS(甚至带表面约束的;不考虑SuGaR这种单点沿表面扁平和所有点向表面对齐还不行,这个约束还很重要,决定了这个数据集是一个真3D甚至4D还是一个2.5D的)数据集,然后直接: image -> f_4d_gen(.) -> 4d-GS(with surface const.)

@yuedajiong
Copy link
Author

yuedajiong commented Jan 3, 2024

再读DreamGaussian4D:
2D/image --> 4D/time+space

  1. 含时/运动的先验哪里来: Image2Video Diffusion: stable-video-diffusion-img2vid
    个人理解:世界上各种物体运动非常复杂:瑞士钟表,人脸表情,水波烟花头发,...
    想通过Stable那个Diffusion就搞定模型,简单小动画意思一下可以。
    比如人体的运动,这个方向研究是折腾的最多的小方向,SMPLX等为代表,要想一张几张照片就输入,(通过文字或者火柴人或者示例动作视频)就产生很好的动作,太难了。 这个是个很脏的活儿,要针对不同的大的运动类型,走不同的技术路线;在每类运动(比如刚体/机械运动,流体运动,准刚体运动(内部骨骼+外部的皮肉)),然后还要至少对类别(比如马、人)分别做。 假设我们想建立一个上帝的大脑的级别,“一个系统/ 不是一个模型”,还得通过memory-network,或者differentable-hash类的,存储千千万万的对象的运动;搞成LLM/GPT那种一个超大模型不太好,那视觉上的幻觉,估计产生出来的动画视频,会非常的摇曳多姿,现在SMPLX这种控制的不到位,腿就可能弯曲,手就伸到身体里了。
    人体的很多,补充一个动物的:https://huggingface.co/papers/2401.02400

  2. 立体的先验哪里来:SD(SD+MVDream) + Zero123
    简单的说,就是把GS的rendered images和Zero123各位姿下的输出images建loss
    个人理解:由于行业还没有suface约束很强的zero123之GS出来,所以通过mesh这么绕了一圈得到多视图再通过GS来恢复出2.5D的立体。这个的限制在于Zero123等几个模型的能力。

@yuedajiong
Copy link
Author

yuedajiong commented Jan 3, 2024

再读4DGen:
2D/image(SSSSSS)/video --> 4D/time+space

  1. 含时/运动的先验哪里来:Deformation from Input Video
    简单的说:算法实现Deformation看起来是在gs recon的时候,实际通过那个timestamp对应deform_table,通过loss,最终要的信息在输入视频的不同帧之间。
    也就是说,这里没有额外的“生成”“动作”,在尽力的“重构”输入的视频的动作。

  2. 立体的先验哪里来:Zero123
    如果输入的视频中,含有一定的视角变化,或者对象有旋转,有一定的多视图,那么也蕴含立体信息。但上面第一步中,是否擅长抓住这里的立体信息,应该与算法强相关,比如那里MV Diff的能力。

step by step, custom data(monk) :
VITA-Group/4DGen#2

@yuedajiong
Copy link
Author

yuedajiong commented Jan 3, 2024

当输入一个图片,“生成”为含时立体的4D,其中立体结构和含时动态,现在大家基本都在2D空间完成的,所以得需要:
1 既要视角多(无论相机各种转和移,还是对象各种转和移) : zero123
2 还要自身动作变化包含的帧多 : *** motion

@yuedajiong
Copy link
Author

yuedajiong commented Jan 17, 2024

又有一篇新论文开源:他这里的4D表示,值得学习。
Real-time Photorealistic Dynamic Scene Representation and Rendering with 4D Gaussian Splatting
https://github.com/fudan-zvg/4d-gaussian-splatting
https://arxiv.org/pdf/2310.10642.pdf

fudan-zvg/4d-gaussian-splatting#10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants