augmentation add

This commit is contained in:
pikaliov
2026-07-09 21:55:10 +03:00
parent 76dfca5e06
commit 557a78d600
4 changed files with 825 additions and 38 deletions

View File

@@ -17,16 +17,24 @@
# 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
#
# Сплит выбирается переменной окружения SPLIT (cross | same | both):
# SPLIT=same bash scripts/run_experiments.sh v2 5 # только same-area
# SPLIT=both bash scripts/run_experiments.sh v2 5 # cross И same (для gap)
# (по умолчанию SPLIT=cross — primary-метрика, §5.3)
# ============================================================
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"
# База на внешнем SSD (нестабильная точка монтирования SSD_2_2TB ↔ SSD_2_2TB1).
# При ремаунте переопредели: DATA_BASE=/media/servml/SSD_2_2TB bash scripts/run_experiments.sh
DATA_BASE="${DATA_BASE:-/media/servml/SSD_2_2TB1}"
DATA_ROOT="${DATA_BASE}/datasets/cvgl_datasets/GTA-UAV-LR"
DESCRIPTIONS_v1="${DATA_BASE}/datasets/cvgl_datasets/GTA-UAV-LR-captions_ v1"
DESCRIPTIONS_v2="${DATA_BASE}/datasets/cvgl_datasets/GTA-UAV-LR-captions_v2"
DGTRS_CKPT="${DATA_BASE}/weights/LRSCLIP/DGTRS-CLIP-ViT-B-16.pt"
STRIPNET_CKPT="${DATA_BASE}/weights/stripnet_small.pth"
# Общие гиперпараметры
EPOCHS=50
@@ -39,6 +47,27 @@ OUTPUT="outputs"
# 123 и 456). Переопределяется из окружения, дефолт остаётся 42:
# SEED=123 bash scripts/run_experiments.sh v2 2
SEED="${SEED:-42}"
# Протокол сплита (§5.2): cross (primary) | same (для crosssame gap) | both.
# Переопределяется из окружения:
# SPLIT=same bash scripts/run_experiments.sh v2 5
# SPLIT=both bash scripts/run_experiments.sh v2 5
SPLIT="${SPLIT:-cross}"
case "$SPLIT" in
cross) SPLITS=(cross) ;;
same) SPLITS=(same) ;;
both) SPLITS=(cross same) ;;
*) echo "❌ SPLIT должен быть cross|same|both (задано: $SPLIT)"; exit 1 ;;
esac
# Сплит → (train_meta test_meta). same-area честен только при обучении на
# same-area-train (§5.3), поэтому это отдельный прогон, а не доп. eval.
meta_for_split() {
case "$1" in
cross) echo "cross-area-drone2sate-train.json cross-area-drone2sate-test.json" ;;
same) echo "same-area-drone2sate-train.json same-area-drone2sate-test.json" ;;
esac
}
# ============================================================
# Массив экспериментов: номер → уровни текста
@@ -74,13 +103,14 @@ else
EXP_NUMS=("$@")
fi
TOTAL=$(( ${#VERSIONS[@]} * ${#EXP_NUMS[@]} ))
TOTAL=$(( ${#VERSIONS[@]} * ${#EXP_NUMS[@]} * ${#SPLITS[@]} ))
echo "========================================"
echo " CVGL Experiments on GTA-UAV"
echo " Epochs: $EPOCHS | Batch: $BATCH_SIZE | Seed: $SEED"
echo " Versions: ${VERSIONS[*]}"
echo " Experiments: ${EXP_NUMS[*]}"
echo " Splits: ${SPLITS[*]}"
echo " Total runs: $TOTAL"
echo "========================================"
@@ -113,29 +143,36 @@ for VERSION in "${VERSIONS[@]}"; do
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 "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
for SPLIT_NAME in "${SPLITS[@]}"; do
read -r TRAIN_META TEST_META <<< "$(meta_for_split "$SPLIT_NAME")"
RUN_IDX=$((RUN_IDX + 1))
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 \
--seed $SEED \
--output_dir "${OUTPUT}/${VERSION}/seed${SEED}" \
--inject_mona
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " [$RUN_IDX/$TOTAL] ${VERSION} / Exp $EXP_NUM / ${SPLIT_NAME}-area: levels=[$LEVELS]"
echo " Descriptions: $DESCRIPTIONS"
echo " Split: train=$TRAIN_META test=$TEST_META"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ [$RUN_IDX/$TOTAL] ${VERSION} / Experiment $EXP_NUM complete"
python train.py \
--data_root "$DATA_ROOT" \
--descriptions_path "$DESCRIPTIONS" \
--text_levels $LEVELS \
--train_meta "$TRAIN_META" \
--test_meta "$TEST_META" \
--dgtrs_checkpoint "$DGTRS_CKPT" \
--stripnet_checkpoint "$STRIPNET_CKPT" \
--epochs $EPOCHS \
--batch_size $BATCH_SIZE \
--micro_batch_size $MICRO_BATCH \
--lr $LR \
--seed $SEED \
--output_dir "${OUTPUT}/${VERSION}/seed${SEED}" \
--inject_mona
echo "✅ [$RUN_IDX/$TOTAL] ${VERSION} / Exp $EXP_NUM / ${SPLIT_NAME}-area complete"
done
done
done