hustvl / 4DGaussians

[CVPR 2024] 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering
https://guanjunwu.github.io/4dgs/
Other
2.11k stars 171 forks source link

YDJ民科一句话读论文: GaussianSplatting & DreamGaussian[Splatting] & Dynamic/4D GaussianSplatting #14

Open yuedajiong opened 11 months ago

yuedajiong commented 11 months ago

本人真的是民科,正规的教育就中国西部一偏远农村上世纪初中毕业,所以瞎逼逼的,完全没有否定本文这种sota/newest paper先进性,反而是就当前很牛的算法在学习分析该方向的离想要的效果还有多远。(hust + hw的大神呢,就直接中文了哈。)

借宝地一用,请教大神们一个问题: 我理解,现在stereo generation/reconstuction中的3+1D中的time/dynamic,其实是一种近似于伪/弱动态。

GaussianSplat出来后,DreamGauss引入zero123的priori实现single-image; 本文4dGauss和Dynamic3DGauss,引入k-planes之类的做法实现所谓的动态。

我理解,现在的动态,都是多图输入的时候,对于统一对象多个姿态的这种动态,本质是简单的静态多图的一种扩展,是输入侧对已知同一对象的的多姿态的容忍/支持。

真正想要的动态,我个人理解: 应该是输入输出的“真”动态。
1)输入动态: 同一对象,不同的形态(不仅是姿态),能够适应和抓取“运动”:对于有超强约束特别精细机械运动约束比如钟表,对于有强约束的比如人体的运动,对于没有很强可表示约束的比如流动的水,都能够支持。 (现在demo数据集和论文,感觉更多是类似的人体这种中间约束强度的。) 2)输出动态:所谓输出动态,一是仅仅只是抓取到输入中所体现的运动,类似电影这种输出,现在还没有看到,隐式表示输出: static mesh+ motion-driving-tensor等参数; 二是真的在充分的输入中,或者通过将来某些dynamic版本objvarse/zero123带来运动先验,能够抓取运动规律/约束,类似达到smpl(x)这种,既能得到静态的mesh(或者等价的隐式表示),又能得到合理的运动的约束,甚至语义上分离的约束表示(比如身体的部位/component,比如运动方式控制/stand-up,lift-leg(s),...) 比如smplx,有static template,然后可以对不同的部位,用不同的向量来驱动不同的运动类型和细节。

贴一个,我用纯AI,单图/人脸为主的全身,文本控制的动作,但multi-step pipeline, 很重,重构真人,中等复杂度,的例子(头发和衣服还在优化中)。(现在这种,在单图/priori,在动态上,还很远。)

https://github.com/hustvl/4DGaussians/assets/52232153/cbe4b864-5a93-4d0a-a937-e4268d82e584

guanjunwu commented 11 months ago

感谢你的观点与讨论! 斗胆发表一下个人看法:因为3dgs本质上是用splatting将3d空间上的点投射到2d平面上,实现了3d->2d的降维。我们认为4dgs则可以理解为4d->3d的降维(deformation fields)再通过splatting实现3d->2d的新视角合成,另外对4d数据的处理也有很多,比如dnerf的deformation场,或者hexplane&kplane直接将4d数据作为特征进行编码,感觉还是很值得讨论的。

yuedajiong commented 11 months ago

@guanjunwu 大神哥哥,我去GuassSplat基础论文的代码那里,还有DreamGauss的github那里,去瞎逼逼了几句。 也中文,老外也看不懂。哈哈。

请求指正,理解是否正确。

https://github.com/graphdeco-inria/gaussian-splatting/issues/335

https://github.com/dreamgaussian/dreamgaussian/issues/43

guanjunwu commented 11 months ago

你可以把你的话翻译成英文试试跟他们交流:)

yuedajiong commented 11 months ago

帅哥,算了。 我抱怨这些大牛代码写的冗长就算了; 我质疑高斯溅射这条路,把点云做输入,其中蕴含了很强的立体信息,功劳是SfM的,质疑best paer了。 无论我对不对,这不得让人家拿刀来砍我。

点云的点:1)做SfM匹配的时候有些非立体的关键点可能搞上来 /香烟盒上的山的复杂图案 2)有些该是立体关键点的会丢/香烟河上封盖子和盒子的不太明显的立体信息。 这些都是通过它后续的拟合在找补。 一句话,那个点云点未必是最好的,它恰好利用了点云的大立体信息而已,利用有优势的输入,然后走个新路而已。核心和有点意思的也就是那个高斯部分而已,后面自己那个渲染也没啥。

同理,原来搞NeRF路线的,把点云作为辅助输入,也偷ColMap中SfM的立体信息,道理上讲,也不得提升质量(大shape)和速度(采样控制:pc点 + nerf部分重要性采样等策略)。


冒死写了几句: https://github.com/graphdeco-inria/gaussian-splatting/issues/336 哈哈哈哈

PS: 作者真的是若干秒内就做了回复,而且应该很不爽我的原始标题,“yes, best paper, but ...”,哈哈哈。 我也秒改了一个比较礼貌的标题。 不过我的挑战的核心点应该是理解对了的。 我主要挑战了它论文效果的根基:有效性从哪里来的。 (大家都不是点云,你用了点云带有强立体。) 它的答复是:1)PC数据是有的,这点其实不能说服人。 如果我用一个更好的传统算法,或者更牛逼的模型算个轮廓作为输入,那意义在哪里。 2)他论文做了消融,用随机代替初始。 这个效果肯定就差一些。没有SfM,具体如何差?按照他论文的:

paper: “从 SfM 初始化。我们还评估了从 SfM 点云初始化 3D 高斯的重要性。对于这种消融,我们对一个大小等于输入相机边界框范围三倍的立方体进行均匀采样。 我们观察到我们的方法表现相对较好,即使没有 SfM 点也避免了完全失败。相反,它主要在背景中退化,见图 7。此外,在训练视图没有很好覆盖的区域中,随机初始化方法似乎有更多无法通过优化去除的漂浮物。”

从那个图7,肉眼可见的后面一团糊了。 他论文的措辞是: 没有SfM避免了完全失败。通过数据看,也是说SfM得到的点云作为一个好的初始化很重要。