Dataset xView#
Il set di dati xView è uno dei più grandi benchmark di immagini satellitari disponibili al pubblico per il rilevamento di oggetti, che fornisce oltre 1 milione di istanze di oggetti in 60 classi annotate con bounding boxes in oltre 1.400 km² di immagini WorldView-3 a 0,3 m. È stato rilasciato per la DIUx xView 2018 Challenge dalla National Geospatial-Intelligence Agency (NGA) degli Stati Uniti e richiede un download manuale di circa 20,7 GB.
Il set di dati è stato creato per spingere quattro frontiere della computer vision:
- Ridurre la risoluzione minima per il rilevamento.
- Migliorare l'efficienza dell'apprendimento.
- Abilitare la scoperta di più classi di oggetti.
- Migliorare il rilevamento di classi a grana fine.
Basandosi su benchmark come COCO, xView si concentra sulle immagini aeree, in cui gli oggetti sono molto più piccoli e densamente raggruppati rispetto alle foto a livello del suolo.
Il set di dati xView non viene scaricato automaticamente. Registrati sul sito web della DIUx xView 2018 Challenge per scaricare train_images.zip (~15 GB), train_labels.zip e val_images.zip (~5 GB), quindi estraili in datasets/xView/ in modo che contenga:
datasets/xView/
├── train_images/ # 847 TIF satellite images
├── val_images/ # 282 TIF images (no public labels)
└── xView_train.geojson # bounding-box annotationsAl primo avvio dell'addestramento, Ultralytics converte automaticamente le annotazioni GeoJSON nel formato YOLO e divide le immagini etichettate approssimativamente al 90/10 in set di addestramento e validazione; non è necessaria alcuna conversione manuale.
Caratteristiche principali#
- Classi a grana fine: 60 classi di oggetti che spaziano tra aeromobili, veicoli, materiale rotabile, imbarcazioni marittime, attrezzature da costruzione ed edifici — molti dei quali piccoli, rari e visivamente simili.
- Alta risoluzione: distanza di campionamento al suolo di 0,3 m raccolta dai satelliti WorldView-3.
- Annotazione densa: oltre 1 milione di istanze di oggetti in oltre 1.400 km² di immagini, tutte etichettate con bounding boxes orizzontali.
- Conversione automatica: lo script di download di Ultralytics converte le etichette GeoJSON originali nel formato YOLO e genera la suddivisione train/val al primo utilizzo.
Struttura del dataset#
Le immagini xView sono grandi scene satellitari in formato TIF e solo le 847 immagini di addestramento vengono fornite con etichette pubbliche; il set di validazione della challenge di 282 immagini non ne ha alcuna. La configurazione Ultralytics xView.yaml divide quindi automaticamente le immagini etichettate al primo utilizzo:
| Split | Immagini | Descrizione |
|---|---|---|
| Addestramento | ~90% di 847 | Immagini etichettate elencate in autosplit_train.txt, generate al primo avvio |
| Validazione | ~10% di 847 | Immagini etichettate elencate in autosplit_val.txt, utilizzate per la valutazione |
Le 60 classi coprono categorie granulari come velivolo ad ala fissa, aereo cargo, automobile piccola, autobus, locomotiva, nave marittima, escavatore, edificio, hangar per aeromobili e serbatoio di stoccaggio; l'elenco completo si trova nel Dataset YAML sottostante. Durante la conversione, gli ID di classe originali della challenge (11–94) vengono rimappati a indici continui 0–59.
Applicazioni#
Le classi granulari di xView e il punto di vista aereo ad alta risoluzione lo rendono un benchmark standard per l'addestramento e la valutazione di modelli di deep learning nel telerilevamento. Le applicazioni comuni includono:
- Ricognizione militare e di difesa
- Pianificazione e sviluppo urbano
- Monitoraggio ambientale
- Risposta e valutazione in caso di disastri
- Mappatura e gestione delle infrastrutture
Per altri benchmark di immagini aeree, consulta il VisDrone dataset incentrato sui droni o il DOTA-v2 dataset con box orientati.
Dataset YAML#
Il file xView.yaml definisce la configurazione del set di dati: i percorsi del set di dati, i 60 nomi delle classi e lo script di download che converte le annotazioni GeoJSON e genera l'autosplit. È mantenuto nel repository Ultralytics su https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/xView.yaml.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DIUx xView 2018 Challenge dataset https://challenge.xviewdataset.org by U.S. National Geospatial-Intelligence Agency (NGA)
# -------- Download and extract data manually to `datasets/xView` before running the train command. --------
# Documentation: https://docs.ultralytics.com/datasets/detect/xview
# Example usage: yolo train data=xView.yaml
# parent
# ├── ultralytics
# └── datasets
# └── xView ← downloads here (20.7 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: xView # dataset root dir
train: images/autosplit_train.txt # train images (relative to 'path') 90% of 847 train images
val: images/autosplit_val.txt # val images (relative to 'path') 10% of 847 train images
# Classes
names:
0: Fixed-wing Aircraft
1: Small Aircraft
2: Cargo Plane
3: Helicopter
4: Passenger Vehicle
5: Small Car
6: Bus
7: Pickup Truck
8: Utility Truck
9: Truck
10: Cargo Truck
11: Truck w/Box
12: Truck Tractor
13: Trailer
14: Truck w/Flatbed
15: Truck w/Liquid
16: Crane Truck
17: Railway Vehicle
18: Passenger Car
19: Cargo Car
20: Flat Car
21: Tank car
22: Locomotive
23: Maritime Vessel
24: Motorboat
25: Sailboat
26: Tugboat
27: Barge
28: Fishing Vessel
29: Ferry
30: Yacht
31: Container Ship
32: Oil Tanker
33: Engineering Vehicle
34: Tower crane
35: Container Crane
36: Reach Stacker
37: Straddle Carrier
38: Mobile Crane
39: Dump Truck
40: Haul Truck
41: Scraper/Tractor
42: Front loader/Bulldozer
43: Excavator
44: Cement Mixer
45: Ground Grader
46: Hut/Tent
47: Shed
48: Building
49: Aircraft Hangar
50: Damaged Building
51: Facility
52: Construction Site
53: Vehicle Lot
54: Helipad
55: Storage Tank
56: Shipping container lot
57: Shipping Container
58: Pylon
59: Tower
# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
import json
from pathlib import Path
import shutil
import numpy as np
from PIL import Image
from ultralytics.utils import TQDM
from ultralytics.data.split import autosplit
from ultralytics.utils.ops import xyxy2xywhn
def convert_labels(fname=Path("xView/xView_train.geojson")):
"""Convert xView GeoJSON labels to YOLO format (classes 0-59) and save them as text files."""
path = fname.parent
with open(fname, encoding="utf-8") as f:
print(f"Loading {fname}...")
data = json.load(f)
# Make dirs
labels = path / "labels" / "train"
shutil.rmtree(labels, ignore_errors=True)
labels.mkdir(parents=True, exist_ok=True)
# xView classes 11-94 to 0-59
xview_class2index = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, -1, 3, -1, 4, 5, 6, 7, 8, -1, 9, 10, 11,
12, 13, 14, 15, -1, -1, 16, 17, 18, 19, 20, 21, 22, -1, 23, 24, 25, -1, 26, 27, -1, 28, -1,
29, 30, 31, 32, 33, 34, 35, 36, 37, -1, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, 46,
47, 48, 49, -1, 50, 51, -1, 52, -1, -1, -1, 53, 54, -1, 55, -1, -1, 56, -1, 57, -1, 58, 59]
shapes = {}
for feature in TQDM(data["features"], desc=f"Converting {fname}"):
p = feature["properties"]
if p["bounds_imcoords"]:
image_id = p["image_id"]
image_file = path / "train_images" / image_id
if image_file.exists(): # 1395.tif missing
try:
box = np.array([int(num) for num in p["bounds_imcoords"].split(",")])
assert box.shape[0] == 4, f"incorrect box shape {box.shape[0]}"
cls = p["type_id"]
cls = xview_class2index[int(cls)] # xView class to 0-59
assert 59 >= cls >= 0, f"incorrect class index {cls}"
# Write YOLO label
if image_id not in shapes:
shapes[image_id] = Image.open(image_file).size
box = xyxy2xywhn(box[None].astype(float), w=shapes[image_id][0], h=shapes[image_id][1], clip=True)
with open((labels / image_id).with_suffix(".txt"), "a", encoding="utf-8") as f:
f.write(f"{cls} {' '.join(f'{x:.6f}' for x in box[0])}\n") # write label.txt
except Exception as e:
print(f"WARNING: skipping one label for {image_file}: {e}")
# Download manually from https://challenge.xviewdataset.org
dir = Path(yaml["path"]) # dataset root dir
# urls = [
# "https://d307kc0mrhucc3.cloudfront.net/train_labels.zip", # train labels
# "https://d307kc0mrhucc3.cloudfront.net/train_images.zip", # 15G, 847 train images
# "https://d307kc0mrhucc3.cloudfront.net/val_images.zip", # 5G, 282 val images (no labels)
# ]
# download(urls, dir=dir)
# Convert labels
convert_labels(dir / "xView_train.geojson")
# Move images
images = Path(dir / "images")
images.mkdir(parents=True, exist_ok=True)
Path(dir / "train_images").rename(dir / "images" / "train")
Path(dir / "val_images").rename(dir / "images" / "val")
# Split
autosplit(dir / "images" / "train")Utilizzo#
L'addestramento richiede che il download manuale descritto sopra venga estratto in datasets/xView/; la conversione delle annotazioni e la suddivisione train/val vengono quindi eseguite automaticamente.
Per addestrare un modello sul set di dati xView per 100 epochs con una dimensione dell'immagine di 640, puoi utilizzare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, fai riferimento alla pagina Training del modello.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="xView.yaml", epochs=100, imgsz=640)Per etichettare immagini satellitari aggiuntive e gestire le esecuzioni di addestramento xView nel tuo browser, usa Ultralytics Platform.
Dati di esempio e annotazioni#
L'esempio seguente mostra una tipica scena xView: immagini aeree ad alta risoluzione in cui piccoli oggetti come veicoli ed edifici sono annotati con bounding box, illustrando il motivo per cui il rilevamento di oggetti nelle immagini satellitari richiede una localizzazione granulare.

