تخطي إلى المحتوى

نموذج قطاع أي شيء (SAM)

كيفية استخدام تقسيم أي شيء في كولاب

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

مقدمة إلى SAM: نموذج قطاع أي شيء

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

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

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

الميزات الرئيسية لنموذج أي شيء قطاعي (SAM)

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

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

النماذج المتوفرة والمهام المدعومة وأوضاع التشغيل

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

نوع الموديل الأوزان المدربة مسبقاً المهام المدعومة الاستدلال التحقق من الصحة التدريب التصدير
SAM القاعدة sam_b.pt تجزئة المثيل
SAM كبير sam_l.pt تجزئة المثيل

كيفية الاستخدام SAM: تعدد الاستخدامات والقوة في تجزئة الصور

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

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")
# Run inference with a SAM model
yolo predict model=sam_b.pt source=path/to/image.jpg
  • المنطق هنا هو تجزئة الصورة بأكملها إذا لم تمرر أي مطالبات (bboxes / نقاط / علامات).

مثال SAMPredictor

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

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 في الأمثلة أعلاه هي النتائج الذي يسمح بالوصول إلى الأقنعة المتوقعة والصورة المصدر بسهولة.

مقارنة بين SAM و YOLO

نقارن هنا نموذج SAM الخاص ب Meta مع أصغر نموذج تجزئة من نماذج التجزئة في Ultralytics YOLO11n-seg:

الطراز الحجم
(ميغابايت)
المعلمات
(م)
السرعة (CPU)
(م/م) (م/م)
ميتا SAM-ب 375 93.7 49401
MobileSAM 40.7 10.1 25381
FastSAM معالعمود الفقري YOLOv8 23.7 11.8 55.9
Ultralytics YOLOv8n-سيج 6.7 (11.7 مرة أقل) 3.4 (11.4 مرة أقل) 24.5 (1061 مرة أسرع)
Ultralytics YOLO11n-seg 5.9 (13.2 مرة أقل) 2.9 (13.4 مرة أقل) 30.1 (864 مرة أسرع)

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

أُجريت الاختبارات على جهاز Apple M4 Pro 2025 مزود بذاكرة وصول عشوائي (RAM) بسعة 24 جيجابايت باستخدام torch==2.6.0 و ultralytics==8.3.90. لإعادة إنتاج هذا الاختبار:

مثال على ذلك

from ultralytics import ASSETS, SAM, YOLO, FastSAM

# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

التعليق التلقائي: مسار سريع لمجموعات بيانات التجزئة

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

إنشاء مجموعة بيانات التجزئة الخاصة بك باستخدام نموذج الكشف

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

مثال على ذلك

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt")
الجدال النوع افتراضي الوصف
data str مطلوب المسار إلى الدليل الذي يحتوي على الصور المستهدفة للتعليق التوضيحي أو التجزئة.
det_model str 'yolo11x.pt' YOLO مسار نموذج الكشف عن مسار نموذج الكشف عن الكائن الأولي.
sam_model str 'sam_b.pt' مسار نموذج SAM للتجزئة (يدعم نماذج SAM ومتغيرات SAM2 ونماذج SAM2 المتنقلة).
device str '' جهاز الحساب (على سبيل المثال، "cuda:0" أو "cpu" أو " " أو "للكشف التلقائي عن الجهاز).
conf float 0.25 YOLO عتبة الثقة في الكشف لتصفية الاكتشافات الضعيفة.
iou float 0.45 عتبة IoU للقمع غير الأقصى لتصفية المربعات المتداخلة.
imgsz int 640 حجم الإدخال لتغيير حجم الصور (يجب أن يكون من مضاعفات 32).
max_det int 300 الحد الأقصى لعدد الاكتشافات لكل صورة لكفاءة الذاكرة.
classes list[int] None قائمة مؤشرات الفئات المراد اكتشافها (على سبيل المثال, [0, 1] للشخص والدراجة).
output_dir str None حفظ الدليل للتعليقات التوضيحية (افتراضيًا إلى "./ملصقات" بالنسبة إلى مسار البيانات).

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

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

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

إذا وجدت 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 لإنشاء هذا المورد القيّم لمجتمع الرؤية الحاسوبية والحفاظ عليه.

الأسئلة الشائعة

ما هو نموذج قطاع أي شيء (SAM) من Ultralytics ؟

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

كيف يمكنني استخدام نموذج تقسيم أي شيء (SAM) لتجزئة الصور؟

يمكنك استخدام نموذج تجزئة أي شيء (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

لمزيد من إرشادات الاستخدام التفصيلية، قم بزيارة قسم التقسيم.

كيف يمكن المقارنة بين نموذجي SAM و YOLO من حيث الأداء؟

مقارنةً بنماذج YOLO عادةً ما تكون متغيرات SAM مثل SAM SAM2 MobileSAM FastSAM أكبر وأبطأ، ولكنها تقدم قدرات تجزئة فريدة من نوعها بدون طلقة. على سبيل المثال، يُعدّYOLOv8n من Ultralytics أصغر بـ 11.7 مرة وأسرع بـ 1069 مرة من طراز SAM الأصلي من Meta، مما يسلط الضوء على الميزة الكبيرة التي يتمتع بها YOLO في السرعة والكفاءة. وبالمثل، فإن نموذج YOLO11n-seg الأحدث يوفر حجمًا أصغر ويحافظ على سرعة استدلال مذهلة. وهذا ما يجعل نماذج YOLO مثالية للتطبيقات التي تتطلب تجزئة سريعة وخفيفة الوزن وفعالة من الناحية الحسابية، بينما تتفوق نماذج SAM في مهام التجزئة المرنة والقابلة للتجزئة السريعة والفعالة من دون الحاجة إلى لقطات.

كيف يمكنني التعليل التلقائي لمجموعة بياناتي باستخدام SAM ؟

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

from ultralytics.data.annotator import auto_annotate

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

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

ما هي مجموعات البيانات المستخدمة لتدريب نموذج أي شيء قطاعي (SAM)؟

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

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 9 أيام

التعليقات