İçeriğe geç

Hızlı Segment Her Şeyi Modeli (FastSAM)

Hızlı Segment Her Şey Modeli (FastSAM), Segment Her Şey görevi için yeni, gerçek zamanlı CNN tabanlı bir çözümdür. Bu görev, çeşitli olası kullanıcı etkileşimi istemlerine dayalı olarak bir görüntüdeki herhangi bir nesneyi bölümlere ayırmak için tasarlanmıştır. FastSAM, rekabetçi performansı korurken hesaplama taleplerini önemli ölçüde azaltır ve bu da onu çeşitli görme görevleri için pratik bir seçim haline getirir.



İzle: Ultralytics ile FastSAM Kullanarak Nesne Takibi

Model Mimarisi

Hızlı Segment Her Şeyi Modeli (FastSAM) mimarisine genel bakış

Genel Bakış

FastSAM, önemli miktarda hesaplama kaynağı gereksinimi olan ağır bir Transformer modeli olan Segment Anything Model (SAM)'in sınırlamalarını gidermek için tasarlanmıştır. FastSAM, segment anything görevini iki sıralı aşamaya ayırır: tüm-örnek segmentasyonu ve istem güdümlü seçim. İlk aşama, görüntüdeki tüm örneklerin segmentasyon maskelerini üretmek için YOLOv8-seg'i kullanır. İkinci aşamada, isteme karşılık gelen ilgi alanını (region-of-interest) verir.

Temel Özellikler

  1. Gerçek Zamanlı Çözüm: CNN'lerin hesaplama verimliliğinden yararlanarak, FastSAM herhangi bir şeyi bölümlere ayırma görevi için gerçek zamanlı bir çözüm sunar ve bu da onu hızlı sonuçlar gerektiren endüstriyel uygulamalar için değerli kılar.

  2. Verimlilik ve Performans: FastSAM, performans kalitesinden ödün vermeden hesaplama ve kaynak taleplerinde önemli bir azalma sunar. SAM ile karşılaştırılabilir performans elde eder, ancak büyük ölçüde azaltılmış hesaplama kaynaklarıyla gerçek zamanlı uygulamaya olanak tanır.

  3. İstem Güdümlü Bölütleme: FastSAM, çeşitli olası kullanıcı etkileşimi istemleriyle yönlendirilen bir görüntüdeki herhangi bir nesneyi bölütleyebilir ve farklı senaryolarda esneklik ve uyarlanabilirlik sağlar.

  4. YOLOv8-seg tabanlı: FastSAM, bir örnek segmentasyon dalı ile donatılmış bir nesne dedektörü olan YOLOv8-seg tabanlıdır. Bu, bir görüntüdeki tüm örneklerin segmentasyon maskelerini etkili bir şekilde üretmesini sağlar.

  5. Kıyaslama Sonuçlarında Rekabet Gücü: MS COCO üzerindeki nesne önerisi görevinde, FastSAM tek bir NVIDIA RTX 3090 üzerinde SAM'den önemli ölçüde daha hızlı bir hızda yüksek puanlar elde ederek verimliliğini ve yeteneğini gösterir.

  6. Pratik Uygulamalar: Önerilen yaklaşım, mevcut yöntemlerden onlarca veya yüzlerce kat daha hızlı, çok sayıda görme görevi için yeni ve pratik bir çözüm sunar.

  7. Model Sıkıştırma Fizibilitesi: FastSAM, yapıya yapay bir öncelik getirerek hesaplama çabasını önemli ölçüde azaltabilecek bir yolun fizibilitesini gösterir ve böylece genel vizyon görevleri için büyük model mimarisi için yeni olanaklar açar.

Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları

Bu tablo, mevcut modelleri, belirli önceden eğitilmiş ağırlıkları, destekledikleri görevleri ve desteklenen modlar için ✅ emojileri ve desteklenmeyen modlar için ❌ emojileri ile belirtilen Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı çalışma modlarıyla uyumluluklarını sunar.

Model Türü Önceden Eğitilmiş Ağırlıklar Desteklenen Görevler Çıkarım Doğrulama Eğitim Dışa aktar
FastSAM-s FastSAM-s.pt Örnek Segmentasyonu
FastSAM-x FastSAM-x.pt Örnek Segmentasyonu

FastSAM Karşılaştırması - YOLO

