TripoSR icon indicating copy to clipboard operation
TripoSR copied to clipboard

Add fast high resolution marching cubes up to 1024^3.

Open thatname opened this issue 11 months ago • 18 comments

Changes:

  • Do triplane sampling in a block based manner, reduced VRAM usage. This version can generate 1024^3 on 3090 in 33 seconds, use only 13GB VRAM. Actually this version is block based, only a 128^3 block is processed at each step. So 2048^3 is doable but unnecessary.

这个分支修改了算法,每次处理 128^3 的小块,还优化了显存占用。1024 的 mesh 在 3090 上半分钟跑完,256^3低分辩率也比之前快。

thatname avatar Mar 20 '24 18:03 thatname

2048^3 takes 15GB VRAM, 3.5 minutes. just change 1024 to 2048. But the mesh is to big for web GUI to display, you can still download the OBJ. 2048^3 用 15GB VRAM, 用时3.5 minutes, 直接把 1024 改成 2048就可以了,不过webGUI显示不了这个模型了,你可以直接点击那个下载OBJ

thatname avatar Mar 20 '24 18:03 thatname

只是Resolution数字更大了,还是mesh效果也明显更好了?

yuedajiong avatar Mar 22 '24 06:03 yuedajiong

Changes:

  • Do triplane sampling in a block based manner, reduced VRAM usage. This version can generate 1024^3 on 3090 in 33 seconds, use only 13GB VRAM. Actually this version is block based, only a 128^3 block is processed at each step. So 2048^3 is doable but unnecessary.

这个分支修改了算法,每次处理 128^3 的小块,还优化了显存占用。1024 的 mesh 在 3090 上半分钟跑完,256^3低分辩率也比之前快。

大佬,可以放一下这样修改分辨率的结果嘛,修改之后有明显提升嘛mesh效果

CBQ-1223 avatar Mar 22 '24 07:03 CBQ-1223

只是Resolution数字更大了,还是mesh效果也明显更好了?

分辨率大了肯定效果更好,面很锐。但是,这个本质还是插值,原本的 Triplanar分辨率较低的 @yuedajiong

thatname avatar Mar 22 '24 07:03 thatname

image 左边是 2048 右边是256 @yuedajiong @CBQ-1223 这个锐度可以了吧

thatname avatar Mar 22 '24 07:03 thatname

@thatname 谢谢大神

按照我有限理解,所以要提高质量:

  1. 直接利用输入,更充分的利用,输入那张图片 (第一优先,如果是面向copy-like还原立体的需求的话) 个人感觉,往大里弄模型和数据,后面优化提升还有很大空间。 现在大家都没有足够大。
  2. 对输入做扩展,本质利用先验,现在各种做法,按照有效性排序: 2.1 直接产生其他对应相机角度的。 (这个好处是相机位置是按照固定的产生,后面渲染的时候相机已知) 2.2 产生360环绕的视频。 (这个相机路径有强约束,但并不是每帧很精确) 2.3 产生强相关视频。 (这个主要利用视频生成中强大的先验,但相机位姿没啥控制) --- 这一堆做法,挑战两个: 1)相机位姿要不要,如何得到。 2)就是一致性够不够
  3. 搞后处理HR 3.1 用模型来,一般都会提高一点 3.2 用硬算法来优化mesh,但效果不好说
  4. ...

yuedajiong avatar Mar 22 '24 08:03 yuedajiong

@thatname 谢谢大神

按照我有限理解,所以要提高质量:

  1. 直接利用输入,更充分的利用,输入那张图片 (第一优先,如果是面向copy-like还原立体的需求的话) 个人感觉,往大里弄模型和数据,后面优化提升还有很大空间。 现在大家都没有足够大。
  2. 对输入做扩展,本质利用先验,现在各种做法,按照有效性排序: 2.1 直接产生其他对应相机角度的。 (这个好处是相机位置是按照固定的产生,后面渲染的时候相机已知) 2.2 产生360环绕的视频。 (这个相机路径有强约束,但并不是每帧很精确) 2.3 产生强相关视频。 (这个主要利用视频生成中强大的先验,但相机位姿没啥控制) --- 这一堆做法,挑战两个: 1)相机位姿要不要,如何得到。 2)就是一致性够不够
  3. 搞后处理HR 3.1 用模型来,一般都会提高一点 3.2 用硬算法来优化mesh,但效果不好说
  4. ...

