أمن جاهز للمؤسسات: متوافقة مع ISO 27001 و SOC 2 Type I.

Link to this sectionمجموعة بيانات xView#

تُعد مجموعة بيانات xView واحدة من أكبر معايير صور الأقمار الصناعية المتاحة للجمهور لمهام اكتشاف الكائنات، حيث توفر أكثر من مليون حالة لكائنات موزعة على 60 فئة ومحددة بـ مربعات الإحاطة في مساحة تزيد عن 1,400 كم² من صور WorldView-3 بدقة 0.3 متر. تم إصدارها لتحدي DIUx xView 2018 من قبل الوكالة الوطنية للاستخبارات الجغرافية المكانية (NGA) الأمريكية، وتتطلب تنزيلاً يدوياً يبلغ حجمه حوالي 20.7 جيجابايت.

تم إنشاء مجموعة البيانات هذه لدفع أربعة آفاق في الرؤية الحاسوبية:

  1. تقليل الحد الأدنى للدقة المطلوبة للاكتشاف.
  2. تحسين كفاءة التعلم.
  3. تمكين اكتشاف المزيد من فئات الكائنات.
  4. تحسين اكتشاف الفئات الدقيقة.

بناءً على معايير مثل COCO، تستهدف xView الصور الملتقطة من الأعلى، حيث تكون الكائنات أصغر بكثير وأكثر تكدساً مما هي عليه في الصور الملتقطة من مستوى الأرض.

يتطلب تنزيلاً يدويًا

مجموعة بيانات xView لا يتم تنزيلها تلقائياً. سجل في موقع DIUx xView 2018 Challenge لتنزيل train_images.zip (~15 جيجابايت)، وtrain_labels.zip، وval_images.zip (~5 جيجابايت)، ثم قم باستخراجها تحت datasets/xView/ بحيث تحتوي على:

datasets/xView/
├── train_images/          # 847 TIF satellite images
├── val_images/            # 282 TIF images (no public labels)
└── xView_train.geojson    # bounding-box annotations

عند أول تشغيل للتدريب، تقوم Ultralytics بتحويل تعليقات GeoJSON إلى تنسيق YOLO وتقسيم الصور المصنفة بنسبة تقريبية 90/10 إلى مجموعات تدريب والتحقق من الصحة تلقائياً — ولا حاجة إلى تحويل يدوي.

Link to this sectionالميزات الرئيسية#

  • فئات دقيقة (Fine-grained): 60 فئة من الكائنات تشمل الطائرات، والمركبات، والمعدات الخاصة بالسكك الحديدية، والسفن البحرية، ومعدات البناء، والمباني — العديد منها صغير، ونادر، ومتشابه بصرياً.
  • دقة عالية: مسافة عينة أرضية تبلغ 0.3 متر تم جمعها من أقمار WorldView-3 الصناعية.
  • تعليقات توضيحية مكثفة: أكثر من مليون حالة لكائنات عبر أكثر من 1,400 كم² من الصور، جميعها مصنفة بمربعات إحاطة أفقية.
  • تحويل تلقائي: يقوم برنامج التنزيل من Ultralytics بتحويل تعليقات GeoJSON الأصلية إلى تنسيق YOLO ويقوم بإنشاء تقسيم التدريب/التحقق من الصحة عند أول استخدام.

Link to this sectionهيكل مجموعة البيانات#

صور xView هي مشاهد أقمار صناعية كبيرة بتنسيق TIF، وفقط 847 صورة تدريب تأتي مع تعليقات توضيحية عامة — مجموعة التحقق من الصحة الخاصة بالتحدي المكونة من 282 صورة لا تحتوي على أي منها. لذلك يقوم ملف تكوين xView.yaml الخاص بـ Ultralytics بتقسيم الصور المصنفة تلقائياً عند أول استخدام:

التقسيم (Split)الصورالوصف
التدريب~90% من 847الصور المصنفة المدرجة في autosplit_train.txt، والتي يتم إنشاؤها عند التشغيل الأول
التحقق~10% من 847الصور المصنفة المدرجة في autosplit_val.txt، والتي تُستخدم لـ التقييم

