| # BiPTV3 Minimal Reproduction |
|
|
| This package is the lightest paper-relevant experiment bundle for the server. |
|
|
| - Server path: `/mnt/t2-6tb/Linpeikai/BiPTV3_CVPR` |
| - Default env: `Aoduo` |
| - Default GPU: `GPU 1` |
| - Goal: get FBPT vs BiPT comparison results without consuming large training resources |
| - Principle: reuse existing checkpoints first, evaluate only what is necessary |
|
|
| ## 1. Smallest useful experiment |
|
|
| The minimum path is: |
|
|
| 1. Do not retrain from scratch |
| 2. Reuse existing checkpoints already on the server |
| 3. Run one single-scene sanity check first |
| 4. Run `Area_5` only if the single-scene outputs are normal |
|
|
| This gives: |
|
|
| - Fastest sanity check: `Area_5/office_9` only |
| - Smallest quantitative check: `Area_5` only |
| - No need to retrain `FBPT`, `BiPT`, or `FP32` |
|
|
| ## 2. Existing checkpoints to reuse |
|
|
| Root: |
|
|
| `/mnt/t2-6tb/Linpeikai/BiPTV3_CVPR/code/pointcept_framework` |
|
|
| Recommended four-way comparison: |
|
|
| - FP32 teacher |
| - config: `exp/default/config.py` |
| - weight: `exp/default/model/model_last.pth` |
| - FBPT reproduced baseline |
| - config: `exp/s3dis/rebuttal_fbpt_baseline/config.py` |
| - weight: `exp/s3dis/rebuttal_fbpt_baseline/model/model_last.pth` |
| - BiPT W1A1 |
| - config: `exp/bi_ptv3_qat_long_run/config.py` |
| - weight: `exp/bi_ptv3_qat_long_run/model/model_best.pth` |
| - BiPT W2A8 |
| - config: `exp/s3dis/qat0920_w2a8_from_fp32/config.py` |
| - weight: `exp/s3dis/qat0920_w2a8_from_fp32/model/model_best.pth` |
|
|
| ## 3. Recommended execution order |
|
|
| ### Stage A: single-scene quick check |
|
|
| Use `tools/test_wc1.py`. |
|
|
| Why: |
|
|
| - lowest GPU cost |
| - fastest way to verify model loading |
| - easiest way to inspect FBPT failure mode vs BiPT outputs |
| - enough for the first pass |
|
|
| Important: |
|
|
| - the current server data layout does not contain `WC_1` |
| - the working light scene is `Area_5/office_9` |
| - run `patch_min_repro_server.sh` once before the first test |
|
|
| Run: |
|
|
| ```bash |
| bash patch_min_repro_server.sh |
| bash run_wc1_quick.sh |
| ``` |
|
|
| Expected output: |
|
|
| `code/pointcept_framework/exp/min_repro_wc1/*` |
|
|
| ### Stage B: Area_5 quantitative evaluation |
| |
| Only run this after Stage A works. |
| |
| Run: |
| |
| ```bash |
| bash run_area5_eval.sh |
| ``` |
| |
| Expected output: |
| |
| `code/pointcept_framework/exp/min_repro_area5/*` |
| |
| This is the smallest quantitative experiment that is still directly useful for the paper. |
| |
| ## 4. Environment |
| |
| Default choice: |
| |
| - `conda activate Aoduo` |
| - use `GPU 1` |
| |
| Quick verification: |
| |
| ```bash |
| conda activate Aoduo |
| python -c "import torch; print(torch.__version__)" |
| python -c "import torch_scatter; print('torch_scatter ok')" |
| ``` |
| |
| If `Aoduo` is broken, use the fallback env: |
| |
| - `pointcept-torch2.5.0-cu12.4` |
| |
| Repair command for the fallback env: |
| |
| ```bash |
| bash repair_env.sh |
| ``` |
| |
| If `Aoduo` reports a `torch_scatter` ABI error, fix it with: |
| |
| ```bash |
| conda activate Aoduo |
| python -m pip install --no-cache-dir --force-reinstall torch-scatter -f https://data.pyg.org/whl/torch-2.6.0+cu124.html |
| ``` |
| |
| If more PyG ABI errors appear, align the whole stack with the matching wheels: |
| |
| ```bash |
| python -m pip install --no-cache-dir --no-deps --force-reinstall \ |
| https://data.pyg.org/whl/torch-2.6.0%2Bcu124/pyg_lib-0.5.0%2Bpt26cu124-cp310-cp310-linux_x86_64.whl \ |
| https://data.pyg.org/whl/torch-2.6.0%2Bcu124/torch_cluster-1.6.3%2Bpt26cu124-cp310-cp310-linux_x86_64.whl \ |
| https://data.pyg.org/whl/torch-2.6.0%2Bcu124/torch_sparse-0.6.18%2Bpt26cu124-cp310-cp310-linux_x86_64.whl \ |
| https://data.pyg.org/whl/torch-2.6.0%2Bcu124/torch_spline_conv-1.2.2%2Bpt26cu124-cp310-cp310-linux_x86_64.whl |
| ``` |
| |
| ## 5. If new data is still needed |
| |
| If existing checkpoints are insufficient, use the smallest extra experiment: |
| |
| 1. train only one baseline |
| 2. train only on S3DIS |
| 3. run only 3 to 5 epochs |
| 4. validate on `Area_5` |
| |
| Recommended order: |
| |
| 1. FBPT short smoke run |
| 2. BiPT W1A1 short smoke run |
| 3. only then consider W2A8 |
| |
| Do not start from the full rebuttal training script. |
| |
| ## 6. Practical conclusion |
| |
| For minimum cost and still-usable output: |
| |
| - best choice: reuse existing checkpoints |
| - fastest script: `run_wc1_quick.sh` |
| - smallest paper-grade quantitative script: `run_area5_eval.sh` |
| - training is the fallback, not the first move |
| - verified quick result on server: |
| - `FBPT repr.` on `Area_5/office_9`: `mIoU 0.0244`, `mAcc 0.0770`, `allAcc 0.2826` |
| - `BiPT W1A1` on `Area_5/office_9`: `mIoU 0.1972`, `mAcc 0.2987`, `allAcc 0.5459` |
| - `BiPT W2A8` on `Area_5/office_9`: `mIoU 0.0137`, `mAcc 0.0769`, `allAcc 0.1775` |
| - `FP32` quick path is not directly usable with the current `test_wc1.py` monkeypatch because that script force-converts the model through the binary path and produces checkpoint shape mismatch |
| |