انتقل إلى المحتوى

Ultralytics المستندات: استخدام YOLOv8 مع SAHI للاستدلال الشرائح

مرحبا بكم في Ultralytics وثائق حول كيفية الاستخدام YOLOv8 مع SAHI (الاستدلال المفرط بمساعدة التقطيع). يهدف هذا الدليل الشامل إلى تزويدك بكل المعرفة الأساسية التي ستحتاجها لتنفيذ SAHI جنبا إلى جنب YOLOv8. سنتعمق في ماهية SAHI ، ولماذا يعد الاستدلال المقطع أمرا بالغ الأهمية للتطبيقات واسعة النطاق ، وكيفية دمج هذه الوظائف مع YOLOv8 لتحسين أداء اكتشاف الكائنات.

نظرة عامة على الاستدلال شرائح SAHI

مقدمة عن ساهي

SAHI (الاستدلال المفرط بمساعدة التقطيع) هي مكتبة مبتكرة مصممة لتحسين خوارزميات اكتشاف الكائنات للصور واسعة النطاق وعالية الدقة. تكمن وظيفتها الأساسية في تقسيم الصور إلى شرائح يمكن التحكم فيها ، وتشغيل اكتشاف الكائنات على كل شريحة ، ثم خياطة النتائج مرة أخرى معا. SAHI متوافق مع مجموعة من نماذج الكشف عن الأشياء ، بما في ذلك YOLO ، مما يوفر المرونة مع ضمان الاستخدام الأمثل للموارد الحسابية.

الميزات الرئيسية ل SAHI

  • التكامل السلس: يتكامل SAHI دون عناء مع YOLO النماذج ، مما يعني أنه يمكنك البدء في التقطيع والكشف دون الكثير من تعديل التعليمات البرمجية.
  • كفاءة الموارد: من خلال تقسيم الصور الكبيرة إلى أجزاء أصغر ، تعمل SAHI على تحسين استخدام الذاكرة ، مما يسمح لك بتشغيل اكتشاف عالي الجودة على الأجهزة ذات الموارد المحدودة.
  • دقة عالية: تحافظ SAHI على دقة الكشف من خلال استخدام خوارزميات ذكية لدمج مربعات الكشف المتداخلة أثناء عملية الخياطة.

ما هو الاستدلال المقطع؟

يشير الاستدلال المقطع إلى ممارسة تقسيم صورة كبيرة أو عالية الدقة إلى مقاطع أصغر (شرائح) ، وإجراء اكتشاف الكائن على هذه الشرائح ، ثم إعادة ترجمة الشرائح لإعادة بناء مواقع الكائن على الصورة الأصلية. هذه التقنية لا تقدر بثمن في السيناريوهات التي تكون فيها الموارد الحسابية محدودة أو عند العمل مع صور عالية الدقة للغاية يمكن أن تؤدي إلى مشاكل في الذاكرة.

فوائد الاستدلال المقطع

  • تقليل العبء الحسابي: تكون شرائح الصور الأصغر أسرع في المعالجة ، وتستهلك ذاكرة أقل ، مما يتيح تشغيلا أكثر سلاسة على الأجهزة المنخفضة.

  • جودة الكشف المحفوظة: نظرا لأن كل شريحة يتم التعامل معها بشكل مستقل ، فلا يوجد انخفاض في جودة اكتشاف الكائنات ، بشرط أن تكون الشرائح كبيرة بما يكفي لالتقاط الكائنات ذات الأهمية.

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

YOLOv8 بدون ساهي YOLOv8 مع ساهي
YOLOv8 بدون ساهي YOLOv8 مع ساهي

التركيب والتحضير

تركيب

للبدء ، قم بتثبيت أحدث إصدارات SAHI و Ultralytics:

pip install -U ultralytics sahi

استيراد الوحدات النمطية وتنزيل الموارد

إليك كيفية استيراد الوحدات الضرورية وتنزيل ملف YOLOv8 النموذج وبعض صور الاختبار:

from sahi.utils.yolov8 import download_yolov8s_model
from sahi import AutoDetectionModel
from sahi.utils.cv import read_image
from sahi.utils.file import download_from_url
from sahi.predict import get_prediction, get_sliced_prediction, predict
from pathlib import Path
from IPython.display import Image

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_model_path)

# Download test images
download_from_url('https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg', 'demo_data/small-vehicles1.jpeg')
download_from_url('https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png', 'demo_data/terrain2.png')

الاستدلال القياسي مع YOLOv8

إنشاء مثيل للنموذج

يمكنك إنشاء مثيل ل YOLOv8 نموذج للكشف عن الكائنات مثل هذا:

detection_model = AutoDetectionModel.from_pretrained(
    model_type='yolov8',
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

إجراء التنبؤ القياسي

قم بإجراء الاستدلال القياسي باستخدام مسار صورة أو صورة رقمية.

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

تصور النتائج

تصدير وتصور المربعات المحيطة والأقنعة المتوقعة:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

الاستدلال المقطع مع YOLOv8

قم بإجراء الاستدلال المقطع عن طريق تحديد أبعاد الشريحة ونسب التداخل:

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2
)

التعامل مع نتائج التنبؤ

توفر ساهي PredictionResult الكائن ، والذي يمكن تحويله إلى تنسيقات تعليقات توضيحية مختلفة:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

التنبؤ دفعة

للتنبؤ بالدفعات في دليل الصور:

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

هذا هو! أنت الآن جاهز للاستخدام YOLOv8 مع SAHI لكل من الاستدلال القياسي والشرائح .

الاستشهادات والشكر

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

@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
}

نعرب عن شكرنا لمجموعة أبحاث SAHI لإنشاء وصيانة هذا المورد الذي لا يقدر بثمن لمجتمع رؤية الكمبيوتر. لمزيد من المعلومات حول SAHI ومنشئيها ، قم بزيارة مستودع SAHI GitHub.



تم إنشاء 2023-11-12, اخر تحديث 2023-11-22
المؤلفون: جلين جوشر (3)

التعليقات