콘텐츠로 건너뛰기

VisDrone 데이터 세트

VisDrone Dataset은 중국 톈진 대학의 머신 러닝 및 데이터 마이닝 연구소의 AISKYEYE 팀에서 만든 대규모 벤치마크입니다. 여기에는 드론 기반 이미지 및 비디오 분석과 관련된 다양한 컴퓨터 비전 작업을 위해 신중하게 주석이 달린 지상 실측 데이터가 포함되어 있습니다.



참고: 드론 이미지 분석을 위해 VisDrone 데이터 세트에서 Ultralytics YOLO 모델을 훈련하는 방법

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

데이터 세트 구조

VisDrone 데이터 세트는 5개의 주요 하위 세트로 구성되며, 각 하위 세트는 특정 작업에 중점을 둡니다.

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

응용 분야

VisDrone 데이터 세트는 객체 감지, 객체 추적 및 군중 계수와 같은 드론 기반 컴퓨터 비전 작업에서 딥 러닝 모델을 훈련하고 평가하는 데 널리 사용됩니다. 데이터 세트의 다양한 센서 데이터, 객체 주석 및 속성은 드론 기반 컴퓨터 비전 분야의 연구원과 실무자에게 귀중한 리소스가 됩니다.

데이터세트 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 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 = [
      "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-train.zip",
      "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-val.zip",
      "https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-dev.zip",
      # "https://github.com/ultralytics/assets/releases/download/v0.0.0/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

사용법

이미지 크기가 640인 VisDrone 데이터 세트에서 YOLO11n 모델을 100 epochs 동안 훈련하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수의 전체 목록은 모델 훈련 페이지를 참조하세요.

훈련 예제

from ultralytics import YOLO

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

# Train the model
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=VisDrone.yaml model=yolo11n.pt epochs=100 imgsz=640

샘플 데이터 및 주석

VisDrone 데이터 세트는 드론 장착 카메라로 캡처한 다양한 이미지와 비디오 세트를 포함합니다. 다음은 데이터 세트의 데이터 예제와 해당 주석입니다.

데이터 세트 샘플 이미지

  • Task 1: 이미지 내 객체 탐지 - 이 이미지는 이미지 내 객체 탐지의 예시를 보여주며, 객체는 bounding box로 주석이 달려 있습니다. 이 데이터 세트는 다양한 위치, 환경 및 밀도에서 촬영한 광범위한 이미지를 제공하여 이 작업을 위한 모델 개발을 용이하게 합니다.

이 예는 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}}

중국 톈진 대학교의 머신 러닝 및 데이터 마이닝 연구소의 AISKYEYE 팀에게 드론 기반 컴퓨터 비전 연구 커뮤니티를 위한 귀중한 리소스인 VisDrone 데이터 세트를 만들고 유지 관리해 주셔서 감사합니다. VisDrone 데이터 세트 및 제작자에 대한 자세한 내용은 VisDrone 데이터 세트 GitHub 저장소를 방문하십시오.

FAQ

VisDrone 데이터 세트는 무엇이며 주요 특징은 무엇입니까?

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

  • 구성: 261,908 프레임의 288개 비디오 클립과 10,209개의 정적 이미지로 구성되어 있습니다.
  • 주석: 보행자, 자동차, 자전거 및 세발자전거와 같은 객체에 대한 260만 개 이상의 경계 상자.
  • 다양성: 도시 및 농촌 환경, 다양한 날씨 및 조명 조건에서 14개 도시에서 수집되었습니다.
  • Tasks: 이미지 및 비디오 내 객체 탐지, 단일 객체 및 다중 객체 추적, 군중 계수 등 다섯 가지 주요 작업으로 나뉩니다.

Ultralytics를 사용하여 VisDrone 데이터 세트로 YOLO11 모델을 훈련하려면 어떻게 해야 합니까?

이미지 크기가 640인 VisDrone 데이터 세트에서 YOLO11 모델을 100 epoch 동안 훈련하려면 다음 단계를 따르세요.

훈련 예제

from ultralytics import YOLO

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

# Train the model
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=VisDrone.yaml model=yolo11n.pt epochs=100 imgsz=640

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

VisDrone 데이터 세트의 주요 하위 세트와 그 응용 분야는 무엇입니까?

VisDrone 데이터 세트는 5개의 주요 하위 세트로 나뉘며, 각 하위 세트는 특정 컴퓨터 비전 작업에 맞게 조정됩니다.

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

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

Ultralytics에서 VisDrone 데이터 세트에 대한 구성 파일은 어디에서 찾을 수 있나요?

VisDrone 데이터 세트에 대한 구성 파일, VisDrone.yaml, 다음 링크의 Ultralytics 저장소에서 찾을 수 있습니다: VisDrone.yaml.

연구에 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}
}


📅 1년 전에 생성됨 ✏️ 5개월 전에 업데이트됨

댓글