目录

NailongPointCloud

A Jittor implementation of a dynamic-KNN CVM point-cloud denoising model for the Nailong point-cloud denoising assignment. The released code contains the s170 model, training/prediction configurations, evaluation utilities, and the final submission recipe.

This directory is a code/config package for the s170 submission. It contains the current code and lightweight configs needed to reproduce the training/inference recipe, but intentionally excludes checkpoints, prediction outputs, result zip files, logs with large outputs, and datasets.

Results

  • Best online: score=78.58 from a 50/50 blend of the s170 seed_k=10 and seed_k=12 submit predictions.
  • Previous online anchor: score=78.56, CD=67.27, P2S=89.84
  • Best local val512 anchor: score=80.8456, CD=70.2766, P2S=91.4145
  • Best local val64 inference variant: score=80.7421, CD=70.0705, P2S=91.4138
  • Local val512 evidence: evidence/s170_val512_summary.txt
  • Final submission record: docs/final_submission_records.md
  • Model report: docs/s170_current_model_report.md

Model Summary

  • Main model code: src/model/cvm.py
  • Entry point: run.py
  • Model target: StraightPCFCore
  • Backbone: Straight EdgeConv feature extraction with KNN neighborhoods.
  • Velocity module: predicts point displacement from local features.
  • CVM path: uses direct final-current-to-clean update for the later stages.
  • Joint stage: enables coverage loss and mesh loss through straightpcf_cvm_final_joint.yaml.
  • s170 widening: feat_embedding_dim=320, decoder_hidden_dim=80.
  • Dynamic geometry: velocity_geometry_knn=8, velocity_geometry_large_knn=64, velocity_geometry_large_weight=0.2, velocity_geometry_large_gate=density_mask, velocity_geometry_density_keep_ratio=0.5.

Key Configs

Training configs:

  • configs/task/train_straightpcf_vm_s170_full_dynamic_knn64_vmcoverage_wide320_long.yaml
  • configs/task/train_straightpcf_cvm_s170_full_dynamic_knn64_vmcoverage_wide320_long.yaml
  • configs/task/train_straightpcf_core_s170_full_dynamic_knn64_vmcoverage_wide320_long.yaml
  • configs/task/train_straightpcf_joint_s170_full_dynamic_knn64_vmcoverage_wide320_long.yaml
  • configs/task/train_straightpcf_joint_s170_full_dynamic_knn64_vmcoverage_wide320_long_low_lr.yaml

Prediction configs:

  • Base s170 template: configs/task/predict_straightpcf_s170_full_dynamic_knn64_vmcoverage_wide320_long.yaml
  • Final generated submit template: logs/template_s170_submit_best_p1200_k10_d1p05_low_lr_0.yaml
  • Final generated submit task: logs/predict_s170_submit_best_p1200_k10_d1p05_low_lr_0.yaml

Shared component configs:

  • Data: configs/data/train_metric_v2_no_val.yaml, configs/data/predict.yaml, validation configs under configs/data/predict_val_testdist_*.yaml
  • Transform: configs/transform/straightpcf_core.yaml, configs/transform/straightpcf_core_noise_mix_65_35.yaml, configs/transform/predict.yaml
  • Model: configs/model/straightpcf_vm.yaml, configs/model/straightpcf_cvm.yaml, configs/model/straightpcf_cvm_final_core.yaml, configs/model/straightpcf_cvm_final_joint.yaml

s168 train/predict configs are included as the immediate predecessor/reference chain.

Training Stages

The actual s170 training script is:

scripts/run-straightpcf-s170-full-dynamic-knn64-vmcoverage-wide320-long.sh

It runs these stages in order:

  1. VM stage, 5 epochs, includes VM coverage loss.
  2. CVM stage, 5 epochs, initialized from VM checkpoint 4.
  3. Core final-current-to-clean stage, 10 epochs, initialized from CVM checkpoint 4.
  4. Joint stage, 5 epochs, initialized from Core checkpoint 9.
  5. Low-lr joint stage, 4 epochs, initialized from Joint checkpoint 4.

The final submitted checkpoint was:

experiments/straightpcf_joint_s170_full_dynamic_knn64_vmcoverage_wide320_long_low_lr/checkpoint_0.pkl

Checkpoints are not included in this package.

Inference Parameters

Main s170 submission inference used:

  • predict_patch_size=1200
  • predict_seed_k=10 or 12
  • predict_delta_scale=1.05
  • predict_aggregation=best
  • predict_weight_power=1.0
  • writer output filename: denoised.npy
  • expected test data root: dataset_test_noisy
  • test list: datalist/test.txt

Generate Submission

From a prepared repo/package root with dataset_test_noisy/ and the final checkpoint available:

python scripts/cloud-predict-validation-set.py \
  --checkpoint experiments/straightpcf_joint_s170_full_dynamic_knn64_vmcoverage_wide320_long_low_lr/checkpoint_0.pkl \
  --noisy-dir dataset_test_noisy \
  --list-file datalist/test.txt \
  --out-dir outputs/s170_submit_best_p1200_k10_d1p05_low_lr_0/predictions \
  --task-out logs/predict_s170_submit_best_p1200_k10_d1p05_low_lr_0.yaml \
  --template logs/template_s170_submit_best_p1200_k10_d1p05_low_lr_0.yaml \
  --num-workers 8

python scripts/validate-submission.py \
  --pred-dir outputs/s170_submit_best_p1200_k10_d1p05_low_lr_0/predictions \
  --noisy-dir dataset_test_noisy \
  --list-file datalist/test.txt

mkdir -p results
cd outputs/s170_submit_best_p1200_k10_d1p05_low_lr_0/predictions
zip -qr ../../../results/s170_submit_best_p1200_k10_d1p05_low_lr_0.zip shapenet

The original build script used for this family is also included:

CKPT=experiments/straightpcf_joint_s170_full_dynamic_knn64_vmcoverage_wide320_long_low_lr/checkpoint_0.pkl \
TEMPLATE=configs/task/predict_straightpcf_s170_full_dynamic_knn64_vmcoverage_wide320_long.yaml \
NAME=s170_submit_best_p1200_k10_d1p05_low_lr_0 \
PATCH_SIZE=1200 \
SEED_K=10 \
DELTA_SCALE=1.05 \
AGGREGATION=best \
WEIGHT_POWER=1.0 \
RESULT_PATH=results/s170_submit_best_p1200_k10_d1p05_low_lr_0.zip \
scripts/build-straightpcf-dynamic-knn64-submission.sh

Note: the copied shell scripts preserve the original /home/ubuntu/poetace-jittor run environment. If the package is moved elsewhere, run the direct Python commands above from the package root or adjust the cd line in the shell scripts.

Package Contents

  • src/: model, data, transform, and system code.
  • configs/: selected s170/s168 task configs and referenced component configs.
  • scripts/: training, evaluation, prediction, validation, and submission helper scripts.
  • datalist/: path lists used by the included configs.
  • logs/: small generated yaml files documenting final submit and val512 runs.
  • docs/: model report and final submission records.
  • evidence/: local val512 summary.
  • PACKAGE_MANIFEST.txt: full file list.
关于

A Jittor implementation of a dynamic-KNN CVM point-cloud denoising model for the Nailong point-cloud denoising assignment. The released code contains the s170 model, training/prediction configurations

484.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号