initial commit
This commit is contained in:
143
scripts/run_experiments.sh
Normal file
143
scripts/run_experiments.sh
Normal file
@@ -0,0 +1,143 @@
|
||||
#!/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 "========================================"
|
||||
Reference in New Issue
Block a user