Link to this sectionHı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
Link to this sectionModel Mimarisi#

Link to this sectionGenel Bakış#
FastSAM is designed to address the limitations of the Segment Anything Model (SAM), a heavy Transformer model with substantial computational resource requirements. The FastSAM decouples the segment anything task into two sequential stages: all-instance segmentation and prompt-guided selection. The first stage uses YOLOv8-seg to produce the segmentation masks of all instances in the image. In the second stage, it outputs the region-of-interest corresponding to the prompt.
Link to this sectionTemel Ö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 segmentleme dalı ile donatılmış bir nesne dedektörü olan YOLOv8-seg temel alınarak geliştirilmiştir. Bu, görüntüdeki tüm örneklerin segmentleme maskelerini etkili bir şekilde oluşturmasını sağlar.
-
Kıyaslamalarda Rekabetçi Sonuçlar: MS COCO üzerindeki nesne önerisi görevinde FastSAM, tek bir NVIDIA RTX 3090 üzerinde SAM'den çok daha hızlı bir şekilde yüksek puanlar elde ederek verimliliğini ve kapasitesini kanıtlar.
-
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.
Link to this sectionMevcut Modeller, Desteklenen Görevler ve Çalışma Modları#
Bu tablo, mevcut modelleri özel önceden 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ı ile sunar; desteklenen modlar ✅ emojisiyle, desteklenmeyenler ise ❌ emojisiyle gösterilmiştir.
| Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| FastSAM-s | FastSAM-s.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ✅ |
| FastSAM-x | FastSAM-x.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ✅ |
Link to this sectionFastSAM ile YOLO Karşılaştırması#
Burada, en küçük SAM2-t varyantı da dahil olmak üzere Meta'nın SAM 2 modellerini, YOLO26n-seg dahil Ultralytics segmentleme 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 |
| FastSAM-s YOLOv8 backbone ile | 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ı ONNX Runtime ile ölçülmüştür. Testler, torch==2.10.0, ultralytics==8.4.31 ve onnxruntime==1.24.4 kullanılarak 16GB RAM'li 2025 Apple M4 Air üzerinde çalıştırılmıştır. Bu testi tekrarlamak 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)Link to this sectionKullanı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.
Link to this sectionTahmin Kullanımı#
Bir görüntü üzerinde nesne tespiti gerçekleştirmek için, aşağıda gösterildiği gibi predict yöntemini kullanın:
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 şekilde görüntü üzerinde çıkarım yapabilir ve tüm segment results sonuçlarını bir kez alabilir, ardından birden fazla çıkarım çalıştırmanıza gerek kalmadan komut çıkarımlarını defalarca çalıştırabilirsiniz.
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")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.
Link to this sectionDoğrulama Kullanımı#
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")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.
Link to this sectionTakip Kullanımı#
Bir görüntü üzerinde nesne takibi gerçekleştirmek için, aşağıda gösterildiği gibi track yöntemini kullanın:
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)Link to this sectionResmi FastSAM Kullanımı#
FastSAM, doğrudan https://github.com/CASIA-IVA-Lab/FastSAM deposundan da edinilebilir. İşte FastSAM'i kullanmak için atabileceğiniz tipik adımlara kısa bir bakış:
Link to this sectionKurulum#
-
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
Link to this sectionÖrnek Kullanım#
-
Bir model kontrol noktası indirin.
-
Çı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 sınırlayıcı kutu içindeki nesneleri segmentleyin (kutu koordinatlarını xywh formatında sağlayın):
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, FastSAM'i CASIA-IVA-Lab Colab demosu aracılığıyla deneyebilirsiniz.
Link to this sectionAlıntılar ve Teşekkürler#
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ı herkese açık hale getirmişlerdir ve kod tabanına GitHub üzerinden erişilebilir. Alanı ilerlettikleri ve çalışmalarını daha geniş bir topluluğun erişimine sundukları için çabalarını takdir ediyoruz.
Link to this sectionSSS#
Link to this sectionFastSAM nedir ve SAM'den farkı nedir?#
Hızlı Her Şeyi Segmentleme Modeli'nin kısaltması olan FastSAM, nesne segmentleme görevlerinde yüksek performansı korurken hesaplama gereksinimlerini azaltmak için tasarlanmış gerçek zamanlı bir evrişimli sinir ağı (CNN) tabanlı çözümdür. Daha ağır bir Transformer tabanlı mimari kullanan Her Şeyi Segmentleme Modeli'nden (SAM) farklı olarak FastSAM, tüm örnek segmentleme ve ardından komutla yönlendirilen seçim olmak üzere iki aşamada verimli örnek segmentleme için Ultralytics YOLOv8-seg kullanır.
Link to this sectionFastSAM, 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.
Link to this sectionFastSAM'in pratik uygulamaları nelerdir?#
FastSAM, gerçek zamanlı segmentleme performansı gerektiren çeşitli bilgisayarlı görü 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 otonom araçlar
- 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.
Link to this sectionPython'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 Tahmin Kullanımı bölümüne göz at.
Link to this sectionFastSAM, 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şim senaryolarına uyum sağlamasına olanak tanıyarak farklı uygulamalarda kullanışlılığını artırır. Bu komutların kullanımı hakkında daha fazla bilgi için Temel Özellikler bölümüne bak.