엔터프라이즈급 보안: ISO 27001 및 SOC 2 Type I 규정을 준수합니다.

Link to this sectionxView 데이터셋#

xView 데이터셋은 객체 탐지를 위한 가장 큰 공개 위성 이미지 벤치마크 중 하나로, 1,400km²가 넘는 0.3m 해상도의 WorldView-3 이미지에서 60개 클래스에 걸쳐 100만 개 이상의 객체 인스턴스를 bounding box로 주석 처리하여 제공합니다. 이 데이터셋은 미국 국립지리정보국(NGA)이 DIUx xView 2018 챌린지를 위해 공개했으며, 약 20.7GB를 수동으로 다운로드해야 합니다.

이 데이터셋은 네 가지 computer vision 분야를 발전시키기 위해 생성되었습니다:

  1. 탐지를 위한 최소 해상도 감소.
  2. 학습 효율성 개선.
  3. 더 많은 객체 클래스 발견 활성화.
  4. 세밀한 클래스의 탐지 성능 개선.

COCO와 같은 벤치마크를 기반으로 하는 xView는 지상 사진보다 객체가 훨씬 작고 밀도가 높은 오버헤드 영상을 대상으로 합니다.

수동 다운로드 필요

xView 데이터셋은 자동으로 다운로드되지 않습니다. DIUx xView 2018 Challenge 웹사이트에 등록하여 train_images.zip (~15 GB), train_labels.zip, 그리고 val_images.zip (~5 GB)을 다운로드한 후, datasets/xView/ 아래에 압축을 풀어 다음과 같은 구조가 되도록 하십시오:

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

첫 번째 학습 실행 시, Ultralytics는 GeoJSON 어노테이션을 자동으로 YOLO 형식으로 변환하고 라벨이 지정된 이미지를 약 90/10 비율로 학습 및 검증 세트로 분할합니다. 수동 변환은 필요하지 않습니다.

Link to this section주요 특징#

  • 세분화된 클래스: 항공기, 차량, 철도 차량, 해상 선박, 건설 장비 및 건물을 포함하는 60개의 객체 클래스 — 다수가 작고 희귀하며 시각적으로 유사합니다.
  • 고해상도: WorldView-3 위성에서 수집된 0.3 m 지상 샘플 거리(GSD).
  • 조밀한 어노테이션: 1,400 km² 이상의 영상에 걸쳐 100만 개 이상의 객체 인스턴스가 있으며, 모두 수평 bounding boxes로 라벨이 지정되어 있습니다.
  • 자동 변환: Ultralytics 다운로드 스크립트가 원래의 GeoJSON 라벨을 YOLO 형식으로 변환하고 처음 사용할 때 train/val 분할을 생성합니다.

Link to this section데이터셋 구조#

xView 이미지는 TIF 형식의 대형 위성 장면이며, 847개의 학습 이미지만 공개 라벨과 함께 제공됩니다. 282개의 챌린지 검증 세트 이미지에는 라벨이 없습니다. 따라서 Ultralytics xView.yaml 설정은 처음 사용할 때 라벨이 있는 이미지를 자동으로 분할합니다:

Split이미지설명
학습(Train)847개의 ~90%첫 번째 실행 시 생성되는 autosplit_train.txt에 나열된 라벨이 있는 이미지
검증847개의 ~10%autosplit_val.txt에 나열된 레이블링된 이미지는 평가에 사용됩니다.

60개의 클래스는 고정익 항공기, 화물기, 소형차, 버스, 기관차, 해상 선박, 굴착기, 건물, 격납고, 저장 탱크와 같은 세분화된 범주를 포함합니다. 전체 목록은 아래 Dataset YAML에 있습니다. 변환 과정에서 원래 챌린지 클래스 ID(11–94)는 연속적인 인덱스 0–59로 재매핑됩니다.

Link to this section응용 분야#

xView's fine-grained classes and high-resolution overhead viewpoint make it a standard benchmark for training and evaluating deep learning models in remote sensing. Common applications include:

  • 군사 및 방위 정찰
  • 도시 계획 및 개발
  • 환경 모니터링
  • 재난 대응 및 평가
  • 인프라 매핑 및 관리

다른 오버헤드 영상 벤치마크는 드론 중심의 VisDrone dataset 또는 oriented-box DOTA-v2 dataset을 참조하십시오.

Link to this section데이터셋 YAML#

