Files
World-UAV-ds/analyze
Pikaliov 4ff36ce188 Initial import: World-UAV prepro
Add dataloaders (v1/v2), analysis scripts, and documentation for working with UAV-GeoLoc (World-UAV).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 12:44:49 +03:00
..
2026-05-09 12:44:49 +03:00

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/

Зависимости

Типично нужны:

  • numpy
  • Pillow
  • matplotlib

Дополнительно для чтения больших merge.tif может понадобиться достаточно RAM/диска.