تغطي الفئات الـ 60 فئات دقيقة مثل الطائرات ذات الأجنحة الثابتة، وطائرات الشحن، والسيارات الصغيرة، والحافلات، والقاطرات، والسفن البحرية، والحفارات، والمباني، وحظائر الطائرات، وخزانات التخزين؛ القائمة الكاملة موجودة في Dataset YAML أدناه. أثناء التحويل، يتم إعادة تعيين معرفات الفئات الأصلية للتحدي (11–94) إلى فهارس متتالية من 0 إلى 59.

Link to this sectionالتطبيقات#

تجعل الفئات الدقيقة ووجهة النظر العلوية عالية الدقة من xView معياراً قياسياً لتدريب وتقييم نماذج التعلم العميق في الاستشعار عن بعد. تشمل التطبيقات الشائعة ما يلي:

  • الاستطلاع العسكري والدفاعي
  • التخطيط العمراني والتطوير
  • المراقبة البيئية
  • الاستجابة للكوارث وتقييمها
  • رسم خرائط البنية التحتية وإدارتها

للحصول على معايير أخرى للصور الملتقطة من الأعلى، راجع مجموعة بيانات VisDrone التي تركز على الطائرات بدون طيار أو مجموعة بيانات DOTA-v2 ذات الصناديق الموجهة.

Link to this sectionYAML مجموعة البيانات#

يحدد ملف xView.yaml تكوين مجموعة البيانات — مسارات مجموعة البيانات، وأسماء الفئات الـ 60، وبرنامج التنزيل الذي يحول تعليقات GeoJSON وينشئ التقسيم التلقائي. تتم صيانته في مستودع Ultralytics على الرابط https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/xView.yaml.

ultralytics/cfg/datasets/xView.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DIUx xView 2018 Challenge dataset https://challenge.xviewdataset.org by U.S. National Geospatial-Intelligence Agency (NGA)
# --------  Download and extract data manually to `datasets/xView` before running the train command.  --------
# Documentation: https://docs.ultralytics.com/datasets/detect/xview
# Example usage: yolo train data=xView.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── xView ← downloads here (20.7 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: xView # dataset root dir
train: images/autosplit_train.txt # train images (relative to 'path') 90% of 847 train images
val: images/autosplit_val.txt # val images (relative to 'path') 10% of 847 train images

# Classes
names:
  0: Fixed-wing Aircraft
  1: Small Aircraft
  2: Cargo Plane
  3: Helicopter
  4: Passenger Vehicle
  5: Small Car
  6: Bus
  7: Pickup Truck
  8: Utility Truck
  9: Truck
  10: Cargo Truck
  11: Truck w/Box
  12: Truck Tractor
  13: Trailer
  14: Truck w/Flatbed
  15: Truck w/Liquid
  16: Crane Truck
  17: Railway Vehicle
  18: Passenger Car
  19: Cargo Car
  20: Flat Car
  21: Tank car
  22: Locomotive
  23: Maritime Vessel
  24: Motorboat
  25: Sailboat
  26: Tugboat
  27: Barge
  28: Fishing Vessel
  29: Ferry
  30: Yacht
  31: Container Ship
  32: Oil Tanker
  33: Engineering Vehicle
  34: Tower crane
  35: Container Crane
  36: Reach Stacker
  37: Straddle Carrier
  38: Mobile Crane
  39: Dump Truck
  40: Haul Truck
  41: Scraper/Tractor
  42: Front loader/Bulldozer
  43: Excavator
  44: Cement Mixer
  45: Ground Grader
  46: Hut/Tent
  47: Shed
  48: Building
  49: Aircraft Hangar
  50: Damaged Building
  51: Facility
  52: Construction Site
  53: Vehicle Lot
  54: Helipad
  55: Storage Tank
  56: Shipping container lot
  57: Shipping Container
  58: Pylon
  59: Tower

# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
  import json
  from pathlib import Path
  import shutil

  import numpy as np
  from PIL import Image

  from ultralytics.utils import TQDM
  from ultralytics.data.split import autosplit
  from ultralytics.utils.ops import xyxy2xywhn

  def convert_labels(fname=Path("xView/xView_train.geojson")):
      """Convert xView GeoJSON labels to YOLO format (classes 0-59) and save them as text files."""
      path = fname.parent
      with open(fname, encoding="utf-8") as f:
          print(f"Loading {fname}...")
          data = json.load(f)

      # Make dirs
      labels = path / "labels" / "train"
      shutil.rmtree(labels, ignore_errors=True)
      labels.mkdir(parents=True, exist_ok=True)

      # xView classes 11-94 to 0-59
      xview_class2index = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, -1, 3, -1, 4, 5, 6, 7, 8, -1, 9, 10, 11,
                           12, 13, 14, 15, -1, -1, 16, 17, 18, 19, 20, 21, 22, -1, 23, 24, 25, -1, 26, 27, -1, 28, -1,
                           29, 30, 31, 32, 33, 34, 35, 36, 37, -1, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, 46,
                           47, 48, 49, -1, 50, 51, -1, 52, -1, -1, -1, 53, 54, -1, 55, -1, -1, 56, -1, 57, -1, 58, 59]

      shapes = {}
      for feature in TQDM(data["features"], desc=f"Converting {fname}"):
          p = feature["properties"]
          if p["bounds_imcoords"]:
              image_id = p["image_id"]
              image_file = path / "train_images" / image_id
              if image_file.exists():  # 1395.tif missing
                  try:
                      box = np.array([int(num) for num in p["bounds_imcoords"].split(",")])
                      assert box.shape[0] == 4, f"incorrect box shape {box.shape[0]}"
                      cls = p["type_id"]
                      cls = xview_class2index[int(cls)]  # xView class to 0-59
                      assert 59 >= cls >= 0, f"incorrect class index {cls}"

                      # Write YOLO label
                      if image_id not in shapes:
                          shapes[image_id] = Image.open(image_file).size
                      box = xyxy2xywhn(box[None].astype(float), w=shapes[image_id][0], h=shapes[image_id][1], clip=True)
                      with open((labels / image_id).with_suffix(".txt"), "a", encoding="utf-8") as f:
                          f.write(f"{cls} {' '.join(f'{x:.6f}' for x in box[0])}\n")  # write label.txt
                  except Exception as e:
                      print(f"WARNING: skipping one label for {image_file}: {e}")

  # Download manually from https://challenge.xviewdataset.org
  dir = Path(yaml["path"])  # dataset root dir
  # urls = [
  #     "https://d307kc0mrhucc3.cloudfront.net/train_labels.zip",  # train labels
  #     "https://d307kc0mrhucc3.cloudfront.net/train_images.zip",  # 15G, 847 train images
  #     "https://d307kc0mrhucc3.cloudfront.net/val_images.zip",  # 5G, 282 val images (no labels)
  # ]
  # download(urls, dir=dir)

  # Convert labels
  convert_labels(dir / "xView_train.geojson")

  # Move images
  images = Path(dir / "images")
  images.mkdir(parents=True, exist_ok=True)
  Path(dir / "train_images").rename(dir / "images" / "train")
  Path(dir / "val_images").rename(dir / "images" / "val")

  # Split
  autosplit(dir / "images" / "train")

Link to this sectionالاستخدام#

تنزيل يدوي بحجم 20.7 جيجابايت

يتوقع التدريب استخراج التنزيل اليدوي الموصوف أعلاه تحت datasets/xView/؛ ثم يتم تشغيل تحويل التعليقات التوضيحية وتقسيم التدريب/التحقق تلقائياً.

لتدريب نموذج على مجموعة بيانات xView لمدة 100 عصر بحجم صورة 640، يمكنك استخدام مقتطفات الكود التالية. للحصول على قائمة شاملة بالوسيطات المتاحة، ارجع إلى صفحة التدريب الخاصة بالنموذج.

مثال على التدريب
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="xView.yaml", epochs=100, imgsz=640)

لتصنيف صور أقمار صناعية إضافية وإدارة عمليات تدريب xView في متصفحك، استخدم منصة Ultralytics.

Link to this sectionعينة من البيانات والتعليقات#

يعرض النموذج أدناه مشهد xView نموذجياً: صور علوية عالية الدقة حيث يتم تحديد كائنات صغيرة مثل المركبات والمباني بمربعات إحاطة، مما يوضح سبب تطلب اكتشاف الكائنات في صور الأقمار الصناعية تحديداً دقيقاً للموقع.

