QWTforGithub
QWTforGithub
非常抱歉,最近在赶deadline,有一些忙,回复地比较晚。这似乎是在跑你自己的数据集是吗。如果是在跑自己的数据集的话,我建议首先先花几个小时在PUGAN或者PU1K上做一下推理和训练,代码没出现问题的话,继续跑自己的数据集。如果有问题,那么大概率是环境没有配置好。然后,你的数据输入格式是condition [B,N,3]以及Ground Truth [B,rN,3]吗?r是倍率,比如4倍率,稀疏点是2048个点,那么Ground Truth应该是[B,8192,3]。可以参考一下这个问题:#10
你好,我认为问题出在cuda11.8上,建议降低本地的cuda版本到11.6或者更低。然后重新在虚拟环境中安装cudatookit和cudnn: `conda install cudatoolkit` `pip install nvidia-cudnn-cu11` 或者尝试: `conda install cudatoolkit=11.1 -c nvidia/label/cuda-11.1.1 -c conda-forge` ` conda install cudnn=8.2.1 -c nvidia/label/cudnn8.2.1` 再次验证: `import torch print(torch.version) print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.backends.cudnn.version()) print(torch.version.cuda)`
你好,感谢你对这个工作的关注。目前这份代码还没添加多GPU训练的功能。过段时间选定完自己的博士方向,我可能会重新优化这份代码(其实,这份代码很多地方我自己也不是很满意,预估在过年之前会调整完成)。如果,你非常急切想要修改成多GPU训练,其实并不困难,可以遵循以下DDP训练的例子,希望对你有所帮助: # ----- DDP训练例子----- ``` import torch import torch.distributed as dist import torch.multiprocessing as mp import torch.nn as nn import torch.optim as optim from torch.nn.parallel import DistributedDataParallel as DDP from...
感谢你的祝福。这个issue我不关闭了,还有问题的话,就直接在这个issue提问吧。
你好,似乎是没有写好DDP的代码。我计划是20号到过年之前会重构PUDM的代码,到时候可能会增加多GPU训练的代码。如果不是特别着急的话,可以等一段时间。
> 你好,可以在Windows系统上运行这个项目吗,pytorch3d有Windows可以下载的源吗? 你好,PUDM其实仅仅是利用了Pytorch3D的knn,完全由其他的包代替,比如pontnet2里的knn。我目前没有发现Pytorch3D window的版本。我做完rebuttal后,会拿出时间来重构PUDM的代码,应该会替换掉Pytorch3D。
> 你好,我在使用你提供的pugan.pkl进行测试的时候发现如下问题。 > > 我使用python prepare_dataset.py --input_pts_num 2048 --R 4 --mesh_dir mesh_dir --save_dir save_dir对数据进行处理(修改了prepare_dataset.py中noise_level=0),之后使用python samples.py --dataset PUGAN --R 4 --step 30 --batch_size 27进行测试得到如图所示的结果,发现与原文中没有添加噪声的结果有些不同。 > > 请问我这样处理有问题吗?如果没问题的话为什么会有这样的结果? > > 感谢你能抽时间看我的问题,期待你的回复~ >...
> 感谢你的回复! > > 我上个问题没有表达清楚,可以看到我的CD loss结果是0.121,但论文中的结果是0.131,同样HD loss我的结果是1.16,而论文是1.22,我想确认一下我的数据集处理是否有问题,是否拿训练集进行测试了,才导致结果偏好。 > > 第二个问题:我在训练的时候看到epoch是2000,这是要全部训练完嘛,还是等指标收敛就停止?大概需要多少个epoch可以收敛? > > 再次感谢你的回复!! 你处理的结果是没问题的,训练集是一个.h5文件,因此和用于测试的处理数据是无关的。结果更好了,这或许是因为我之前的实现和目前的实现有些出入导致的。之前,我是将插值点和xt通过元素相加的方式送入到The N-Net网络,即i+xt,而现在的实现是通过通道拼接的方式,即cat(xt,i),我发现后者得到结果是更好的。这可能是因为i和xt本质上并不是语义对齐的,通道拼接能够更完全保留两者的信息;而元素相加压缩了特征空间,抵消xt或者i中的一些重要细节信息。 论文中,我是训练了1000个epoch就得到了这样的结果。然后,我发现继续训练仍然可以得到更佳的可视化,因此,我难以确定到底训练多少个epoch能完全收敛。但是1000个epoch在PUGAN上,单卡3090条件下,要求训练5天时间,这对于一个low-level系统来说已经很长了。我建议是训练1000个epoch。 当然,这份代码有一些可以进一步优化的地方,如果你感兴趣,可以关注我第二个工作[CDSegNet](https://github.com/QWTforGithub/CDSegNet),在supplementary的第五章,我提供了一些优化diffusion的trick,我相信是可以进一步优化PUDM的。
感谢你的关注。我记得你也关注我的另一个工作了。你的这些问题都是比较好回答的,但是,非常抱歉,我最近在赶deadline,大约要2个周左右才能抽出时间一一回复。实际上,DDPMs在短期训练中是很难work的,因此需要一些先验引导。这样才能引导推理过程向着想要的结果生成,这个操作有点像Classifier Guidance,在推理过程中通过引入一个额外的分类器来指导DDPMs生成指定类别的图像。先回复这么多。。。 今晚还要通宵赶论文。。。
> hi wt, > > [PUDM/pointnet2/eval.py](https://github.com/QWTforGithub/PUDM/blob/b7e3f11e99667a06a6fcafa3d5eb42ca573d5b34/pointnet2/eval.py#L137) > > Line 137 in [b7e3f11](/QWTforGithub/PUDM/commit/b7e3f11e99667a06a6fcafa3d5eb42ca573d5b34) > > global_p2f.append(point2mesh_distance) > > 这行代码似乎应该改为global_p2f.append(total_metapoint2mesh_distance) 谢谢你的关注。其实这份代码,我一直想花时间去重构,因为代码优化非常不到位。但是学业问题,我总是不停地在做下个工作,导致自己没有时间去重写代码(上个deadline结束之后,立马又开始下个deadline)。实际上,很多DDPMs的训练和推理trick可以应用于PUDM上。后续我抽出时间会进一步优化代码。