Bỏ để qua phần nội dung

Tập dữ liệu VisDrone

Bộ dữ liệu VisDrone là một điểm chuẩn quy mô lớn được tạo ra bởi nhóm AISKYEYE tại Phòng thí nghiệm Học máy và Khai thác dữ liệu, Đại học Thiên Tân, Trung Quốc. Nó chứa dữ liệu sự thật mặt đất được chú thích cẩn thận cho các nhiệm vụ thị giác máy tính khác nhau liên quan đến phân tích hình ảnh và video dựa trên máy bay không người lái.

VisDrone bao gồm 288 video clip với 261.908 khung hình và 10.209 hình ảnh tĩnh, được chụp bởi các camera gắn trên máy bay không người lái khác nhau. Bộ dữ liệu bao gồm một loạt các khía cạnh, bao gồm vị trí (14 thành phố khác nhau trên khắp Trung Quốc), môi trường (thành thị và nông thôn), các đối tượng (người đi bộ, xe cộ, xe đạp, v.v.) và mật độ (cảnh thưa thớt và đông đúc). Bộ dữ liệu được thu thập bằng các nền tảng máy bay không người lái khác nhau trong các kịch bản và điều kiện thời tiết và ánh sáng khác nhau. Các khung này được chú thích thủ công với hơn 2,6 triệu hộp giới hạn của các mục tiêu như người đi bộ, ô tô, xe đạp và xe ba bánh. Các thuộc tính như khả năng hiển thị cảnh, lớp đối tượng và tắc nghẽn cũng được cung cấp để sử dụng dữ liệu tốt hơn.

Cấu trúc tập dữ liệu

Bộ dữ liệu VisDrone được tổ chức thành năm tập hợp con chính, mỗi tập trung vào một nhiệm vụ cụ thể:

  1. Nhiệm vụ 1: Phát hiện đối tượng trong ảnh
  2. Nhiệm vụ 2: Phát hiện đối tượng trong video
  3. Nhiệm vụ 3: Theo dõi một đối tượng
  4. Nhiệm vụ 4: Theo dõi đa đối tượng
  5. Nhiệm vụ 5: Đếm đám đông

Ứng dụng

Bộ dữ liệu VisDrone được sử dụng rộng rãi để đào tạo và đánh giá các mô hình học sâu trong các tác vụ thị giác máy tính dựa trên máy bay không người lái như phát hiện đối tượng, theo dõi đối tượng và đếm đám đông. Bộ dữ liệu cảm biến, chú thích đối tượng và thuộc tính đa dạng của bộ dữ liệu làm cho nó trở thành một nguồn tài nguyên quý giá cho các nhà nghiên cứu và các học viên trong lĩnh vực thị giác máy tính dựa trên máy bay không người lái.

Tập dữ liệu YAML

Tệp YAML (Yet Another Markup Language) được sử dụng để xác định cấu hình tập dữ liệu. Nó chứa thông tin về đường dẫn, lớp và thông tin liên quan khác của tập dữ liệu. Trong trường hợp tập dữ liệu Visdrone, VisDrone.yaml Tệp được duy trì tại https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VisDrone.yaml.

ultralytics/cfg/datasets/VisDrone.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 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: ../datasets/VisDrone # dataset root dir
train: VisDrone2019-DET-train/images # train images (relative to 'path')  6471 images
val: VisDrone2019-DET-val/images # val images (relative to 'path')  548 images
test: VisDrone2019-DET-test-dev/images # test 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

  from ultralytics.utils.downloads import download

  def visdrone2yolo(dir):
      from PIL import Image
      from tqdm import tqdm

      def convert_box(size, box):
          # Convert VisDrone box to YOLO xywh box
          dw = 1. / size[0]
          dh = 1. / size[1]
          return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh

      (dir / 'labels').mkdir(parents=True, exist_ok=True)  # make labels directory
      pbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}')
      for f in pbar:
          img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).size
          lines = []
          with open(f, 'r') as file:  # read annotation.txt
              for row in [x.split(',') for x in file.read().strip().splitlines()]:
                  if row[4] == '0':  # VisDrone 'ignored regions' class 0
                      continue
                  cls = int(row[5]) - 1
                  box = convert_box(img_size, tuple(map(int, row[:4])))
                  lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")
                  with open(str(f).replace(f'{os.sep}annotations{os.sep}', f'{os.sep}labels{os.sep}'), 'w') as fl:
                      fl.writelines(lines)  # write label.txt


  # Download
  dir = Path(yaml['path'])  # dataset root dir
  urls = ['https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-train.zip',
          'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-val.zip',
          'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-dev.zip',
          'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-challenge.zip']
  download(urls, dir=dir, curl=True, threads=4)

  # Convert
  for d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev':
      visdrone2yolo(dir / d)  # convert VisDrone annotations to YOLO labels

Sử dụng

Để đào tạo một YOLOv8n mô hình trên tập dữ liệu VisDrone cho 100 kỷ nguyên với kích thước hình ảnh là 640, bạn có thể sử dụng các đoạn mã sau. Để biết danh sách đầy đủ các đối số có sẵn, hãy tham khảo trang Đào tạo mẫu.

Ví dụ về tàu hỏa

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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=yolov8n.pt epochs=100 imgsz=640

Dữ liệu mẫu và chú thích

Bộ dữ liệu VisDrone chứa một bộ hình ảnh và video đa dạng được ghi lại bởi các camera gắn trên máy bay không người lái. Dưới đây là một số ví dụ về dữ liệu từ tập dữ liệu, cùng với các chú thích tương ứng của chúng:

Hình ảnh mẫu tập dữ liệu

  • Nhiệm vụ 1: Phát hiện đối tượng trong hình ảnh - Hình ảnh này minh họa một ví dụ về phát hiện đối tượng trong hình ảnh, trong đó các đối tượng được chú thích bằng các hộp giới hạn. Bộ dữ liệu cung cấp nhiều hình ảnh được chụp từ các vị trí, môi trường và mật độ khác nhau để tạo điều kiện phát triển các mô hình cho nhiệm vụ này.

Ví dụ này cho thấy sự đa dạng và phức tạp của dữ liệu trong tập dữ liệu VisDrone và nhấn mạnh tầm quan trọng của dữ liệu cảm biến chất lượng cao đối với các tác vụ thị giác máy tính dựa trên máy bay không người lái.

Trích dẫn và xác nhận

Nếu bạn sử dụng bộ dữ liệu VisDrone trong công việc nghiên cứu hoặc phát triển của mình, vui lòng trích dẫn bài báo sau:

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

Chúng tôi muốn ghi nhận nhóm AISKYEYE tại Phòng thí nghiệm Học máy và Khai thác dữ liệu, Đại học Thiên Tân, Trung Quốc, đã tạo và duy trì bộ dữ liệu VisDrone như một nguồn tài nguyên quý giá cho cộng đồng nghiên cứu thị giác máy tính dựa trên máy bay không người lái. Để biết thêm thông tin về tập dữ liệu VisDrone và những người tạo ra nó, hãy truy cập kho lưu trữ GitHub của tập dữ liệu VisDrone.



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), Laughing-q (1)

Ý kiến