Seguridad preparada para empresas: Conforme a ISO 27001 + SOC 2 Tipo I.

Link to this sectionConjunto de datos xView#

El conjunto de datos xView es uno de los puntos de referencia de imágenes por satélite disponibles públicamente más grandes para la detección de objetos, que proporciona más de 1 millón de instancias de objetos en 60 clases anotadas con cuadros delimitadores en más de 1.400 km² de imágenes WorldView-3 de 0,3 m. Fue publicado para el DIUx xView 2018 Challenge por la Agencia Nacional de Inteligencia-Geoespacial (NGA) de los EE. UU. y requiere una descarga manual de unos 20,7 GB.

El conjunto de datos se creó para impulsar cuatro fronteras de la visión por computador:

  1. Reducir la resolución mínima para la detección.
  2. Mejorar la eficiencia del aprendizaje.
  3. Permitir el descubrimiento de más clases de objetos.
  4. Mejorar la detección de clases de grano fino.

Basándose en puntos de referencia como COCO, xView se centra en imágenes aéreas, donde los objetos son mucho más pequeños y están más densamente empaquetados que en las fotos a nivel del suelo.

Descarga manual necesaria

El conjunto de datos xView no se descarga automáticamente. Regístrate en el sitio web del DIUx xView 2018 Challenge para descargar train_images.zip (~15 GB), train_labels.zip y val_images.zip (~5 GB), y luego descomprímelos en datasets/xView/ para que contenga:

datasets/xView/
├── train_images/          # 847 TIF satellite images
├── val_images/            # 282 TIF images (no public labels)
└── xView_train.geojson    # bounding-box annotations

En la primera ejecución del entrenamiento, Ultralytics convierte automáticamente las anotaciones GeoJSON al formato YOLO y divide las imágenes etiquetadas aproximadamente en 90/10 en conjuntos de entrenamiento y validación; no es necesaria ninguna conversión manual.

Link to this sectionCaracterísticas clave#

  • Clases de grano fino: 60 clases de objetos que abarcan aeronaves, vehículos, material ferroviario, buques marítimos, equipos de construcción y edificios; muchos de ellos pequeños, raros y visualmente similares.
  • Alta resolución: 0,3 m de distancia de muestreo del suelo capturados por satélites WorldView-3.
  • Anotación densa: más de 1 millón de instancias de objetos en más de 1.400 km² de imágenes, todas etiquetadas con cuadros delimitadores horizontales.
  • Conversión automática: el script de descarga de Ultralytics convierte las etiquetas GeoJSON originales al formato YOLO y genera la división de entrenamiento/validación en el primer uso.

Link to this sectionEstructura del dataset#

Las imágenes xView son grandes escenas satelitales en formato TIF, y solo las 847 imágenes de entrenamiento se incluyen con etiquetas públicas; el conjunto de validación del desafío de 282 imágenes no tiene ninguna. Por tanto, la configuración xView.yaml de Ultralytics divide las imágenes etiquetadas automáticamente en el primer uso:

SplitImágenesDescripción
Entrenar~90% de 847Imágenes etiquetadas listadas en autosplit_train.txt, generadas en la primera ejecución
Validación~10% de 847Imágenes etiquetadas listadas en autosplit_val.txt, utilizadas para la evaluación

Las 60 clases cubren categorías de grano fino como Aviones de ala fija, Aviones de carga, Coches pequeños, Autobuses, Locomotoras, Buques marítimos, Excavadoras, Edificios, Hangares de aviones y Tanques de almacenamiento; la lista completa se encuentra en el YAML del conjunto de datos a continuación. Durante la conversión, los ID de clase originales del desafío (11-94) se reasignan a índices contiguos 0-59.

Link to this sectionAplicaciones#

Las clases de grano fino de xView y su perspectiva aérea de alta resolución lo convierten en un punto de referencia estándar para entrenar y evaluar modelos de aprendizaje profundo en teledetección. Las aplicaciones comunes incluyen:

  • Reconocimiento militar y de defensa
  • Planificación y desarrollo urbano
  • Monitoreo ambiental
  • Respuesta y evaluación ante desastres
  • Mapeo y gestión de infraestructura

Para otros puntos de referencia de imágenes aéreas, consulta el conjunto de datos VisDrone centrado en drones o el conjunto de datos DOTA-v2 con cajas orientadas.

Link to this sectionYAML del dataset#

