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

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

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

نموذج أي شيء سريع المقطع (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
ann = prompt_process.everything_prompt()

# Bbox default shape [0,0,0,0] -> [x1,y1,x2,y2]
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
# points default [[0,0]] [[x1,y1],[x2,y2]]
# point_label default [0] [1,0] 0:background, 1:foreground
ann = prompt_process.point_prompt(points=[[200, 200]], pointlabel=[1])
prompt_process.plot(annotations=ann, output='./')
# Load a FastSAM model and segment everything with it
yolo segment predict model=FastSAM-s.pt source=path/to/bus.jpg imgsz=640

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

استخدام فال

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

مثل

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
  1. إنشاء وتنشيط بيئة Conda باستخدام Python 3.9:
conda create -n FastSAM python=3.9
conda activate FastSAM
  1. انتقل إلى المستودع المستنسخ وقم بتثبيت الحزم المطلوبة:
cd FastSAM
pip install -r requirements.txt
  1. قم بتثبيت نموذج 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. نحن نقدر جهودهم في النهوض بالمجال وجعل عملهم في متناول المجتمع الأوسع.



تم الإنشاء 2023-11-12، تم التحديث 2024-05-01
المؤلفون: RizwanMunawar (1)، Glenn-jocher (8)، Laughing-q (1)، Berry-ding (1)

التعليقات