YOLO Vision 2026:

نموذج Fast Segment Anything (FastSAM)#

نموذج Fast Segment Anything (FastSAM) هو حل مبتكر يعتمد على الشبكات العصبية التلافيفية (CNN) ويعمل في الوقت الفعلي لمهمة "Segment Anything". صُممت هذه المهمة لتقسيم أي كائن داخل الصورة بناءً على مطالبات تفاعلية مختلفة من المستخدم. يقلل FastSAM بشكل كبير من المتطلبات الحسابية مع الحفاظ على أداء تنافسي، مما يجعله خياراً عملياً لمجموعة متنوعة من مهام الرؤية الحاسوبية.



Watch: Object Tracking using FastSAM with Ultralytics

بنية النموذج#

Fast Segment Anything Model (FastSAM) architecture overview

نظرة عامة#

تم تصميم FastSAM لمعالجة قيود Segment Anything Model (SAM)، وهو نموذج Transformer ثقيل ذو متطلبات موارد حسابية كبيرة. يفصل نموذج FastSAM مهمة تجزئة أي شيء إلى مرحلتين متسلسلتين: تجزئة جميع الحالات والاختيار الموجه بالموجه. تستخدم المرحلة الأولى YOLOv8-seg لإنتاج أقنعة التجزئة لجميع الحالات في الصورة. في المرحلة الثانية، يُخرج منطقة الاهتمام المقابلة للموجه.

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

  1. حل في الوقت الفعلي: من خلال الاستفادة من الكفاءة الحسابية للشبكات العصبية التلافيفية (CNNs)، يوفر FastSAM حلاً في الوقت الفعلي لمهمة تقسيم أي شيء، مما يجعله قيماً للتطبيقات الصناعية التي تتطلب نتائج سريعة.

  2. الكفاءة والأداء: يوفر FastSAM تقليلاً كبيراً في المتطلبات الحسابية والموارد دون المساومة على جودة الأداء. فهو يحقق أداءً قابلاً للمقارنة مع SAM ولكن بموارد حسابية مخفضة بشكل كبير، مما يتيح التطبيق في الوقت الفعلي.

  3. التقسيم الموجه بالمطالبات: يمكن لـ FastSAM تقسيم أي كائن داخل الصورة بتوجيه من مطالبات تفاعلية مختلفة من المستخدم، مما يوفر المرونة والقدرة على التكيف في سيناريوهات مختلفة.

  4. استنادًا إلى YOLOv8-seg: يعتمد نموذج FastSAM على YOLOv8-seg، وهو كاشف كائنات مجهز بفرع تجزئة الحالات. يتيح له ذلك إنتاج أقنعة التجزئة لجميع الحالات في الصورة بفعالية.

  5. نتائج تنافسية على المعايير: في مهمة مقترح الكائنات على MS COCO، يحقق FastSAM درجات عالية بسرعة أعلى بكثير من SAM على بطاقة NVIDIA RTX 3090 واحدة، مما يوضح كفاءته وقدرته.

  6. تطبيقات عملية: يوفر النهج المقترح حلاً جديداً وعملياً لعدد كبير من مهام الرؤية بسرعة عالية جداً، أسرع بعشرات أو مئات المرات من الطرق الحالية.

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

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

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

نوع النموذجالأوزان المدربة مسبقاًالمهام المدعومةالتدريبالتحققالاستنتاجالتصدير
FastSAM-sFastSAM-s.ptتجزئة الحالات الفردية
FastSAM-xFastSAM-x.ptتجزئة الحالات الفردية

مقارنة FastSAM مقابل YOLO#

هنا نقارن نماذج SAM 2 من Meta، بما في ذلك أصغر متغير SAM2-t، مع نماذج التجزئة من Ultralytics بما في ذلك YOLO26n-seg:

النموذجالحجم
(ميغابايت)
المعلمات
(مليون)
السرعة (وحدة المعالجة المركزية)
(ميلي ثانية/صورة)
Meta SAM-b37593.741703
Meta SAM2-b16280.828867
Meta SAM2-t78.138.923430
MobileSAM40.710.123802
FastSAM-s مع backbone لـ YOLOv823.911.858.0
Ultralytics YOLOv8n-seg7.1 (أصغر بـ 11.0x)3.4 (أقل بـ 11.4x)24.8 (أسرع بـ 945x)
Ultralytics YOLO11n-seg6.2 (أصغر بـ 12.6x)2.9 (أقل بـ 13.4x)24.3 (أسرع بـ 964x)
Ultralytics YOLO26n-seg6.7 (أصغر بـ 11.7x)2.7 (أقل بـ 14.4x)25.2 (أسرع بـ 930x)

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

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

