Add generic entry point for arbitrary RGB folders/single images

scripts/run_folder.py annotates any folder or single image with the same
depth/edges/segmentation/chmv2 -> safetensors pipeline used by the dataset
scripts, without World-UAV-specific scene/dir filters. run_pipeline() gains
an optional records= parameter to bypass discovery for explicit inputs.

Resume now also recognizes modalities already present in a consolidated
.safetensors file, so a save_vis=False run can be resumed without redoing
GPU stages. --no-vis + --no-safetensors together is rejected instead of
silently running inference with no output.

psutil made optional in profiler.py (CPU-core fallback via os.cpu_count())
since it was missing from the local test venv, unblocking 7 pre-existing
tests unrelated to this change.
This commit is contained in:
2026-07-11 18:36:53 +03:00
parent 95f41a4401
commit 467e5fc976
6 changed files with 641 additions and 28 deletions

View File

@@ -30,10 +30,28 @@ python scripts/run_uav_visloc.py
# GTA-UAV-LR
python scripts/run_gta_uav.py
# Тесты (149 шт, без GPU)
# Тесты (без GPU)
python -m pytest src/tests/ -v
```
### Произвольная папка / одно изображение
Универсальная точка входа без датасет-специфичных путей — `scripts/run_folder.py`. Принимает папку с RGB-изображениями (рекурсивный обход, относительные пути сохраняются в выходном layout) или одиночный файл (`.png/.jpg/.jpeg/.bmp`):
```bash
# Папка: выход по умолчанию — сиблинг <input>-aug
python scripts/run_folder.py /path/to/images
# Одно изображение: выход по умолчанию — <родитель>-aug
python scripts/run_folder.py /path/to/photo.jpg
# Явный выход, только depth+edges, без PNG-визуализаций
python scripts/run_folder.py /path/to/images --output /path/to/out \
--stages depth edges --no-vis
```
Дефолты: все 4 стадии, `image_size=256`, unified 17 классов (`threshold=0.15`), dark-water fix включён, `.safetensors` консолидация включена (`--no-safetensors` для отключения), resume включён. GTA-специфичная переклассификация wetland выключена (включается флагом `--wetland-reclassify`). `--query-image-size` актуален только если в папке есть `drone/`/`query/`-поддиректории.
## Структура проекта
```
@@ -77,6 +95,7 @@ python -m pytest src/tests/ -v
│ ├── seg_classes.py # UNIFIED_PROMPTS — 17 классов (единый источник)
│ ├── run_uav_visloc.py # Запуск для UAV_VisLoc
│ ├── run_gta_uav.py # Запуск для GTA-UAV-LR
│ ├── run_folder.py # Произвольная папка / одно изображение
│ └── migrate_layout.py # Миграция со старого prefix-формата
└── docs/
├── segmentation_class_analysis.md # Анализ классов сегментации (11 классов)