Files
Dense-UAV-prepare/DenseUAV_Dataset_Analysis.md
2026-05-09 12:54:27 +03:00

211 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# АНАЛИЗ ДАТАСЕТА: 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** (метры) или атрибут высоты точки съёмки/привязки (требует подтверждения по статье; в файле присутствуют значения около 9095 для приведённых строк).
### 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 из статьи).