Add dataloaders (v1/v2), analysis scripts, and documentation for working with UAV-GeoLoc (World-UAV). Co-authored-by: Cursor <cursoragent@cursor.com>
3.9 KiB
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*вариантов
Запуск:
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).
Запуск:
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)
Запуск:
python analyze/generate_charts.py
Перед запуском поменяй:
BASE = "/.../UAV-GeoLoc"
Выход:
CHARTS = <BASE>/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)
Запуск:
python analyze/generate_sample_grids.py
Перед запуском поменяй:
BASE = "/.../UAV-GeoLoc"
Выход:
OUT = <BASE>/charts/
Зависимости
Типично нужны:
numpyPillowmatplotlib
Дополнительно для чтения больших merge.tif может понадобиться достаточно RAM/диска.