Architecture v2: - Query branch: drone + text -> GatedFusion -> proj -> query_emb - Gallery branch: satellite -> proj -> gallery_emb - Single InfoNCE loss (asymmetric 0.6/0.4) - GatedFusion: learnable gated addition (sigma(alpha)*img + (1-sigma(alpha))*text) - Baseline mode: gate=1.0 (text ignored) Dataset: - UAV-GeoLoc loader with template captions from path metadata - 27 terrain types with predefined features - Random positive crop sampling per epoch Configs: balanced (gate=0.7), baseline (no text), text_heavy (gate=0.3) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
379 lines
18 KiB
Markdown
379 lines
18 KiB
Markdown
# АНАЛИЗ ДАТАСЕТА: UAV-VisLoc
|
||
|
||
**Дата анализа:** 2026-04-17
|
||
**Метод:** Эмпирический анализ данных на диске + статья arXiv:2405.11936 + GitHub-репозиторий авторов
|
||
**Путь к данным:** `/home/servml/Документы/datasets/UAV_VisLoc_dataset/`
|
||
|
||
---
|
||
|
||
## 1. МЕТАДАННЫЕ
|
||
|
||
| Поле | Значение |
|
||
|------|----------|
|
||
| Полное название | UAV-VisLoc: A Large-scale Dataset for UAV Visual Localization |
|
||
| Авторы | Wenjia Xu, Yaxuan Yao, Jiaqi Cao, Zhiwei Wei, Chunbo Liu, Jiuniu Wang, Mugen Peng (BUPT + CAS + CityU HK) |
|
||
| Год, Venue | 2024, arXiv:2405.11936 [cs.CV] |
|
||
| Код | https://github.com/IntelliSensing/UAV-VisLoc (только README + ссылки) |
|
||
| Данные | Google Drive / Baidu Net Disk (16.4 GB) |
|
||
| Общий объём на диске | ~16.4 GB |
|
||
|
||
---
|
||
|
||
## 2. ОБЩАЯ СТАТИСТИКА
|
||
|
||
### 2.1. Сводка
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Drone-изображений | **6 774** |
|
||
| Спутниковых карт | **11** (+ маршрут 09 разбит на 4 тайла) |
|
||
| Маршрутов (flights) | 11 |
|
||
| Регионов (Китай) | 7 провинций/районов |
|
||
| Типов БПЛА | 2 (multi-rotor + fixed-wing) |
|
||
| Сезоны съёмки | 2 (лето, осень) |
|
||
| Временной охват | 2016–2023 |
|
||
|
||
### 2.2. Разбиение train / test
|
||
|
||
| Split | Изображений | Доля |
|
||
|-------|-------------|------|
|
||
| Train | 5 080 | 75.0% |
|
||
| Test | 1 694 | 25.0% |
|
||
| **Итого** | **6 774** | 100% |
|
||
|
||
Разбиение — **случайное по изображениям** внутри каждого маршрута (не по маршрутам!):
|
||
|
||
| Маршрут | Всего | Train | Test | Train% |
|
||
|---------|-------|-------|------|--------|
|
||
| 01 | 817 | 620 | 197 | 75.9% |
|
||
| 02 | 1 071 | 829 | 242 | 77.4% |
|
||
| 03 | 768 | 566 | 202 | 73.7% |
|
||
| 04 | 738 | 543 | 195 | 73.6% |
|
||
| 05 | 473 | 345 | 128 | 72.9% |
|
||
| 06 | 344 | 261 | 83 | 75.9% |
|
||
| 07 | 30 | 20 | 10 | 66.7% |
|
||
| 08 | 1 033 | 796 | 237 | 77.1% |
|
||
| 09 | 766 | 551 | 215 | 71.9% |
|
||
| 10 | 144 | 99 | 45 | 68.8% |
|
||
| 11 | 590 | 450 | 140 | 76.3% |
|
||
|
||
---
|
||
|
||
## 3. МАРШРУТЫ (FLIGHTS)
|
||
|
||
### 3.1. Детализация по маршрутам
|
||
|
||
| Маршрут | Регион | Тип БПЛА | Drone (px) | Высота (м) | Heading (Phi) | Спутник (px) | Дата drone | Дата sat |
|
||
|---------|--------|----------|------------|------------|---------------|-------------|------------|----------|
|
||
| 01 | Changjiang-20 | multi-rotor | 3976x2652 | ~405 | 165° | 9774x26762 | 2018-09 | 2023-11 |
|
||
| 02 | Changjiang-23 | multi-rotor | 3976x2652 | ~405 | 5° | 11482x34291 | 2018-09 | 2022-09 |
|
||
| 03 | Taizhou-1 | multi-rotor | 3976x2652 | ~466 | -40° | 35092x24308 | 2018-10 | 2021-04 |
|
||
| 04 | Taizhou-6 | multi-rotor | 3976x2652 | ~542 | 170° | 18093x38408 | 2018-10 | 2023-03 |
|
||
| 05 | Yunnan | fixed-wing | 3000x2000 | ~2313 | 100° | 9394x6144 | 2016-06 | 2022-03 |
|
||
| 06 | Zhuxi | multi-rotor | 3976x2652 | ~840 | — | 8082x9780 | — | — |
|
||
| 07 | Donghuayuan | fixed-wing | 3000x2000 | ~688 | -1.5° | 3000x170 | 2018-07 | 2023-06 |
|
||
| 08 | Huzhou-3 | multi-rotor | 3976x2652 | ~551 | 100° | 43421x16294 | 2019-06 | 2023-07 |
|
||
| 09 | Huzhou-6 | multi-rotor | 3976x2652 | ~546 | -50° | 44800x33280* | 2019-06 | 2024-01 |
|
||
| 10 | Huailai | fixed-wing | 3000x2000 | ~772 | 170° | 6593x5077 | 2018-09 | 2023-06 |
|
||
| 11 | Shandan | multi-rotor | 3976x2652 | ~2572 | 90° | 29592x16582 | 2023-10 | 2021-03 |
|
||
|
||
\* Маршрут 09: спутник разбит на 4 тайла (satellite09_01-01.tif, 01-02, 02-01, 02-02). Суммарный размер: 44800x33280 px.
|
||
|
||
### 3.2. Географический охват
|
||
|
||
| Регион | Маршруты | Провинция | Ландшафт |
|
||
|--------|----------|-----------|----------|
|
||
| Changjiang | 01, 02 | Цзянси | Города, деревни, фермы, реки (долина Янцзы) |
|
||
| Taizhou | 03, 04 | Цзянсу | Города, фермы, каналы, реки |
|
||
| Yunnan | 05 | Юньнань | Горы, леса, холмы (высокогорье) |
|
||
| Zhuxi | 06 | Хубэй | Горы, леса, река |
|
||
| Donghuayuan | 07 | Хэбэй | Равнина (очень узкий маршрут) |
|
||
| Huzhou | 08, 09 | Чжэцзян | Города, озеро Тайху, фермы |
|
||
| Huailai | 10 | Хэбэй | Равнина, холмы |
|
||
| Shandan | 11 | Ганьсу | Пустыня, степь (коридор Хэси) |
|
||
|
||
**Координатный охват:**
|
||
- Широта: от 24.65°N (Юньнань) до 40.36°N (Хэбэй) — разброс ~15.7°
|
||
- Долгота: от 101.01°E (Ганьсу) до 120.25°E (Чжэцзян) — разброс ~19.2°
|
||
- Всё в пределах Китая, но с разнообразным ландшафтом
|
||
|
||
### 3.3. Типы БПЛА
|
||
|
||
| Тип | Маршруты | Разрешение | Высота полёта | Кол-во изображений |
|
||
|-----|----------|-----------|---------------|-------------------|
|
||
| Multi-rotor | 01, 02, 03, 04, 06, 08, 09, 11 | 3976x2652 | 405–2572 м | 6 127 (90.4%) |
|
||
| Fixed-wing | 05, 07, 10 | 3000x2000 | 688–2313 м | 647 (9.6%) |
|
||
|
||
---
|
||
|
||
## 4. ИСТОЧНИКИ ИЗОБРАЖЕНИЙ
|
||
|
||
### 4.1. Дроновые виды (query)
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Платформа | **Реальные БПЛА** (не синтетика!) |
|
||
| Тип съёмки | RGB, ground-down view (камера вертикально вниз) |
|
||
| Разрешение кадров | 3976x2652 (multi-rotor) / 3000x2000 (fixed-wing) |
|
||
| GSD (drone) | 0.1–0.2 м/пиксель (из README); расчётное: 15–97 см/px в зависимости от высоты |
|
||
| Высоты полёта | от 405 м до 2572 м |
|
||
| Heading angle | Phi1 (высокая уверенность), Phi2 (низкая уверенность) |
|
||
| Pose данные | Omega (pitch), Kappa (roll), Phi1/Phi2 (yaw) |
|
||
| Формат | JPEG |
|
||
|
||
### 4.2. Спутниковые карты (gallery / DB)
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Платформа | Google Earth |
|
||
| Формат | GeoTIFF (.tif) |
|
||
| GSD (спутник) | **0.3 м/пиксель** (из статьи) |
|
||
| Размеры карт | от 3000x170 до 43421x38408 px |
|
||
| Кропы/патчи | **Отсутствуют** — авторы предоставляют только целые карты |
|
||
|
||
### 4.3. Временной разрыв drone/satellite
|
||
|
||
| Маршрут | Drone | Satellite | Разрыв |
|
||
|---------|-------|-----------|--------|
|
||
| 01 | 2018-09 | 2023-11 | **5 лет** |
|
||
| 03 | 2018-10 | 2021-04 | 2.5 года |
|
||
| 08 | 2019-06 | 2023-07 | 4 года |
|
||
| 11 | 2023-10 | 2021-03 | **-2.5 года** (спутник старше!) |
|
||
|
||
Временной разрыв создаёт дополнительную сложность (изменения застройки, сезонные различия).
|
||
|
||
---
|
||
|
||
## 5. ПАРАМЕТРЫ СЪЁМКИ ДРОНОВ
|
||
|
||
### 5.1. Высоты полёта
|
||
|
||
| Диапазон высот | Маршруты | Тип | Кол-во изображений |
|
||
|----------------|----------|-----|-------------------|
|
||
| 400–410 м | 01, 02 | multi-rotor | 1 888 |
|
||
| 460–550 м | 03, 04, 08, 09 | multi-rotor | 3 305 |
|
||
| 688–840 м | 06, 07, 10 | mixed | 518 |
|
||
| 2300–2575 м | 05, 11 | mixed | 1 063 |
|
||
|
||
### 5.2. Наземное покрытие drone-кадра (оценка, FOV ~84°)
|
||
|
||
| Высота | Footprint (multi-rotor 3976x2652) | Footprint (fixed-wing 3000x2000) |
|
||
|--------|-----------------------------------|----------------------------------|
|
||
| ~405 м | ~608 x 405 м | — |
|
||
| ~466 м | ~699 x 466 м | — |
|
||
| ~551 м | ~826 x 551 м | — |
|
||
| ~688 м | — | ~1031 x 688 м |
|
||
| ~840 м | ~1260 x 840 м | — |
|
||
| ~2313 м | — | ~3469 x 2313 м |
|
||
| ~2572 м | ~3858 x 2572 м | — |
|
||
|
||
### 5.3. Расстояние между кадрами
|
||
|
||
| Маршрут | Avg spacing | Высота | Overlap (оценка) |
|
||
|---------|-------------|--------|------------------|
|
||
| 01 | 80.7 м | 405 м | ~87% (по ширине footprint) |
|
||
| 05 | 62.7 м | 2313 м | ~98% |
|
||
| 07 | 23.6 м | 688 м | ~98% |
|
||
| 08 | 99.7 м | 551 м | ~88% |
|
||
| 11 | 142.9 м | 2572 м | ~96% |
|
||
|
||
Высокий overlap (87–98%) типичен для аэрофотосъёмки.
|
||
|
||
---
|
||
|
||
## 6. ПРОСТРАНСТВЕННАЯ НАРЕЗКА СПУТНИКОВЫХ ПАТЧЕЙ
|
||
|
||
### 6.1. Текущее состояние
|
||
|
||
**В оригинальном датасете кропы/патчи НЕ предоставлены.** Авторы дают только целые спутниковые карты. Задача определена как "найти координаты на большой карте", а не как retrieval по патчам.
|
||
|
||
### 6.2. Планируемая нарезка (по аналогии с UAV-GeoLoc)
|
||
|
||
Для совместимости с pipeline на основе UAV-GeoLoc, планируется нарезка спутниковых карт на патчи.
|
||
|
||
**Параметры нарезки:**
|
||
|
||
| Параметр | Значение | Обоснование |
|
||
|----------|----------|-------------|
|
||
| Размер кропа | **512x512 px** | ~154x154 м на земле (при GSD 0.3 м/px) |
|
||
| Stride | **256 px** | 50% overlap (как в UAV-GeoLoc) |
|
||
| Именование | `crop_X_Y.png` | X по ширине (col), Y по высоте (row) |
|
||
| Позиция в карте | `sat[Y*stride : Y*stride+crop, X*stride : X*stride+crop]` | — |
|
||
| Финальный размер (модель) | **256x256 px** | Resize для входа в модель |
|
||
|
||
### 6.3. Ожидаемое количество кропов
|
||
|
||
| Маршрут | Размер карты | Кропов (cols x rows) | Итого | Примечание |
|
||
|---------|-------------|---------------------|-------|------------|
|
||
| 01 | 9774x26762 | 37 x 103 | 3 811 | OK |
|
||
| 02 | 11482x34291 | 43 x 132 | 5 676 | OK |
|
||
| 03 | 35092x24308 | 136 x 93 | 12 648 | OK |
|
||
| 04 | 18093x38408 | 69 x 149 | 10 281 | OK |
|
||
| 05 | 9394x6144 | 35 x 23 | 805 | OK |
|
||
| 06 | 8082x9780 | 30 x 37 | 1 110 | OK |
|
||
| 07 | 3000x170 | — | — | **Исключён** (высота 170 px < 512) |
|
||
| 08 | 43421x16294 | 168 x 62 | 10 416 | OK |
|
||
| 09 | 44800x33280 | 174 x 129 | 22 446 | Нужна сшивка 4 тайлов |
|
||
| 10 | 6593x5077 | 24 x 18 | 432 | OK |
|
||
| 11 | 29592x16582 | 114 x 63 | 7 182 | OK |
|
||
| **Итого** | | | **~74 807** | Без маршрута 07 |
|
||
|
||
### 6.4. Наземное покрытие одного кропа
|
||
|
||
При GSD спутника = 0.3 м/px:
|
||
- **Кроп 512x512 px** покрывает **~154 x 154 м** на земле
|
||
- Это вписывается в footprint drone-кадра на любой высоте (405+ м)
|
||
- Stride 256 px = 76.8 м на земле
|
||
|
||
### 6.5. Проблемные маршруты
|
||
|
||
| Маршрут | Проблема | Решение |
|
||
|---------|----------|---------|
|
||
| 07 | Спутник 3000x170 px — слишком узкий | Исключить или кропы 170x170 |
|
||
| 09 | Спутник разбит на 4 тайла | Сшить в одну карту перед нарезкой |
|
||
|
||
---
|
||
|
||
## 7. АННОТАЦИИ И МЕТАДАННЫЕ
|
||
|
||
### 7.1. Файлы аннотаций
|
||
|
||
| Файл | Содержание | Формат |
|
||
|------|-----------|--------|
|
||
| `XX.csv` | GPS + pose каждого drone-кадра | CSV: num, filename, date, lat, lon, height, Omega, Kappa, Phi1, Phi2 |
|
||
| `satellite_ coordinates_range.csv` | GPS-bbox каждой спутниковой карты | CSV: mapname, LT_lat, LT_lon, RB_lat, RB_lon, region |
|
||
| `visloc_train.csv` | Train split | TSV: filename, height, Omega, Kappa, Phi1, Phi2 |
|
||
| `visloc_test.csv` | Test split | TSV: filename, height, Omega, Kappa, Phi1, Phi2 |
|
||
|
||
### 7.2. Типы аннотаций
|
||
|
||
| Тип аннотации | Наличие | Комментарий |
|
||
|---------------|---------|-------------|
|
||
| GPS-координаты (drone) | **Да** | Из бортового GNSS, точность ~1-3 м |
|
||
| GPS-bbox (satellite) | **Да** | Углы спутниковой карты |
|
||
| Высота полёта | **Да** | В метрах |
|
||
| Heading angle (yaw) | **Да** | Phi1 (надёжный) и Phi2 (менее надёжный) |
|
||
| Pitch / Roll | **Да** | Omega (pitch), Kappa (roll) |
|
||
| Дата съёмки | **Да** | Для drone-кадров |
|
||
| Positive/Semi-positive pairs | **Нет** | Отсутствуют — нужно генерировать |
|
||
| Кропы спутника (DB) | **Нет** | Отсутствуют — нужно нарезать |
|
||
| Depth maps | Нет | — |
|
||
| Segmentation masks | Нет | — |
|
||
| Bounding boxes | Нет | — |
|
||
| Семантические метки | Нет | Только implicit через регион |
|
||
|
||
---
|
||
|
||
## 8. СРАВНЕНИЕ С UAV-GeoLoc
|
||
|
||
| Параметр | UAV-VisLoc | UAV-GeoLoc |
|
||
|----------|-----------|-----------|
|
||
| Drone-изображения | **Реальные** БПЛА | **Синтетика** (Google Earth Studio 3D) |
|
||
| Кол-во drone | 6 774 | 652 744 |
|
||
| Кол-во спутниковых кропов | 0 (нужно генерировать) | 274 683 |
|
||
| Размер drone | 3976x2652 / 3000x2000 | 512x512 |
|
||
| GSD drone | 0.1–0.97 м/px (зависит от высоты) | ~0.5 м/px (синтетика) |
|
||
| GSD satellite | 0.3 м/px (Google Earth) | Варьируется |
|
||
| Высоты полёта | 405–2572 м (реальные) | 100, 125, 150 м (синтетика) |
|
||
| Heading angles | Произвольные (реальный полёт) | Дискретные: 8 x 45° |
|
||
| Регионы | 7 провинций Китая | 11 стран, 6 континентов |
|
||
| Сцен | 11 маршрутов | 372 сцены |
|
||
| Train/test split | По изображениям (~75/25) | По сценам (140/40/20) |
|
||
| Positive pairs | Нет (нужно по GPS) | Есть (positive.json) |
|
||
| Semi-positive pairs | Нет | Есть (semi_positive.json) |
|
||
| Temporal gap | 2–5 лет | Нет (одновременно) |
|
||
| Лицензия | Не указана | CC BY-NC 4.0 |
|
||
|
||
### Ключевые отличия:
|
||
1. **Реальные vs синтетические** — UAV-VisLoc содержит реальные фотографии, что даёт реалистичные артефакты (освещение, шум, blur), но меньше контроля
|
||
2. **Масштаб** — UAV-GeoLoc на 2 порядка больше по количеству изображений
|
||
3. **Пары не предоставлены** — для UAV-VisLoc нужно самостоятельно сопоставить drone GPS с координатами кропов
|
||
4. **Вариативность высот** — гораздо шире (400–2600 м vs 100–150 м)
|
||
5. **Temporal gap** — drone и satellite сняты в разные годы, что усложняет matching
|
||
|
||
---
|
||
|
||
## 9. ПЛАН ГЕНЕРАЦИИ КРОПОВ И ПАР
|
||
|
||
### 9.1. Pipeline
|
||
|
||
```
|
||
satellite.tif + satellite_coordinates_range.csv
|
||
│
|
||
▼
|
||
[1] Нарезка кропов (512x512, stride 256)
|
||
│
|
||
▼
|
||
[2] Вычисление GPS центра каждого кропа
|
||
│ (из bbox карты + позиция кропа в grid)
|
||
▼
|
||
[3] Для каждого drone-кадра:
|
||
│ — Найти кроп с минимальным GPS-расстоянием → positive
|
||
│ — Найти кропы в радиусе R → semi-positives
|
||
▼
|
||
[4] Генерация positive.json, semi_positive.json, db_postion.txt
|
||
│
|
||
▼
|
||
[5] Генерация Index файлов (train_query.txt, train_db.txt, ...)
|
||
│
|
||
▼
|
||
[6] Resize drone → 256x256, кропов → 256x256
|
||
```
|
||
|
||
### 9.2. Matching drone → crop
|
||
|
||
GPS центр кропа `crop_X_Y.png` вычисляется как:
|
||
```
|
||
crop_center_lon = LT_lon + (X * stride + crop_size/2) * (RB_lon - LT_lon) / sat_width
|
||
crop_center_lat = LT_lat + (Y * stride + crop_size/2) * (RB_lat - LT_lat) / sat_height
|
||
```
|
||
|
||
Positive match: кроп с минимальным евклидовым расстоянием до GPS drone-кадра.
|
||
Semi-positive: все кропы в радиусе 1 stride (256 px = ~77 м) от positive.
|
||
|
||
---
|
||
|
||
## 10. ПОЛНАЯ СТРУКТУРА ДАННЫХ
|
||
|
||
```
|
||
UAV_VisLoc_dataset/ # ~16.4 GB
|
||
├── satellite_ coordinates_range.csv # GPS-bbox всех 11 карт
|
||
├── visloc_train.csv # 5080 train drone images (TSV)
|
||
├── visloc_test.csv # 1694 test drone images (TSV)
|
||
├── README_dataset.txt # Описание датасета
|
||
│
|
||
├── 01/ # Changjiang-20, multi-rotor, 817 imgs
|
||
│ ├── drone/
|
||
│ │ ├── 01_0001.JPG # 3976x2652
|
||
│ │ ├── 01_0002.JPG
|
||
│ │ └── ...
|
||
│ ├── satellite01.tif # 9774x26762
|
||
│ └── 01.csv # num,filename,date,lat,lon,height,...
|
||
│
|
||
├── 02/ ... 06/ # Аналогичная структура
|
||
│
|
||
├── 07/ # Donghuayuan, fixed-wing, 30 imgs
|
||
│ ├── drone/
|
||
│ │ └── 07_XXXX.JPG # 3000x2000
|
||
│ ├── satellite07.tif # 3000x170 (!)
|
||
│ └── 07.csv
|
||
│
|
||
├── 08/ # Huzhou-3, multi-rotor, 1033 imgs
|
||
│
|
||
├── 09/ # Huzhou-6, multi-rotor, 766 imgs
|
||
│ ├── drone/
|
||
│ ├── satellite09_01-01.tif # 25600x25600 ─┐
|
||
│ ├── satellite09_01-02.tif # 19200x25600 │ Суммарно:
|
||
│ ├── satellite09_02-01.tif # 25600x7680 │ 44800x33280
|
||
│ ├── satellite09_02-02.tif # 19200x7680 ─┘
|
||
│ └── 09.csv
|
||
│
|
||
├── 10/ # Huailai, fixed-wing, 144 imgs
|
||
│
|
||
└── 11/ # Shandan, multi-rotor, 590 imgs
|
||
├── drone/
|
||
│ └── 11_XXXX.JPG # 3976x2652
|
||
├── satellite11.tif # 29592x16582
|
||
└── 11.csv
|
||
```
|