| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/usr/bin/env bash
- set -euo pipefail
- ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
- cd "$ROOT_DIR"
- PYTHON="/opt/miniforge3/envs/xnet_mamba/bin/python"
- DATASET="${DATASET:-BUSI}"
- RUN_ALL="${RUN_ALL:-0}"
- SEED="${SEED:-42}"
- EXTRA_SET_ARGS="${EXTRA_SET_ARGS:-}"
- dataset_root() {
- case "$1" in
- "BUSI") echo "data/BUSI" ;;
- "BUS-UCLM") echo "data/BUS-UCLM" ;;
- "BUS-BRA") echo "data/BUS-BRA" ;;
- "BUS_UC") echo "data/BUS_UC" ;;
- "CCAUI") echo "data/CCAUI" ;;
- "DDTI") echo "data/DDTI" ;;
- "TN3K") echo "data/TN3K" ;;
- "TG3K") echo "data/TG3K" ;;
- "OTU_2d") echo "data/OTU_2d" ;;
- *) echo "Unsupported dataset: $1" >&2; exit 1 ;;
- esac
- }
- config_path() {
- case "$1" in
- "BUSI") echo "configs/segmentation/optimized/sup_busi_opt.yaml" ;;
- "BUS-UCLM") echo "configs/segmentation/optimized/sup_bus_uclm_opt.yaml" ;;
- "BUS-BRA") echo "configs/segmentation/optimized/sup_bus_bra_opt.yaml" ;;
- "BUS_UC") echo "configs/segmentation/optimized/sup_bus_uc_opt.yaml" ;;
- "CCAUI") echo "configs/segmentation/optimized/sup_ccaui_opt.yaml" ;;
- "DDTI") echo "configs/segmentation/optimized/sup_ddti_opt.yaml" ;;
- "TN3K") echo "configs/segmentation/optimized/sup_tn3k_opt.yaml" ;;
- "TG3K") echo "configs/segmentation/optimized/sup_tg3k_opt.yaml" ;;
- "OTU_2d") echo "configs/segmentation/optimized/sup_otu_2d_opt.yaml" ;;
- *) echo "Unsupported dataset: $1" >&2; exit 1 ;;
- esac
- }
- needs_project_split() {
- case "$1" in
- "BUSI"|"BUS-UCLM"|"BUS-BRA"|"BUS_UC"|"CCAUI"|"DDTI") return 0 ;;
- *) return 1 ;;
- esac
- }
- prepare_split() {
- local dataset="$1"
- local root
- root="$(dataset_root "$dataset")"
- if needs_project_split "$dataset"; then
- echo "[split] ${dataset}"
- "$PYTHON" scripts/generate_project_split.py --dataset "$dataset" --root "$root" --seed "$SEED"
- fi
- }
- run_one() {
- local dataset="$1"
- local config
- config="$(config_path "$dataset")"
- prepare_split "$dataset"
- "$PYTHON" - "$config" ${EXTRA_SET_ARGS} <<'PY'
- import sys
- from lib.utils.config import apply_dotlist_overrides, load_yaml_config
- config = sys.argv[1]
- overrides = sys.argv[2:]
- cfg = apply_dotlist_overrides(load_yaml_config(config), overrides)
- print("[config]", config)
- print(
- "[effective]",
- f"dataset={cfg['dataset']['dataset_name']}",
- f"root={cfg['dataset']['root']}",
- f"image_size={cfg['dataset']['image_size']}",
- f"batch_size={cfg['train']['batch_size']}",
- f"val_batch_size={cfg['train']['val_batch_size']}",
- f"amp={cfg['train']['amp']}",
- f"lr={cfg['optimizer']['lr']}",
- f"swanlab={cfg['logging']['use_swanlab']}",
- f"swanlab_mode={cfg['logging'].get('swanlab_mode')}",
- f"swanlab_logdir={cfg['logging'].get('swanlab_logdir', 'swanlog')}",
- f"experiment={cfg['logging']['experiment_name']}",
- )
- PY
- echo "[train] ${dataset} using ${config}"
- "$PYTHON" tools/train.py --config "$config" --set ${EXTRA_SET_ARGS}
- }
- if [[ "$RUN_ALL" == "1" ]]; then
- for dataset in BUSI BUS-UCLM BUS-BRA BUS_UC CCAUI DDTI TN3K TG3K OTU_2d; do
- run_one "$dataset"
- done
- else
- run_one "$DATASET"
- fi
|