مثال
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 (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)

أمثلة الاستخدام#

نماذج FastSAM سهلة الدمج في تطبيقات Python الخاصة بك. توفر Ultralytics واجهة برمجة تطبيقات (API) وأوامر CLI سهلة الاستخدام لتبسيط عملية التطوير.

استخدام التنبؤ (Predict)#

لإجراء object detection على صورة، استخدم طريقة predict كما هو موضح أدناه:

مثال
from ultralytics import FastSAM

# Define an inference source
source = "path/to/bus.jpg"

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")

يوضح هذا المقتطف بساطة تحميل نموذج مدرب مسبقاً وتشغيل تنبؤ على صورة.

مثال FastSAMPredictor

بهذه الطريقة يمكنك تشغيل الاستدلال على الصورة والحصول على جميع أجزاء results مرة واحدة وتشغيل استدلال الموجهات عدة مرات دون تشغيل الاستدلال عدة مرات.

from ultralytics.models.fastsam import FastSAMPredictor

# Create FastSAMPredictor
overrides = {"conf": 0.25, "task": "segment", "mode": "predict", "model": "FastSAM-s.pt", "save": False, "imgsz": 1024}
predictor = FastSAMPredictor(overrides=overrides)

# Segment everything
everything_results = predictor("ultralytics/assets/bus.jpg")

# Prompt inference
bbox_results = predictor.prompt(everything_results, bboxes=[[200, 200, 300, 300]])
point_results = predictor.prompt(everything_results, points=[200, 200])
text_results = predictor.prompt(everything_results, texts="a photo of a dog")
ملاحظة

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

استخدام التحقق (Val)#

يرجى ملاحظة أن FastSAM يدعم فقط كشف وتقسيم فئة واحدة من الكائنات. وهذا يعني أنه سيتعرف على جميع الكائنات ويقسمها كفئة واحدة. لذلك، عند إعداد مجموعة البيانات، تحتاج إلى تحويل جميع معرفات فئات الكائنات إلى 0.

يمكن إجراء التحقق من النموذج على مجموعة بيانات كما يلي:

مثال
from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Validate the model
results = model.val(data="coco8-seg.yaml")

استخدام التتبع (Track)#

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

مثال
from ultralytics import FastSAM

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Track with a FastSAM model on a video
results = model.track(source="path/to/video.mp4", imgsz=640)

الاستخدام الرسمي لـ FastSAM#

يتوفر FastSAM أيضًا مباشرة من مستودع https://github.com/CASIA-IVA-Lab/FastSAM. إليك نظرة عامة موجزة عن الخطوات النموذجية التي قد تتخذها لاستخدام FastSAM:

التثبيت#

  1. استنساخ مستودع FastSAM:

    git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
  2. إنشاء وتفعيل بيئة Conda باستخدام Python 3.9:

    conda create -n FastSAM python=3.9
    conda activate FastSAM
  3. انتقل إلى المستودع المستنسخ وقم بتثبيت الحزم المطلوبة:

    cd FastSAM
    pip install -r requirements.txt
  4. تثبيت نموذج CLIP:

    pip install git+https://github.com/ultralytics/CLIP.git

مثال على الاستخدام#

  1. قم بتنزيل model checkpoint.

  2. استخدم FastSAM للاستدلال. أوامر المثال:

    • تقسيم كل شيء في صورة:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
    • تقسيم كائنات معينة باستخدام مطالبة نصية:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog"
    • تجزئة الكائنات داخل bounding box (قم بتوفير إحداثيات الصندوق بتنسيق xywh):

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]"
    • تقسيم الكائنات بالقرب من نقاط محددة:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"

بالإضافة إلى ذلك، يمكنك تجربة FastSAM من خلال Colab demo التابع لـ CASIA-IVA-Lab.

الاقتباسات والشكر#

نود أن نعترف بجهود مؤلفي FastSAM لإسهاماتهم الكبيرة في مجال تقسيم الحالات في الوقت الفعلي:

اقتباس
  @misc{zhao2023fast,
        title={Fast Segment Anything},
        author={Xu Zhao and Wenchao Ding and Yongqi An and Yinglong Du and Tao Yu and Min Li and Ming Tang and Jinqiao Wang},
        year={2023},
        eprint={2306.12156},
        archivePrefix={arXiv},
        primaryClass={cs.CV}
  }

