Meet YOLO26: next-gen vision AI.

Link to this sectionVisDrone 데이터셋#

VisDrone Dataset은 중국 톈진 대학교의 Machine Learning 및 데이터 마이닝 연구소의 AISKYEYE 팀이 구축한 대규모 벤치마크입니다. 이 데이터셋은 드론 기반 이미지 및 비디오 분석과 관련된 다양한 컴퓨터 비전 작업을 위해 세심하게 주석이 달린 그라운드 트루스 데이터를 포함합니다.



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

VisDrone은 다양한 드론 탑재 카메라로 촬영된 261,908개의 프레임으로 구성된 288개의 비디오 클립과 10,209개의 정적 이미지로 이루어져 있습니다. 이 데이터셋은 위치(중국 내 14개 도시), 환경(도심 및 농촌), 객체(보행자, 차량, 자전거 등), 밀도(희소 및 혼잡 장면)를 포함한 광범위한 측면을 다룹니다. 데이터셋은 다양한 드론 플랫폼을 사용하여 서로 다른 시나리오와 기상 및 조명 조건 하에서 수집되었습니다. 이 프레임들에는 보행자, 자동차, 자전거, 삼륜차와 같은 대상의 260만 개 이상의 BBox가 수동으로 주석 처리되어 있습니다. 또한 더 나은 데이터 활용을 위해 장면 가시성, 객체 클래스, 폐색과 같은 속성도 제공됩니다.

Link to this section데이터셋 구조#

VisDrone 데이터셋은 각각 특정 작업에 초점을 맞춘 5개의 주요 하위 집합으로 구성됩니다:

  1. Task 1: 이미지 내 객체 탐지
  2. Task 2: 비디오 내 객체 탐지
  3. Task 3: 단일 객체 추적
  4. Task 4: 다중 객체 추적
  5. Task 5: 군중 계수

Link to this section응용 분야#

VisDrone 데이터셋은 드론 기반 computer vision 작업(객체 탐지, 객체 추적, 군중 계수 등)에서 딥러닝 모델을 학습하고 평가하는 데 널리 사용됩니다. 데이터셋의 다양한 센서 데이터, 객체 주석, 속성은 드론 기반 컴퓨터 비전 분야의 연구자와 실무자들에게 귀중한 자원이 됩니다.

Link to this section데이터셋 YAML#

데이터셋 구성을 정의하기 위해 YAML(Yet Another Markup Language) 파일이 사용됩니다. 여기에는 데이터셋 경로, 클래스 및 기타 관련 정보가 포함되어 있습니다. Visdrone 데이터셋의 경우, VisDrone.yaml 파일은 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.3 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사용법#

이미지 크기 640으로 100 epochs 동안 VisDrone 데이터셋에서 YOLO26n 모델을 학습시키려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수의 전체 목록은 모델 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="VisDrone.yaml", epochs=100, imgsz=640)

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

VisDrone 데이터셋은 드론 탑재 카메라로 촬영된 다양한 이미지 및 비디오 세트를 포함합니다. 다음은 해당 주석과 함께 데이터셋에서 가져온 몇 가지 예시입니다:

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

  • Task 1: 이미지 내 Object detection - 이 이미지는 객체가 bounding boxes로 주석 처리된 이미지 내 객체 탐지 예시를 보여줍니다. 데이터셋은 이 작업을 위한 모델 개발을 촉진하기 위해 다양한 위치, 환경 및 밀도에서 촬영된 방대한 이미지를 제공합니다.

이 예시는 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}}

드론 기반 컴퓨터 비전 연구 커뮤니티를 위한 귀중한 자원으로서 VisDrone 데이터셋을 구축하고 유지 관리해 준 중국 톈진 대학교의 Data Mining 및 머신러닝 연구소의 AISKYEYE 팀에 감사드립니다. VisDrone 데이터셋과 제작자에 대한 자세한 내용은 VisDrone Dataset GitHub repository를 방문하십시오.

Link to this sectionFAQ#

Link to this sectionVisDrone 데이터셋이란 무엇이며 주요 특징은 무엇입니까?#

VisDrone Dataset은 중국 톈진 대학교의 AISKYEYE 팀이 구축한 대규모 벤치마크입니다. 드론 기반 이미지 및 비디오 분석과 관련된 다양한 컴퓨터 비전 작업을 위해 설계되었습니다. 주요 특징은 다음과 같습니다:

  • 구성: 261,908개의 프레임이 포함된 288개의 비디오 클립과 10,209개의 정적 이미지.
  • 주석: 보행자, 자동차, 자전거, 삼륜차와 같은 객체에 대한 260만 개 이상의 BBox.
  • 다양성: 14개 도시, 도심 및 농촌 환경에서 서로 다른 기상 및 조명 조건 하에 수집됨.
  • 작업: 5가지 주요 작업으로 나뉨(이미지 및 비디오 내 객체 탐지, 단일 및 다중 객체 추적, 군중 계수).

Link to this sectionUltralytics를 사용하여 YOLO26 모델을 학습시키기 위해 VisDrone 데이터셋을 어떻게 사용할 수 있습니까?#

이미지 크기 640으로 100 에포크 동안 VisDrone 데이터셋에서 YOLO26 모델을 학습시키려면 다음 단계를 따르십시오:

학습 예제
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)

추가 구성 옵션은 모델 Training 페이지를 참조하십시오.

Link to this sectionVisDrone 데이터셋의 주요 하위 집합과 그 응용 분야는 무엇입니까?#

VisDrone 데이터셋은 특정 컴퓨터 비전 작업에 맞춰진 5개의 주요 하위 집합으로 나뉩니다:

  1. Task 1: 이미지 내 객체 탐지.
  2. Task 2: 비디오 내 객체 탐지.
  3. Task 3: 단일 객체 추적.
  4. Task 4: 다중 객체 추적.
  5. Task 5: 군중 계수.

이러한 하위 집합은 감시, 교통 모니터링, 공공 안전과 같은 드론 기반 애플리케이션에서 deep learning 모델을 학습하고 평가하는 데 널리 사용됩니다.

Link to this sectionUltralytics에서 VisDrone 데이터셋의 구성 파일을 어디에서 찾을 수 있습니까?#

VisDrone 데이터셋의 구성 파일인 VisDrone.yaml은 다음 링크의 Ultralytics 저장소에서 찾을 수 있습니다: VisDrone.yaml.

Link to this section연구에 VisDrone 데이터셋을 사용할 경우 어떻게 인용합니까?#

연구 또는 개발 작업에 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={2021},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TPAMI.2021.3119563}
}

댓글