Burada Meta'nın en küçük SAM2-t varyantı da dahil olmak üzere SAM2 modellerini, Ultralytics'in en küçük segmentasyon modeli olan YOLO11n-seg ile karşılaştırıyoruz:

Model Boyut
(MB)
Parametreler
(M)
Hız (CPU)
(ms/resim)
Meta SAM-b 375 93.7 49401
Meta SAM2-b 162 80.8 31901
Meta SAM2-t 78.1 38.9 25997
MobileSAM 40.7 10.1 25381
YOLOv8 backbone ile FastSAM-s 23.7 11.8 55.9
Ultralytics YOLOv8n-seg 6.7 (11.7 kat daha küçük) 3.4 (11.4 kat daha az) 24.5 (1061 kat daha hızlı)
Ultralytics YOLO11n-seg 5.9 (13.2 kat daha küçük) 2.9 (13.4 kat daha az) 30.1 (864 kat daha hızlı)

Bu karşılaştırma, SAM varyantları ve YOLO segmentasyon modelleri arasındaki model boyutları ve hızlarındaki önemli farklılıkları göstermektedir. SAM benzersiz otomatik segmentasyon yetenekleri sağlarken, YOLO modelleri, özellikle YOLOv8n-seg ve YOLO11n-seg, önemli ölçüde daha küçük, daha hızlı ve daha hesaplama açısından verimlidir.

Testler, 24 GB RAM'e sahip 2025 Apple M4 Pro üzerinde kullanılarak çalıştırılır torch==2.6.0 ve ultralytics==8.3.90. Bu testi yeniden oluşturmak için:

Örnek

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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
    model = YOLO(file_name)
    model.info()
    model(ASSETS)

Kullanım Örnekleri

FastSAM modellerinin python uygulamalarınıza entegre edilmesi kolaydır. Ultralytics, geliştirmeyi kolaylaştırmak için kullanıcı dostu python API'si ve CLI komutları sağlar.

Tahmin Kullanımı

Gerçekleştirmek için nesne tespiti bir görüntü üzerinde, şunu kullanın: predict metodu aşağıda gösterildiği gibi:

Örnek

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

ile basittir. Bu kod parçacığı, önceden eğitilmiş bir modeli yüklemenin ve bir görüntü üzerinde tahmin yürütmenin basitliğini gösterir.

FastSAMPredictor örneği

Bu şekilde görüntü üzerinde çıkarım çalıştırabilir ve tüm segmenti elde edebilirsiniz. results bir kez çalıştırın ve birden çok kez çıkarım çalıştırmadan birden çok kez istem çıkarımı çalıştırın.

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

Not

Geri dönenlerin hepsi results yukarıdaki örneklerde Sonuçlar tahmin edilen maskelere ve kaynak görüntüye kolayca erişim sağlayan nesne.

Değerlendirme Kullanımı

Modelin bir veri kümesi üzerinde doğrulanması aşağıdaki gibi yapılabilir:

Örnek

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

Lütfen FastSAM'in yalnızca tek bir nesne sınıfının algılanmasını ve segmentasyonunu desteklediğini unutmayın. Bu, tüm nesneleri aynı sınıf olarak tanıyacağı ve segmentlere ayıracağı anlamına gelir. Bu nedenle, veri setini hazırlarken tüm nesne kategori kimliklerini 0'a dönüştürmeniz gerekir.

İzleme Kullanımı

Bir görüntü üzerinde nesne takibi gerçekleştirmek için şunu kullanın: track metodu aşağıda gösterildiği gibi:

Örnek

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.mp4" imgsz=640

FastSAM resmi Kullanımı

FastSAM'e doğrudan https://github.com/CASIA-IVA-Lab/FastSAM deposundan da erişilebilir. İşte FastSAM'i kullanmak için izleyebileceğiniz tipik adımlara kısa bir genel bakış:

Kurulum

  1. FastSAM deposunu klonlayın:

    git clone https://github.com/CASIA-IVA-Lab/FastSAM.git
    
  2. Python 3.9 ile bir Conda ortamı oluşturun ve etkinleştirin:

    conda create -n FastSAM python=3.9
    conda activate FastSAM
    
  3. Klonlanan depoya gidin ve gerekli paketleri yükleyin:

    cd FastSAM
    pip install -r requirements.txt
    
  4. CLIP modelini kurun:

    pip install git+https://github.com/ultralytics/CLIP.git
    

