#!/usr/bin/env bash # Optional portable retraining entry point. Inference does not require this. set -euo pipefail DATASET_CSV="${1:?Usage: $0 DATASET_CSV OUTPUT_DIR [GPU]}" OUTPUT_DIR="${2:?Usage: $0 DATASET_CSV OUTPUT_DIR [GPU]}" GPU="${3:-0}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BUNDLE="$(cd "${SCRIPT_DIR}/.." && pwd)" PYTHON="${PYTHON:-python}" SAM3_CKPT="${SAM3_CHECKPOINT:-${BUNDLE}/model/sam3_base.pt}" CUDA_VISIBLE_DEVICES="${GPU}" PYTHONNOUSERSITE=1 "${PYTHON}" -u \ "${SCRIPT_DIR}/train_sam3_decoder_segmentation.py" \ --dataset_csv "${DATASET_CSV}" \ --protocol all_public_indomain \ --output_dir "${OUTPUT_DIR}" \ --sam3_checkpoint "${SAM3_CKPT}" \ --decoder sam3_native \ --prompt_type semantic_text \ --prompt_text "${PROMPT_TEXT:-breast lesion}" \ --encoder_trainable lora \ --lora_rank 8 \ --lora_alpha 16 \ --batch_size "${BATCH_SIZE:-8}" \ --epochs "${EPOCHS:-50}" \ --patience "${PATIENCE:-10}" \ --lr 1e-4 \ --encoder_lr 1e-5 \ --use_amp \ --resume