xView.yaml 파일은 데이터셋 경로, 60개의 클래스 이름, GeoJSON 어노테이션을 변환하고 자동 분할을 생성하는 다운로드 스크립트 등 데이터셋 구성을 정의합니다. 이 파일은 Ultralytics 리포지토리(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 section사용법#

20.7 GB 수동 다운로드

학습을 위해서는 위에서 설명한 수동 다운로드 파일을 datasets/xView/ 아래에 압축 해제해야 합니다. 어노테이션 변환 및 train/val 분할은 이후 자동으로 실행됩니다.

이미지 크기 640으로 100 에폭(epochs) 동안 xView 데이터셋에서 모델을 학습하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수에 대한 포괄적인 목록은 모델 학습(Training) 페이지를 참조하십시오.

훈련 예제
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)

추가 위성 이미지를 라벨링하고 브라우저에서 xView 학습 실행을 관리하려면 Ultralytics Platform을 사용하십시오.

Link to this section샘플 데이터 및 주석#

아래 샘플은 일반적인 xView 장면을 보여줍니다. 차량 및 건물과 같은 작은 객체가 bounding boxes로 어노테이션된 고해상도 오버헤드 영상으로, 위성 영상에서 object detection이 왜 세분화된 위치 파악을 요구하는지 잘 보여줍니다.

객체 탐지가 포함된 xView 데이터셋 항공 위성 이미지

Link to this section인용 및 감사의 글#

연구 또는 개발 작업에서 xView 데이터셋을 사용하는 경우 다음 논문을 인용해 주십시오:

인용
@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}
}

컴퓨터 비전 연구 커뮤니티에 귀중한 공헌을 해준 Defense Innovation Unit (DIU) 및 xView 데이터셋 제작자들에게 감사를 표합니다. 더 자세한 정보는 xView dataset website를 방문하십시오.

Link to this sectionFAQ#

Link to this sectionxView 데이터셋이란 무엇이며 컴퓨터 비전 연구에 어떤 이점이 있습니까?#

xView 데이터셋은 미국 국가지리정보국이 DIUx xView 2018 챌린지를 위해 공개한 위성 영상 벤치마크로, 0.3 m WorldView-3 영상 내 60개 세분화 클래스에 걸쳐 100만 개 이상의 객체 인스턴스를 제공합니다. 이 데이터셋은 지상 사진보다 훨씬 타겟이 작은 오버헤드 뷰에서 작고 희귀하며 세분화된 객체를 탐지하는 연구를 지원합니다.

Link to this sectionxView 데이터셋을 다운로드하고 설정하려면 어떻게 해야 합니까?#

xView는 수동 다운로드가 필요합니다. DIUx xView 2018 Challenge 웹사이트에 등록하고 train_images.zip(~15 GB), train_labels.zip, val_images.zip(~5 GB)을 다운로드(총 약 20.7 GB)한 뒤, 이 페이지 상단의 경고에 표시된 레이아웃에 따라 datasets/xView/에 압축을 푸십시오. 첫 학습 실행 시 Ultralytics가 자동으로 GeoJSON 어노테이션을 YOLO 형식으로 변환하고 train/validation 분할을 생성합니다.

Link to this sectionxView에는 몇 개의 이미지와 클래스가 있습니까?#

xView에는 847개의 라벨이 지정된 학습 이미지와 공개 라벨이 없는 282개의 검증 이미지가 포함되어 있으며, 모두 0.3 m 해상도의 WorldView-3 위성으로 촬영되었습니다. 어노테이션은 60개 클래스에 걸쳐 100만 개 이상의 객체 인스턴스를 포함합니다. 학습 라벨만 공개되어 있으므로, Ultralytics xView.yaml 설정은 847개의 라벨이 지정된 이미지를 약 90/10 비율로 학습 및 검증 세트로 분할합니다. 자세한 내용은 Dataset Structure를 참조하십시오.

Link to this sectionxView 데이터셋에서 YOLO26 모델을 학습하려면 어떻게 해야 합니까?#

xView에서 YOLO26n 모델을 이미지 크기 640으로 100 에포크 동안 학습하십시오:

훈련 예제
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)

자세한 인수 및 설정은 모델 학습(Training) 페이지를 참조하십시오.

Link to this section연구에서 xView 데이터셋을 어떻게 인용합니까?#

"xView: Objects in Context in Overhead Imagery" (Lam et al., arXiv:1802.07856, 2018) 논문을 인용하십시오. 전체 BibTeX 항목은 위의 Citations and Acknowledgments 섹션에 있습니다.

댓글