Spaces:
Sleeping
Sleeping
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 |