# АНАЛИЗ ДАТАСЕТА: DenseUAV **Дата анализа:** 2026-05-09 **Метод:** GitHub-репозиторий + статья arXiv + эмпирическая проверка локальных файлов на диске **Путь к данным (локально):** `/media/servml/SSD_2_2TB/datasets/cvgl_datasets/DenseUAV` Источники: - Код/описание и структура: [Dmmm1997/DenseUAV](https://github.com/Dmmm1997/DenseUAV) - Статья: [arXiv:2201.09201](https://arxiv.org/abs/2201.09201) --- ## 1. МЕТАДАННЫЕ | Поле | Значение | |------|----------| | Полное название | Vision-Based UAV Self-Positioning in Low-Altitude Urban Environments | | Название датасета | **DenseUAV** | | Авторы | Ming Dai, Enhui Zheng, Zhenhua Feng, Jiedong Zhuang, Wankou Yang | | Год, Venue | arXiv: 2022 (v1), 2023 (v2); IEEE Transactions on Image Processing (TIP), 2024 (по репозиторию) | | Задача | **UAV self-positioning / cross-view geo-localization**: retrieval “UAV-view query → satellite-view gallery” | | Модальности | UAV-view (drone) + Satellite-view (overhead) | | Тип данных | Реальные городские университетские кампусы (14 кампусов; по описанию из репозитория) | | Лицензия | В репозитории DenseUAV указан Apache-2.0 для кода; лицензия на данные явно не подтверждена в локальной копии (требует проверки первоисточника) | | Объём (локально, эмпирически) | **~16 GB** (train ~8.8 GB, test ~7.0 GB) | --- ## 2. ОБЩАЯ СТАТИСТИКА (из репозитория и проверено по локальным файлам) ### 2.1. Сводка по разбиениям | Subset | UAV-view | Satellite-view | Classes/IDs | Кампусы (universities) | |--------|----------:|---------------:|------------:|------------------------:| | Training | **6,768** | **13,536** | **2,256** | 10 | | Query (test) | **2,331** | **4,662** | **777** | 4 | | Gallery (test) | **9,099** | **18,198** | **3,033** | 14 | Примечания по локальной копии: - В `train/drone/` и `train/satellite/` присутствует **2256** папок-ID, что совпадает с числом training classes. - В `test/gallery_satellite/` присутствует **3033** папок-ID (gallery classes). - В сумме по папкам-ID локальная копия покрывает **3033** уникальных ID (объединение train и test gallery), что согласуется с таблицей “Gallery Classes = 3033”. ### 2.2. Размеры на диске (локально) | Раздел | Объём | |--------|------:| | DenseUAV (всё) | **~16 GB** | | `train/` | ~8.8 GB | | `test/` | ~7.0 GB | --- ## 3. ПОСТАНОВКА ЗАДАЧИ (как используется датасет) DenseUAV предназначен для **самопозиционирования БПЛА** по изображению “вид сверху вниз”: - **Query:** UAV-view (дроновое изображение). - **Gallery:** набор satellite-view изображений (обычно несколько высот/вариантов на тот же ID). - **Цель:** найти правильный ID (и/или ближайший satellite-кадр) по embedding similarity. В статье дополнительно вводятся метрики, оценивающие не только retrieval, но и аспект позиционирования (см. раздел 8). --- ## 4. СТРУКТУРА ДАННЫХ (локально) Эмпирически наблюдаемая структура: ``` DenseUAV/ ├── Dense_GPS_ALL.txt ├── Dense_GPS_train.txt ├── Dense_GPS_test.txt ├── train/ │ ├── drone/ │ │ └── 000001/ │ │ ├── H80.JPG │ │ ├── H90.JPG │ │ └── H100.JPG │ └── satellite/ │ └── 000001/ │ ├── H80.tif │ ├── H80_old.tif │ ├── H90.tif │ ├── H90_old.tif │ ├── H100.tif │ └── H100_old.tif └── test/ ├── query_drone/ │ └── 002256/ │ ├── H80.JPG │ ├── H90.JPG │ └── H100.JPG └── gallery_satellite/ └── 000001/ ├── H80.tif ├── H80_old.tif ├── H90.tif ├── H90_old.tif ├── H100.tif └── H100_old.tif ``` Наблюдения: - Для каждого ID в drone-части лежит **3 изображения**: `H80.JPG`, `H90.JPG`, `H100.JPG` (высоты/варианты). - Для каждого ID в satellite-части лежит **6 GeoTIFF**: текущие `H80/H90/H100.tif` + версии `*_old.tif` (по именам файлов — альтернативная/предыдущая спутниковая версия). --- ## 5. АННОТАЦИИ И МЕТАДАННЫЕ ### 5.1. GPS-файлы В локальной копии присутствуют: - `Dense_GPS_ALL.txt` - `Dense_GPS_train.txt` - `Dense_GPS_test.txt` Формат строк (эмпирически, по первым строкам): ``` E N ``` Пример: - `train/satellite/000001/H80.tif E120.38776294444445 N30.32413311111111 94.761` Интерпретация: - **longitude** задан как `E...` - **latitude** задан как `N...` - последнее поле похоже на **высоту/altitude** (метры) или атрибут высоты точки съёмки/привязки (требует подтверждения по статье; в файле присутствуют значения около 90–95 для приведённых строк). ### 5.2. Явные пары “query→positive” В текущей локальной структуре (как она лежит на диске) отсутствуют отдельные файлы вида `positive.json`/`semi_positive.json` (как в некоторых patch-based CVGL датасетах). Здесь соответствие задаётся через: - общий **ID (папка)** — как “класс”, - и, вероятно, через GPS-метаданные для оценки “позиционирования” (в терминах статьи). --- ## 6. ОРИГИНАЛЬНЫЙ SPLIT И КЛАССЫ По описанию из репозитория: - train включает данные с **10** кампусов, - test (query) включает **4** кампуса, - gallery охватывает **14** кампусов. Практически это означает: - **Gallery** больше и разнообразнее (3033 классов/ID), чем **Query** (777 классов/ID). - retrieval оценивается как поиск правильного ID в большой галерее (и/или правильного satellite-вида для данного query). --- ## 7. ОСОБЕННОСТИ И ПЛЮСЫ/МИНУСЫ (для выбора датасета) ### 7.1. Сильные стороны - **Плотная съёмка** и ориентирование на задачу self-positioning (в отличие от “объектной” UAV geo-localization). - **Cross-view** (UAV↔satellite) с несколькими вариантами высоты (`H80/H90/H100`). - **Наличие GPS** в явном виде для спутниковых изображений (и/или для части данных), что помогает считать метрики в метрах/геоошибку. ### 7.2. Ограничения / вопросы к воспроизводимости - **Лицензия данных**: в репозитории явно указана Apache-2.0 для кода, но лицензионный статус именно датасета нужно подтвердить по первоисточнику/странице распространения. - **Что означает поле “height” в GPS txt** (последнее число) — требует сверки с текстом статьи/документацией. - Наличие `*_old.tif` подразумевает разные версии спутникового вида (может быть полезно как domain shift, но важно понять смысл: “старые тайлы”, другой рендер, другой год и т.п.). --- ## 8. ПРОТОКОЛ ОЦЕНКИ (по статье/репозиторию) Из репозитория: - для оценки retrieval используются **Recall@K** (типично \(K \in \{1,5,10\}\)). - для оценки позиционирования используется метрика **SDM@K** (введена в статье; отражает “насколько близко по координатам” находятся top-K результаты). Команды/скрипты (из репозитория) для baseline: - обучение: `train.py` (через `train_test_local.sh`) - тест: `test.py` - Recall: `evaluate_gpu.py` - SDM: `evaluateDistance.py` --- ## 9. КЛЮЧЕВЫЕ ЧИСЛА ДЛЯ ЦИТИРОВАНИЯ | Метрика | Значение | |---------|----------| | Train UAV-view | **6,768** | | Train Satellite-view | **13,536** | | Test Query UAV-view | **2,331** | | Test Gallery Satellite-view | **18,198** | | Classes (train) | **2,256** | | Classes (query) | **777** | | Classes (gallery) | **3,033** | | Кампусы | **14** (в сумме, по описанию из репозитория) | | Объём на диске (локально) | **~16 GB** | | Варианты высоты (по именам файлов) | **3**: `H80`, `H90`, `H100` | --- ## 10. ЧТО НУЖНО ДЛЯ ВАШЕГО PIPELINE (если приводить к “UAV-GeoLoc style”) Если ваши модели/даталоадеры ожидают формат “query list + db list + positives”, то для DenseUAV минимально можно: - трактовать **ID как label/class** (классификация/metric learning), - сформировать `train_query.txt` как строки вида: `train/drone//H*.JPG