Meet YOLO26: next-gen vision AI.

Link to this sectionTập dữ liệu VisDrone#

Tập dữ liệu VisDrone là một benchmark quy mô lớn được tạo 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. Tập dữ liệu chứa dữ liệu ground truth được gán nhãn cẩn thận cho các tác vụ thị giác máy tính khác nhau liên quan đến phân tích hình ảnh và video từ drone.



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

VisDrone bao gồm 288 clip video với 261.908 khung hình và 10.209 hình ảnh tĩnh, được ghi lại bởi các camera gắn trên drone. Tập dữ liệu bao phủ nhiều 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ị và nông thôn), đối tượng (người đi bộ, phương tiện, xe đạp, v.v.) và mật độ (cảnh thưa thớt và đông đúc). Tập dữ liệu được thu thập bằng nhiều nền tảng drone khác nhau trong các kịch bản, điều kiện thời tiết và ánh sáng khác nhau. Những khung hình này được gán nhãn thủ công với hơn 2,6 triệu BBox 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à sự che khuất cũng được cung cấp để hỗ trợ sử dụng dữ liệu hiệu quả hơn.

Link to this sectionCấu trúc tập dữ liệu#

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

  1. Tác vụ 1: Phát hiện đối tượng trong hình ảnh
  2. Tác vụ 2: Phát hiện đối tượng trong video
  3. Tác vụ 3: Theo dõi đối tượng đơn lẻ
  4. Tác vụ 4: Theo dõi đa đối tượng
  5. Tác vụ 5: Đếm đám đông

Link to this sectionỨng dụng#

Tập dữ liệu VisDrone được sử dụng rộng rãi để huấn luyện và đánh giá các mô hình deep learning trong các tác vụ thị giác máy tính dựa trên drone như phát hiện đối tượng, theo dõi đối tượng và đếm đám đông. Tập hợp dữ liệu cảm biến đa dạng, các chú thích đối tượng và thuộc tính của tập 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à thực hành trong lĩnh vực thị giác máy tính dựa trên drone.

Link to this sectionYAML tập dữ liệu#

Một 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à các thông tin liên quan khác của tập dữ liệu. Đối với tập dữ liệu Visdrone, tệp VisDrone.yaml được duy trì tại 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 sectionCách sử dụng#

Để huấn luyện mô hình YOLO26n trên tập dữ liệu VisDrone trong 100 epoch với kích thước hình ảnh là 640, bạn có thể sử dụng các đoạn mã sau. Để có danh sách đầy đủ các đối số khả dụng, hãy tham khảo trang Huấn luyện mô hình.

Ví dụ về 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 sectionDữ liệu mẫu và Chú thích#

Tập dữ liệu VisDrone chứa một tập hợp đa dạng các hình ảnh và video được ghi lại bằng camera gắn trên drone. 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:

Hình ảnh từ trên không của drone trong tập dữ liệu VisDrone với tính năng phát hiện đối tượng

  • Tác 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, nơi các đối tượng được chú thích bằng BBox. Tập dữ liệu cung cấp nhiều hình ảnh phong phú được chụp từ các địa điểm, môi trường và mật độ khác nhau để tạo điều kiện phát triển mô hình cho tác 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 cho các tác vụ thị giác máy tính dựa trên drone.

Link to this sectionTrích dẫn và Ghi nhận#

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

Trích dẫn
@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 xin 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, vì đã tạo và duy trì tập 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 drone. Để 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 Tập dữ liệu VisDrone.

Link to this sectionCâu hỏi thường gặp#

Link to this sectionTập dữ liệu VisDrone là gì và các đặc điểm chính của nó là gì?#

Tập dữ liệu VisDrone là một benchmark quy mô lớn được tạo bởi nhóm AISKYEYE tại Đại học Thiên Tân, Trung Quốc. Nó được thiết kế cho các tác 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 drone. Các đặc điểm chính bao gồm:

  • Thành phần: 288 clip video với 261.908 khung hình và 10.209 hình ảnh tĩnh.
  • Chú thích: Hơn 2,6 triệu BBox cho các đối tượng như người đi bộ, ô tô, xe đạp và xe ba bánh.
  • Sự đa dạng: Được thu thập trên 14 thành phố, trong các môi trường đô thị và nông thôn, trong các điều kiện thời tiết và ánh sáng khác nhau.
  • Tác vụ: Chia thành năm tác vụ chính—phát hiện đối tượng trong hình ảnh và video, theo dõi đối tượng đơn lẻ và đa đối tượng, và đếm đám đông.

Link to this sectionLàm thế nào để sử dụng Tập dữ liệu VisDrone để huấn luyện mô hình YOLO26 với Ultralytics?#

Để huấn luyện mô hình YOLO26 trên tập dữ liệu VisDrone trong 100 epoch với kích thước hình ảnh là 640, bạn có thể thực hiện theo các bước sau:

Ví dụ về Training
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)

Để biết thêm các tùy chọn cấu hình bổ sung, vui lòng tham khảo trang Huấn luyện mô hình.

Link to this sectionCác tập con chính của tập dữ liệu VisDrone và ứng dụng của chúng là gì?#

Tập dữ liệu VisDrone được chia thành năm tập con chính, mỗi tập con được thiết kế cho một tác vụ thị giác máy tính cụ thể:

  1. Tác vụ 1: Phát hiện đối tượng trong hình ảnh.
  2. Tác vụ 2: Phát hiện đối tượng trong video.
  3. Tác vụ 3: Theo dõi đối tượng đơn lẻ.
  4. Tác vụ 4: Theo dõi đa đối tượng.
  5. Tác vụ 5: Đếm đám đông.

Những tập con này được sử dụng rộng rãi để huấn luyện và đánh giá các mô hình deep learning trong các ứng dụng dựa trên drone như giám sát, quản lý giao thông và an toàn công cộng.

Link to this sectionTôi có thể tìm thấy tệp cấu hình cho tập dữ liệu VisDrone trong Ultralytics ở đâu?#

Tệp cấu hình cho tập dữ liệu VisDrone, VisDrone.yaml, có thể được tìm thấy trong kho lưu trữ Ultralytics tại liên kết sau: VisDrone.yaml.

Link to this sectionLàm thế nào để trích dẫn tập dữ liệu VisDrone nếu tôi sử dụng nó trong nghiên cứu của mình?#

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

Trích dẫn
@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}
}

Bình luận