Meet YOLO26: next-gen vision AI.

Link to this sectionنموذج تقسيم أي شيء (SAM)#

تطور SAM

هذا هو نموذج SAM الأصلي من Meta. للحصول على قدرات محسنة، راجع SAM 2 لتقسيم الفيديو أو SAM 3 لتقسيم المفاهيم القابل للتوجيه باستخدام مطالبات النصوص والصور النموذجية.

كيفية استخدام Segment Anything في Colab

مرحباً بك في طليعة تقسيم الصور باستخدام نموذج Segment Anything، أو SAM. لقد أحدث هذا النموذج الثوري تغييراً جذرياً في المجال من خلال تقديم تقسيم الصور القابل للتوجيه مع أداء في الوقت الفعلي، مما وضع معايير جديدة في هذا الميدان.

Link to this sectionمقدمة إلى SAM: نموذج Segment Anything#

يعد نموذج Segment Anything، أو SAM، نموذجاً متطوراً لتقسيم الصور يتيح التقسيم القابل للتوجيه، مما يوفر تنوعاً لا مثيل له في مهام تحليل الصور. يشكل SAM قلب مبادرة Segment Anything، وهو مشروع رائد يقدم نموذجاً ومهمة ومجموعة بيانات جديدة لتقسيم الصور.

يسمح تصميم SAM المتقدم له بالتكيف مع توزيعات ومهام الصور الجديدة دون معرفة مسبقة، وهي ميزة تُعرف بـ zero-shot transfer. تم تدريب SAM على مجموعة بيانات SA-1B الموسعة، والتي تحتوي على أكثر من مليار قناع موزعة على 11 مليون صورة منسقة بعناية، وقد أظهر SAM أداء zero-shot مبهراً، متجاوزاً النتائج السابقة القائمة على الإشراف الكامل في العديد من الحالات.

عينة من مجموعة بيانات SA-1B مع أقنعة تقسيم تلقائية صور أمثلة من SA-1B. تحتوي صور مجموعة البيانات على أقنعة متراكبة من مجموعة بيانات SA-1B التي تم تقديمها حديثاً. تحتوي SA-1B على 11 مليون صورة متنوعة وعالية الدقة ومرخصة ومحمية للخصوصية و1.1 مليار قناع تقسيم عالي الجودة. تم وضع علامات على هذه الأقنعة تلقائياً بالكامل بواسطة SAM، وكما تم التحقق منه من خلال تقييمات البشر والعديد من التجارب، فهي ذات جودة وتنوع عاليين. يتم تجميع الصور حسب عدد الأقنعة لكل صورة من أجل التصور (هناك حوالي 100 قناع لكل صورة في المتوسط).

Link to this sectionالميزات الرئيسية لنموذج Segment Anything (SAM)#

  • مهمة التقسيم القابل للتوجيه: تم تصميم SAM مع وضع مهمة التقسيم القابل للتوجيه في الاعتبار، مما يسمح له بإنشاء أقنعة تقسيم صالحة من أي مطالبة معطاة، مثل الإشارات المكانية أو النصية التي تحدد كائناً ما.
  • بنية متقدمة: يستخدم نموذج Segment Anything مشفر صور قوياً، ومشفر مطالبات، ومفكك أقنعة خفيف الوزن. تتيح هذه البنية الفريدة توجيهاً مرناً، وحساب أقنعة في الوقت الفعلي، والوعي بالغموض في مهام التقسيم.
  • مجموعة بيانات SA-1B: التي قدمها مشروع Segment Anything، تتميز مجموعة بيانات SA-1B بأكثر من مليار قناع على 11 مليون صورة. وبصفتها أكبر مجموعة بيانات للتقسيم حتى الآن، فهي توفر لـ SAM مصدراً متنوعاً وكبير النطاق لبيانات التدريب.
  • أداء Zero-Shot: يظهر SAM أداءً متميزاً في مهام التقسيم المختلفة، مما يجعله أداة جاهزة للاستخدام في تطبيقات متنوعة مع الحد الأدنى من الحاجة إلى هندسة المطالبات.

