LoGoSAM_demo / backbone.sh
quandn2003's picture
Upload folder using huggingface_hub
427d150 verified
#!/bin/bash
set -e
GPUID1=0
export CUDA_VISIBLE_DEVICES=$GPUID1
MODE=$1
if [ $MODE != "validation" ] && [ $MODE != "training" ]
then
echo "mode must be either validation or training"
exit 1
fi
# get modality as arg
MODALITY=$2
# make sure modality is either ct or mri
if [ $MODALITY != "ct" ] && [ $MODALITY != "mri" ]
then
echo "modality must be either ct or mri"
exit 1
fi
####### Shared configs ######
PROTO_GRID=8 # using 32 / 8 = 4, 4-by-4 prototype pooling window during training
INPUT_SIZE=256
ALL_EV=( 0 ) # 5-fold cross validation (0, 1, 2, 3, 4)
if [ $MODALITY == "ct" ]
then
DATASET='SABS_Superpix'
else
DATASET='CHAOST2_Superpix'
fi
if [ $INPUT_SIZE -gt 256 ]
then
DATASET=${DATASET}'_672'
fi
NWORKER=4
MODEL_NAME='dinov2_l14'
LORA=0
RELOAD_PATH=( "None" )
SKIP_SLICES="True"
DO_CCA="True"
TTT="False"
NSTEP=100000
RESET_AFTER_SLICE="True"
FINETUNE_ON_SUPPORT="False"
USE_SLICE_ADAPTER="False"
ADAPTER_LAYERS=1
CLAHE=False
ALL_SCALE=( "MIDDLE") # config of pseudolabels
LABEL_SETS=$3
EXCLU='[2,3]'
if [[ $MODALITY == "mri" && $LABEL_SETS -eq 1 ]]
then
echo "exluding 1, 4"
EXCLU='[1,4]' # liver(1), spleen(4)
fi
ORGANS='kidneys'
if [ $LABEL_SETS -eq 1 ]
then
ORGANS='liver_spleen'
fi
FREE_DESC=""
CPT="${MODE}_${MODEL_NAME}_${MODALITY}"
if [ -n "$FREE_DESC" ]
then
CPT="${CPT}_${FREE_DESC}"
fi
if [[ $TTT == "True" ]]
then
CPT="${CPT}_ttt_nstep_${NSTEP}"
if [ $RESET_AFTER_SLICE == "True" ]
then
CPT="${CPT}_reset_after_slice"
fi
fi
if [ $USE_SLICE_ADAPTER == "True" ]
then
CPT="${CPT}_w_adapter_${ADAPTER_LAYERS}_layers"
fi
if [ $LORA -ne 0 ]
then
CPT="${CPT}_lora_${LORA}"
fi
if [ $CLAHE == "True" ]
then
CPT="${CPT}_w_clahe"
fi
if [ $DO_CCA = "True" ]
then
CPT="${CPT}_cca"
fi
CPT="${CPT}_grid_${PROTO_GRID}_res_${INPUT_SIZE}"
if [ ${EXCLU} = "[]" ]
then
CPT="${CPT}_setting1"
else
CPT="${CPT}_setting2"
fi
CPT="${CPT}_${ORGANS}_fold"
###### Training configs (irrelavent in testing) ######
DECAY=0.95
MAX_ITER=1000 # defines the size of an epoch
SNAPSHOT_INTERVAL=25000 # interval for saving snapshot
SEED='1234'
###### Validation configs ######
SUPP_ID='[6]' # using the additionally loaded scan as support
if [ $MODALITY == "mri" ]
then
SUPP_ID='[4]'
fi
echo ===================================
for ((i=0; i<${#ALL_EV[@]}; i++))
do
EVAL_FOLD=${ALL_EV[i]}
CPT_W_FOLD="${CPT}_${EVAL_FOLD}"
echo $CPT_W_FOLD on GPU $GPUID1
for SUPERPIX_SCALE in "${ALL_SCALE[@]}"
do
PREFIX="test_vfold${EVAL_FOLD}"
echo $PREFIX
LOGDIR="./test_${MODALITY}/${CPT_W_FOLD}"
if [ ! -d $LOGDIR ]
then
mkdir -p $LOGDIR
fi
python3 $MODE.py with \
"modelname=$MODEL_NAME" \
'usealign=True' \
'optim_type=sgd' \
reload_model_path=${RELOAD_PATH[i]} \
num_workers=$NWORKER \
scan_per_load=-1 \
label_sets=$LABEL_SETS \
'use_wce=True' \
exp_prefix=$PREFIX \
'clsname=grid_proto' \
n_steps=$NSTEP \
exclude_cls_list=$EXCLU \
eval_fold=$EVAL_FOLD \
dataset=$DATASET \
proto_grid_size=$PROTO_GRID \
max_iters_per_load=$MAX_ITER \
min_fg_data=1 seed=$SEED \
save_snapshot_every=$SNAPSHOT_INTERVAL \
superpix_scale=$SUPERPIX_SCALE \
lr_step_gamma=$DECAY \
path.log_dir=$LOGDIR \
support_idx=$SUPP_ID \
lora=$LORA \
do_cca=$DO_CCA \
ttt=$TTT \
adapter_layers=$ADAPTER_LAYERS \
use_slice_adapter=$USE_SLICE_ADAPTER \
reset_after_slice=$RESET_AFTER_SLICE \
"input_size=($INPUT_SIZE, $INPUT_SIZE)"
done
done