VAST-AI-Research / TripoSR

MIT License
4.39k stars 505 forks source link

(Clickbait/标题党):The issue you absolutely need to read/最需要看的issue. #24

Closed yuedajiong closed 6 months ago

yuedajiong commented 7 months ago

先给作者大牛们点赞,非常牛,是真的非常牛。

虽然这已经是开源中最好效果的了,但还是说说我的测试反馈和个人理解:

  1. 先验不够。 相比于多(甚至很多)视图的暴力拟合重构类算法,从终极视觉系统最终需要来看,还是单张条件生成(不排斥支持多张)的做法更是未来。 但是: 1.1 现在无论是TripoSR,还是LRM,这种大概1.5G的主模型(不含ViT图像特征预处理模型),能够“记忆”的先验远远不够。直白的说:1.5G的东西记不下这个世界,网友们上来千奇百怪的输入照片。 1.2 除了模型容量,(我不确定训练部分),如果是在3D objects数据集上训练,就算objavase等里面的对象类别也不够。 1.3 从算法选择上来说,没有那种动辄几十步上百甚至上千步的Diffusion逐步求精,导致直接gen没有fit的技术路线,gen出来的好则好,如果不好也就没有办法了。所以,个人大胆认为:这种算法路线还不是最终路线: a)要么是又更多steps的逐步gen; b)要么至少来个refine的后续环节; c)更必要的,是在最后像素空间,对输入image的直接利用fit。比如至少fix shape & fit texture/color。 1.4 如果从3D loss上训练,迟早数据是个问题,解决办法:1)用传统的非AI手段搞数据,UE/Unity3D搞数据,用GaussianSplatting多视图搞数据,等等等等,但我总觉得成本太高。 2) 回到2D loss上去。在可微渲染之后,从海量图片,视频上去学习。 1.5 在训练的时候,感觉将camera pose作为可选项(有或者没有都可以),DUSt3R之类的一些有效的做法可以利用。

  2. 需要更强大的priori策略。(约束多点好:不要拒绝文字作为约束条件,也不要拒绝多图片输入) 现在单图,shape上面的问题还是很大。 比如输入人的正面而人的侧面背面基本shape都很不对。 关于priori,我个人的所知道的路径: 2.1 就利用现在的网络,加深加宽,训练来记忆。 2.2 类似memory network直接偏记忆的网络去retrival。 2.3 类似LLM中vector db, rag等等各种增加信息的。 2.4 我个人走的是Differentiable Hash的路,去在相对很小的主网络之外,去维护千千万万的对象(可以不需要重训练的增加类别),只要见的多,记忆的多,紧邻搜索的距离学号了,数据就一定会让模型输出质量更好。(本质上说,都靠记忆。)

yuedajiong commented 6 months ago

我用step by step很多独立步骤做过“动态真人”重构的pipeline,比如头发衣服这些就很难搞,特别头发就不太适合mesh来表示,做不到Nvidai中"Admm Interactive Hair"那种效果。(当时这种效果:头发衣服没有优化) https://github.com/VAST-AI-Research/TripoSR/assets/52232153/b53b721c-b4b4-4f3c-aae1-e9289556c16a

高清游戏人TripoSR重构例子: game game.zip image

yuedajiong commented 6 months ago

这是OpenLRM的输出: OpenLRM那种”双面人“现象比较突出(忘了那个术语,Janus?)。 就是背面看不见的时候,严重参考正面。(第二图)

image

image

runshengdu commented 6 months ago

叫做多头问题,不过我觉得更重要的问题是现在的生成结果不符合3D行业标准,这个杂乱的网格看着就头疼。

yuedajiong commented 6 months ago

image

一只眼睛要上万个mesh顶点。