İçeriğe geç

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.



İzle: FastSAM ile Nesne Takibi Ultralytics

Model Mimarisi

Fast Segment Anything Model (FastSAM) mimarisine genel bakış

Genel 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.

Temel Özellikler

  1. 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.

  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 performansa ulaşır, ancak büyük ölçüde azaltılmış hesaplama kaynakları ile gerçek zamanlı uygulama sağlar.

  3. İ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.

  4. 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.

  5. 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 koymuştur.

  6. 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.

  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, 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ıklarDesteklenen GörevlerÇıkarımDoğrulamaEğitimİhracat
FastSAM-sFastSAM-s.ptÖrnek Segmentasyonu
FastSAM-xFastSAM-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

To perform object detection on an image, use the predict yöntemi 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

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.

FastSAMPredictor örneği

Bu şekilde görüntü üzerinde çıkarım çalıştırabilir ve tüm segmentleri alabilirsiniz results bir kez çalıştırın ve çıkarımı birden çok kez çalıştırmadan çıkarım istemlerini birden çok kez ç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

İade edilen tüm results yukarıdaki örneklerde Sonuçlar nesnesi, öngörülen maskelere ve kaynak görüntüye kolayca erişilmesini sağlar.

Val Kullanımı

Modelin bir veri kümesi üzerinde doğrulanması aşağıdaki şekilde 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 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

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

  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. Klonlanmış 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. Bir model kontrol noktası indirin.

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

    • Bir görüntüdeki her şeyi bölümlere ayırın:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg
      
    • 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"
      
    • Segment objects within a bounding box (provide box coordinates in xywh format):

      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:

      python Inference.py --model_path ./weights/FastSAM.pt --img_path ./images/dogs.jpg --point_prompt "[[520,360],[620,300]]" --point_label "[1,0]"
      

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:

@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'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.

SSS

FastSAM nedir ve SAM adresinden farkı nedir?

FastSAM, short for Fast Segment Anything Model, is a real-time convolutional neural network (CNN)-based solution designed to reduce computational demands while maintaining high performance in object segmentation tasks. Unlike the Segment Anything Model (SAM), which uses a heavier Transformer-based architecture, FastSAM leverages Ultralytics YOLOv8-seg for efficient instance segmentation in two stages: all-instance segmentation followed by prompt-guided selection.

FastSAM gerçek zamanlı segmentasyon performansına nasıl ulaşıyor?

FastSAM YOLOv8-seg ve prompt-guided seçim aşamaları ile segmentasyon görevini tüm-madde segmentasyonuna ayırarak gerçek zamanlı segmentasyona ulaşır. CNN'lerin hesaplama verimliliğinden yararlanan , rekabetçi performansı korurken hesaplama ve kaynak taleplerinde önemli azalmalar sunar. Bu iki aşamalı yaklaşım, 'un hızlı sonuçlar gerektiren uygulamalar için uygun hızlı ve verimli segmentasyon sunmasını sağlar. FastSAM FastSAM

FastSAM'un pratik uygulamaları nelerdir?

FastSAM is practical for a variety of computer vision tasks that require real-time segmentation performance. Applications include:

  • Kalite kontrol ve güvence 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 'u farklı senaryolar için uyarlanabilir ve esnek hale getirir.

Python adresinde çıkarım yapmak için FastSAM modelini nasıl kullanabilirim?

FastSAM adresini Python adresinde çıkarım yapmak için 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örevlerine rehberlik etmek için birden fazla istem türünü destekler:

  • Her Şey İstemi: Görünür tüm nesneler için segmentasyon oluşturur.
  • Sınırlayıcı Kutu (BBox) İstemi: Nesneleri belirtilen bir sınırlayıcı kutu içinde bölümlere ayırır.
  • Metin İstemi: Tanımla eşleşen nesneleri bölümlere ayırmak için açıklayıcı bir metin kullanır.
  • Nokta İstemi: Kullanıcı tanımlı belirli noktaların yakınındaki nesneleri segmentlere ayırır.

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

📅 Created 11 months ago ✏️ Updated 1 month ago

Yorumlar