143 lines
5.8 KiB
Bash
143 lines
5.8 KiB
Bash
#!/bin/bash
|
||
# ============================================================
|
||
# Запуск 12 экспериментов на GTA-UAV (2 варианта описаний × 6 комбинаций)
|
||
# ============================================================
|
||
#
|
||
# 6 комбинаций text_levels для каждого варианта:
|
||
# 1) level1 — только краткое описание
|
||
# 2) level2 — только пространственное
|
||
# 3) level3 — только ключевые паттерны
|
||
# 4) level1 level2 — краткое + пространственное
|
||
# 5) level1 level2 level3 — все три уровня
|
||
# 6) level1 level3 — краткое + паттерны (ablation)
|
||
#
|
||
# Использование:
|
||
# bash scripts/run_experiments.sh # все 12 экспериментов
|
||
# bash scripts/run_experiments.sh v1 # только v1 (6 экспериментов)
|
||
# bash scripts/run_experiments.sh v2 # только v2
|
||
# bash scripts/run_experiments.sh v1 3 # v1, эксперимент 3
|
||
# bash scripts/run_experiments.sh v2 1 4 # v2, эксперименты 1 и 4
|
||
# ============================================================
|
||
|
||
set -e # Остановиться при ошибке
|
||
|
||
# ====================== НАСТРОЙКИ ===========================
|
||
DATA_ROOT="/media/servml/SSD_2_2TB/datasets/cvgl_datasets/GTA-UAV-LR"
|
||
DESCRIPTIONS_v1="/media/servml/SSD_2_2TB/datasets/cvgl_datasets/GTA-UAV-LR-captions_ v1"
|
||
DESCRIPTIONS_v2="/media/servml/SSD_2_2TB/datasets/cvgl_datasets/GTA-UAV-LR-captions_v2"
|
||
DGTRS_CKPT="/media/servml/SSD_2_2TB/weights/LRSCLIP/DGTRS-CLIP-ViT-B-16.pt"
|
||
STRIPNET_CKPT="/media/servml/SSD_2_2TB/weights/stripnet_small.pth"
|
||
|
||
# Общие гиперпараметры
|
||
EPOCHS=50
|
||
BATCH_SIZE=64
|
||
MICRO_BATCH=64
|
||
LR=0.0001
|
||
OUTPUT="outputs"
|
||
# ============================================================
|
||
|
||
# Массив экспериментов: номер → уровни текста
|
||
declare -A EXPERIMENTS
|
||
EXPERIMENTS[1]="level1" # Только краткое описание
|
||
EXPERIMENTS[2]="level2" # Только пространственное
|
||
EXPERIMENTS[3]="level3" # Только ключевые паттерны
|
||
EXPERIMENTS[4]="level1 level2" # Краткое + пространственное
|
||
EXPERIMENTS[5]="level1 level2 level3" # Все три уровня
|
||
EXPERIMENTS[6]="level1 level3" # Краткое + паттерны (ablation)
|
||
|
||
# ---------- Парсинг аргументов ----------
|
||
# Определить какие версии и эксперименты запускать
|
||
VERSIONS=()
|
||
EXP_NUMS=()
|
||
|
||
if [ $# -eq 0 ]; then
|
||
# Без аргументов → все версии, все эксперименты
|
||
VERSIONS=(v1 v2)
|
||
EXP_NUMS=(1 2 3 4 5 6)
|
||
elif [ "$1" = "v1" ] || [ "$1" = "v2" ]; then
|
||
# Первый аргумент — версия
|
||
VERSIONS=("$1")
|
||
shift
|
||
if [ $# -eq 0 ]; then
|
||
EXP_NUMS=(1 2 3 4 5 6)
|
||
else
|
||
EXP_NUMS=("$@")
|
||
fi
|
||
else
|
||
# Числа без версии → обе версии, указанные эксперименты
|
||
VERSIONS=(v1 v2)
|
||
EXP_NUMS=("$@")
|
||
fi
|
||
|
||
TOTAL=$(( ${#VERSIONS[@]} * ${#EXP_NUMS[@]} ))
|
||
|
||
echo "========================================"
|
||
echo " CVGL Experiments on GTA-UAV"
|
||
echo " Epochs: $EPOCHS | Batch: $BATCH_SIZE"
|
||
echo " Versions: ${VERSIONS[*]}"
|
||
echo " Experiments: ${EXP_NUMS[*]}"
|
||
echo " Total runs: $TOTAL"
|
||
echo "========================================"
|
||
|
||
# ---------- Проверки перед запуском ----------
|
||
if [[ "$DGTRS_CKPT" == "/path/to/"* ]]; then
|
||
echo "❌ ОШИБКА: Заполни DGTRS_CKPT в скрипте!"
|
||
exit 1
|
||
fi
|
||
if [[ "$STRIPNET_CKPT" == "/path/to/"* ]]; then
|
||
echo "❌ ОШИБКА: Заполни STRIPNET_CKPT в скрипте!"
|
||
exit 1
|
||
fi
|
||
|
||
RUN_IDX=0
|
||
|
||
for VERSION in "${VERSIONS[@]}"; do
|
||
# Выбрать путь к описаниям по версии
|
||
if [ "$VERSION" = "v1" ]; then
|
||
DESCRIPTIONS="$DESCRIPTIONS_v1"
|
||
else
|
||
DESCRIPTIONS="$DESCRIPTIONS_v2"
|
||
fi
|
||
|
||
# Проверить что директория существует
|
||
if [ ! -d "$DESCRIPTIONS" ]; then
|
||
echo "⚠️ Папка описаний не найдена: $DESCRIPTIONS"
|
||
echo " Пропускаю версию $VERSION"
|
||
continue
|
||
fi
|
||
|
||
for EXP_NUM in "${EXP_NUMS[@]}"; do
|
||
LEVELS="${EXPERIMENTS[$EXP_NUM]}"
|
||
RUN_IDX=$((RUN_IDX + 1))
|
||
|
||
echo ""
|
||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
echo " [$RUN_IDX/$TOTAL] ${VERSION} / Experiment $EXP_NUM: levels=[$LEVELS]"
|
||
echo " Descriptions: $DESCRIPTIONS"
|
||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
|
||
python train.py \
|
||
--data_root "$DATA_ROOT" \
|
||
--descriptions_path "$DESCRIPTIONS" \
|
||
--text_levels $LEVELS \
|
||
--dgtrs_checkpoint "$DGTRS_CKPT" \
|
||
--stripnet_checkpoint "$STRIPNET_CKPT" \
|
||
--epochs $EPOCHS \
|
||
--batch_size $BATCH_SIZE \
|
||
--micro_batch_size $MICRO_BATCH \
|
||
--lr $LR \
|
||
--output_dir "${OUTPUT}/${VERSION}" \
|
||
--inject_mona
|
||
|
||
echo "✅ [$RUN_IDX/$TOTAL] ${VERSION} / Experiment $EXP_NUM complete"
|
||
done
|
||
done
|
||
|
||
echo ""
|
||
echo "========================================"
|
||
echo " All $TOTAL experiments complete!"
|
||
echo " Results:"
|
||
for VERSION in "${VERSIONS[@]}"; do
|
||
echo " ${VERSION}: ${OUTPUT}/${VERSION}/"
|
||
done
|
||
echo "========================================" |