Hızlı Her Şeyi Segmentleme Modeli (FastSAM)#
Hızlı Her Şeyi Segmentleme Modeli (FastSAM), Her Şeyi Segmentleme görevi için yenilikçi, gerçek zamanlı, CNN tabanlı bir çözümdür. Bu görev, çeşitli olası kullanıcı etkileşim komutlarına dayanarak bir görüntüdeki herhangi bir nesneyi segmentlemek için tasarlanmıştır. FastSAM, rekabetçi performansı korurken hesaplama gereksinimlerini önemli ölçüde azaltır ve bu da onu çeşitli görüntü işleme görevleri için pratik bir seçenek haline getirir.
Watch: Object Tracking using FastSAM with Ultralytics
Model Mimarisi#

Genel Bakış#
FastSAM, önemli ölçüde hesaplama kaynağı gereksinimleri olan ağır bir Transformer modeli olan Segment Anything Model (SAM) modelinin kısıtlamalarını ele almak için tasarlanmıştır. FastSAM, her şeyi segmentlere ayırma görevini iki ardışık aşamaya ayırır: tüm instance segmentation ve komut istemi kılavuzluğunda seçim. İlk aşamada, görüntüdeki tüm örneklerin segmentasyon maskelerini üretmek için YOLOv8-seg kullanılır. İkinci aşamada ise komut istemine karşılık gelen ilgi bölgesini çıktısını verir.
Temel Özellikler#
-
Gerçek Zamanlı Çözüm: CNN'lerin hesaplama verimliliğinden yararlanan FastSAM, her şeyi segmentleme görevi için gerçek zamanlı bir çözüm sunarak, hızlı sonuçlar gerektiren endüstriyel uygulamalar için değerli hale gelir.
-
Verimlilik ve Performans: FastSAM, performans kalitesinden ödün vermeden hesaplama ve kaynak gereksinimlerinde önemli bir azalma sunar. SAM ile kıyaslanabilir bir performans elde eder ancak çok daha düşük hesaplama kaynaklarıyla gerçek zamanlı uygulamalara olanak tanır.
-
Komutla Yönlendirilen Segmentleme: FastSAM, farklı senaryolarda esneklik ve uyarlanabilirlik sağlayarak, çeşitli olası kullanıcı etkileşim komutları tarafından yönlendirilen bir görüntüdeki herhangi bir nesneyi segmentleyebilir.
-
YOLOv8-seg Tabanlı: FastSAM, örnek segmentasyonu dalıyla donatılmış bir nesne dedektörü olan YOLOv8-seg modelini temel alır. Bu, bir görüntüdeki tüm örneklerin segmentasyon maskelerini etkili bir şekilde üretmesini sağlar.
-
Benchmark'larda Rekabetçi Sonuçlar: MS COCO üzerindeki nesne önerisi görevinde FastSAM, tek bir NVIDIA RTX 3090 üzerinde SAM modeline kıyasla çok daha yüksek bir hızda yüksek skorlar elde ederek verimliliğini ve yeteneğini kanıtlamaktadır.
-
Pratik Uygulamalar: Önerilen yaklaşım, mevcut yöntemlerden onlarca veya yüzlerce kat daha hızlı, gerçekten yüksek hızda çok sayıda görüntü işleme görevi için yeni ve pratik bir çözüm sunar.
-
Model Sıkıştırma Fizibilitesi: FastSAM, yapıya yapay bir ön bilgi ekleyerek hesaplama çabasını önemli ölçüde azaltabilen bir yolun fizibilitesini gösterir ve böylece genel görüntü işleme görevleri için büyük model mimarilerine yeni olanaklar açar.
Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları#
Bu tablo, desteklenen modlar için ✅ emojileri ve desteklenmeyen modlar için ❌ emojileriyle belirtilen şekilde, mevcut modelleri özel ön eğitilmiş ağırlıkları, destekledikleri görevler ve Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı çalışma modlarıyla uyumluluklarıyla birlikte sunar.
| Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Eğitim | Doğrulama | Çıkarım | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| FastSAM-s | FastSAM-s.pt | Örnek Bölütleme | ❌ | ✅ | ✅ | ✅ |
| FastSAM-x | FastSAM-x.pt | Örnek Bölütleme | ❌ | ✅ | ✅ | ✅ |
FastSAM ile YOLO Karşılaştırması#
Burada Meta'nın en küçük SAM2-t varyantı dahil SAM 2 modellerini, YOLO26n-seg dahil Ultralytics segmentasyon modelleriyle karşılaştırıyoruz:
| Model | Boyut (MB) | Parametreler (M) | Hız (CPU) (ms/im) |
|---|---|---|---|
| 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 |
| YOLOv8 omurgasına sahip FastSAM-s | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0x daha küçük) | 3.4 (11.4x daha az) | 24.8 (945x daha hızlı) |
| Ultralytics YOLO11n-seg | 6.2 (12.6x daha küçük) | 2.9 (13.4x daha az) | 24.3 (964x daha hızlı) |
| Ultralytics YOLO26n-seg | 6.7 (11.7x daha küçük) | 2.7 (14.4x daha az) | 25.2 (930x daha hızlı) |
Bu karşılaştırma, SAM varyantları ile YOLO segmentasyon modelleri arasındaki model boyutları ve hızlarındaki önemli farkları göstermektedir. SAM benzersiz otomatik segmentasyon yetenekleri sunarken, YOLO modelleri, özellikle YOLOv8n-seg, YOLO11n-seg ve YOLO26n-seg, önemli ölçüde daha küçük, daha hızlı ve hesaplama açısından daha verimlidir.
SAM hızları PyTorch ile, YOLO hızları ise ONNX Runtime ile ölçülmüştür. Testler, torch==2.10.0, ultralytics==8.4.31 ve onnxruntime==1.24.4 kullanılarak 16 GB RAM'e sahip 2025 Apple M4 Air üzerinde çalıştırılmıştır. Bu testi yeniden üretmek için:
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)Kullanım Örnekleri#
FastSAM modellerinin Python uygulamalarınıza entegrasyonu kolaydır. Ultralytics, geliştirmeyi kolaylaştırmak için kullanıcı dostu Python API ve CLI komutları sağlar.
Tahmin Kullanımı#
Bir görüntü üzerinde object detection gerçekleştirmek için aşağıda gösterildiği gibi predict yöntemini kullan:
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")Bu kod parçacığı, önceden eğitilmiş bir modeli yüklemenin ve bir görüntü üzerinde tahmin çalıştırmanın basitliğini göstermektedir.
Bu sayede görüntü üzerinde çıkarım (inference) çalıştırabilir ve tüm results segmentini bir kez alarak birden fazla çıkarım çalıştırmaya gerek kalmadan komut istemi çıkarımlarını defalarca gerçekleştirebilirsin.
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")Yukarıdaki örneklerde döndürülen tüm results nesneleri, tahmin edilen maskelere ve kaynak görüntüye kolayca erişmeni sağlayan Results nesneleridir.
Doğrulama Kullanımı#
Lütfen FastSAM'in yalnızca tek bir nesne sınıfının tespitini ve segmentasyonunu desteklediğini unutmayın. Bu, tüm nesneleri aynı sınıf olarak tanıyacağı ve segmentleyeceği anlamına gelir. Bu nedenle, veri kümesini hazırlarken tüm nesne kategori kimliklerini 0'a dönüştürmeniz gerekir.
Modelin bir veri kümesi üzerinde doğrulanması şu şekilde yapılabilir:
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")Takip Kullanımı#
Bir görüntü üzerinde nesne takibi (object tracking) gerçekleştirmek için aşağıda gösterildiği gibi track yöntemini kullan:
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)Resmi FastSAM Kullanımı#
FastSAM ayrıca doğrudan https://github.com/CASIA-IVA-Lab/FastSAM deposundan da edinilebilir. İşte FastSAM'i kullanırken izleyebileceğin tipik adımların kısa bir özeti:
Kurulum#
-
FastSAM deposunu klonlayın:
git clone https://github.com/CASIA-IVA-Lab/FastSAM.git -
Python 3.9 ile bir Conda ortamı oluşturun ve etkinleştirin:
conda create -n FastSAM python=3.9 conda activate FastSAM -
Klonlanmış depoya gidin ve gerekli paketleri yükleyin:
cd FastSAM pip install -r requirements.txt -
CLIP modelini yükleyin:
pip install git+https://github.com/ultralytics/CLIP.git
Örnek Kullanım#
-
Bir model checkpoint indir.
-
Çıkarım için FastSAM kullanın. Örnek komutlar:
-
Bir görüntüdeki her şeyi segmentleyin:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg -
Metin komutu kullanarak belirli nesneleri segmentleyin:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog" -
Bir bounding box içindeki nesneleri segmentlere ayır (kutu koordinatlarını xywh formatında sağla):
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --box_prompt "[570,200,230,400]" -
Belirli noktalara yakın nesneleri segmentleyin:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"
-
Ek olarak, CASIA-IVA-Lab Colab demo aracılığıyla FastSAM'i deneyebilirsin.
Alıntılar ve Teşekkür#
Gerçek zamanlı örnek segmentleme alanındaki önemli katkılarından dolayı FastSAM yazarlarına teşekkür ederiz:
@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}
}Orijinal FastSAM makalesi arXiv üzerinde bulunabilir. Yazarlar çalışmalarını halka açık hale getirmiştir ve kod tabanına GitHub üzerinden erişilebilir. Alanı ilerletme ve çalışmalarını daha geniş topluluk için erişilebilir kılma çabaları için kendilerine teşekkür ederiz.
SSS#
FastSAM nedir ve SAM'den farkı nedir?#
Fast Segment Anything Model (FastSAM) anlamına gelen FastSAM, nesne segmentasyonu görevlerinde yüksek performansı korurken hesaplama taleplerini azaltmak için tasarlanmış gerçek zamanlı bir convolutional neural network (CNN) tabanlı çözümdür. Daha ağır bir Transformer tabanlı mimari kullanan Segment Anything Model (SAM)'in aksine FastSAM, iki aşamada verimli örnek segmentasyonu için Ultralytics YOLOv8-seg modelinden yararlanır: tüm örneklerin segmentasyonu ve ardından komut istemi tabanlı seçim.
FastSAM, gerçek zamanlı segmentleme performansını nasıl elde eder?#
FastSAM, segmentleme görevini YOLOv8-seg ile tüm örneklerin segmentasyonu ve komutla yönlendirilen seçim aşamalarına ayırarak gerçek zamanlı segmentasyon gerçekleştirir. CNN'lerin hesaplama verimliliğinden yararlanan FastSAM, rekabetçi performansı korurken hesaplama ve kaynak gereksinimlerinde önemli azalmalar sunar. Bu iki aşamalı yaklaşım, FastSAM'in hızlı sonuçlar gerektiren uygulamalar için uygun, hızlı ve verimli segmentasyon sunmasını sağlar.
FastSAM'in pratik uygulamaları nelerdir?#
FastSAM, gerçek zamanlı segmentasyon performansı gerektiren çeşitli computer vision görevleri için pratiktir. Uygulamalar şunları içerir:
- Kalite kontrol ve güvence için endüstriyel otomasyon
- Güvenlik ve gözetim için gerçek zamanlı video analizi
- Nesne tespiti ve segmentasyonu için Autonomous vehicles
- Hassas ve hızlı segmentleme görevleri için tıbbi görüntüleme
Çeşitli kullanıcı etkileşim komutlarını işleme yeteneği, FastSAM'i farklı senaryolar için uyarlanabilir ve esnek kılar.
Python'da çıkarım yapmak için FastSAM modelini nasıl kullanırım?#
Python'da çıkarım için FastSAM kullanmak istersen, aşağıdaki örneği takip edebilirsin:
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")Çıkarım yöntemleri hakkında daha fazla ayrıntı için belgelerin Predict Usage bölümünü incele.
FastSAM, segmentleme görevleri için ne tür komutları destekler?#
FastSAM, segmentleme görevlerini yönlendirmek için birden fazla komut türünü destekler:
- Everything (Her Şey) Komutu: Tüm görünür nesneler için segmentasyon oluşturur.
- Bounding Box (BBox) Komutu: Belirtilen bir sınırlayıcı kutu içindeki nesneleri segmentler.
- Text (Metin) Komutu: Açıklamaya uyan nesneleri segmentlemek için tanımlayıcı bir metin kullanır.
- Point (Nokta) Komutu: Belirli kullanıcı tanımlı noktalara yakın nesneleri segmentler.
Bu esneklik, FastSAM'in çok çeşitli kullanıcı etkileşimi senaryolarına uyum sağlamasına olanak tanır ve farklı uygulamalardaki faydasını artırır. Bu komut istemlerinin kullanımı hakkında daha fazla bilgi için Key Features bölümüne göz at.