انتقل إلى المحتوى

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

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



شاهد: تتبع الكائن باستخدام FastSAM مع Ultralytics

نموذج العمارة

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

نظره عامه

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

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

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

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

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

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

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

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

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

الطرز المتوفرة والمهام المدعومة وأوضاع التشغيل

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

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

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

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

توقع الاستخدام

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

مثل

from ultralytics import FastSAM
from ultralytics.models.fastsam import FastSAMPrompt

# 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)

# Prepare a Prompt Process object
prompt_process = FastSAMPrompt(source, everything_results, device="cpu")

# Everything prompt
results = prompt_process.everything_prompt()

# Bbox default shape [0,0,0,0] -> [x1,y1,x2,y2]
results = prompt_process.box_prompt(bbox=[200, 200, 300, 300])

# Text prompt
results = prompt_process.text_prompt(text="a photo of a dog")

# Point prompt
# points default [[0,0]] [[x1,y1],[x2,y2]]
# point_label default [0] [1,0] 0:background, 1:foreground
results = prompt_process.point_prompt(points=[[200, 200]], pointlabel=[1])
prompt_process.plot(annotations=results, output="./")
# Load a FastSAM model and segment everything with it
yolo segment predict model=FastSAM-s.pt source=path/to/bus.jpg imgsz=640

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

ملاحظه

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

استخدام فال

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

مثل

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")
# Load a FastSAM model and validate it on the COCO8 example dataset at image size 640
yolo segment val model=FastSAM-s.pt data=coco8.yaml imgsz=640

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

استخدام المسار

لإجراء تتبع الكائن على صورة، استخدم الأداة 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)
yolo segment track model=FastSAM-s.pt source="path/to/video/file.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. قم بتنزيل نقطة تفتيش نموذجية.

  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 التجريبي أو على HuggingFace عرض توضيحي على الويب لتجربة مرئية.

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

نود أن نعترف 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، هو حل قائم على الشبكة العصبية التلافيفية (CNN) في الوقت الحقيقي مصمم لتقليل المتطلبات الحسابية مع الحفاظ على الأداء العالي في مهام تجزئة الكائنات. وخلافًا لنموذج Segment Anything Model (SAM)، الذي يستخدم بنية قائمة على محول أثقل، يستفيد FastSAM من Ultralytics YOLOv8 -seg لتجزئة المثيل بكفاءة على مرحلتين: تجزئة كل المثيل متبوعة بالاختيار الموجه الفوري.

كيف يحقق FastSAM أداء التجزئة في الوقت الفعلي؟

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

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

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

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

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

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

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

from ultralytics import FastSAM
from ultralytics.models.fastsam import FastSAMPrompt

# 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)

# Prepare a Prompt Process object
prompt_process = FastSAMPrompt(source, everything_results, device="cpu")

# Everything prompt
ann = prompt_process.everything_prompt()

# Bounding box prompt
ann = prompt_process.box_prompt(bbox=[200, 200, 300, 300])

# Text prompt
ann = prompt_process.text_prompt(text="a photo of a dog")

# Point prompt
ann = prompt_process.point_prompt(points=[[200, 200]], pointlabel=[1])
prompt_process.plot(annotations=ann, output="./")

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

ما أنواع المطالبات التي يدعمها FastSAM لمهام التجزئة؟

FastSAM يدعم أنواعًا متعددة من المطالبات لتوجيه مهام التجزئة:

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

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



تم الإنشاء 2023-11-12، تم التحديث 2024-07-18
المؤلفون: Laughing-q (2)، glenn-jocher (13)، RizwanMunawar (2)، Berry-ding (1)

التعليقات