Hızlı Segment Her Şey Modeli (FastSAM)
Fast Segment Anything Model (FastSAM), Segment Anything 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, bu da onu çeşitli görme görevleri için pratik bir seçim haline getirir.
Genel Bakış
FastSAM önemli hesaplama kaynağı gereksinimleri olan ağır bir Transformatör modeli olan Segment Anything Model'in (SAM) sınırlamalarını ele almak için tasarlanmıştır. FastSAM , segment anything görevini iki ardışık aşamaya ayırır: tüm örnek segmentasyonu ve istem kılavuzlu seçim. İlk aşama, görüntüdeki tüm örneklerin segmentasyon maskelerini üretmek için YOLOv8-seg kullanır. İkinci aşamada, komut istemine karşılık gelen ilgi bölgesini çıkarır.
Temel Özellikler
-
Gerçek Zamanlı Çözüm: CNN'lerin hesaplama verimliliğinden yararlanan FastSAM , herhangi bir segment görevi için gerçek zamanlı bir çözüm sağlayarak hızlı sonuçlar gerektiren endüstriyel uygulamalar için değerli hale getirir.
-
Verimlilik ve Performans: FastSAM , performans kalitesinden ödün vermeden hesaplama ve kaynak taleplerinde önemli bir azalma sunar. SAM ile karşılaştırılabilir performansa ulaşır, ancak büyük ölçüde azaltılmış hesaplama kaynakları ile gerçek zamanlı uygulama sağlar.
-
İstem Kılavuzlu Segmentasyon: FastSAM , çeşitli olası kullanıcı etkileşimi istemleri tarafından yönlendirilen bir görüntüdeki herhangi bir nesneyi segmentlere ayırabilir ve farklı senaryolarda esneklik ve uyarlanabilirlik sağlar.
-
YOLOv8 -seg'e dayanır: FastSAM , örnek segmentasyon dalıyla donatılmış bir nesne detektörü olan YOLOv8-seg'e dayanır. Bu, bir görüntüdeki tüm örneklerin segmentasyon maskelerini etkili bir şekilde üretmesini sağlar.
-
Karşılaştırmalı Testlerde Rekabetçi Sonuçlar: MS COCO'daki nesne önerme görevinde FastSAM , MS COCO'dan önemli ölçüde daha hızlı bir şekilde yüksek puanlar elde eder. SAM tek bir NVIDIA RTX 3090 üzerinde çalışarak verimliliğini ve kapasitesini ortaya koyuyor.
-
Pratik Uygulamalar: Önerilen yaklaşım, mevcut yöntemlerden onlarca veya yüzlerce kat daha hızlı, gerçekten yüksek bir hızda çok sayıda görme görevi için yeni ve pratik bir çözüm sunmaktadır.
-
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, böylece genel görme 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, önceden eğitilmiş belirli ağırlıklarıyla birlikte mevcut modelleri, destekledikleri görevleri ve desteklenen modlar için ✅ emojisi ve desteklenmeyen modlar için ❌ emojisi ile gösterilen Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi farklı çalışma modlarıyla uyumluluklarını sunar.
Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | İhracat |
---|---|---|---|---|---|---|
FastSAM-s | FastSAM-s.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ✅ |
FastSAM-x | FastSAM-x.pt | Örnek Segmentasyonu | ✅ | ❌ | ❌ | ✅ |
Kullanım Örnekleri
FastSAM modellerini Python uygulamalarınıza entegre etmek kolaydır. Ultralytics , geliştirmeyi kolaylaştırmak için kullanıcı dostu Python API ve CLI komutları sağlar.
Kullanım Tahmini
Bir görüntü üzerinde nesne algılama gerçekleştirmek için predict
yöntemi aşağıda gösterildiği gibi:
Örnek
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='./')
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.
Val Kullanımı
Modelin bir veri kümesi üzerinde doğrulanması aşağıdaki şekilde yapılabilir:
Örnek
Lütfen FastSAM adresinin 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 bölümlere ayıracağı anlamına gelir. Bu nedenle, veri kümesini hazırlarken tüm nesne kategori kimliklerini 0'a dönüştürmeniz gerekir.
Parça Kullanımı
Bir görüntü üzerinde nesne izleme gerçekleştirmek için track
yöntemi aşağıda gösterildiği gibi:
Örnek
FastSAM Resmi Kullanım
FastSAM doğrudan https://github.com/CASIA-IVA-Lab/FastSAM deposundan da edinilebilir. Burada FastSAM adresini kullanmak için atabileceğiniz tipik adımlara kısa bir genel bakış yer almaktadır:
Kurulum
- FastSAM deposunu klonlayın:
- Python 3.9 ile bir Conda ortamı oluşturun ve etkinleştirin:
- Klonlanmış depoya gidin ve gerekli paketleri yükleyin:
- CLIP modelini kurun:
Örnek Kullanım
-
Bir model kontrol noktası indirin.
-
Çıkarım için FastSAM adresini kullanın. Örnek komutlar:
- Bir görüntüdeki her şeyi bölümlere ayırın:
- Metin istemini kullanarak belirli nesneleri segmentlere ayırın:
python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --text_prompt "the yellow dog"
- Nesneleri bir sınırlayıcı kutu içinde segmentlere ayırın (xywh formatında 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 noktaların yakınındaki nesneleri segmentlere ayırın:
Ayrıca, görsel bir deneyim için FastSAM adresini bir Colab dem osu aracılığıyla veya HuggingFace web demosunda deneyebilirsiniz.
Atıflar ve Teşekkür
Gerçek zamanlı örnek segmentasyonu alanındaki önemli katkılarından dolayı FastSAM yazarlarına teşekkür ederiz:
Orijinal FastSAM makalesi arXiv'de bulunabilir. Yazarlar çalışmalarını kamuya açık hale getirmişlerdir ve kod tabanına GitHub üzerinden erişilebilir. Alanı ilerletme ve çalışmalarını daha geniş bir topluluk için erişilebilir hale getirme çabalarını takdir ediyoruz.
Oluşturuldu 2023-11-12, Güncellendi 2024-05-01
Yazarlar: RizwanMunawar (1), glenn-jocher (8), Laughing-q (1), berry-ding (1)