commit 51085addf918e65a5fc0b121bea826a496a0aded Author: pikaliov Date: Sat May 9 12:54:27 2026 +0300 Initial commit: add docs, requirements, and prep package Co-authored-by: Cursor diff --git a/DenseUAV_Dataset_Analysis.md b/DenseUAV_Dataset_Analysis.md new file mode 100644 index 0000000..1d605d7 --- /dev/null +++ b/DenseUAV_Dataset_Analysis.md @@ -0,0 +1,210 @@ +# АНАЛИЗ ДАТАСЕТА: 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