للحصول على نظرة متعمقة على نموذج Segment Anything ومجموعة بيانات SA-1B، يرجى زيارة Segment Anything GitHub والاطلاع على الورقة البحثية Segment Anything.

SAM على منصة Ultralytics

يعمل SAM على تشغيل ميزة التعليق الذكي على منصة Ultralytics، مما يتيح التغطية الذكية القائمة على النقر لوضع علامات سريعة على مجموعة البيانات. راجع دليل التعليق للحصول على التفاصيل.

Link to this sectionالنماذج المتاحة، والمهام المدعومة، وأوضاع التشغيل#

يعرض هذا الجدول النماذج المتاحة مع أوزانها المدربة مسبقاً، والمهام التي تدعمها، وتوافقها مع أوضاع التشغيل المختلفة مثل الاستدلال، والتحقق، والتدريب، والتصدير، المشار إليها برموز ✅ للأوضاع المدعومة ورموز ❌ للأوضاع غير المدعومة.

نوع النموذجالأوزان المدربة مسبقاًالمهام المدعومةالاستدلالالتحققالتدريبالتصدير
SAM basesam_b.ptتقسيم النماذج
SAM largesam_l.ptتقسيم النماذج

Link to this sectionكيفية استخدام SAM: التنوع والقوة في تقسيم الصور#

يمكن توظيف نموذج Segment Anything في مجموعة متعددة من المهام اللاحقة التي تتجاوز بيانات تدريبه. ويشمل ذلك اكتشاف الحواف، وتوليد مقترحات الكائنات، وتقسيم النماذج، والتنبؤ الأولي من النص إلى القناع. بفضل هندسة المطالبات، يمكن لـ SAM التكيف بسرعة مع المهام وتوزيعات البيانات الجديدة بطريقة zero-shot، مما يجعله أداة متنوعة وقوية لجميع احتياجات تقسيم الصور الخاصة بك.

Link to this sectionمثال على تنبؤ SAM#

التقسيم باستخدام المطالبات

تقسيم الصورة باستخدام مطالبات معينة.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Run inference with single point
results = model(points=[900, 370], labels=[1])

# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
تقسيم كل شيء

تقسيم الصورة بأكملها.

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/image.jpg")
  • المنطق هنا هو تقسيم الصورة بأكملها إذا لم تقم بتمرير أي مطالبات (bboxes/points/masks).
مثال SAMPredictor

بهذه الطريقة يمكنك تعيين الصورة مرة واحدة وتشغيل استدلال المطالبات عدة مرات دون تشغيل مشفر الصور عدة مرات.

import cv2

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Set image
predictor.set_image("ultralytics/assets/zidane.jpg")  # set with image file
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # set with np.ndarray
results = predictor(bboxes=[439, 437, 524, 709])

# Run inference with single point prompt
results = predictor(points=[900, 370], labels=[1])

# Run inference with multiple points prompt
results = predictor(points=[[400, 370], [900, 370]], labels=[1, 1])

# Run inference with negative points prompt
results = predictor(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

# Reset image
predictor.reset_image()

تقسيم كل شيء مع وسائط إضافية.

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Segment with additional args
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64)
ملاحظة

جميع الـ results التي تم إرجاعها في الأمثلة أعلاه هي كائنات Results التي تتيح الوصول إلى الأقنعة المتوقعة والصورة المصدر بسهولة.

  • لمزيد من الوسائط الإضافية لـ Segment everything راجع مرجع Predictor/generate.

Link to this sectionمقارنة SAM مقابل YOLO#

هنا نقارن نموذج SAM-b من Meta مع نماذج التقسيم من Ultralytics بما في ذلك YOLO26n-seg:

النموذجالحجم
(ميغابايت)
المعلمات
(مليون)
السرعة (وحدة المعالجة المركزية)
(ميلي ثانية/صورة)
Meta SAM-b37593.741703
MobileSAM40.710.123802
FastSAM-s مع YOLOv8 backbone23.911.858.0
Ultralytics YOLOv8n-seg7.1 (52.8x أصغر)3.4 (27.6x أقل)24.8 (1682x أسرع)
Ultralytics YOLO11n-seg6.2 (60.5x أصغر)2.9 (32.3x أقل)24.3 (1716x أسرع)
Ultralytics YOLO26n-seg6.7 (56.0x أصغر)2.7 (34.7x أقل)25.2 (1655x أسرع)

