Closed yuedajiong closed 9 months ago
水平有限,理解的不对,欢迎指正!
水平有限,斗胆乱点评一通:
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)
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。当视角甚至灯光变化的时候,比如“怼“到一个人物眼睛上去看的时候,整个眼睛就一个高斯椭球都有可能。
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.)
再读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等几个模型的能力。
再读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) : https://github.com/VITA-Group/4DGen/issues/2
当输入一个图片,“生成”为含时立体的4D,其中立体结构和含时动态,现在大家基本都在2D空间完成的,所以得需要: 1 既要视角多(无论相机各种转和移,还是对象各种转和移) : zero123 2 还要自身动作变化包含的帧多 : *** motion
又有一篇新论文开源:他这里的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
https://github.com/fudan-zvg/4d-gaussian-splatting/issues/10
2310.08528 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering
2312.16812 Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis
2312.17142 DreamGaussian4D Generative 4D Gaussian Splatting
2312.17225 4DGen Grounded 4D Content Generation with Spatial-temporal Consistency
2310.10642 Real-time Photorealistic Dynamic Scene Representation and Rendering with 4D Gaussian Splatting