File size: 5,201 Bytes
820fab0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/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/"