Citazioni e riconoscimenti#
Se utilizzi il dataset xView nella tua ricerca o nel tuo lavoro di sviluppo, cita il seguente articolo:
@misc{lam2018xview,
title={xView: Objects in Context in Overhead Imagery},
author={Darius Lam and Richard Kuzma and Kevin McGee and Samuel Dooley and Michael Laielli and Matthew Klaric and Yaroslav Bulatov and Brendan McCord},
year={2018},
eprint={1802.07856},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Ringraziamo la Defense Innovation Unit (DIU) e i creatori del set di dati xView per il loro prezioso contributo alla comunità di ricerca sulla computer vision. Per ulteriori informazioni, visita il sito web del set di dati xView.
FAQ#
Il set di dati xView è un benchmark di immagini satellitari rilasciato per la DIUx xView 2018 Challenge dalla National Geospatial-Intelligence Agency degli Stati Uniti, che fornisce oltre 1 milione di istanze di oggetti in 60 classi granulari nelle immagini WorldView-3 a 0,3 m. Supporta la ricerca sul rilevamento di oggetti piccoli, rari e granulari in viste aeree, che sono bersagli molto più difficili rispetto a quelli nelle foto a livello del suolo.
xView richiede un download manuale: registrati sul sito web della DIUx xView 2018 Challenge, scarica
train_images.zip(~15 GB),train_labels.zipeval_images.zip(~5 GB) — circa 20,7 GB in totale — ed estraili indatasets/xView/seguendo il layout mostrato nell'avviso in cima a questa pagina. Al primo ciclo di addestramento, Ultralytics converte automaticamente le annotazioni GeoJSON in formato YOLO e crea la suddivisione di addestramento/validazione.xView contiene 847 immagini di addestramento etichettate e 282 immagini di validazione senza etichette pubbliche, tutte catturate dai satelliti WorldView-3 a una risoluzione di 0,3 m. Le annotazioni coprono oltre 1 milione di istanze di oggetti in 60 classi. Poiché solo le etichette di addestramento sono pubbliche, la configurazione Ultralytics
xView.yamldivide le 847 immagini etichettate approssimativamente al 90/10 in set di addestramento e validazione; vedi Dataset Structure per i dettagli.Addestra un modello YOLO26n su xView per 100 epoche a una dimensione dell'immagine di 640:
Esempio di Addestramentofrom ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training) # Train the model results = model.train(data="xView.yaml", epochs=100, imgsz=640)Per argomenti e impostazioni dettagliate, fai riferimento alla pagina Training del modello.
Cita il documento "xView: Objects in Context in Overhead Imagery" (Lam et al., arXiv:1802.07856, 2018); la voce BibTeX completa si trova nella sezione Citations and Acknowledgments sopra.