哈哈,我不算大神啦。 基本认同,补充几点 质量 3D数据还是太少了,视频图片则是海量的。目前的1 比如TripoSR这种先验知识还是太有限了,分辨率也低,规模不够,冷门一些的物体它根本找不着北,不知道是不是只用了objaverse。而2的好处是基于2D模型训出来的,典型的2 比如刚出的SV3D,先验明显多得多。目前阶段2那几个方案都能到更高质量,感觉过一阵子sora这类出了以后,基于它们的新SV3D那就会达到生产质量了。

速度 但是从2D图像成3D资产要高清,目前靠谱的还是需要逐个走 SDS 训练,超级慢。所以理想的方式还是1,个人感觉工业界的落地应该先有2,然后通过2全网积累了海量的3D数据,数据足够以后直接训大模型,到达1的立即生成的效果。

thatname avatar Mar 22 '24 15:03 thatname

感觉我说的还是不对,不一定说从2D模型来生成3D就一定要逐个走优化,应该是能直接建立2D->3D映射的,这个过程是确定的,训练出来就行。

thatname avatar Mar 25 '24 06:03 thatname

image 左边是 2048 右边是256 @yuedajiong @CBQ-1223 这个锐度可以了吧

厉害的 谢谢大神

CBQ-1223 avatar Mar 25 '24 15:03 CBQ-1223

@thatname 谢谢大神 按照我有限理解,所以要提高质量:

  1. 直接利用输入,更充分的利用,输入那张图片 (第一优先,如果是面向copy-like还原立体的需求的话) 个人感觉,往大里弄模型和数据,后面优化提升还有很大空间。 现在大家都没有足够大。
  2. 对输入做扩展,本质利用先验,现在各种做法,按照有效性排序: 2.1 直接产生其他对应相机角度的。 (这个好处是相机位置是按照固定的产生,后面渲染的时候相机已知) 2.2 产生360环绕的视频。 (这个相机路径有强约束,但并不是每帧很精确) 2.3 产生强相关视频。 (这个主要利用视频生成中强大的先验,但相机位姿没啥控制) --- 这一堆做法,挑战两个: 1)相机位姿要不要,如何得到。 2)就是一致性够不够
  3. 搞后处理HR 3.1 用模型来,一般都会提高一点 3.2 用硬算法来优化mesh,但效果不好说
  4. ...

哈哈,我不算大神啦。 基本认同,补充几点 质量 3D数据还是太少了,视频图片则是海量的。目前的1 比如TripoSR这种先验知识还是太有限了,分辨率也低,规模不够,冷门一些的物体它根本找不着北,不知道是不是只用了objaverse。而2的好处是基于2D模型训出来的,典型的2 比如刚出的SV3D,先验明显多得多。目前阶段2那几个方案都能到更高质量,感觉过一阵子sora这类出了以后,基于它们的新SV3D那就会达到生产质量了。

速度 但是从2D图像成3D资产要高清,目前靠谱的还是需要逐个走 SDS 训练,超级慢。所以理想的方式还是1,个人感觉工业界的落地应该先有2,然后通过2全网积累了海量的3D数据,数据足够以后直接训大模型,到达1的立即生成的效果。

大神,意思是目前生成质量效果最好的还是SDS训练的方法嘛,SV3D这种其次,然后才是triposr这种直接出3D模型的方法嘛,可我测下来为啥觉得triposr的生成质量效果是最好呢,如果有比它好的,大神可以说一下对应的开源项目的名字嘛?万分感谢!!!

CBQ-1223 avatar Mar 26 '24 06:03 CBQ-1223