توضح هذه المقارنة الاختلافات الجوهرية في أحجام النماذج وسرعاتها بين متغيرات SAM ونماذج تقسيم YOLO. في حين يوفر SAM قدرات تقسيم تلقائية فريدة، فإن نماذج YOLO، وخاصة YOLOv8n-seg وYOLO11n-seg وYOLO26n-seg، أصغر حجماً وأسرع بكثير وأكثر كفاءة من الناحية الحسابية.

تم قياس سرعات SAM باستخدام PyTorch، وسرعات YOLO باستخدام ONNX Runtime. تم إجراء الاختبارات على جهاز 2025 Apple M4 Air بذاكرة وصول عشوائي 16 جيجابايت باستخدام torch==2.10.0 وultralytics==8.4.31 وonnxruntime==1.24.4. لإعادة إنتاج هذا الاختبار:

مثال
from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM-b, MobileSAM
for file in ["sam_b.pt", "mobile_sam.pt"]:
    model = SAM(file)
    model.info()
    model(ASSETS)

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)

# Profile YOLO models (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    onnx_path = model.export(format="onnx", dynamic=True)
    model = YOLO(onnx_path)
    model(ASSETS)

Link to this sectionالتعليق التلقائي: مسار سريع لمجموعات بيانات التقسيم#

يعد التعليق التلقائي ميزة رئيسية لـ SAM، حيث يسمح للمستخدمين بإنشاء مجموعة بيانات تقسيم باستخدام نموذج اكتشاف مدرب مسبقاً. تتيح هذه الميزة وضع علامات سريعة ودقيقة على عدد كبير من الصور، مما يتجاوز الحاجة إلى وضع العلامات اليدوية التي تستغرق وقتاً طويلاً.

Link to this sectionقم بإنشاء مجموعة بيانات التقسيم الخاصة بك باستخدام نموذج اكتشاف#

للتعليق التلقائي على مجموعة البيانات الخاصة بك باستخدام إطار عمل Ultralytics، استخدم دالة auto_annotate كما هو موضح أدناه:

مثال
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
الوسيطالنوعالافتراضيالوصف
datastrمطلوبمسار إلى الدليل الذي يحتوي على الصور المستهدفة للتعليق أو التقسيم.
det_modelstr'yolo26x.pt'مسار نموذج اكتشاف YOLO للاكتشاف الأولي للكائنات.
sam_modelstr'sam_b.pt'مسار نموذج SAM للتقسيم (يدعم أوزان SAM وSAM 2 وMobileSAM وSAM 3).
devicestr''جهاز الحوسبة (مثلاً 'cuda:0' أو 'cpu' أو '' للاكتشاف التلقائي للجهاز).
conffloat0.25عتبة ثقة كشف YOLO لتصفية الاكتشافات الضعيفة.
ioufloat0.45عتبة IoU لـ Non-Maximum Suppression لتصفية المربعات المتداخلة.
imgszint640حجم الإدخال لتغيير حجم الصور (يجب أن يكون مضاعفًا لـ 32).
max_detint300الحد الأقصى لعدد الاكتشافات لكل صورة لكفاءة الذاكرة.
classeslist[int]Noneقائمة بفهارس الفئات المراد اكتشافها (مثلاً: [0, 1] للشخص والدراجة).
output_dirstrNoneدليل الحفظ للتعليقات التوضيحية (الافتراضي: مجلد شقيق لـ <data>_auto_annotate_labels).

تأخذ وظيفة auto_annotate مسار صورك، مع وسيطات اختيارية لتحديد نماذج الكشف المدربة مسبقًا ونماذج تجزئة SAM، والجهاز المراد تشغيل النماذج عليه، ودليل الإخراج لحفظ النتائج المعلق عليها.

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

Link to this sectionالاقتباسات والتقدير#

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

