Link to this sectionنموذج Fast Segment Anything (FastSAM)#
نموذج Fast Segment Anything (FastSAM) هو حل مبتكر يعتمد على الشبكات العصبية التلافيفية (CNN) ويعمل في الوقت الفعلي لمهمة "Segment Anything". صُممت هذه المهمة لتقسيم أي كائن داخل الصورة بناءً على مطالبات تفاعلية مختلفة من المستخدم. يقلل FastSAM بشكل كبير من المتطلبات الحسابية مع الحفاظ على أداء تنافسي، مما يجعله خياراً عملياً لمجموعة متنوعة من مهام الرؤية الحاسوبية.
Watch: Object Tracking using FastSAM with Ultralytics
Link to this sectionبنية النموذج#

Link to this sectionنظرة عامة#
تم تصميم FastSAM لمعالجة قيود Segment Anything Model (SAM)، وهو نموذج Transformer ثقيل يتطلب موارد حوسبة كبيرة. يقوم FastSAM بفصل مهمة "Segment Anything" إلى مرحلتين متتاليتين: تقسيم كل instance segmentation والاختيار الموجه بالمطالبات. تستخدم المرحلة الأولى YOLOv8-seg لإنتاج أقنعة التقسيم لجميع الحالات في الصورة. وفي المرحلة الثانية، يخرج منطقة الاهتمام (ROI) المطابقة للمطالبة.
Link to this sectionالميزات الرئيسية#
-
حل في الوقت الفعلي: من خلال الاستفادة من الكفاءة الحسابية للشبكات العصبية التلافيفية (CNNs)، يوفر FastSAM حلاً في الوقت الفعلي لمهمة تقسيم أي شيء، مما يجعله قيماً للتطبيقات الصناعية التي تتطلب نتائج سريعة.
-
الكفاءة والأداء: يوفر FastSAM تقليلاً كبيراً في المتطلبات الحسابية والموارد دون المساومة على جودة الأداء. فهو يحقق أداءً قابلاً للمقارنة مع SAM ولكن بموارد حسابية مخفضة بشكل كبير، مما يتيح التطبيق في الوقت الفعلي.
-
التقسيم الموجه بالمطالبات: يمكن لـ FastSAM تقسيم أي كائن داخل الصورة بتوجيه من مطالبات تفاعلية مختلفة من المستخدم، مما يوفر المرونة والقدرة على التكيف في سيناريوهات مختلفة.
-
يعتمد على YOLOv8-seg: يعتمد FastSAM على YOLOv8-seg، وهو كاشف كائنات مجهز بفرع لتقسيم الحالات (instance segmentation). وهذا يسمح له بإنتاج أقنعة التقسيم بفعالية لجميع الحالات في الصورة.
-
نتائج تنافسية في الاختبارات المعيارية: في مهمة مقترح الكائن على MS COCO، يحقق FastSAM درجات عالية بسرعة أسرع بكثير من SAM على بطاقة NVIDIA RTX 3090 واحدة، مما يثبت كفاءته وقدرته.
-
تطبيقات عملية: يوفر النهج المقترح حلاً جديداً وعملياً لعدد كبير من مهام الرؤية بسرعة عالية جداً، أسرع بعشرات أو مئات المرات من الطرق الحالية.
-
جدوى ضغط النموذج: يثبت FastSAM جدوى مسار يمكنه تقليل الجهد الحسابي بشكل كبير من خلال إدخال فرضية مسبقة اصطناعية على الهيكل، مما يفتح إمكانيات جديدة لبنية النماذج الكبيرة لمهام الرؤية العامة.
Link to this sectionالنماذج المتاحة، والمهام المدعومة، وأوضاع التشغيل#
يعرض هذا الجدول النماذج المتاحة مع أوزانها المدربة مسبقاً، والمهام التي تدعمها، وتوافقها مع أوضاع التشغيل المختلفة مثل الاستدلال، والتحقق، والتدريب، والتصدير، المشار إليها برموز ✅ للأوضاع المدعومة ورموز ❌ للأوضاع غير المدعومة.
| نوع النموذج | الأوزان المدربة مسبقاً | المهام المدعومة | الاستنتاج | التحقق | التدريب | التصدير |
|---|---|---|---|---|---|---|
| FastSAM-s | FastSAM-s.pt | تجزئة المثيلات | ✅ | ❌ | ❌ | ✅ |
| FastSAM-x | FastSAM-x.pt | تجزئة المثيلات | ✅ | ❌ | ❌ | ✅ |
Link to this sectionمقارنة FastSAM مقابل YOLO#
هنا نقارن نماذج SAM 2 من Meta، بما في ذلك أصغر متغير SAM2-t، مع نماذج تقسيم Ultralytics بما في ذلك YOLO26n-seg:
| النموذج | الحجم (ميغابايت) | المعلمات (مليون) | السرعة (وحدة المعالجة المركزية) (ميلي ثانية/صورة) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| FastSAM-s مع YOLOv8 backbone | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (أصغر بـ 11.0x) | 3.4 (أقل بـ 11.4x) | 24.8 (أسرع بـ 945x) |
| Ultralytics YOLO11n-seg | 6.2 (أصغر بـ 12.6x) | 2.9 (أقل بـ 13.4x) | 24.3 (أسرع بـ 964x) |
| Ultralytics YOLO26n-seg | 6.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. تم إجراء الاختبارات على جهاز 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 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)Link to this sectionأمثلة الاستخدام#
نماذج FastSAM سهلة الدمج في تطبيقات Python الخاصة بك. توفر Ultralytics واجهة برمجة تطبيقات (API) وأوامر CLI سهلة الاستخدام لتبسيط عملية التطوير.
Link to this sectionاستخدام التنبؤ (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")يوضح هذا المقتطف بساطة تحميل نموذج مدرب مسبقاً وتشغيل تنبؤ على صورة.
بهذه الطريقة يمكنك تشغيل الاستدلال على الصورة والحصول على جميع results التقسيم مرة واحدة وتشغيل استدلال المطالبات عدة مرات دون الحاجة لتشغيل الاستدلال عدة مرات.
from ultralytics.models.fastsam import FastSAMPredictor
# Create FastSAMPredictor
overrides = dict(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 التي تتيح الوصول إلى الأقنعة المتوقعة والصورة المصدر بسهولة.
Link to this sectionاستخدام التحقق (Val)#
يمكن إجراء التحقق من النموذج على مجموعة بيانات كما يلي:
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")يرجى ملاحظة أن FastSAM يدعم فقط كشف وتقسيم فئة واحدة من الكائنات. وهذا يعني أنه سيتعرف على جميع الكائنات ويقسمها كفئة واحدة. لذلك، عند إعداد مجموعة البيانات، تحتاج إلى تحويل جميع معرفات فئات الكائنات إلى 0.
Link to this sectionاستخدام التتبع (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)Link to this sectionالاستخدام الرسمي لـ FastSAM#
يتوفر FastSAM أيضاً مباشرة من مستودع https://github.com/CASIA-IVA-Lab/FastSAM. إليك نظرة عامة موجزة عن الخطوات النموذجية التي قد تتخذها لاستخدام FastSAM:
Link to this sectionالتثبيت#
-
استنساخ مستودع FastSAM:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git -
إنشاء وتفعيل بيئة Conda باستخدام Python 3.9:
conda create -n FastSAM python=3.9 conda activate FastSAM -
انتقل إلى المستودع المستنسخ وقم بتثبيت الحزم المطلوبة:
cd FastSAM pip install -r requirements.txt -
تثبيت نموذج CLIP:
pip install git+https://github.com/ultralytics/CLIP.git
Link to this sectionمثال على الاستخدام#
-
استخدم 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.
Link to this sectionالاقتباسات والتقدير#
نود أن نعترف بجهود مؤلفي 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. نحن نقدر جهودهم في تطوير هذا المجال وجعل عملهم متاحاً للمجتمع الأوسع.
Link to this sectionأسئلة مكررة#
Link to this sectionما هو FastSAM وكيف يختلف عن SAM؟#
FastSAM، اختصار لـ Fast Segment Anything Model، هو حل يعتمد على convolutional neural network (CNN) في الوقت الفعلي مصمم لتقليل المتطلبات الحسابية مع الحفاظ على أداء عالٍ في مهام تقسيم الكائنات. على عكس Segment Anything Model (SAM)، الذي يستخدم بنية أثقل تعتمد على Transformer، يستفيد FastSAM من Ultralytics YOLOv8-seg لتقسيم الحالات بكفاءة على مرحلتين: تقسيم جميع الحالات متبوعاً بالاختيار الموجه بالمطالبات.
Link to this sectionكيف يحقق FastSAM أداء تقسيم في الوقت الفعلي؟#
يحقق FastSAM تقسيمًا في الوقت الفعلي عن طريق فصل مهمة التقسيم إلى تقسيم جميع الحالات باستخدام YOLOv8-seg ومراحل الاختيار الموجهة بالمطالبات. من خلال استخدام الكفاءة الحسابية للشبكات العصبية التلافيفية (CNNs)، يقدم FastSAM تخفيضات كبيرة في المتطلبات الحسابية والموارد مع الحفاظ على أداء تنافسي. يتيح هذا النهج المزدوج المراحل لـ FastSAM تقديم تقسيم سريع وفعال مناسب للتطبيقات التي تتطلب نتائج سريعة.
Link to this sectionما هي التطبيقات العملية لـ FastSAM؟#
يعتبر FastSAM عملياً لمجموعة متنوعة من مهام computer vision التي تتطلب أداء تقسيم في الوقت الفعلي. تشمل التطبيقات:
- الأتمتة الصناعية لمراقبة وضمان الجودة
- تحليل الفيديو في الوقت الفعلي للأمن والمراقبة
- Autonomous vehicles لكشف وتقسيم الكائنات
- التصوير الطبي لمهام التقسيم الدقيقة والسريعة
قدرته على التعامل مع مطالبات تفاعلية مختلفة من المستخدم تجعل FastSAM قابلاً للتكيف ومرناً لسيناريوهات متنوعة.
Link to this sectionكيف أستخدم نموذج 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 في الوثائق.
Link to this sectionما هي أنواع المطالبات التي يدعمها FastSAM لمهام التقسيم؟#
يدعم FastSAM أنواع مطالبات متعددة لتوجيه مهام التقسيم:
- مطالبة كل شيء (Everything Prompt): تنشئ تقسيماً لجميع الكائنات المرئية.
- مطالبة صندوق التحديد (BBox Prompt): تقسم الكائنات داخل صندوق تحديد محدد.
- مطالبة نصية (Text Prompt): تستخدم نصاً وصفياً لتقسيم الكائنات المطابقة للوصف.
- مطالبة نقطية (Point Prompt): تقسم الكائنات بالقرب من نقاط محددة يحددها المستخدم.
تسمح هذه المرونة لـ FastSAM بالتكيف مع مجموعة واسعة من سيناريوهات تفاعل المستخدم، مما يعزز فائدته عبر تطبيقات مختلفة. لمزيد من المعلومات حول استخدام هذه المطالبات، راجع قسم Key Features.