Ultralytics YOLO27:
Get Started
No license

VisDrone Veri Kümesi#

VisDrone Veri Kümesi, büyük ölçekli bir drone görüntüleri kıyaslama veri kümesidir. Tespit alt kümesi (VisDrone2019-DET), nesne tespiti için 10 nesne sınıfıyla etiketlenmiş 8.629 hava görüntüsü sunar: 6.471 eğitim, 548 doğrulama ve 1.610 test-dev görüntüsü. Veri kümesi, Çin'in Tianjin Üniversitesi'ndeki Makine Öğrenimi ve Veri Madenciliği Laboratuvarı bünyesindeki AISKYEYE ekibi tarafından oluşturulmuştur.



İzle: Ultralytics YOLO VisDrone Veri Kümesinde Nasıl Eğitilir | Havadan Algılama | Eksiksiz Eğitim 🚀

VisDrone kıyaslama veri kümesinin tamamı; Çin'in 14 farklı şehrinde drone kameralarıyla çekilmiş, kentsel ve kırsal ortamları, seyrek ve kalabalık sahneleri, ayrıca çeşitli hava ve ışık koşullarını kapsayan 288 video klipten (261.908 kare) ve 10.209 durağan görüntüden oluşur. Karelerde, sahne görünürlüğü, nesne sınıfı ve örtülme gibi ek özniteliklerle birlikte 2,6 milyondan fazla elle etiketlenmiş sınırlayıcı kutu bulunur. Ultralytics VisDrone.yaml yapılandırması, bu kıyaslama veri kümesinin VisDrone2019-DET durağan görüntü alt kümesini kullanır.

Temel Özellikler#

  • Küçük ve yoğun nesneler: Hava görüntülerindeki bakış açısı hedefleri küçük ve sıkışık hâle getirir; yalnızca 548 doğrulama görüntüsünde bile toplam 38.759 etiketli kutu, yani görüntü başına ortalama yaklaşık 70 nesne bulunur.
  • Sahne çeşitliliği: Çin'in 14 şehrinden gelen görüntüler kentsel ve kırsal bölgeleri, gündüz ve gece koşullarını, ayrıca farklı hava koşullarını kapsar.
  • Zengin açıklamalar: Kıyaslama veri kümesinin tamamında, örtülme ve görünürlük öznitelikleriyle birlikte 2,6 milyondan fazla kutu bulunur.
  • Önceden tanımlanmış bölümler: Tutarlı değerlendirme için sabit eğitim / doğrulama / test-dev bölümleri (6.471 / 548 / 1.610 görüntü).

Veri Kümesi Yapısı#

Ultralytics VisDrone yapılandırması, VisDrone2019-DET görüntü alt kümesini üç bölüme ayırarak kapsar:

BölümGörüntülerAçıklama
Eğit6,471Algılayıcıyı eğitmek için kullanılan etiketli hava görüntüleri
Doğrulama548Geliştirme sırasında değerlendirme için kullanılan görüntüler
Test-dev1,610Eğitilmiş modelin son değerlendirmesi için ayrılmış görüntüler

Dördüncü bir bölüm olan test-challenge (1.580 görüntü), VisDrone yarışması için ayrılmıştır ve indirilmez; bu nedenle DET kümesinin tamamı 10.209 görüntüden oluşur.

Veri kümesinde 10 nesne sınıfı etiketlenmiştir: yaya, insanlar, bisiklet, otomobil, minibüs, kamyon, üç tekerlekli bisiklet, tenteli üç tekerlekli bisiklet, otobüs ve motosiklet. VisDrone, yaya sınıfını (ayakta duran veya yürüyen kişi) insanlar sınıfından (başka herhangi bir duruşta bulunan kişi) ayrı tutar.

Otomatik YOLO dönüşümü

İlk kullanımda indirme betiği, özgün VisDrone açıklamalarını YOLO biçimine dönüştürür ve yok sayılacak olarak işaretlenmiş bölgeleri atlar (kullanılmayan "others" kategorisi de böylece dışarıda kalır).

Uygulamalar#

VisDrone'un yoğun sahneleri ve küçük hedefleri, bu veri kümesini hava görüntülerinde küçük nesne tespiti için standart bir kıyaslama veri kümesi hâline getirir. Yaygın uygulamalar şunlardır:

  • İHA'larla trafik izleme ve araç sayımı
  • Kalabalık analizi ve kamu güvenliği gözetimi
  • Altyapı ve inşaat sahası denetimi
  • Karmaşık sahnelerde küçük nesneleri tespit etmeye yönelik bilgisayarlı görü araştırmaları

Diğer hava görüntüsü kıyaslama veri kümeleri için uydu görüntülerine odaklanan xView veri kümesine veya yönlendirilmiş kutular içeren DOTA-v2 veri kümesine bak.

Veri Kümesi YAML Dosyası#

VisDrone.yaml dosyası; veri kümesi yollarını, sınıf adlarını ve otomatik indirme-dönüştürme betiğini içeren veri kümesi yapılandırmasını tanımlar. Dosya, Ultralytics deposunda https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/VisDrone.yaml konumunda tutulur.

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

Kullanım#

~2 GB indirme

VisDrone, ilk eğitim yaptığında otomatik olarak indirilir; toplam boyutu yaklaşık 2 GB olan üç arşiv indirir ve çıkarma ile dönüştürme sırasında yaklaşık 4 GB boş disk alanı gerekir.