Changes:

  • Do triplane sampling in a block based manner, reduced VRAM usage. This version can generate 1024^3 on 3090 in 33 seconds, use only 13GB VRAM. Actually this version is block based, only a 128^3 block is processed at each step. So 2048^3 is doable but unnecessary.

这个分支修改了算法,每次处理 128^3 的小块,还优化了显存占用。1024 的 mesh 在 3090 上半分钟跑完,256^3低分辩率也比之前快。

大佬,这个生成的.obj的mesh确实分辨率可以很大,但是生成的mesh好像有的是non-manifold mesh,在用该mesh作别的任务时就会报该错误,大佬有啥解决方法嘛

CBQ-1223 avatar Apr 10 '24 02:04 CBQ-1223

Changes:

  • Do triplane sampling in a block based manner, reduced VRAM usage. This version can generate 1024^3 on 3090 in 33 seconds, use only 13GB VRAM. Actually this version is block based, only a 128^3 block is processed at each step. So 2048^3 is doable but unnecessary.

这个分支修改了算法,每次处理 128^3 的小块,还优化了显存占用。1024 的 mesh 在 3090 上半分钟跑完,256^3低分辩率也比之前快。

大佬,这个生成的.obj的mesh确实分辨率可以很大,但是生成的mesh好像有的是non-manifold mesh,在用该mesh作别的任务时就会报该错误,大佬有啥解决方法嘛

我估计主要是因为这个分块生成,导致mesh是非连续的。直接合并坐标相同的顶点处理一下就好了。

thatname avatar Apr 13 '24 18:04 thatname

@thatname 谢谢大神 按照我有限理解,所以要提高质量:

  1. 直接利用输入,更充分的利用,输入那张图片 (第一优先,如果是面向copy-like还原立体的需求的话) 个人感觉,往大里弄模型和数据,后面优化提升还有很大空间。 现在大家都没有足够大。
  2. 对输入做扩展,本质利用先验,现在各种做法,按照有效性排序: 2.1 直接产生其他对应相机角度的。 (这个好处是相机位置是按照固定的产生,后面渲染的时候相机已知) 2.2 产生360环绕的视频。 (这个相机路径有强约束,但并不是每帧很精确) 2.3 产生强相关视频。 (这个主要利用视频生成中强大的先验,但相机位姿没啥控制) --- 这一堆做法,挑战两个: 1)相机位姿要不要,如何得到。 2)就是一致性够不够
  3. 搞后处理HR 3.1 用模型来,一般都会提高一点 3.2 用硬算法来优化mesh,但效果不好说
  4. ...

哈哈,我不算大神啦。 基本认同,补充几点 质量 3D数据还是太少了,视频图片则是海量的。目前的1 比如TripoSR这种先验知识还是太有限了,分辨率也低,规模不够,冷门一些的物体它根本找不着北,不知道是不是只用了objaverse。而2的好处是基于2D模型训出来的,典型的2 比如刚出的SV3D,先验明显多得多。目前阶段2那几个方案都能到更高质量,感觉过一阵子sora这类出了以后,基于它们的新SV3D那就会达到生产质量了。 速度 但是从2D图像成3D资产要高清,目前靠谱的还是需要逐个走 SDS 训练,超级慢。所以理想的方式还是1,个人感觉工业界的落地应该先有2,然后通过2全网积累了海量的3D数据,数据足够以后直接训大模型,到达1的立即生成的效果。

大神,意思是目前生成质量效果最好的还是SDS训练的方法嘛,SV3D这种其次,然后才是triposr这种直接出3D模型的方法嘛,可我测下来为啥觉得triposr的生成质量效果是最好呢,如果有比它好的,大神可以说一下对应的开源项目的名字嘛?万分感谢!!!

可能TripoSR 训练还是不足,见过的物体还是太少,很多没见过的就脑补。不如图片生成 和视频生成模型见多识广。当然了,很多它见过的物体生成很不错。但这个问题是无解的,网上视频和图片是海量的,3D dataset 太有限

thatname avatar Apr 15 '24 07:04 thatname