biptv3 / code /superpoint_ops /run_haozhe2_match_superpoint_vis.sh
YYYYYYUUU's picture
Add core reproduction code (binarization layers, PTv3, superpoint ops, min-repro pack)
7b95dc2 verified
Raw
History Blame Contribute Delete
2.94 kB
#!/usr/bin/env bash
# 使用与 Haozhe2 训练相同的磁盘 superpoint.npy(本机 s3dis_official 与 Haozhe2 MD5 一致)做可视化。
# Mitsuba:整景超点/语义 GT;按语义类拆分超点 HQ;可选 Blender Workbench。
set -eo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$HERE"
source /mnt/data/AODUOLI/miniconda3/etc/profile.d/conda.sh
conda activate /mnt/data/AODUOLI/miniconda_envs/Aoduo
export PYTHONPATH="$HERE:${PYTHONPATH:-}"
OUT="${OUT:-$HERE/outputs/superpoint_vis}"
DATA_ROOT="${DATA_ROOT:-$HERE/../_work_biptv3/pointcept_framework/data/s3dis_official}"
FILM="${FILM:-2560}"
SPP="${SPP:-256}"
MAXP="${MAXP:-40000}"
# 空间名不含空格,与 Area_1/<room> 一致
ROOMS="${ROOMS:-office_1 hallway_1 conferenceRoom_1 office_2 copyRoom_1}"
DO_MITSUBA="${DO_MITSUBA:-1}"
DO_MITSUBA_PERCLASS="${DO_MITSUBA_PERCLASS:-0}"
PERCLASS_ROOM="${PERCLASS_ROOM:-Area_1/office_1}"
DO_BLENDER="${DO_BLENDER:-0}"
LABEL_NPY="${LABEL_NPY:-}"
LABEL_TAG="${LABEL_TAG:-}"
if [[ -n "$LABEL_NPY" && -z "$LABEL_TAG" ]]; then
LABEL_TAG="alt"
fi
LABEL_SUFFIX=""
if [[ -n "$LABEL_TAG" ]]; then
LABEL_SUFFIX="_${LABEL_TAG}"
fi
SP_LABEL_ARGS=()
if [[ -n "$LABEL_NPY" ]]; then
SP_LABEL_ARGS+=(--label_npy "$LABEL_NPY")
fi
mitsuba_full() {
local r
for r in $ROOMS; do
echo "==== Mitsuba $r (superpoint + segment GT) ===="
python3 "$HERE/superpoint_visualize_s3dis.py" --data_root "$DATA_ROOT" --room "Area_1/${r}" --mode superpoint \
"${SP_LABEL_ARGS[@]}" --out_png "$OUT/${r}_mitsuba_superpoint${LABEL_SUFFIX}.png" --max_points "$MAXP" --film_size "$FILM" --spp "$SPP"
python3 "$HERE/superpoint_visualize_s3dis.py" --data_root "$DATA_ROOT" --room "Area_1/${r}" --mode segment \
--out_png "$OUT/${r}_mitsuba_segment_gt.png" --max_points "$MAXP" --film_size "$FILM" --spp "$SPP"
done
}
mitsuba_perclass_hq() {
local tag="${PERCLASS_ROOM//\//_}"
local d="$OUT/${tag}_per_class_sp${LABEL_SUFFIX}_hq"
echo "==== Mitsuba superpoint_per_class -> $d ===="
mkdir -p "$d"
python3 "$HERE/superpoint_visualize_s3dis.py" --data_root "$DATA_ROOT" --room "$PERCLASS_ROOM" --mode superpoint_per_class \
"${SP_LABEL_ARGS[@]}" --out_dir "$d" --max_points "$MAXP" --film_size "$FILM" --spp "$SPP"
}
blender_batch() {
local r
for r in $ROOMS; do
echo "==== Blender $r ===="
bash "$HERE/run_blender_superpoints.sh" --data_root "$DATA_ROOT" --room "Area_1/${r}" --mode superpoint \
"${SP_LABEL_ARGS[@]}" --out_png "$OUT/${r}_blender_superpoint${LABEL_SUFFIX}.png" --max_points 50000
bash "$HERE/run_blender_superpoints.sh" --data_root "$DATA_ROOT" --room "Area_1/${r}" --mode segment \
--out_png "$OUT/${r}_blender_segment_gt.png" --max_points 50000
done
}
if [[ "$DO_MITSUBA" == "1" ]]; then mitsuba_full; fi
if [[ "$DO_MITSUBA_PERCLASS" == "1" ]]; then mitsuba_perclass_hq; fi
if [[ "$DO_BLENDER" == "1" ]]; then blender_batch; fi
echo "DONE out=$OUT"