VisDrone veri kümesinde 640 görüntü boyutuyla 100 epoch boyunca YOLO26n modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Kullanılabilir bağımsız değişkenlerin kapsamlı listesi için modelin Eğitim sayfasına bak.

Eğitim Örneği
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)

# Modeli eğit — veri kümesi ilk çalıştırmada otomatik indirilir
results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)

Ek hava görüntülerini etiketlemek ve VisDrone eğitim çalışmalarını tarayıcında yönetmek için Ultralytics Platform kullan.

Örnek Veriler ve Açıklamalar#

Aşağıdaki örnek, tipik bir VisDrone sahnesini gösterir: Yoğun bir yolun havadan görünümü; yayalar ve araçlar küçük, sıkışık hedefler olarak görünür ve birçoğu diğer nesneler tarafından kısmen kapatılmıştır.

Nesne tespiti içeren VisDrone veri kümesi drone hava görüntüsü

Atıflar ve Teşekkürler#

VisDrone veri kümesini araştırma veya geliştirme çalışmalarında kullanıyorsan lütfen aşağıdaki makaleye atıfta bulun:

Alıntı
@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={2022},
  volume={44},
  number={11},
  pages={7380-7399},
  doi={10.1109/TPAMI.2021.3119563}}

VisDrone veri kümesini oluşturup sürdürdükleri için Çin'deki Tianjin Üniversitesi Makine Öğrenimi ve Veri Madenciliği Laboratuvarı bünyesindeki AISKYEYE ekibine teşekkür ederiz. Daha fazla bilgi için VisDrone Veri Kümesi GitHub deposunu ziyaret et.

Sık Sorulan Sorular#

  • VisDrone, nesnelerin küçük ve yoğun olduğu, yukarıdan görüldüğü drone görüntüleri üzerinde algılayıcıları eğitmek ve kıyaslamak için kullanılır. Hava görüntülerini, kalabalık sahneleri ve çeşitli koşulları bir araya getirmesi; veri kümesini İHA tabanlı trafik izleme, kalabalık analizi ve küçük nesne tespiti araştırmaları için standart bir test ortamı hâline getirir.

  • Ultralytics VisDrone yapılandırmasında 8.629 görüntü bulunur: eğitim için 6.471, doğrulama için 548 ve test için 1.610 (test-dev) görüntü. Tüm bölümlerde aynı 10 sınıf kullanılır: yaya, insanlar, bisiklet, otomobil, minibüs, kamyon, üç tekerlekli bisiklet, tenteli üç tekerlekli bisiklet, otobüs ve motosiklet. Ayrıntılı dağılım için Veri Kümesi Yapısı bölümüne bak.

  • data="VisDrone.yaml" ile ilk kez eğitim yaptığında VisDrone otomatik olarak indirilir; elle işlem yapman gerekmez. Betik, Ultralytics GitHub sürüm varlıklarından üç arşiv (yaklaşık 2 GB) indirir ve açıklamaları YOLO biçimine dönüştürür. Yarışma için ayrılmış test-challenge bölümü dâhil değildir.

  • VisDrone üzerinde 640 görüntü boyutuyla 100 epoch boyunca YOLO26n modeli eğit:

    Eğitim Örneği
    from ultralytics import YOLO
    
    # Bir model yükle
    model = YOLO("yolo26n.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
    
    # Modeli eğit
    results = model.train(data="VisDrone.yaml", epochs=100, imgsz=640)

    Ayrıntılı yapılandırmalar için Eğitim sayfasına ve model eğitimi ipuçları sayfasına bak.

  • VisDrone'daki nesneler kareye kıyasla çok küçüktür; çoğu zaman yalnızca birkaç düzine piksel boyutundadır ve yoğun, büyük ölçüde örtülmüş gruplar hâlinde görünür. Bu durum, yer seviyesinden çekilmiş fotoğraflar üzerinde ayarlanmış algılayıcıları zorlar. Daha yüksek çözünürlükte eğitim ve tahmin yapmak (örneğin daha küçük bir batch ile imgsz=1280 kullanmak) küçük hedefleri yakalamaya yardımcı olur. SAHI döşemeli çıkarım ise büyük görüntüleri parçalara ayırarak küçük nesnelerin her çıkarım penceresinin daha büyük bir bölümünü kaplamasını sağlar.

  • VisDrone kıyaslama veri kümesinin tamamı beş görevi kapsar: görüntülerde nesne tespiti, videolarda nesne tespiti, tek nesne takibi, çoklu nesne takibi ve kalabalık sayımı. Veri kümesinde 288 video klip ve 10.209 durağan görüntü bulunur. Ultralytics VisDrone.yaml yapılandırması yalnızca görüntüde tespit görevini (VisDrone2019-DET) kapsar ve 6.471 eğitim, 548 doğrulama ve 1.610 test-dev görüntüsünü indirir.

  • "Detection and Tracking Meet Drones Challenge" makalesine (IEEE TPAMI, cilt 44, sayı 11, 2022, DOI 10.1109/TPAMI.2021.3119563) atıfta bulun; BibTeX kaydının tamamı yukarıdaki Atıflar ve Teşekkürler bölümündedir.

Yorumlar