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

Link to this sectionVisDrone 데이터셋#

VisDrone Dataset은 대규모 드론 영상 벤치마크이며, 이 중 객체 탐지 서브셋(VisDrone2019-DET)은 객체 탐지를 위해 10개의 객체 클래스로 라벨링된 8,629개의 항공 이미지(훈련용 6,471개, 검증용 548개, 테스트-개발용 1,610개)를 제공합니다. 이 데이터셋은 중국 톈진 대학교의 머신 러닝 및 데이터 마이닝 연구소 소속 AISKYEYE 팀에 의해 생성되었습니다.



Watch: How to Train Ultralytics YOLO on the VisDrone Dataset | Aerial Detection | Complete Tutorial 🚀

전체 VisDrone 벤치마크는 중국 내 14개 도시에서 드론 탑재 카메라로 촬영한 288개의 비디오 클립(261,908 프레임)과 10,209개의 정지 영상으로 구성되어 있으며, 도심과 농촌 환경, 드문드문하거나 혼잡한 장면, 그리고 다양한 날씨와 조명 조건을 포괄합니다. 프레임에는 260만 개 이상의 수동으로 라벨링된 바운딩 박스가 포함되어 있으며, 장면 가시성, 객체 클래스, 가려짐 정도와 같은 추가 속성이 함께 제공됩니다. Ultralytics VisDrone.yaml 구성 파일은 이 벤치마크의 VisDrone2019-DET 정지 영상 서브셋을 사용합니다.

Link to this section주요 특징#

  • 작고 밀집된 객체: 항공 시점은 타겟을 매우 작고 밀집되게 만듭니다. 검증용 이미지 548개에만 38,759개의 라벨링된 박스가 포함되어 있으며, 이미지당 평균 약 70개의 객체가 존재합니다.
  • 장면의 다양성: 중국 14개 도시의 도심 및 농촌 지역을 포함하며, 주야간 및 다양한 기상 조건을 아우르는 이미지입니다.
  • 풍부한 어노테이션: 전체 벤치마크에 걸쳐 260만 개 이상의 박스가 있으며, 가려짐 및 가시성 속성이 포함되어 있습니다.
  • 사전 정의된 분할: 일관된 평가를 위해 고정된 훈련/검증/테스트-개발 분할(6,471/548/1,610 이미지)을 제공합니다.

Link to this section데이터셋 구조#

Ultralytics VisDrone 구성은 VisDrone2019-DET 이미지 서브셋을 다루며 세 부분으로 나뉩니다:

Split이미지설명
학습(Train)6,471탐지기 훈련에 사용되는 라벨링된 항공 이미지
검증548개발 중 평가에 사용되는 이미지
Test-dev1,610학습된 모델의 최종 평가를 위한 보류(held-out) 이미지

네 번째 분할인 테스트-챌린지(1,580개 이미지)는 VisDrone 대회를 위해 별도로 보관되어 다운로드되지 않으며, 이 때문에 전체 DET 세트의 총합은 10,209개 이미지입니다.

이 데이터셋은 pedestrian(보행자), people(사람), bicycle(자전거), car(자동차), van(밴), truck(트럭), tricycle(삼륜차), awning-tricycle(덮개가 있는 삼륜차), bus(버스), motor(오토바이)의 10개 객체 클래스를 라벨링합니다. VisDrone은 pedestrian(서 있거나 걷는 사람)과 people(다른 자세를 취하고 있는 사람)을 구분합니다.

자동 YOLO 변환

처음 사용할 때 다운로드 스크립트는 원본 VisDrone 어노테이션을 YOLO 형식으로 변환하며, 무시됨으로 표시된 영역(사용되지 않는 "others" 카테고리 포함)은 건너뜁니다.

Link to this section응용 분야#

VisDrone의 밀집된 장면과 매우 작은 타겟들은 항공 시점에서의 소형 객체 탐지를 위한 표준 벤치마크로 자리 잡게 했습니다. 일반적인 응용 분야는 다음과 같습니다:

  • UAV를 통한 교통 모니터링 및 차량 집계
  • 군중 분석 및 공공 안전 감시
  • 인프라 및 건설 현장 검사
  • 컴퓨터 비전 연구: 복잡한 장면에서의 소형 객체 탐지

다른 항공 이미지 벤치마크는 위성 중심의 xView 데이터셋 또는 방향 박스 기반의 DOTA-v2 데이터셋을 참조하십시오.

