fengq1a0 / FOF

88 stars 8 forks source link

训练模型 #8

Open LLLLLLLianHua opened 5 months ago

LLLLLLLianHua commented 5 months ago

您好,我使用THuman2.0数据,训练150epoch后,得到了如下的结果

eadcee183588f1aa2d95d809e9dc097

请问是什么原因造成的呢?

fengq1a0 commented 5 months ago

您好,很难看出BUG的原因。 似乎您没有正确地生成训练数据。 您可以将训练集FOF恢复为mesh进行检查。 同时近期我会重新更新这个仓库,提供一个更加简单易用的,从法线图生成FOF的版本。

fengq1a0 commented 5 months ago

另外,一般而言,根据训练所用视角数量不同,5-10个epoch即可完全收敛,150 epoch太多了。但这不是造成失败的原因

LLLLLLLianHua commented 5 months ago

感谢您的回答,我可以从生成的FOF数据恢复出正确的mesh image

LLLLLLLianHua commented 5 months ago

我并没有采用原始的加载数据代码,而是使用如下代码

def image_path_tensor(self, path, channel=3, inv=False):

    rgba = Image.open(path).convert('RGB')
    rgb = torch.from_numpy(np.array(rgba).transpose((2, 0, 1)))
    return rgb

clothed_rgb_path = os.path.join(self.fof_dir, subject, 'render', f'{rotation:03d}.png')
clothed_rgb_img = self.image_path_tensor(clothed_rgb_path)

mpi_path = os.path.join("/home/public/add_disk/Human_data/THuman_FOF",
                        subject, f'{rotation:03d}.npz')
mpi = np.load(mpi_path)
ceof, mask = tri_occ(mpi["pos"], mpi["ind"], mpi["val"], 16)

ceof = torch.from_numpy(ceof.transpose((2, 0, 1)))
mask = torch.from_numpy(mask[None])

return {
    "name": subject,
    "img": clothed_rgb_img,
    "ceof": ceof,
    "mask": mask
}
fengq1a0 commented 5 months ago

建议您:

  1. tmp_img = img*mask。然后可视化tmp_img,确保fof与img是对齐的。请将各个视角都进行可视化,有时候旋转方向不同会导致某些视角巧合得重合。
  2. 若ceof可以恢复出正确的mesh,且1.中的可视化正常。则应该是训练过程的问题。请确保训练过程梯度回传正确。
fengq1a0 commented 5 months ago

如果仍然正常,则考虑是test code里面有bug

LLLLLLLianHua commented 5 months ago

感谢您的回复!

建议您:

  1. tmp_img = img*mask。然后可视化tmp_img,确保fof与img是对齐的。请将各个视角都进行可视化,有时候旋转方向不同会导致某些视角巧合得重合。
  2. 若ceof可以恢复出正确的mesh,且1.中的可视化正常。则应该是训练过程的问题。请确保训练过程梯度回传正确。

这些结果都是正常的,我采用500个THuman2.0数据用作训练,渲染256张图像,训练30epoch

有些结果是正常的:

7a5b6c44337e14ddcdb43c86c3822bc

但多数结果看起来很差: image image

fengq1a0 commented 5 months ago

首先,我有点好奇这个issue最开始150Epoch的原因。

然后,我在实验初期确实得到过与这个相似的实验结果。但是failure case应该没有这么多,可能在1/3左右。印象中经过debug发现还是图像与FOF存在不对齐,对Mesh数据进行了处理解决了这个问题。十分抱歉,貌似开源的时候没有将这些东西整合进来。

目前我已经有了一套新的数据处理和训练流程,可以稳定地复现结果。但是这部分代码与我新做的东西耦合在一起,所以一直没有放出来。 image

我会尝试在这周内把这部分代码剥离出来,更新到github上。

LLLLLLLianHua commented 5 months ago

十分感谢您的回复!

fengq1a0 commented 5 months ago

抱歉我可能需要更多的时间。除了手上的项目,我最近还有一些其他事情要处理。。。