Örnek Kullanım

  1. Model kontrol noktasını indirin.

  2. Çıkarım için FastSAM kullanın. Örnek komutlar:

    • Bir görüntüdeki her şeyi segmentlere ayır:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
      
    • Metin istemini kullanarak belirli nesneleri bölümlere ayırın:

      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 bölümlere ayırın (xywh biçiminde kutu koordinatlarını 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 bölümlere ayırın:

      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 demosu aracılığıyla FastSAM'i deneyebilirsiniz.

Alıntılar ve Teşekkürler

Gerçek zamanlı örnek segmentasyonu alanındaki önemli katkılarından dolayı FastSAM yazarlarına teşekkür etmek isteriz:

@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 makalesine arXiv üzerinden ulaşılabilir. Yazarlar çalışmalarını kamuya açık hale getirmişlerdir ve kod tabanına GitHub üzerinden erişilebilir. Alanı geliştirmedeki ve çalışmalarını daha geniş bir topluluğa erişilebilir kılmadaki çabalarını takdir ediyoruz.

SSS

FastSAM nedir ve SAM'den farkı nedir?

Fast Segment Anything Model'in kısaltması olan FastSAM, nesne segmentasyon görevlerinde yüksek performansı korurken hesaplama taleplerini azaltmak için tasarlanmış, gerçek zamanlı bir evrişimsel sinir ağı (CNN) tabanlı çözümdür. Daha ağır bir Transformer tabanlı mimari kullanan Segment Anything Model'den (SAM) farklı olarak FastSAM, verimli örnek segmentasyonu için Ultralytics YOLOv8-seg'i iki aşamada kullanır: tüm örnek segmentasyonu ve ardından istem güdümlü seçim.

FastSAM gerçek zamanlı bölütleme performansını nasıl elde eder?

FastSAM, segmentasyon görevini YOLOv8-seg ile tüm örnek segmentasyonuna ve istem yönlendirmeli seçim aşamalarına ayırarak gerçek zamanlı segmentasyona ulaşır. CNN'lerin hesaplama verimliliğini kullanarak FastSAM, rekabetçi performansı korurken hesaplama ve kaynak taleplerinde önemli azalmalar sunar. Bu çift aşamalı yaklaşım, FastSAM'in hızlı sonuçlar gerektiren uygulamalar için uygun, hızlı ve verimli segmentasyon sağlamasına olanak tanır.

FastSAM'in pratik uygulamaları nelerdir?

FastSAM, gerçek zamanlı segmentasyon performansı gerektiren çeşitli bilgisayar görüşü görevleri için pratiktir. Uygulamalar şunları içerir:

  • Kalite kontrol ve güvencesi için endüstriyel otomasyon
  • Güvenlik ve gözetim için gerçek zamanlı video analizi
  • Nesne algılama ve segmentasyon için Otonom araçlar
  • Hassas ve hızlı segmentasyon görevleri için tıbbi görüntüleme

Çeşitli kullanıcı etkileşimi istemlerini işleme yeteneği, FastSAM'i farklı senaryolar için uyarlanabilir ve esnek hale getirir.

python'da çıkarım için FastSAM modelini nasıl kullanırım?

Python'da çıkarım için FastSAM'ı kullanmak için aşağıdaki örneği takip edebilirsiniz:

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 bilgi için, belgelerin Tahmin Kullanımı bölümüne bakın.

FastSAM, segmentasyon görevleri için ne tür istemleri destekler?

FastSAM, segmentasyon görevlerini yönlendirmek için birden çok istem türünü destekler:

  • Her Şeyi İsteme: Görünür tüm nesneler için segmentasyon oluşturur.
  • Sınırlayıcı Kutu (BBox) İstemi: Belirtilen sınırlayıcı kutu içindeki nesneleri bölümlere ayırır.
  • Metin İstemi: Açıklamaya uyan nesneleri bölümlendirmek için açıklayıcı bir metin kullanır.
  • Nokta İstemi: Belirli kullanıcı tanımlı noktalara yakın nesneleri bölümlere ayırır.

Bu esneklik, FastSAM'in çok çeşitli kullanıcı etkileşimi senaryolarına uyum sağlamasına olanak tanır ve farklı uygulamalardaki kullanışlılığını artırır. Bu istemleri kullanma hakkında daha fazla bilgi için Temel Özellikler bölümüne bakın.



📅 1 yıl önce oluşturuldu ✏️ 19 gün önce güncellendi

Yorumlar