VisDrone Veri Kümesi
VisDrone Veri Kümesi, Çin'deki Tianjin Üniversitesi'ndeki Makine Öğrenimi ve Veri Madenciliği Laboratuvarı'ndaki AISKYEYE ekibi tarafından oluşturulan büyük ölçekli bir kıyaslama standardıdır. Drone tabanlı görüntü ve video analizi ile ilgili çeşitli bilgisayar görüşü görevleri için dikkatlice açıklanmış temel doğruluk verileri içerir.
İzle: Drone Görüntü Analizi için VisDrone Veri Kümesinde Ultralytics YOLO Modelleri Nasıl Eğitilir
VisDrone, çeşitli drone'a monte edilmiş kameralar tarafından çekilen 261.908 kare ve 10.209 statik görüntü içeren 288 video klibinden oluşmaktadır. Veri kümesi, konum (Çin genelinde 14 farklı şehir), çevre (kentsel ve kırsal), nesneler (yayalar, araçlar, bisikletler, vb.) ve yoğunluk (seyrek ve kalabalık sahneler) dahil olmak üzere çok çeşitli yönleri kapsar. Veri kümesi, farklı senaryolar ve hava ve aydınlatma koşulları altında çeşitli drone platformları kullanılarak toplanmıştır. Bu kareler, yayalar, arabalar, bisikletler ve üç tekerlekli bisikletler gibi hedeflerin 2,6 milyondan fazla sınırlayıcı kutusu ile manuel olarak açıklanmıştır. Daha iyi veri kullanımı için sahne görünürlüğü, nesne sınıfı ve tıkanma gibi özellikler de sağlanmaktadır.
Veri Seti Yapısı
VisDrone veri kümesi, her biri belirli bir göreve odaklanan beş ana alt kümeye ayrılmıştır:
- Görev 1: Görüntülerde nesne algılama
- Görev 2: Videolarda nesne algılama
- Görev 3: Tek nesne takibi
- Görev 4: Çoklu nesne takibi
- Görev 5: Kalabalık sayımı
Uygulamalar
VisDrone veri kümesi, nesne algılama, nesne takibi ve kalabalık sayımı gibi drone tabanlı bilgisayarla görme görevlerinde derin öğrenme modellerini eğitmek ve değerlendirmek için yaygın olarak kullanılmaktadır. Veri kümesinin çeşitli sensör verileri, nesne açıklamaları ve nitelikleri, onu drone tabanlı bilgisayarla görme alanındaki araştırmacılar ve uygulayıcılar için değerli bir kaynak haline getirmektedir.
Veri Seti YAML
Bir YAML (Yet Another Markup Language) dosyası, veri kümesi yapılandırmasını tanımlamak için kullanılır. Veri kümesinin yolları, sınıfları ve diğer ilgili bilgileri hakkında bilgiler içerir. Visdrone veri kümesi örneğinde, VisDrone.yaml
dosyası şu adreste tutulur: 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
def visdrone2yolo(dir, split, source_name=None):
"""Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
from PIL import Image
from tqdm import tqdm
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, curl=True, 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
Kullanım
640 görüntü boyutuyla 100 epoch için VisDrone veri kümesinde bir YOLO11n modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsiniz. Mevcut argümanların kapsamlı bir listesi için model Eğitim sayfasına bakın.
Eğitim Örneği
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
Örnek Veri ve Açıklamalar
VisDrone veri kümesi, drone'a monte edilmiş kameralar tarafından çekilen çeşitli görüntü ve videolar içerir. İşte veri kümesinden bazı veri örnekleri ve bunlara karşılık gelen açıklamaları:
- Görev 1: Görüntülerde nesne algılama - Bu görüntü, nesnelerin sınırlayıcı kutularla işaretlendiği görüntülerde nesne algılamanın bir örneğini göstermektedir. Veri seti, bu görev için modellerin geliştirilmesini kolaylaştırmak amacıyla farklı konumlardan, ortamlardan ve yoğunluklardan alınmış çok çeşitli görüntüler sunar.
Örnek, VisDrone veri setindeki verilerin çeşitliliğini ve karmaşıklığını sergilemekte ve drone tabanlı bilgisayar görüşü görevleri için yüksek kaliteli sensör verilerinin önemini vurgulamaktadır.
Alıntılar ve Teşekkürler
Araştırma veya geliştirme çalışmalarınızda VisDrone veri kümesini kullanıyorsanız, lütfen aşağıdaki makaleye atıfta bulunun:
@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}}
Çin, Tianjin Üniversitesi, Makine Öğrenimi ve Veri Madenciliği Laboratuvarı'ndaki AISKYEYE ekibine, drone tabanlı bilgisayarla görü araştırma topluluğu için değerli bir kaynak olarak VisDrone veri kümesini oluşturdukları ve sürdürdükleri için teşekkür etmek isteriz. VisDrone veri kümesi ve yaratıcıları hakkında daha fazla bilgi için VisDrone Veri Kümesi GitHub deposunu ziyaret edin.
SSS
VisDrone Veri Seti nedir ve temel özellikleri nelerdir?
VisDrone Veri Kümesi, Çin'deki Tianjin Üniversitesi'ndeki AISKYEYE ekibi tarafından oluşturulan büyük ölçekli bir kıyaslama standardıdır. Drone tabanlı görüntü ve video analizi ile ilgili çeşitli bilgisayar görüşü görevleri için tasarlanmıştır. Temel özellikler şunlardır:
- Kompozisyon: 261.908 kare ve 10.209 statik görüntü içeren 288 video klip.
- Açıklamalar: Yayalar, arabalar, bisikletler ve üç tekerlekli bisikletler gibi nesneler için 2,6 milyondan fazla sınırlayıcı kutu.
- Çeşitlilik: 14 şehirde, kentsel ve kırsal ortamlarda, farklı hava ve ışık koşullarında toplanmıştır.
- Görevler: Beş ana göreve ayrılmıştır: Görüntülerde ve videolarda nesne tespiti, tek ve çoklu nesne takibi ve kalabalık sayımı.
Ultralytics ile bir YOLO11 modelini eğitmek için VisDrone Veri Kümesini nasıl kullanabilirim?
VisDrone veri kümesi üzerinde 640 görüntü boyutuyla 100 epok için bir YOLO11 modeli eğitmek için şu adımları izleyebilirsiniz:
Eğitim Örneği
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
Ek yapılandırma seçenekleri için lütfen model Eğitim sayfasına bakın.
VisDrone veri kümesinin ana alt kümeleri ve uygulamaları nelerdir?
VisDrone veri kümesi, her biri belirli bir bilgisayarla görme görevi için uyarlanmış beş ana alt kümeye ayrılmıştır:
- Görev 1: Görüntülerde nesne algılama.
- Görev 2: Videolarda nesne tespiti.
- Görev 3: Tek nesne takibi.
- Görev 4: Çoklu nesne takibi.
- Görev 5: Kalabalık sayımı.
Bu alt kümeler, gözetim, trafik izleme ve kamu güvenliği gibi drone tabanlı uygulamalarda derin öğrenme modellerini eğitmek ve değerlendirmek için yaygın olarak kullanılmaktadır.
Ultralytics'te VisDrone veri kümesi için yapılandırma dosyasını nerede bulabilirim?
VisDrone veri kümesi için yapılandırma dosyası, VisDrone.yaml
, aşağıdaki bağlantıdaki Ultralytics deposunda bulunabilir:
VisDrone.yaml.
Araştırmamda kullanırsam VisDrone veri kümesine nasıl atıfta bulunabilirim?
Araştırma veya geliştirme çalışmalarınızda VisDrone veri kümesini kullanıyorsanız, lütfen aşağıdaki makaleye atıfta bulunun:
@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}
}