# `analyze/` — анализ структуры UAV-GeoLoc (World-UAV) Папка содержит скрипты “dataset forensics”: они проверяют, что лежит в датасете, какие размеры/распределения, и как именно нарезаны спутниковые карты в `DB/img/`. Все скрипты рассчитаны на локальный датасет и обычно требуют изменить путь к корню датасета в константах `ROOT`/`BASE`. ## Скрипты ### `terrain_stats.py` **Задача:** собрать подробную статистику по **Terrain subset**: - количество сцен по terrain-type - количество DB кропов в сцене - количество query вариантов и кадров - размеры `merge.tif` и примерный размер кропа - диапазоны GPS из `DB/db_postion.txt` - статистика `positive.json` и `semi_positive.json` - список всех обнаруженных `height*_rot*` вариантов Запуск: ```bash python analyze/terrain_stats.py ``` Перед запуском поменяй: - `ROOT = ".../UAV-GeoLoc/Terrain"` ### `analyze_crop_scheme.py` **Задача:** восстановить схему нарезки спутника (crop_size/stride/overlap) через попиксельное сравнение: - подтверждает, что `crop_0_0.png == merge[0:crop, 0:crop]` - находит `stride_x`, `stride_y` по сопоставлению `crop_1_0.png` и `crop_0_1.png` - выводит `overlap = crop_size - stride` Ключевой вывод (по docstring): `stride = crop_size // 2` (50% overlap). Запуск: ```bash python analyze/analyze_crop_scheme.py ``` Важно: - скрипт использует `Image.MAX_IMAGE_PIXELS = None` из-за больших `merge.tif` - по умолчанию ищет сцены относительно `base = dirname(__file__)` — это может не совпадать с реальным расположением датасета. Если нужно, перепиши `patterns` под свой датасет. ### `generate_charts.py` **Задача:** сгенерировать “publication-quality” графики (png) по датасету: - сцены по странам / по terrain-type - распределение размеров кропов - размеры train/val/test сплитов (по `Index/*.txt`, если доступны) - распределение количества positives на query (по `Index/train_query.txt`) - географическое покрытие (scatter по средним lat/lon сцен) - размеры `merge.tif` (scatter) - схема query вариантов (polar) Запуск: ```bash python analyze/generate_charts.py ``` Перед запуском поменяй: - `BASE = "/.../UAV-GeoLoc"` Выход: - `CHARTS = /charts/` (создаётся автоматически) ### `generate_sample_grids.py` **Задача:** сгенерировать наглядные “grid” картинки: - query vs positive DB crop - сравнение высот (100/125/150) - сравнение поворотов (0..315) - визуализация tiling’а на кусочке `merge.tif` (пример crop_size=200, stride=100) - разнообразие terrain типов (подборка `crop_0_0.png`) Запуск: ```bash python analyze/generate_sample_grids.py ``` Перед запуском поменяй: - `BASE = "/.../UAV-GeoLoc"` Выход: - `OUT = /charts/` ## Зависимости Типично нужны: - `numpy` - `Pillow` - `matplotlib` Дополнительно для чтения больших `merge.tif` может понадобиться достаточно RAM/диска.