صور أقمار صناعية علوية لمجموعة بيانات xView مع اكتشاف الكائنات

Link to this sectionالاقتباسات والشكر#

إذا كنت تستخدم مجموعة بيانات xView في بحثك أو عملك التطويري، فيرجى الاستشهاد بالورقة التالية:

اقتباس
@misc{lam2018xview,
      title={xView: Objects in Context in Overhead Imagery},
      author={Darius Lam and Richard Kuzma and Kevin McGee and Samuel Dooley and Michael Laielli and Matthew Klaric and Yaroslav Bulatov and Brendan McCord},
      year={2018},
      eprint={1802.07856},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

نود أن نعرب عن تقديرنا لـ وحدة ابتكار الدفاع (DIU) ومبدعي مجموعة بيانات xView لمساهمتهم القيمة في مجتمع أبحاث الرؤية الحاسوبية. لمزيد من المعلومات، قم بزيارة موقع مجموعة بيانات xView.

Link to this sectionالأسئلة الشائعة#

Link to this sectionما هي مجموعة بيانات xView وكيف تفيد أبحاث رؤية الحاسوب؟#

مجموعة بيانات xView هي معيار لصور الأقمار الصناعية تم إصداره لتحدي DIUx xView 2018 من قبل الوكالة الوطنية للاستخبارات الجغرافية المكانية الأمريكية، حيث توفر أكثر من مليون حالة لكائنات عبر 60 فئة دقيقة في صور WorldView-3 بدقة 0.3 متر. وهي تدعم الأبحاث حول اكتشاف الكائنات الصغيرة والنادرة والدقيقة في المشاهد العلوية، والتي تعد أهدافاً أصعب بكثير من تلك الموجودة في الصور الملتقطة من مستوى الأرض.

Link to this sectionكيف يمكنني تنزيل وإعداد مجموعة بيانات xView؟#

تتطلب xView تنزيلاً يدوياً: سجل في موقع DIUx xView 2018 Challenge، وقم بتنزيل train_images.zip (~15 جيجابايت)، وtrain_labels.zip، وval_images.zip (~5 جيجابايت) — حوالي 20.7 جيجابايت في المجموع — وقم باستخراجها تحت datasets/xView/ باتباع التخطيط الموضح في التحذير في أعلى هذه الصفحة. عند أول تشغيل للتدريب، تقوم Ultralytics تلقائياً بتحويل تعليقات GeoJSON إلى تنسيق YOLO وإنشاء تقسيم التدريب/التحقق.

Link to this sectionكم عدد الصور والفئات التي تحتوي عليها xView؟#

تحتوي xView على 847 صورة تدريب مصنفة و282 صورة للتحقق من الصحة بدون تعليقات عامة، تم التقاطها جميعاً بواسطة أقمار WorldView-3 الصناعية بدقة 0.3 متر. تغطي التعليقات التوضيحية أكثر من مليون حالة لكائنات عبر 60 فئة. نظراً لأن تعليقات التدريب فقط هي العامة، فإن تكوين xView.yaml لـ Ultralytics يقسم 847 صورة مصنفة بنسبة 90/10 تقريباً إلى مجموعات تدريب وتحقق؛ راجع Dataset Structure للحصول على التفاصيل.

Link to this sectionكيف يمكنني تدريب نموذج YOLO26 على مجموعة بيانات xView؟#

درب نموذج YOLO26n على xView لمدة 100 دورة تدريبية بحجم صورة 640:

مثال على التدريب
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="xView.yaml", epochs=100, imgsz=640)

للحصول على وسيطات وإعدادات مفصلة، ارجع إلى صفحة التدريب الخاصة بالنموذج.

Link to this sectionكيف يمكنني الاستشهاد بمجموعة بيانات xView في بحثي؟#

استشهد بالورقة البحثية "xView: Objects in Context in Overhead Imagery" (Lam et al., arXiv:1802.07856, 2018)؛ إدخال BibTeX الكامل موجود في قسم Citations and Acknowledgments أعلاه.

التعليقات