يمكن العثور على ورقة FastSAM الأصلية على arXiv. لقد جعل المؤلفون عملهم متاحًا للعامة، ويمكن الوصول إلى قاعدة الكود على GitHub. نحن نقدر جهودهم في تطوير هذا المجال وجعل عملهم متاحًا للمجتمع الأوسع.

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

ما هو FastSAM وكيف يختلف عن SAM؟#

FastSAM، وهو اختصار لـ Fast Segment Anything Model، هو حل يعتمد على convolutional neural network (CNN) في الوقت الفعلي مصمم لتقليل المتطلبات الحسابية مع الحفاظ على الأداء العالي في مهام تجزئة الكائنات. على عكس Segment Anything Model (SAM)، الذي يستخدم بنية أثقل تعتمد على Transformer، يستفيد FastSAM من Ultralytics YOLOv8-seg لتجزئة الحالات بكفاءة في مرحلتين: تجزئة جميع الحالات تليها التجزئة الموجهة بالموجه.

كيف يحقق FastSAM أداء تقسيم في الوقت الفعلي؟#

يحقق FastSAM تقسيمًا في الوقت الفعلي عن طريق فصل مهمة التقسيم إلى تقسيم جميع الحالات باستخدام YOLOv8-seg ومراحل الاختيار الموجهة بالمطالبات. من خلال استخدام الكفاءة الحسابية للشبكات العصبية التلافيفية (CNNs)، يقدم FastSAM تخفيضات كبيرة في المتطلبات الحسابية والموارد مع الحفاظ على أداء تنافسي. يتيح هذا النهج المزدوج المراحل لـ FastSAM تقديم تقسيم سريع وفعال مناسب للتطبيقات التي تتطلب نتائج سريعة.

ما هي التطبيقات العملية لـ FastSAM؟#

يُعد FastSAM عمليًا لمجموعة متنوعة من مهام computer vision التي تتطلب أداء تجزئة في الوقت الفعلي. تشمل التطبيقات:

  • الأتمتة الصناعية لمراقبة وضمان الجودة
  • تحليل الفيديو في الوقت الفعلي للأمن والمراقبة
  • Autonomous vehicles لاكتشاف الكائنات وتجزئتها
  • التصوير الطبي لمهام التقسيم الدقيقة والسريعة

قدرته على التعامل مع مطالبات تفاعلية مختلفة من المستخدم تجعل FastSAM قابلاً للتكيف ومرناً لسيناريوهات متنوعة.

كيف أستخدم نموذج FastSAM للاستدلال في Python؟#

لاستخدام FastSAM للاستدلال في Python، يمكنك اتباع المثال أدناه:

from ultralytics import FastSAM

# Define an inference source
source = "path/to/bus.jpg"

# Create a FastSAM model
model = FastSAM("FastSAM-s.pt")  # or FastSAM-x.pt

# Run inference on an image
everything_results = model(source, device="cpu", retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)

# Run inference with bboxes prompt
results = model(source, bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model(source, points=[[200, 200]], labels=[1])

# Run inference with texts prompt
results = model(source, texts="a photo of a dog")

# Run inference with bboxes and points and texts prompt at the same time
results = model(source, bboxes=[439, 437, 524, 709], points=[[200, 200]], labels=[1], texts="a photo of a dog")

لمزيد من التفاصيل حول طرق الاستدلال، راجع قسم Predict Usage في الوثائق.

ما هي أنواع المطالبات التي يدعمها FastSAM لمهام التقسيم؟#

يدعم FastSAM أنواع مطالبات متعددة لتوجيه مهام التقسيم:

  • مطالبة كل شيء (Everything Prompt): تنشئ تقسيماً لجميع الكائنات المرئية.
  • مطالبة صندوق التحديد (BBox Prompt): تقسم الكائنات داخل صندوق تحديد محدد.
  • مطالبة نصية (Text Prompt): تستخدم نصاً وصفياً لتقسيم الكائنات المطابقة للوصف.
  • مطالبة نقطية (Point Prompt): تقسم الكائنات بالقرب من نقاط محددة يحددها المستخدم.

تسمح هذه المرونة لـ FastSAM بالتكيف مع مجموعة واسعة من سيناريوهات تفاعل المستخدم، مما يعزز فائدته عبر تطبيقات مختلفة. لمزيد من المعلومات حول استخدام هذه الموجهات، راجع قسم Key Features.

التعليقات