rockglacierNET / bash_script /run_bandselect_v2.sh
kabiriitb's picture
Upload folder using huggingface_hub
820fab0 verified
Raw History Blame Contribute Delete
5.2 kB
#!/bin/bash
# ============================================================
# Band Selection Experiments β€” patches_v2 (clean Oct-Nov data)
# ============================================================
# Bands ranked by Cohen's d separability on patches_v2:
# Rank 1 band_25 SurfaceRoughness d=0.496
# Rank 2 band_18 Slope d=0.489
# Rank 3 band_22 TPI d=0.424
# Rank 4 band_23 TRI d=0.361
# Rank 5 band_10 NDVI d=0.304
# Rank 6 band_6 B12 d=0.275
# Rank 7 band_24 TWI d=0.261
# Rank 8 band_27 S1_VV d=0.237
# Rank 9 band_17 Elevation d=0.237
# Rank 10 band_11 NDWI d=0.234
# Rank 11 band_13 NDMI d=0.228
# Rank 12 band_14 BSI d=0.212
# Rank 13 band_4 B8A d=0.184
# Rank 14 band_3 B8 d=0.167
# Rank 15 band_9 RedEdge3 d=0.161
# Rank 16 band_26 Hillshade d=0.154
# Rank 17 band_8 RedEdge2 d=0.141
# Rank 18 band_5 B11 d=0.123
# Rank 19 band_15 Brightness_TC d=0.081
# Rank 20 band_7 RedEdge1 d=0.080
# Rank 21 band_19 Aspect d=0.077
# Rank 22 band_0 B2 d=0.076
# Rank 23 band_1 B3 d=0.064
# Rank 24 band_2 B4 d=0.051
# --- below this line d < 0.04 (noise) ---
# Rank 25 band_12 NDSI d=0.031
# Rank 26 band_16 IronOxide d=0.008
# Rank 27 band_20 PlanCurvature d=0.008
# Rank 28 band_21 ProfileCurvature d=0.005
# ============================================================
set -e
source /data1/nasiruddink/miniconda3/etc/profile.d/conda.sh
conda activate brats
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data1/nasiruddink/miniconda3/envs/brats/lib:/data1/nasiruddink/miniconda3/envs/brats/lib/python3.10/site-packages/nvidia/cudnn/lib
export TF_CPP_MIN_LOG_LEVEL=2
DATA="dataset/patches_v2"
mkdir -p bandselection/logs
# ── Band sets (cumulative by Cohen's d rank) ──────────────────
# Top 8 (d > 0.23) β€” terrain + key spectral
TOP8="band_25,band_18,band_22,band_23,band_10,band_6,band_24,band_27"
# Top 12 (d > 0.18)
TOP12="band_25,band_18,band_22,band_23,band_10,band_6,band_24,band_27,band_17,band_11,band_13,band_14"
# Top 16 (d > 0.14)
TOP16="band_25,band_18,band_22,band_23,band_10,band_6,band_24,band_27,band_17,band_11,band_13,band_14,band_4,band_3,band_9,band_26"
# Top 20 (d > 0.07)
TOP20="band_25,band_18,band_22,band_23,band_10,band_6,band_24,band_27,band_17,band_11,band_13,band_14,band_4,band_3,band_9,band_26,band_8,band_5,band_15,band_7"
# Top 24 (d > 0.05) β€” exclude bottom 4 noise bands
TOP24="band_25,band_18,band_22,band_23,band_10,band_6,band_24,band_27,band_17,band_11,band_13,band_14,band_4,band_3,band_9,band_26,band_8,band_5,band_15,band_7,band_19,band_0,band_1,band_2"
# Terrain only β€” test if terrain alone is sufficient (10 bands)
TERRAIN="band_25,band_18,band_22,band_23,band_24,band_17,band_26,band_19,band_20,band_21"
# ==============================================================
# BATCH 1 β€” GPU 0, 1, 2 in parallel
# ==============================================================
echo "Starting BATCH 1: top8 | top12 | top16 ..."
CUDA_VISIBLE_DEVICES=0 MODEL_NAME="attention_unet" DATA_DIR=$DATA \
BAND_LIST=$TOP8 RUN_NAME="v2_top8" CKPT_DIR="bandselection/v2_top8" \
python3 train.py > bandselection/logs/v2_top8.log 2>&1 &
PID1=$!
CUDA_VISIBLE_DEVICES=1 MODEL_NAME="attention_unet" DATA_DIR=$DATA \
BAND_LIST=$TOP12 RUN_NAME="v2_top12" CKPT_DIR="bandselection/v2_top12" \
python3 train.py > bandselection/logs/v2_top12.log 2>&1 &
PID2=$!
CUDA_VISIBLE_DEVICES=2 MODEL_NAME="attention_unet" DATA_DIR=$DATA \
BAND_LIST=$TOP16 RUN_NAME="v2_top16" CKPT_DIR="bandselection/v2_top16" \
python3 train.py > bandselection/logs/v2_top16.log 2>&1 &
PID3=$!
echo " Waiting for batch 1 (PIDs $PID1 $PID2 $PID3) ..."
wait $PID1 $PID2 $PID3
echo "Batch 1 done. Sleeping 60s ..."
sleep 60
# ==============================================================
# BATCH 2 β€” GPU 0, 1, 2 in parallel
# ==============================================================
echo "Starting BATCH 2: top20 | top24 | terrain_only ..."
CUDA_VISIBLE_DEVICES=0 MODEL_NAME="attention_unet" DATA_DIR=$DATA \
BAND_LIST=$TOP20 RUN_NAME="v2_top20" CKPT_DIR="bandselection/v2_top20" \
python3 train.py > bandselection/logs/v2_top20.log 2>&1 &
PID1=$!
CUDA_VISIBLE_DEVICES=1 MODEL_NAME="attention_unet" DATA_DIR=$DATA \
BAND_LIST=$TOP24 RUN_NAME="v2_top24" CKPT_DIR="bandselection/v2_top24" \
python3 train.py > bandselection/logs/v2_top24.log 2>&1 &
PID2=$!
CUDA_VISIBLE_DEVICES=2 MODEL_NAME="attention_unet" DATA_DIR=$DATA \
BAND_LIST=$TERRAIN RUN_NAME="v2_terrain" CKPT_DIR="bandselection/v2_terrain" \
python3 train.py > bandselection/logs/v2_terrain.log 2>&1 &
PID3=$!
echo " Waiting for batch 2 (PIDs $PID1 $PID2 $PID3) ..."
wait $PID1 $PID2 $PID3
echo "Batch 2 done."
echo ""
echo "ALL 6 EXPERIMENTS COMPLETE."
echo "Results in: bandselection/v2_top{8,12,16,20,24}/ and bandselection/v2_terrain/"