SplatAtlas / INSTALL.sh
KCBtheone's picture
Upload SplatAtlas benchmark pipeline code
23e73f9 verified
Raw
History Blame Contribute Delete
3.4 kB
#!/bin/bash
# Deployment script for splatatlas_full_patch.tar.gz
# Run from /root/autodl-tmp/SplatAtlas/
#
# What this does:
# 1. Sanity-check we're in the right directory
# 2. Back up the 4 files that will be overwritten
# 3. Extract the patch (methods/, configs/, run_*.py, INSTALL.sh)
# 4. Auto-generate pixelgssgf_benchmark.yaml and sgfgs_benchmark.yaml
# from absgs template if they don't exist (with method_name swapped)
# 5. Run verification grep checks
set -e
EXPECTED_ROOT="/root/autodl-tmp/SplatAtlas"
if [ "$(pwd)" != "$EXPECTED_ROOT" ]; then
echo "ERROR: please cd to $EXPECTED_ROOT first"
echo " (you are in $(pwd))"
exit 1
fi
PATCH=splatatlas_full_patch.tar.gz
if [ ! -f "$PATCH" ]; then
echo "ERROR: $PATCH not found in $(pwd)"
exit 1
fi
# ---- 1. Backup the 4 modified files ----
BACKUP_DIR=".backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
for f in methods/wrapper_absgs.py methods/wrapper_pixelgs.py \
methods/wrapper_pixelgssgf.py methods/wrapper_sgfgs.py; do
if [ -f "$f" ]; then
cp "$f" "$BACKUP_DIR/"
fi
done
echo "[1/4] backed up 4 modified wrappers → $BACKUP_DIR/"
# ---- 2. Extract patch ----
tar -xzf "$PATCH"
echo "[2/4] patch extracted"
# ---- 3. Auto-generate the two configs that might be missing ----
for missing in pixelgssgf sgfgs; do
target="configs/${missing}_benchmark.yaml"
if [ ! -f "$target" ]; then
if [ -f configs/absgs_benchmark.yaml ]; then
sed "s/^method_name: absgs/method_name: ${missing}/" \
configs/absgs_benchmark.yaml > "$target"
echo "[3/4] generated missing $target from absgs template"
else
echo "[3/4] WARNING: $target missing AND no absgs_benchmark.yaml to clone from"
fi
fi
done
# ---- 4. Verification ----
echo "[4/4] verification:"
echo ""
echo "--- SGF residue in wrapper_pixelgs.py (should be empty) ---"
grep -n "SGFController\|guided_l1_loss\|guided_ssim_loss" methods/wrapper_pixelgs.py \
&& echo " FAIL: residue found" || echo " PASS"
echo ""
echo "--- pixels kept in wrapper_pixelgs.py (should have 2 lines) ---"
grep -n "pixels" methods/wrapper_pixelgs.py | grep -E "render_pkg|add_densification" || echo " FAIL"
echo ""
echo "--- new wrappers registered ---"
grep -n "register_method" methods/wrapper_edgeloss.py methods/wrapper_vanillasgf.py
echo ""
echo "--- timing in all 6 wrappers ---"
for f in absgs pixelgs pixelgssgf sgfgs vanillasgf edgeloss; do
if [ -f "methods/wrapper_${f}.py" ]; then
n_time=$(grep -c "iter_time_ms\|render_ms\|vram_allocated" methods/wrapper_${f}.py)
echo " wrapper_${f}.py: $n_time timing references"
fi
done
echo ""
echo "--- configs present ---"
ls -1 configs/*_benchmark.yaml
echo ""
echo "--- run scripts present ---"
ls -1 run_*.py
echo ""
echo "--- master execution plan dependency check ---"
for need in run_vanillasgf.py run_absgs.py run_pixelgs.py run_edgeloss.py run_vanilla.py; do
if [ -f "$need" ]; then
echo " OK $need"
else
echo " MISS $need (run_all.py will skip this method)"
fi
done
echo ""
echo "DONE. To run a single method: python run_<method>.py"
echo " To run all methods: python run_all.py"
echo " To dry-run plan: python run_all.py --dry-run"
echo ""
echo "Backup of pre-patch wrappers: $BACKUP_DIR/"