docs: align README with Jittor open-source guide
本仓库为第六届计图人工智能挑战赛赛道二「基于深度学习的三维点云降噪」的开源代码。
fujiaqi006
pointcloud-denoise
本方案不改变点云点数,输出格式严格遵循比赛要求:
result.zip shapenet/<synset_id>/<model_id>/denoised.npy
每个 denoised.npy 均为 float32,shape 为 (N, 3),且 N 与对应输入 noisy.npy 完全一致。
denoised.npy
float32
(N, 3)
N
noisy.npy
推荐环境:
安装依赖:
python -m pip install -r requirements.txt
说明:比赛要求使用 Jittor。本仓库的降噪核心为确定性局部几何算法,使用 NumPy/SciPy 实现以保证 CPU 推理稳定性;denoise_submit.py 会在环境可用时 warm up Jittor。
denoise_submit.py
不要将官方数据集提交到仓库。请从比赛页面下载数据,并保持如下目录结构:
dataset_test_noisy/ shapenet/ <synset_id>/ <model_id>/ noisy.npy
若需要本地评测,请准备官方格式的验证目录:
official_val/ noisy/ shapenet/<synset_id>/<model_id>/noisy.npy gt/ shapenet/<synset_id>/<model_id>/pointcloud.npy mesh/ shapenet/<synset_id>/<model_id>/model.obj
实际路径通过命令行参数传入,例如 --input-dir /path/to/dataset_test_noisy。
--input-dir /path/to/dataset_test_noisy
最终提交方案是确定性局部几何降噪方法,不需要训练权重,也不使用外部数据。为了复现参数选择过程,仓库保留了本地验证集上的参数搜索脚本:
python sweep_edge_classical.py
参数搜索脚本默认从如下位置读取本地验证集:
official_val/noisy official_val/gt official_val/mesh starter_code/starter_code/evaluate.py
也可以用环境变量指定根目录:
export JITTOR_PA4_ROOT=/path/to/workspace export JITTOR_STARTER_DIR=/path/to/starter_code python sweep_edge_classical.py
本方法没有随机训练过程,最终推理是确定性的,因此不依赖随机种子。
使用最终 A 榜配置生成预测结果:
python generate_best62p94_submission.py \ --input-dir /path/to/dataset_test_noisy \ --output-dir best62p94_result \ --workers 8
检查输出文件数量、dtype、shape,并打包为 result.zip:
result.zip
python zip_and_validate_result.py \ --result_dir best62p94_result \ --noisy_dir /path/to/dataset_test_noisy \ --zip_path result.zip \ --report_path result_zip_report.json
如果有本地 ground truth 与 mesh,可使用官方 evaluate.py 评测:
evaluate.py
python evaluate.py \ --pred_dir best62p94_result \ --gt_dir /path/to/official_val/gt \ --noisy_dir /path/to/official_val/noisy \ --mesh_dir /path/to/official_val/mesh \ --workers 8 \ --verbose
也可以使用通用入口自行指定参数:
python denoise_submit.py \ --input-dir /path/to/dataset_test_noisy \ --output-dir results \ --zip-path result.zip \ --method hybrid \ --k 64 \ --iterations 3 \ --blend 1.04
最终方法基于局部几何先验:
scipy.spatial.cKDTree
最终配置记录在 edge_best.json:
edge_best.json
k=64 iterations=3 blend=1.04 alpha=0.70 beta=0.24 spatial=0.55 range_scale=0.38 tan_k_ratio=0.5
本地验证集使用官方训练 mesh 自行采样得到 clean/noisy/mesh,并使用官方 evaluate.py 评测。
A 榜线上提交成绩为 62.51。线上测试分布与本地验证集不完全一致,因此线上成绩略低于本地验证成绩。
相较官方 Baseline,本方案超过 baseline 的主要原因是:
. ├── README.md ├── LICENSE ├── requirements.txt ├── denoise_submit.py ├── generate_best62p94_submission.py ├── zip_and_validate_result.py ├── sweep_edge_classical.py ├── sweep_tuned_classical.py ├── edge_best.json ├── best62p94_generation_report.json └── REPORT.md
文件说明:
generate_best62p94_submission.py
zip_and_validate_result.py
sweep_edge_classical.py
sweep_tuned_classical.py
REPORT.md
本仓库未使用比赛提供数据集以外的额外数据,也未使用外部预训练权重。
主要第三方依赖:
代码许可证见 LICENSE。
LICENSE
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
jittor-fujiaqi006-pointcloud-denoise
本仓库为第六届计图人工智能挑战赛赛道二「基于深度学习的三维点云降噪」的开源代码。
fujiaqi006pointcloud-denoise本方案不改变点云点数,输出格式严格遵循比赛要求:
每个
denoised.npy均为float32,shape 为(N, 3),且N与对应输入noisy.npy完全一致。1. 环境安装
推荐环境:
安装依赖:
说明:比赛要求使用 Jittor。本仓库的降噪核心为确定性局部几何算法,使用 NumPy/SciPy 实现以保证 CPU 推理稳定性;
denoise_submit.py会在环境可用时 warm up Jittor。2. 数据准备
不要将官方数据集提交到仓库。请从比赛页面下载数据,并保持如下目录结构:
若需要本地评测,请准备官方格式的验证目录:
实际路径通过命令行参数传入,例如
--input-dir /path/to/dataset_test_noisy。3. 训练
最终提交方案是确定性局部几何降噪方法,不需要训练权重,也不使用外部数据。为了复现参数选择过程,仓库保留了本地验证集上的参数搜索脚本:
参数搜索脚本默认从如下位置读取本地验证集:
也可以用环境变量指定根目录:
本方法没有随机训练过程,最终推理是确定性的,因此不依赖随机种子。
4. 评测与推理
使用最终 A 榜配置生成预测结果:
检查输出文件数量、dtype、shape,并打包为
result.zip:如果有本地 ground truth 与 mesh,可使用官方
evaluate.py评测:也可以使用通用入口自行指定参数:
5. 方法说明
最终方法基于局部几何先验:
scipy.spatial.cKDTree搜索 KNN 邻域。最终配置记录在
edge_best.json:6. 结果说明
本地验证集使用官方训练 mesh 自行采样得到 clean/noisy/mesh,并使用官方
evaluate.py评测。A 榜线上提交成绩为 62.51。线上测试分布与本地验证集不完全一致,因此线上成绩略低于本地验证成绩。
相较官方 Baseline,本方案超过 baseline 的主要原因是:
7. 目录说明
文件说明:
denoise_submit.py:核心降噪算子与通用推理入口。generate_best62p94_submission.py:最终 A 榜配置的复现脚本。zip_and_validate_result.py:输出格式检查与result.zip打包脚本。sweep_edge_classical.py、sweep_tuned_classical.py:本地验证参数搜索脚本。REPORT.md:实验报告。8. 第三方依赖与声明
本仓库未使用比赛提供数据集以外的额外数据,也未使用外部预训练权重。
主要第三方依赖:
代码许可证见
LICENSE。