211 lines
11 KiB
Markdown
211 lines
11 KiB
Markdown
# АНАЛИЗ ДАТАСЕТА: 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`
|
||
|
||
Формат строк (эмпирически, по первым строкам):
|
||
|
||
```
|
||
<relative_path> E<longitude> N<latitude> <height>
|
||
```
|
||
|
||
Пример:
|
||
- `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/<ID>/H*.JPG <label> train/satellite/<ID>/H*.tif ...`
|
||
- сформировать `train_db.txt` как список всех satellite изображений (или только “не old” версии, если так решено).
|
||
|
||
При необходимости добавить “позиционирование”:
|
||
- использовать координаты из `Dense_GPS_*.txt` и определить расстояние между предсказанным top-K и GT (в логике SDM из статьи).
|
||
|