switch to torch
# 安装计图 conda create -n jittor python=3.9 -y conda activate jittor conda install -c conda-forge gcc=10 gxx=10 -y # 确保gcc、g++版本不高于10 conda install -c conda-forge libgomp -y # 确保OpenMP runtime存在 # 安装依赖 python -m pip install -r requirements.txt pip install jittor numpy trimesh scipy omegaconf point-cloud-utils
将训练数据 dataset_train.tar.gz 解压到本目录下:
dataset_train.tar.gz
tar xzf dataset_train.tar.gz
解压后目录:dataset_train/shapenet/<synset_id>/<model_id>/models/model_normalized.obj
dataset_train/shapenet/<synset_id>/<model_id>/models/model_normalized.obj
将测试数据 dataset_test_noisy.zip 解压到本目录下:
dataset_test_noisy.zip
unzip dataset_test_noisy.zip
解压后目录:dataset_test_noisy/shapenet/<synset_id>/<model_id>/noisy.npy
dataset_test_noisy/shapenet/<synset_id>/<model_id>/noisy.npy
bash run_with_log.sh jittor_train \ python run.py --task configs/task/train_vm.yaml
训练权重保存在 experiments/ 目录下。
experiments/
项目中另外新增了一套独立的 PyTorch 点云去噪实现,代码位于 torch_diffusion/,不会覆盖现有 Jittor baseline。
torch_diffusion/
clean patch | noisy patch
建议安装带 CUDA 的 PyTorch。双 4090 默认配置已经写在:
configs_torch/train_point_diffusion.yaml
configs_torch/predict_point_diffusion.yaml
bash run_with_log.sh torch_train_2gpu \ bash launch_torch.sh --nproc_per_node=2 train_torch_diffusion.py \ --config configs_torch/train_point_diffusion.yaml
如果只是做单卡 smoke test,不需要 torchrun,可以直接运行:
torchrun
bash run_with_log.sh torch_train_1gpu \ python train_torch_diffusion.py \ --config configs_torch/train_point_diffusion_fast.yaml
默认训练配置:
patch_size=1024
batch_size=24
bf16
hidden_dim=256
depth=8
checkpoint 会保存在 experiments_torch/point_diffusion/。
experiments_torch/point_diffusion/
如果你更在意训练速度,可以直接用更激进的快速配置:
bash run_with_log.sh torch_train_fast \ bash launch_torch.sh --nproc_per_node=2 train_torch_diffusion.py \ --config configs_torch/train_point_diffusion_fast.yaml
这版会进一步缩小模型、patch 和采样步数,用更短时间先训出一版可用模型。
如果服务器是共享环境,或者你更在意“更快出一个能看的 checkpoint”而不是单次配置的上限吞吐,可以直接使用:
bash run_with_log.sh torch_train_server_fast \ python train_torch_diffusion.py \ --config configs_torch/train_point_diffusion_server_fast.yaml
这版额外做了几件事:
hidden_dim=144
depth=3
knn_k=12
200
16
12
total_num_workers
如果你明确想用双卡提速,并且希望每 5 个 epoch 就做一轮验证,可以使用:
5
bash run_with_log.sh torch_train_2gpu_eval5 \ bash launch_torch.sh --auto-gpus 2 --nproc_per_node=2 train_torch_diffusion.py \ --config configs_torch/train_point_diffusion_2gpu_eval5.yaml
这版的取舍是:
eval_interval=5
max_shapes=2048
launch_torch.sh 现在支持 --auto-gpus N,会在没有手动设置 CUDA_VISIBLE_DEVICES 时,按“空闲显存更多、已用显存更少、利用率更低”的顺序自动挑卡。
launch_torch.sh
--auto-gpus N
CUDA_VISIBLE_DEVICES
如果服务器卡比较多,也可以直接使用 4 卡高吞吐配置:
bash run_with_log.sh torch_train_4gpu \ env OMP_NUM_THREADS=4 bash launch_torch.sh --nproc_per_node=4 train_torch_diffusion.py \ --config configs_torch/train_point_diffusion_4gpu.yaml
这版额外启用了更高的 dataloader 并发、mesh 缓存,以及可选 torch.compile。
torch.compile
当前 4gpu 配置已经按“总共约 4 个 dataloader CPU workers”做了收敛,避免 4 卡时把 num_workers 按卡数放大到几十个后台进程。
4gpu
num_workers
如果日志里出现 env: 'torchrun': No such file or directory,说明当前环境里找不到 torchrun 可执行文件;如果同时 python -c "import torch" 也失败,那就是 PyTorch 本体还没装好,需要先切到正确环境或重新安装 PyTorch。
env: 'torchrun': No such file or directory
python -c "import torch"
先把 configs_torch/predict_point_diffusion.yaml 里的 load_ckpt 改成你的权重路径,然后运行:
load_ckpt
bash run_with_log.sh torch_predict \ python predict_torch_diffusion.py \ --config configs_torch/predict_point_diffusion.yaml
输出保存在 results_torch/dataset_test_noisy/,目录结构与测试集保持一致,文件名为 denoised.npy。
results_torch/dataset_test_noisy/
denoised.npy
修改 configs/task/predict_vm.yaml 中的 load_ckpt 为你的最佳权重路径,然后运行:
configs/task/predict_vm.yaml
bash run_with_log.sh jittor_predict \ python run.py --task configs/task/predict_vm.yaml
降噪结果保存在 results/ 目录下,格式为 .npy (float32, shape (N,3))。
results/
.npy
如果服务器不稳定,建议统一通过 run_with_log.sh 启动任务。这个脚本会:
run_with_log.sh
logs/<任务名>_时间戳.log
logs/<任务名>.pid
nohup + setsid
常用查看方式:
cat logs/torch_train_2gpu.pid
上面命令用于查看后台任务 PID。确认进程是否还在运行可以执行:
ps -fp "$(cat logs/torch_train_2gpu.pid)"
查看训练日志请使用:
tail -f logs/torch_train_2gpu_*.log
如果要停止任务,可以执行:
kill "$(cat logs/torch_train_2gpu.pid)"
cd results/dataset_test_noisy zip -r ../../result.zip shapenet/
每个测试样本一个 denoised.npy,目录结构与测试集一致,打包为 result.zip:
result.zip
result.zip shapenet/ <synset_id>/ <model_id>/ denoised.npy # np.float32, shape (N, 3)
python evaluate.py \ --pred_dir ./results/dataset_test_noisy \ --gt_dir ./test_gt \ --noisy_dir ./dataset_test_noisy \ --mesh_dir ./dataset_train \ --workers 8
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
点云降噪赛题 Baseline
环境安装
数据准备
将训练数据
dataset_train.tar.gz解压到本目录下:解压后目录:
dataset_train/shapenet/<synset_id>/<model_id>/models/model_normalized.obj将测试数据
dataset_test_noisy.zip解压到本目录下:解压后目录:
dataset_test_noisy/shapenet/<synset_id>/<model_id>/noisy.npy训练
训练权重保存在
experiments/目录下。PyTorch Diffusion 版本
项目中另外新增了一套独立的 PyTorch 点云去噪实现,代码位于
torch_diffusion/,不会覆盖现有 Jittor baseline。模型说明
clean patch | noisy patch推荐环境
建议安装带 CUDA 的 PyTorch。双 4090 默认配置已经写在:
configs_torch/train_point_diffusion.yamlconfigs_torch/predict_point_diffusion.yaml训练(2 张 4090)
如果只是做单卡 smoke test,不需要
torchrun,可以直接运行:默认训练配置:
patch_size=1024batch_size=24(每卡)bf16混合精度hidden_dim=256depth=8checkpoint 会保存在
experiments_torch/point_diffusion/。如果你更在意训练速度,可以直接用更激进的快速配置:
这版会进一步缩小模型、patch 和采样步数,用更短时间先训出一版可用模型。
如果服务器是共享环境,或者你更在意“更快出一个能看的 checkpoint”而不是单次配置的上限吞吐,可以直接使用:
这版额外做了几件事:
hidden_dim=144,depth=3,knn_k=12)20016,并把验证采样步数降到12total_num_workers控制总 CPU worker 数,减少共享服务器上的抢占如果你明确想用双卡提速,并且希望每
5个 epoch 就做一轮验证,可以使用:这版的取舍是:
eval_interval=5max_shapes=2048控制每个 epoch 的训练样本量,优先把单 epoch 压短launch_torch.sh现在支持--auto-gpus N,会在没有手动设置CUDA_VISIBLE_DEVICES时,按“空闲显存更多、已用显存更少、利用率更低”的顺序自动挑卡。如果服务器卡比较多,也可以直接使用 4 卡高吞吐配置:
这版额外启用了更高的 dataloader 并发、mesh 缓存,以及可选
torch.compile。当前
4gpu配置已经按“总共约 4 个 dataloader CPU workers”做了收敛,避免 4 卡时把num_workers按卡数放大到几十个后台进程。如果日志里出现
env: 'torchrun': No such file or directory,说明当前环境里找不到torchrun可执行文件;如果同时python -c "import torch"也失败,那就是 PyTorch 本体还没装好,需要先切到正确环境或重新安装 PyTorch。推理
先把
configs_torch/predict_point_diffusion.yaml里的load_ckpt改成你的权重路径,然后运行:输出保存在
results_torch/dataset_test_noisy/,目录结构与测试集保持一致,文件名为denoised.npy。推理(生成提交文件)
修改
configs/task/predict_vm.yaml中的load_ckpt为你的最佳权重路径,然后运行:降噪结果保存在
results/目录下,格式为.npy(float32, shape (N,3))。后台运行与日志
如果服务器不稳定,建议统一通过
run_with_log.sh启动任务。这个脚本会:logs/<任务名>_时间戳.loglogs/<任务名>.pidnohup + setsid,在终端断开后继续运行常用查看方式:
上面命令用于查看后台任务 PID。确认进程是否还在运行可以执行:
查看训练日志请使用:
如果要停止任务,可以执行:
打包提交
提交格式
每个测试样本一个
denoised.npy,目录结构与测试集一致,打包为result.zip:本地评测(需要 GT 数据,仅组委会持有)