GenSeg-Baselines / code /scripts /nnunet_eval_par_heavy.sh
MaybeRichard's picture
Upload folder using huggingface_hub
057ec4b verified
Raw
History Blame Contribute Delete
1.54 kB
#!/bin/bash
# Parallel HD95/ASSD re-score for the heavy nnU-Net datasets (IDs 6-10), all folds,
# seggen env. Datasets 1-5 are already scored correctly and are left untouched.
# Each (dataset,fold) runs as its own process; 384 cores easily absorb 15 at once.
set -u
cd /home/wzhang/LSC/Code/NPJ
source /opt/anaconda3/etc/profile.d/conda.sh
conda activate seggen
# Cap intra-op threads: MONAI/torch otherwise grab all 384 cores per process, so
# 15 procs oversubscribe (load ~880) and thrash. 8 threads x 15 procs = ~120 << 384.
export OMP_NUM_THREADS=8 MKL_NUM_THREADS=8 OPENBLAS_NUM_THREADS=8 NUMEXPR_NUM_THREADS=8
DATA_ROOT=/home/wzhang/LSC/Dataset/Segmentation/processed_unified
RAW=/home/wzhang/LSC/Code/NPJ/nnunet_workspace/raw
PRED=/home/wzhang/LSC/Code/NPJ/nnunet_workspace/predTs
LOGD=nnunet_workspace/eval_par_logs
mkdir -p "$LOGD"
for id in 6 7 8 9 10; do
case $id in
6) ds=idridd_segmentation; proto=fold01;;
7) ds=acdc_png; proto=official;;
8) ds=pannuke_semantic; proto=fold01;;
9) ds=medsegdb_isic2018; proto=holdout;;
10) ds=medsegdb_kits19; proto=fold01;;
esac
for f in 0 1 2; do
(
python framework/nnunet_eval.py --data_root "$DATA_ROOT" \
--dataset "$ds" --protocol "$proto" --raw "$RAW" \
--dataset_id "$id" --fold "$f" --pred_dir "$PRED/d${id}_f${f}" \
--arch nnunet --exp_name baselines > "$LOGD/d${id}_f${f}.log" 2>&1
echo "done d${id}_f${f}: $(tail -1 "$LOGD/d${id}_f${f}.log")"
) &
done
done
wait
echo PAR_EVAL_DONE