सामग्री पर जाएं

विसड्रोन डेटासेट

VisDrone डेटासेट एक बड़े पैमाने पर बेंचमार्क है जिसे AISKYEYE टीम द्वारा लैब ऑफ मशीन लर्निंग एंड डेटा माइनिंग, टियांजिन विश्वविद्यालय, चीन में बनाया गया है। इसमें ड्रोन-आधारित छवि और वीडियो विश्लेषण से संबंधित विभिन्न कंप्यूटर दृष्टि कार्यों के लिए सावधानीपूर्वक एनोटेट किए गए जमीनी सच्चाई डेटा शामिल हैं।

VisDrone 288 फ्रेम और 261,908 स्थिर छवियों के साथ 10,209 वीडियो क्लिप से बना है, जो विभिन्न ड्रोन-माउंटेड कैमरों द्वारा कैप्चर किया गया है। डेटासेट में स्थान (चीन भर में 14 अलग-अलग शहर), पर्यावरण (शहरी और ग्रामीण), वस्तुएं (पैदल यात्री, वाहन, साइकिल, आदि), और घनत्व (विरल और भीड़ वाले दृश्य) सहित कई पहलुओं को शामिल किया गया है। डेटासेट को विभिन्न परिदृश्यों और मौसम और प्रकाश व्यवस्था की स्थिति के तहत विभिन्न ड्रोन प्लेटफार्मों का उपयोग करके एकत्र किया गया था। इन फ़्रेमों को मैन्युअल रूप से पैदल चलने वालों, कारों, साइकिलों और तिपहिया साइकिलों जैसे लक्ष्यों के 2.6 मिलियन से अधिक बाउंडिंग बॉक्स के साथ एनोटेट किया गया है। बेहतर डेटा उपयोग के लिए दृश्य दृश्यता, ऑब्जेक्ट क्लास और रोड़ा जैसी विशेषताएँ भी प्रदान की जाती हैं।

डेटासेट संरचना

VisDrone डेटासेट को पांच मुख्य सबसेट में व्यवस्थित किया जाता है, प्रत्येक एक विशिष्ट कार्य पर ध्यान केंद्रित करता है:

  1. कार्य 1: छवियों में वस्तु का पता लगाना
  2. टास्क 2: वीडियो में ऑब्जेक्ट का पता लगाना
  3. कार्य 3: एकल-ऑब्जेक्ट ट्रैकिंग
  4. कार्य 4: मल्टी-ऑब्जेक्ट ट्रैकिंग
  5. टास्क 5: भीड़ की गिनती

अनुप्रयोगों

VisDrone डेटासेट का व्यापक रूप से ड्रोन-आधारित कंप्यूटर दृष्टि कार्यों जैसे ऑब्जेक्ट डिटेक्शन, ऑब्जेक्ट ट्रैकिंग और भीड़ की गिनती में गहन शिक्षण मॉडल के प्रशिक्षण और मूल्यांकन के लिए उपयोग किया जाता है। डेटासेट के सेंसर डेटा, ऑब्जेक्ट एनोटेशन और विशेषताओं का विविध सेट इसे ड्रोन-आधारित कंप्यूटर दृष्टि के क्षेत्र में शोधकर्ताओं और चिकित्सकों के लिए एक मूल्यवान संसाधन बनाता है।

डेटासेट YAML

डेटासेट कॉन्फ़िगरेशन को परिभाषित करने के लिए एक YAML (अभी तक एक और मार्कअप भाषा) फ़ाइल का उपयोग किया जाता है। इसमें डेटासेट के पथ, कक्षाओं और अन्य प्रासंगिक जानकारी के बारे में जानकारी होती है। Visdrone डेटासेट के मामले में, VisDrone.yaml फ़ाइल पर बनाए रखा जाता है 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

उपयोग

एक प्रशिक्षित करने के लिए YOLOv8n 640 के छवि आकार के साथ 100 युगों के लिए VisDrone डेटासेट पर मॉडल, आप निम्न कोड स्निपेट का उपयोग कर सकते हैं। उपलब्ध तर्कों की व्यापक सूची के लिए, मॉडल प्रशिक्षण पृष्ठ देखें।

ट्रेन का उदाहरण

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

नमूना डेटा और एनोटेशन

VisDrone डेटासेट में ड्रोन-माउंटेड कैमरों द्वारा कैप्चर की गई छवियों और वीडियो का एक विविध सेट होता है। यहां डेटासेट से डेटा के कुछ उदाहरण दिए गए हैं, साथ ही उनके संबंधित एनोटेशन के साथ:

डेटासेट नमूना छवि

  • कार्य 1: छवियों में ऑब्जेक्ट डिटेक्शन - यह छवि छवियों में ऑब्जेक्ट डिटेक्शन का एक उदाहरण प्रदर्शित करती है, जहां ऑब्जेक्ट्स को बाउंडिंग बॉक्स के साथ एनोटेट किया जाता है। डेटासेट इस कार्य के लिए मॉडल के विकास को सुविधाजनक बनाने के लिए विभिन्न स्थानों, वातावरणों और घनत्वों से ली गई छवियों की एक विस्तृत विविधता प्रदान करता है।

उदाहरण VisDrone डेटासेट में डेटा की विविधता और जटिलता को प्रदर्शित करता है और ड्रोन-आधारित कंप्यूटर विज़न कार्यों के लिए उच्च-गुणवत्ता वाले सेंसर डेटा के महत्व पर प्रकाश डालता है।

प्रशंसा पत्र और पावती

यदि आप अपने शोध या विकास कार्य में VisDrone डेटासेट का उपयोग करते हैं, तो कृपया निम्नलिखित पेपर का हवाला दें:

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

हम ड्रोन-आधारित कंप्यूटर दृष्टि अनुसंधान समुदाय के लिए एक मूल्यवान संसाधन के रूप में VisDrone डेटासेट बनाने और बनाए रखने के लिए मशीन लर्निंग एंड डेटा माइनिंग, टियांजिन विश्वविद्यालय, चीन की लैब में AISKYEYE टीम को स्वीकार करना चाहते हैं। VisDrone डेटासेट और इसके रचनाकारों के बारे में अधिक जानकारी के लिए, VisDrone Dataset GitHub रिपॉजिटरी पर जाएँ।



2023-11-12 बनाया गया, अपडेट किया गया 2023-11-22
लेखक: ग्लेन-जोचर (3), लाफिंग-क्यू (1)

टिप्पणियाँ