تخطي إلى المحتوى

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

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



شاهد: تتبع الأجسام باستخدام FastSAM مع Ultralytics

الهندسة المعمارية النموذجية

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

لمحة عامة

FastSAM تم تصميمه لمعالجة قيود نموذج تجزئة أي شيء (SAM)، وهو نموذج محول ثقيل ذو متطلبات كبيرة من الموارد الحاسوبية. يقوم 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 يوضح جدوى المسار الذي يمكن أن يقلل بشكل كبير من الجهد الحسابي عن طريق إدخال بنية مصطنعة قبل الهيكل، وبالتالي فتح إمكانيات جديدة لهندسة النماذج الكبيرة لمهام الرؤية العامة.

النماذج المتوفرة والمهام المدعومة وأوضاع التشغيل

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

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

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

يسهل دمج النماذج 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")
# Load a FastSAM model and segment everything with it
yolo segment predict model=FastSAM-s.pt source=path/to/bus.jpg imgsz=640

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

مثال FastSAMPredictor

بهذه الطريقة يمكنك تشغيل الاستدلال على الصورة والحصول على كل المقطع 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 في الأمثلة أعلاه هي النتائج الذي يسمح بالوصول إلى الأقنعة المتوقعة والصورة المصدر بسهولة.

استخدام فال

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

مثال على ذلك

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. إنشاء بيئة كوندا وتفعيلها باستخدام 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

# 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 لمهام التجزئة؟

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

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

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

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 2 شهر

التعليقات