Ultralytics YOLO27:

نموذج التقسيم السريع لأي شيء (FastSAM)#

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



Watch: Object Tracking using FastSAM with Ultralytics

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

نظرة عامة على بنية نموذج التقسيم السريع لأي شيء (FastSAM)

نظرة عامة#

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

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

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

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

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

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

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

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

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

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

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

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

مقارنة FastSAM مع YOLO#

هنا نققارن نموذج FastSAM-s مع متغيرات SAM الخاصة بشركة Meta ونماذج تجزئة Ultralytics بما في ذلك YOLO26n-seg:

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

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

قيسَت سرعات SAM باستخدام PyTorch، وقيسَت سرعات YOLO باستخدام ONNX Runtime. أُجريت الاختبارات على جهاز Apple M4 Air لعام 2025 مزود بذاكرة RAM سعتها 16GB، باستخدام 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, nms=False)  # YOLO26 NMS-free head; no-op for YOLOv8/YOLO11
    model = YOLO(onnx_path)
    model(ASSETS)

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

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

استخدام التنبؤ#

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

استخدام التحقق#

يرجى ملاحظة أن 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 كما هو موضح أدناه:

مثال
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 أيضًا مباشرة من مستودع CASIA-LMC-Lab/FastSAM. إليك نظرة عامة موجزة عن الخطوات النموذجية التي قد تتخذها لاستخدام FastSAM:

التثبيت#

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

    git clone https://github.com/CASIA-LMC-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. نزّل نقطة فحص النموذج.

  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"
    • قسّم الكائنات الموجودة داخل مربع إحاطة (وفّر إحداثيات المربع بتنسيق 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 التوضيحي المقدم من CASIA-LMC-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، وهو اختصار لنموذج التقسيم السريع لأي شيء، هو حل قائم على شبكة عصبية التفافية (CNN) يعمل في الوقت الفعلي، وقد صُمم لتقليل المتطلبات الحاسوبية مع الحفاظ على أداء مرتفع في مهام تقسيم الكائنات. وعلى خلاف نموذج التقسيم لأي شيء (SAM)، الذي يستخدم بنية أثقل قائمة على Transformer، يستفيد FastSAM من Ultralytics YOLOv8-seg لتنفيذ تقسيم الحالات بكفاءة على مرحلتين: تقسيم جميع الحالات، يليه الاختيار الموجَّه بالمطالبات.

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

  • يُعد FastSAM عمليًا لمجموعة متنوعة من مهام الرؤية الحاسوبية التي تتطلب أداء تقسيم في الوقت الفعلي. وتشمل التطبيقات:

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

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

  • لاستخدام 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")

    لمزيد من التفاصيل حول أساليب الاستدلال، راجع قسم استخدام التنبؤ في الوثائق.

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

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

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

التعليقات