El archivo xView.yaml define la configuración del conjunto de datos: las rutas del conjunto de datos, los nombres de las 60 clases y el script de descarga que convierte las anotaciones GeoJSON y genera la división automática. Se mantiene en el repositorio de Ultralytics en https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/xView.yaml.

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")

Link to this sectionUso#

20,7 GB de descarga manual

El entrenamiento requiere que la descarga manual descrita anteriormente se descomprima en datasets/xView/; la conversión de anotaciones y la división de entrenamiento/validación se ejecutan entonces automáticamente.

Para entrenar un modelo en el conjunto de datos xView durante 100 épocas con un tamaño de imagen de 640, puedes utilizar los siguientes fragmentos de código. Para obtener una lista completa de los argumentos disponibles, consulta la página de Entrenamiento del modelo.

Ejemplo de entrenamiento
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)

Para etiquetar imágenes satelitales adicionales y gestionar las ejecuciones de entrenamiento de xView en tu navegador, utiliza Ultralytics Platform.

Link to this sectionEjemplos de datos y anotaciones#

La muestra a continuación muestra una escena típica de xView: imágenes aéreas de alta resolución en las que pequeños objetos como vehículos y edificios están anotados con cuadros delimitadores, ilustrando por qué la detección de objetos en imágenes satelitales requiere una localización de grano fino.

Imágenes satelitales cenitales del conjunto de datos xView con detección de objetos

Link to this sectionCitas y agradecimientos#

Si utilizas el conjunto de datos xView en tu trabajo de investigación o desarrollo, por favor cita el siguiente artículo:

Cita
@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}
}

Nos gustaría agradecer a la Defense Innovation Unit (DIU) y a los creadores del conjunto de datos xView por su valiosa contribución a la comunidad de investigación en visión por computador. Para obtener más información, visita el sitio web del conjunto de datos xView.

Link to this sectionFAQ#

Link to this section¿Qué es el conjunto de datos xView y cómo beneficia a la investigación de visión artificial?#

El conjunto de datos xView es un punto de referencia de imágenes satelitales publicado para el DIUx xView 2018 Challenge por la Agencia Nacional de Inteligencia-Geoespacial de los EE. UU., que proporciona más de 1 millón de instancias de objetos en 60 clases de grano fino en imágenes WorldView-3 de 0,3 m. Apoya la investigación sobre la detección de objetos pequeños, raros y de grano fino en vistas aéreas, que son objetivos mucho más difíciles que los de las fotos a nivel del suelo.

Link to this section¿Cómo descargo y configuro el conjunto de datos xView?#

xView requiere una descarga manual: regístrate en el sitio web del DIUx xView 2018 Challenge, descarga train_images.zip (~15 GB), train_labels.zip y val_images.zip (~5 GB) —unos 20,7 GB en total— y descomprímelos en datasets/xView/ siguiendo el diseño que se muestra en la advertencia en la parte superior de esta página. En la primera ejecución del entrenamiento, Ultralytics convierte automáticamente las anotaciones GeoJSON al formato YOLO y crea la división de entrenamiento/validación.

Link to this section¿Cuántas imágenes y clases tiene xView?#

xView contiene 847 imágenes de entrenamiento etiquetadas y 282 imágenes de validación sin etiquetas públicas, todas capturadas por satélites WorldView-3 con una resolución de 0,3 m. Las anotaciones cubren más de 1 millón de instancias de objetos en 60 clases. Debido a que solo las etiquetas de entrenamiento son públicas, la configuración xView.yaml de Ultralytics divide las 847 imágenes etiquetadas aproximadamente en 90/10 en conjuntos de entrenamiento y validación; consulta Estructura del conjunto de datos para obtener más detalles.

Link to this section¿Cómo entreno un modelo YOLO26 en el conjunto de datos xView?#

Entrena un modelo YOLO26n en xView durante 100 épocas con un tamaño de imagen de 640:

Ejemplo de entrenamiento
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)

Para conocer los argumentos y ajustes detallados, consulta la página de Entrenamiento del modelo.

Link to this section¿Cómo cito el conjunto de datos xView en mi investigación?#

Cita el artículo "xView: Objects in Context in Overhead Imagery" (Lam et al., arXiv:1802.07856, 2018); la entrada BibTeX completa se encuentra en la sección Citas y agradecimientos más arriba.

Comentarios