fundus-9model-benchmark / code /launch_on_vm.sh
DoB24's picture
Add 9-model fundus benchmark: weights + results + splits + code + README
8e932ab verified
Raw
History Blame Contribute Delete
2.02 kB
#!/bin/bash
# Launch the full corrected experiment pipeline on the Azure T4 VM.
# Designed to be called via: sshpass + nohup so it survives SSH disconnect.
#
# Outputs go to ~/fundus_project/final_experiments/
# - run.log progress
# - {model}_kfold.json 5-fold CV summary per model
# - {model}_test.json independent-test metrics per model
# - {model}_test_preds.json per-sample preds for McNemar
# - mcnemar.json pairwise paired tests
# - weights/{model}_final.pth reproducible model weights
# - kfold_summary.json aggregate
set -euo pipefail
cd ~/fundus_project
source ~/.venv/bin/activate
# Use ORIGINAL dataset to avoid data-leakage: in the Augmented dataset, each
# original image has multiple augmented copies with no group ID, so a random
# split puts copies of the same source into BOTH train and test (inflates test
# accuracy 2-6pp). On-the-fly augmentation in the train transform compensates.
echo "[$(date)] building holdout split (ORIGINAL dataset, no leakage)"
python comparison_experiment/build_holdout_split.py \
--data-dir Database/Original_Dataset \
--output holdout_split.json \
--test-size 0.15 --val-size 0.15 --folds 5 --seed 42
echo "[$(date)] starting unified pipeline (k-fold CV + independent test for all 6 models)"
echo " - class-weighted CE loss (sqrt-inverse-frequency)"
echo " - CLIP uses OpenAI pretrained weights"
echo " - saves per-sample probs for ROC/PR/ECE analysis"
echo " - bootstrap 95% CIs on test metrics"
python comparison_experiment/run_final_experiments.py \
--manifest holdout_split.json \
--models vgg19 resnet50 resnet101 densenet121 inception_v3 clip_openai \
--epochs 60 --folds 5 --batch-size 32 --workers 4 --lr 1e-4 --patience 8 \
--output-dir final_experiments
echo "[$(date)] generating gradcam figures"
python comparison_experiment/generate_all_gradcam.py \
--weights-dir final_experiments/weights \
--manifest holdout_split.json \
--output-dir gradcam_outputs_final
echo "[$(date)] DONE"