Bộ dữ liệu VisDrone
Bộ dữ liệu VisDrone là một chuẩn mực 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 ground truth được chú thích 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 dựa trên drone.
Xem: Cách Huấn Luyện Các Mô Hình Ultralytics YOLO trên Bộ Dữ Liệu VisDrone để Phân Tích Ảnh Chụp Từ Thiết Bị Bay
VisDrone bao gồm 288 video clip với 261.908 khung hình và 10.209 ảnh tĩnh, được chụp bởi nhiều camera gắn trên máy bay không người lái khác nhau. Bộ dữ liệu bao gồm nhiều khía cạnh, bao gồm địa điểm (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ộ, 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 nhiều nền tảng máy bay không người lái khác nhau trong các điều kiện thời tiết và ánh sáng và các tình huống khác nhau. Các khung hình 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ư tầm nhìn của cảnh, loại đối tượng và sự che khuất cũng được cung cấp để sử dụng dữ liệu tốt hơn.
Cấu trúc bộ 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 hợp tập trung vào một tác vụ cụ thể:
- Nhiệm vụ 1: Phát hiện đối tượng trong ảnh
- Nhiệm vụ 2: Phát hiện đối tượng trong video
- Nhiệm vụ 3: Theo dõi một đối tượng
- Nhiệm vụ 4: Theo dõi đa đối tượng
- Nhiệm vụ 5: Đếm đám đông
Các ứng dụng
Bộ dữ liệu VisDrone được sử dụng rộng rãi để huấn luyện 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, chẳng hạn như phát hiện đối tượng, theo dõi đối tượng và đếm đám đông. Tập hợp đa dạng các dữ liệu cảm biến, chú thích đối tượng và thuộc tính của bộ dữ liệu làm cho nó trở thành một nguồn tài nguyên có giá trị cho các nhà nghiên cứu và người thực hành 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.
YAML bộ dữ liệu
Một tệp YAML (Yet Another Markup Language) được sử dụng để xác định cấu hình bộ 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 bộ dữ liệu. Trong trường hợp bộ dữ liệu Visdrone, thì 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 🚀 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
Cách sử dụng
Để huấn luyện mô hình YOLO11n trên tập dữ liệu VisDrone trong 100 epochs với kích thước ả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ố có sẵn, hãy tham khảo trang Training (Huấn luyện) của mô hình.
Ví dụ huấn luyện
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
Dữ liệu mẫu và Chú thích
Bộ dữ liệu VisDrone chứa một tập hợp đa dạng các hình ảnh và video được chụp bởi 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ừ bộ dữ liệu, cùng với các chú thích tương ứng của chúng:
- Nhiệm vụ 1: Phát hiện đối tượng trong ảnh - Hình ảnh này minh họa một ví dụ về phát hiện đối tượng trong ảnh, trong đó các đối tượng được chú thích bằng khung giới hạn. Tập dữ liệu cung cấp nhiều loại hình ảnh đượ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 các mô hình cho nhiệm vụ này.
Ví dụ này thể hiện sự đa dạng và phức tạp của dữ liệu trong bộ dữ liệu VisDrone và làm nổi bật 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 máy bay không người lái.
Trích dẫn và Lời cảm ơ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 xin ghi nhận công của 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 ra và duy trì bộ dữ liệu VisDrone như một nguồn tài nguyên giá trị 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ề bộ 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 bộ dữ liệu VisDrone.
Câu hỏi thường gặp
Tập dữ liệu VisDrone là gì và các tính năng chính của nó là gì?
Bộ dữ liệu VisDrone là một chuẩn mực quy mô lớn được tạo ra 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 tính năng chính bao gồm:
- Thành phần: 288 video clip với 261.908 khung hình và 10.209 ảnh tĩnh.
- Chú thích: Hơn 2,6 triệu hộp giới hạn cho các đối tượng như người đi bộ, ô tô, xe đạp và xe ba bánh.
- Tính Đa dạng: Được thu thập trên 14 thành phố, ở khu vực thành thị và nông thôn, trong các điều kiện thời tiết và ánh sáng khác nhau.
- Các tác vụ: Chia thành năm tác vụ chính—phát hiện đối tượng trong ảnh và video, theo dõi một và nhiều đối tượng, và đếm đám đông.
Làm thế nào để sử dụng Bộ dữ liệu VisDrone để huấn luyện mô hình YOLO11 với Ultralytics?
Để huấn luyện một mô hình YOLO11 trên bộ dữ liệu VisDrone trong 100 epochs với kích thước ảnh là 640, bạn có thể làm theo các bước sau:
Ví dụ huấn luyện
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
Để biết thêm các tùy chọn cấu hình, vui lòng tham khảo trang Huấn luyện của mô hình.
Các tập hợp con chính của bộ dữ liệu VisDrone và các ứng dụng của chúng là gì?
Bộ dữ liệu VisDrone được chia thành năm tập hợp con chính, mỗi tập hợp được điều chỉnh cho một tác vụ thị giác máy tính cụ thể:
- Nhiệm vụ 1: Phát hiện đối tượng trong ảnh.
- Nhiệm vụ 2: Phát hiện đối tượng trong video.
- Nhiệm vụ 3: Theo dõi một đối tượng.
- Nhiệm vụ 4: Theo dõi nhiều đối tượng.
- Nhiệm vụ 5: Đếm đám đông.
Các tập hợp con này được sử dụng rộng rãi để huấn luyện và đánh giá các mô hình học sâu trong các ứng dụng dựa trên máy bay không người lái như giám sát, theo dõi giao thông và an toàn công cộng.
Tôi có thể tìm thấy tệp cấu hình cho tập dữ liệu VisDrone ở đâu trong Ultralytics?
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.
Làm cách nào để trích dẫn bộ 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 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}
}