اقتباس
@misc{kirillov2023segment,
      title={Segment Anything},
      author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollár and Ross Girshick},
      year={2023},
      eprint={2304.02643},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

نود أن نعرب عن امتناننا لـ Meta AI لإنشاء وصيانة هذا المورد القيم لمجتمع الرؤية الحاسوبية.

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

Link to this sectionما هو Segment Anything Model (SAM) من Ultralytics؟#

نموذج Segment Anything Model (SAM) من Ultralytics هو نموذج ثوري لتجزئة الصور مصمم لمهام التجزئة القابلة للتلقين (promptable). يستفيد من بنية متقدمة، بما في ذلك مشفرات الصور والمطالبات جنبًا إلى جنب مع وحدة فك ترميز القناع خفيفة الوزن، لتوليد أقنعة تجزئة عالية الجودة من مطالبات مختلفة مثل الإشارات المكانية أو النصية. تم تدريب SAM على مجموعة بيانات SA-1B dataset الواسعة، ويتفوق في أداء zero-shot، حيث يتكيف مع توزيعات الصور والمهام الجديدة دون معرفة مسبقة.

Link to this sectionكيف يمكنني استخدام Segment Anything Model (SAM) لتجزئة الصور؟#

يمكنك استخدام Segment Anything Model (SAM) لتجزئة الصور عن طريق إجراء الاستدلال بمطالبات مختلفة مثل مربعات الإحاطة أو النقاط. إليك مثال باستخدام Python:

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Segment with bounding box prompt
model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Segment with points prompt
model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])

# Segment with multiple points prompt
model("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])

# Segment with multiple points prompt per object
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])

# Segment with negative points prompt.
model("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])

بدلاً من ذلك، يمكنك إجراء الاستدلال باستخدام SAM في واجهة سطر الأوامر (CLI):

yolo predict model=sam_b.pt source=path/to/image.jpg

لمزيد من تعليمات الاستخدام التفصيلية، تفضل بزيارة قسم التجزئة.

Link to this sectionكيف تقارن نماذج SAM ونماذج YOLO من حيث الأداء؟#

مقارنة بنماذج YOLO، عادة ما تكون متغيرات SAM مثل SAM-b و MobileSAM و FastSAM-s أكبر وأبطأ ولكنها توفر قدرات تجزئة zero-shot فريدة. على سبيل المثال، YOLO26n-seg أصغر بـ 56 مرة وأسرع بأكثر من 1650 مرة من نموذج SAM-b الأصلي لـ Meta على CPU. هذا يجعل نماذج YOLO مثالية للتطبيقات التي تتطلب تجزئة سريعة وخفيفة الوزن وفعالة حسابيًا، بينما تتفوق نماذج SAM في مهام التجزئة المرنة والقابلة للتلقين و zero-shot.

Link to this sectionكيف يمكنني التعليق التلقائي على مجموعة البيانات الخاصة بي باستخدام SAM؟#

يوفر SAM من Ultralytics ميزة التعليق التلقائي التي تسمح بإنشاء مجموعات بيانات تجزئة باستخدام نموذج كشف مدرب مسبقًا. إليك مثال في Python:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")

تأخذ هذه الوظيفة مسار صورك ووسيطات اختيارية لنماذج الكشف المدربة مسبقًا ونماذج تجزئة SAM، إلى جانب مواصفات الجهاز ودليل الإخراج. للحصول على دليل كامل، انظر Auto-Annotation.

Link to this sectionما هي مجموعات البيانات المستخدمة لتدريب Segment Anything Model (SAM)؟#

تم تدريب SAM على مجموعة البيانات الشاملة SA-1B dataset التي تضم أكثر من مليار قناع عبر 11 مليون صورة. SA-1B هي أكبر مجموعة بيانات تجزئة حتى الآن، حيث توفر بيانات تدريب عالية الجودة ومتنوعة، مما يضمن أداءً مذهلاً في مهام التجزئة المتنوعة في وضع zero-shot. لمزيد من التفاصيل، تفضل بزيارة قسم مجموعة البيانات.

التعليقات