Link to this section데이터셋 YAML#

VisDrone.yaml 파일은 데이터셋 구성(데이터셋 경로, 클래스 이름, 자동 다운로드 및 변환 스크립트)을 정의합니다. 이 파일은 Ultralytics 저장소의 https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VisDrone.yaml에서 관리됩니다.

ultralytics/cfg/datasets/VisDrone.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset by Tianjin University
# Documentation: https://docs.ultralytics.com/datasets/detect/visdrone
# Example usage: yolo train data=VisDrone.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── VisDrone ← downloads here (~2 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: VisDrone # dataset root dir
train: images/train # train images (relative to 'path') 6471 images
val: images/val # val images (relative to 'path') 548 images
test: images/test # test-dev images (optional) 1610 images

# Classes
names:
  0: pedestrian
  1: people
  2: bicycle
  3: car
  4: van
  5: truck
  6: tricycle
  7: awning-tricycle
  8: bus
  9: motor

# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
  import os
  from pathlib import Path
  import shutil

  from ultralytics.utils.downloads import download
  from ultralytics.utils import ASSETS_URL, TQDM

  def visdrone2yolo(dir, split, source_name=None):
      """Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
      from PIL import Image

      source_dir = dir / (source_name or f"VisDrone2019-DET-{split}")
      images_dir = dir / "images" / split
      labels_dir = dir / "labels" / split
      labels_dir.mkdir(parents=True, exist_ok=True)

      # Move images to new structure
      if (source_images_dir := source_dir / "images").exists():
          images_dir.mkdir(parents=True, exist_ok=True)
          for img in source_images_dir.glob("*.jpg"):
              img.rename(images_dir / img.name)

      for f in TQDM((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
          img_size = Image.open(images_dir / f.with_suffix(".jpg").name).size
          dw, dh = 1.0 / img_size[0], 1.0 / img_size[1]
          lines = []

          with open(f, encoding="utf-8") as file:
              for row in [x.split(",") for x in file.read().strip().splitlines()]:
                  if row[4] != "0":  # Skip ignored regions
                      x, y, w, h = map(int, row[:4])
                      cls = int(row[5]) - 1
                      # Convert to YOLO format
                      x_center, y_center = (x + w / 2) * dw, (y + h / 2) * dh
                      w_norm, h_norm = w * dw, h * dh
                      lines.append(f"{cls} {x_center:.6f} {y_center:.6f} {w_norm:.6f} {h_norm:.6f}\n")

          (labels_dir / f.name).write_text("".join(lines), encoding="utf-8")

  # Download (ignores test-challenge split)
  dir = Path(yaml["path"])  # dataset root dir
  urls = [
      f"{ASSETS_URL}/VisDrone2019-DET-train.zip",
      f"{ASSETS_URL}/VisDrone2019-DET-val.zip",
      f"{ASSETS_URL}/VisDrone2019-DET-test-dev.zip",
      # f"{ASSETS_URL}/VisDrone2019-DET-test-challenge.zip",
  ]
  download(urls, dir=dir, threads=4)

  # Convert
  splits = {"VisDrone2019-DET-train": "train", "VisDrone2019-DET-val": "val", "VisDrone2019-DET-test-dev": "test"}
  for folder, split in splits.items():
      visdrone2yolo(dir, split, folder)  # convert VisDrone annotations to YOLO labels
      shutil.rmtree(dir / folder)  # cleanup original directory

Link to this section사용법#

~2 GB 다운로드

VisDrone은 처음 훈련할 때 자동으로 다운로드되며, 약 2GB 크기의 아카이브 3개를 내려받습니다. 압축 해제 및 변환 과정에서 약 4GB의 여유 디스크 공간이 필요합니다.

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

훈련 예제
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model - dataset will auto-download on first run
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)

추가적인 항공 이미지를 라벨링하고 브라우저에서 VisDrone 훈련 실행을 관리하려면 Ultralytics Platform을 사용하십시오.

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

아래 샘플은 전형적인 VisDrone 장면을 보여줍니다. 바쁜 도로를 내려다보는 항공 시점에서 보행자와 차량들이 작고 밀집된 타겟으로 나타나며, 많은 객체가 서로 부분적으로 가려져 있습니다.

VisDrone 데이터셋 항공 드론 이미지와 객체 탐지

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

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

인용
@ARTICLE{9573394,
  author={Zhu, Pengfei and Wen, Longyin and Du, Dawei and Bian, Xiao and Fan, Heng and Hu, Qinghua and Ling, Haibin},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  title={Detection and Tracking Meet Drones Challenge},
  year={2022},
  volume={44},
  number={11},
  pages={7380-7399},
  doi={10.1109/TPAMI.2021.3119563}}

VisDrone 데이터셋을 생성하고 유지 관리해 준 중국 톈진 대학교 머신 러닝 및 데이터 마이닝 연구소의 AISKYEYE 팀에 감사드립니다. 자세한 내용은 VisDrone 데이터셋 GitHub 저장소를 방문하십시오.

Link to this sectionFAQ#

Link to this sectionVisDrone 데이터셋은 어떤 용도로 사용됩니까?#

VisDrone은 객체가 작고 밀집되어 있으며 위에서 내려다보는 드론 촬영 이미지에서 탐지기를 훈련하고 벤치마킹하는 데 사용됩니다. 항공 시점, 혼잡한 장면, 다양한 조건의 조합으로 인해 UAV 기반 교통 모니터링, 군중 분석 및 소형 객체 탐지 연구를 위한 표준 테스트베드가 되었습니다.

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

Ultralytics VisDrone 구성에는 총 8,629개의 이미지가 포함되어 있습니다(훈련용 6,471개, 검증용 548개, 테스트용 1,610개). 모든 분할은 10개의 공통 클래스(pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus, motor)를 공유합니다. 전체 상세 내역은 데이터셋 구조를 참조하십시오.

Link to this sectionVisDrone 데이터셋은 어떻게 다운로드합니까?#

VisDrone은 data="VisDrone.yaml"을 사용하여 처음 훈련을 시작할 때 자동으로 다운로드되므로 수동 단계가 필요하지 않습니다. 스크립트가 Ultralytics GitHub 릴리스 자산에서 3개의 아카이브(약 2GB)를 가져와 어노테이션을 YOLO 형식으로 변환합니다. 대회용으로 보관된 테스트-챌린지 분할은 포함되지 않습니다.

Link to this sectionVisDrone 데이터셋으로 어떻게 YOLO26 모델을 훈련합니까?#

이미지 크기 640으로 100 에포크 동안 VisDrone에서 YOLO26n 모델을 훈련하는 방법은 다음과 같습니다:

훈련 예제
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="VisDrone.yaml", epochs=100, imgsz=640)

상세 구성은 학습(Training) 페이지와 모델 학습 팁을 참조하십시오.

Link to this section왜 VisDrone은 객체 탐지기에게 어렵고, 정확도를 어떻게 향상할 수 있습니까?#

VisDrone의 객체는 전체 프레임에 비해 매우 작고(종종 수십 픽셀에 불과함) 밀집되어 있으며 심하게 가려져 있기 때문에 지상에서 촬영한 사진으로 튜닝된 탐지기에게는 부담이 큽니다. 더 높은 해상도(예: 더 작은 배치를 사용한 imgsz=1280)로 훈련하고 예측하면 작은 타겟을 복구하는 데 도움이 되며, SAHI 타일 기반 추론을 사용하면 큰 이미지를 분할하여 각 추론 창에서 작은 객체가 더 크게 보이도록 할 수 있습니다.

Link to this sectionVisDrone-DET와 전체 VisDrone 벤치마크의 차이점은 무엇입니까?#

전체 VisDrone 벤치마크는 이미지 내 객체 탐지, 비디오 내 객체 탐지, 단일 객체 추적, 다중 객체 추적, 군중 계수 등 5가지 작업을 288개의 비디오 클립과 10,209개의 정지 이미지에 걸쳐 수행합니다. Ultralytics VisDrone.yaml 구성은 오직 이미지 탐지 작업(VisDrone2019-DET)만 다루며, 6,471개의 훈련, 548개의 검증, 1,610개의 테스트-개발 이미지만 다운로드합니다.

Link to this section연구에서 VisDrone을 어떻게 인용합니까?#

"Detection and Tracking Meet Drones Challenge" 논문(IEEE TPAMI, vol. 44, no. 11, 2022, DOI 10.1109/TPAMI.2021.3119563)을 인용하십시오. 전체 BibTeX 항목은 위 인용 및 감사의 글 섹션에 있습니다.

댓글