Open LLLLLLLianHua opened 5 months ago
您好,很难看出BUG的原因。 似乎您没有正确地生成训练数据。 您可以将训练集FOF恢复为mesh进行检查。 同时近期我会重新更新这个仓库,提供一个更加简单易用的,从法线图生成FOF的版本。
另外,一般而言,根据训练所用视角数量不同,5-10个epoch即可完全收敛,150 epoch太多了。但这不是造成失败的原因
感谢您的回答,我可以从生成的FOF数据恢复出正确的mesh
我并没有采用原始的加载数据代码,而是使用如下代码
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
}
建议您:
如果仍然正常,则考虑是test code里面有bug
感谢您的回复!
建议您:
- tmp_img = img*mask。然后可视化tmp_img,确保fof与img是对齐的。请将各个视角都进行可视化,有时候旋转方向不同会导致某些视角巧合得重合。
- 若ceof可以恢复出正确的mesh,且1.中的可视化正常。则应该是训练过程的问题。请确保训练过程梯度回传正确。
这些结果都是正常的,我采用500个THuman2.0数据用作训练,渲染256张图像,训练30epoch
有些结果是正常的:
但多数结果看起来很差:
首先,我有点好奇这个issue最开始150Epoch的原因。
然后,我在实验初期确实得到过与这个相似的实验结果。但是failure case应该没有这么多,可能在1/3左右。印象中经过debug发现还是图像与FOF存在不对齐,对Mesh数据进行了处理解决了这个问题。十分抱歉,貌似开源的时候没有将这些东西整合进来。
目前我已经有了一套新的数据处理和训练流程,可以稳定地复现结果。但是这部分代码与我新做的东西耦合在一起,所以一直没有放出来。
我会尝试在这周内把这部分代码剥离出来,更新到github上。
十分感谢您的回复!
抱歉我可能需要更多的时间。除了手上的项目,我最近还有一些其他事情要处理。。。
您好,我使用THuman2.0数据,训练150epoch后,得到了如下的结果
请问是什么原因造成的呢?