Transformers documentation

SAM2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bu model, 2025-08-14 tarihinde Hugging Face Transformers'a katkıda bulunulmuştur.

SAM2

SDPA FlashAttention

Genel Bakış

SAM2 (Segment Anything Model 2), Nikhila Ravi, Valentin Gabeur, Yuan-Ting Hu, Ronghang Hu, Chaitanya Ryali, Tengyu Ma, Haitham Khedr, Roman Rädle, Chloe Rolland, Laura Gustafson, Eric Mintun, Junting Pan, Kalyan Vasudev Alwala, Nicolas Carion, Chao-Yuan Wu, Ross Girshick, Piotr Dollár ve Christoph Feichtenhofer tarafından Segment Anything in Images and Videos makalesinde önerilmiştir.

Model, girdi olarak bir görüntü veya video ile girdi noktaları veya sınırlayıcı kutular verildiğinde, ilgi duyulan herhangi bir nesnenin segmentasyon maskelerini tahmin etmek için kullanılabilir.

example image

Makalenin özeti aşağıdaki gibidir:

Segment Anything Model 2 (SAM 2)'yi sunuyoruz; bu, görüntülerde ve videolarda istemlenebilir görsel segmentasyonu çözmeye yönelik bir temel modeldir. Kullanıcı etkileşimi yoluyla model ve veriyi iyileştiren bir veri motoru geliştirerek, bugüne kadar toplanan en büyük video segmentasyon veri setini derledik. Modelimiz, gerçek zamanlı video işleme için akış belleğine sahip basit bir transformer mimarisidir. Verilerimiz üzerinde eğitilen SAM 2, geniş bir görev yelpazesinde güçlü performans sağlar. Video segmentasyonunda, önceki yaklaşımlara kıyasla 3 kat daha az etkileşimle daha yüksek doğruluk gözlemliyoruz. Görüntü segmentasyonunda ise modelimiz, Segment Anything Model (SAM)'den daha doğru ve 6 kat daha hızlıdır. Verilerimizin, modelimizin ve içgörülerimizin, video segmentasyonu ve ilgili algılama görevleri için önemli bir kilometre taşı olacağına inanıyoruz. Modelimizin bir sürümünü, veri setini ve etkileşimli bir demo'yu yayınlıyoruz.

İpuçları:

  • Batch & Video Desteği: SAM2, yerel olarak batch işleme ve sorunsuz video segmentasyonunu desteklerken, orijinal SAM statik görüntüler ve daha basit, tek seferde tek görüntü işleme akışları için tasarlanmıştır.
  • Doğruluk ve Genelgeçerlik: SAM2, orijinal SAM'a kıyasla özellikle karma prompt'larla birlikte segmentasyon kalitesinde, sağlamlıkta ve yeni alanlara sıfır atış genelgeçerliğinde iyileşme göstermektedir.

Bu model sangbumchoi ve yonigozlan tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.

Kullanım örneği

Pipeline ile Otomatik Maske Oluşturma

SAM2, mask-generation hattı kullanılarak bir görüntüdeki tüm nesneleri segmente etmek için otomatik maske üretimi amacıyla kullanılabilir:

from transformers import pipeline


generator = pipeline("mask-generation", model="facebook/sam2.1-hiera-large", device=0)
image_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/truck.jpg"
outputs = generator(image_url, points_per_batch=64)

len(outputs["masks"])  # Number of masks generated
39

Temel Görüntü Segmentasyonu

Tek Nokta Tıklama

Nesneleri segmentlemek istediğiniz nesne üzerinde tek bir tıklama yaparak nesneleri segmentleyebilirsiniz:

from transformers import Sam2Processor, Sam2Model
import torch
from PIL import Image
import requests


model = Sam2Model.from_pretrained("facebook/sam2.1-hiera-large", device_map="auto")
processor = Sam2Processor.from_pretrained("facebook/sam2.1-hiera-large")

image_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/truck.jpg"
raw_image = Image.open(requests.get(image_url, stream=True).raw).convert("RGB")

input_points = [[[[500, 375]]]]  # Single point click, 4 dimensions (image_dim, object_dim, point_per_object_dim, coordinates)
input_labels = [[[1]]]  # 1 for positive click, 0 for negative click, 3 dimensions (image_dim, object_dim, point_label)

inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]

# The model outputs multiple mask predictions ranked by quality score
print(f"Generated {masks.shape[1]} masks with shape {masks.shape}")
Generated 3 masks with shape torch.Size(1, 3, 1500, 2250)

İnce Ayar İçin Birden Fazla Nokta

Segmentasyonu iyileştirmek için birden çok nokta sağlayabilirsiniz:

# Add both positive and negative points to refine the mask
input_points = [[[[500, 375], [1125, 625]]]]  # Multiple points for refinement
input_labels = [[[1, 1]]]  # Both positive clicks

inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]

Sınır Kutusu Girdisi

SAM2 ayrıca segmentasyon için sınırlayıcı kutu girdilerini de destekler:

# Define bounding box as [x_min, y_min, x_max, y_max]
input_boxes = [[[75, 275, 1725, 850]]]

inputs = processor(images=raw_image, input_boxes=input_boxes, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]

Çoklu Nesne Segmentasyonu

Birden fazla nesneyi aynı anda segmente edebilirsiniz:

# Define points for two different objects
input_points = [[[[500, 375]], [[650, 750]]]]  # Points for two objects in same image
input_labels = [[[1], [1]]]  # Positive clicks for both objects

inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs, multimask_output=False)

# Each object gets its own mask
masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]
print(f"Generated masks for {masks.shape[0]} objects")
Generated masks for 2 objects

Toplu Çıkarım

Toplu Görseller

Daha iyi verimlilik için birden fazla görüntüyü eş zamanlı olarak işleyin:

from transformers import Sam2Processor, Sam2Model
import torch
from PIL import Image
import requests


model = Sam2Model.from_pretrained("facebook/sam2.1-hiera-large", device_map="auto")
processor = Sam2Processor.from_pretrained("facebook/sam2.1-hiera-large")

# Load multiple images
image_urls = [
    "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/truck.jpg",
    "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/dog_sam.png"
]
raw_images = [Image.open(requests.get(url, stream=True).raw).convert("RGB") for url in image_urls]

# Single point per image
input_points = [[[[500, 375]]], [[[770, 200]]]]  # One point for each image
input_labels = [[[1]], [[1]]]  # Positive clicks for both images

inputs = processor(images=raw_images, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs, multimask_output=False)

# Post-process masks for each image
all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])
print(f"Processed {len(all_masks)} images, each with {all_masks[0].shape[0]} objects")
Processed 2 images, each with 1 objects

Görüntü Başına Toplu Nesneler

Her görüntüdeki birden fazla nesneyi toplu çıkarım (batch inference) kullanarak segmente edin:

# Multiple objects per image - different numbers of objects per image
input_points = [
    [[[500, 375]], [[650, 750]]],  # Truck image: 2 objects
    [[[770, 200]]]  # Dog image: 1 object
]
input_labels = [
    [[1], [1]],  # Truck image: positive clicks for both objects
    [[1]]  # Dog image: positive click for the object
]

inputs = processor(images=raw_images, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs, multimask_output=False)

all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])

Toplu Görseller, Toplu Nesneler ve Çoklu Noktalar

Nesne başına çoklu nokta içeren karmaşık parti senaryolarını yönetin:

# Add groceries image for more complex example
groceries_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/groceries.jpg"
groceries_image = Image.open(requests.get(groceries_url, stream=True).raw).convert("RGB")
raw_images = [raw_images[0], groceries_image]  # Use truck and groceries images

# Complex batching: multiple images, multiple objects, multiple points per object
input_points = [
    [[[500, 375]], [[650, 750]]],  # Truck image: 2 objects with 1 point each
    [[[400, 300]], [[630, 300], [550, 300]]]  # Groceries image: obj1 has 1 point, obj2 has 2 points
]
input_labels = [
    [[1], [1]],  # Truck image: positive clicks
    [[1], [1, 1]]  # Groceries image: positive clicks for refinement
]

inputs = processor(images=raw_images, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs, multimask_output=False)

all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])

Toplu Sınır Kutuları

Sınır kutusu girdileriyle birden fazla görüntü işleyin:

# Multiple bounding boxes per image (using truck and groceries images)
input_boxes = [
    [[75, 275, 1725, 850], [425, 600, 700, 875], [1375, 550, 1650, 800], [1240, 675, 1400, 750]],  # Truck image: 4 boxes
    [[450, 170, 520, 350], [350, 190, 450, 350], [500, 170, 580, 350], [580, 170, 640, 350]]  # Groceries image: 4 boxes
]

# Update images for this example
raw_images = [raw_images[0], groceries_image]  # truck and groceries

inputs = processor(images=raw_images, input_boxes=input_boxes, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs, multimask_output=False)

all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])
print(f"Processed {len(input_boxes)} images with {len(input_boxes[0])} and {len(input_boxes[1])} boxes respectively")
Processed 2 images with 4 and 4 boxes respectively

Giriş Olarak Önceki Maskelerin Kullanılması

SAM2, segmentasyonu iyileştirmek için önceki tahminlerden gelen maskeleri girdi olarak kullanabilir:

# Get initial segmentation
input_points = [[[[500, 375]]]]
input_labels = [[[1]]]
inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

# Use the best mask as input for refinement
mask_input = outputs.pred_masks[:, :, torch.argmax(outputs.iou_scores.squeeze())]

# Add additional points with the mask input
new_input_points = [[[[500, 375], [450, 300]]]]
new_input_labels = [[[1, 1]]]
inputs = processor(
    input_points=new_input_points,
    input_labels=new_input_labels,
    original_sizes=inputs["original_sizes"],
    return_tensors="pt",
).to(model.device)

with torch.no_grad():
    refined_outputs = model(
        **inputs,
        input_masks=mask_input,
        image_embeddings=outputs.image_embeddings,
        multimask_output=False,
    )

Sam2Config

sınıf transformers.Sam2Config

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneprompt_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonemask_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02 )

Parametreler

  • vision_config (Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Görüntü omurgasının yapılandırma nesnesi veya sözlüğü.
  • prompt_encoder_config (Union[dict, Sam2PromptEncoderConfig], isteğe bağlı) — Sam2PromptEncoderConfig sınıfını başlatmak için kullanılan yapılandırma seçeneklerinin sözlüğü.
  • mask_decoder_config (Union[dict, Sam2MaskDecoderConfig], isteğe bağlı) — Sam2MaskDecoderConfig sınıfını başlatmak için kullanılan yapılandırma seçeneklerinin sözlüğü.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

Bu, bir Sam2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Sam2 modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/sam2.1-hiera-tiny modelinin yapılandırmasına benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Örnek:

>>> from transformers import (
...     Sam2VisionConfig,
...     Sam2PromptEncoderConfig,
...     Sam2MaskDecoderConfig,
...     Sam2Model,
... )

>>> # Initializing a Sam2Config with `"facebook/sam2.1_hiera_tiny"` style configuration
>>> configuration = Sam2Config()

>>> # Initializing a Sam2Model (with random weights) from the `"facebook/sam2.1_hiera_tiny"` style configuration
>>> model = Sam2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

>>> # We can also initialize a Sam2Config from a Sam2VisionConfig, Sam2PromptEncoderConfig, and Sam2MaskDecoderConfig

>>> # Initializing SAM2 vision encoder, memory attention, and memory encoder configurations
>>> vision_config = Sam2VisionConfig()
>>> prompt_encoder_config = Sam2PromptEncoderConfig()
>>> mask_decoder_config = Sam2MaskDecoderConfig()

>>> config = Sam2Config(vision_config, prompt_encoder_config, mask_decoder_config)

Sam2HieraDetConfig

sınıf transformers.Sam2HieraDetConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 96num_attention_heads: int = 1num_channels: int = 3image_size: int | list[int] | None = Nonepatch_kernel_size: int | list[int] | None = Nonepatch_stride: int | list[int] | None = Nonepatch_padding: int | list[int] | None = Nonequery_stride: int | list[int] | None = Nonewindow_positional_embedding_background_size: list[int] | None = Nonenum_query_pool_stages: int = 3blocks_per_stage: list[int] | None = Noneembed_dim_per_stage: list[int] | None = Nonenum_attention_heads_per_stage: list[int] | None = Nonewindow_size_per_stage: list[int] | None = Noneglobal_attention_blocks: list[int] | None = Nonemlp_ratio: float = 4.0hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06initializer_range: float = 0.02 )

Parametreler

  • hidden_size (int, isteğe bağlı, varsayılan 96) — Gizli temsillerin boyutu.
  • num_attention_heads (int, isteğe bağlı, varsayılan 1) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • num_channels (int, isteğe bağlı, varsayılan 3) — Giriş kanal sayısı.
  • image_size (Union[int, list[int]], isteğe bağlı) — Her bir görüntünün boyutu (çözünürlüğü).
  • patch_kernel_size (list[int], isteğe bağlı, varsayılan [7, 7]) — Patch'in çekirdek boyutu.
  • patch_stride (list[int], isteğe bağlı, varsayılan [4, 4]) — Patch'in stride değeri.
  • patch_padding (list[int], isteğe bağlı, varsayılan [3, 3]) — Patch dolgusu.
  • query_stride (list[int], isteğe bağlı, varsayılan [2, 2]) — Aşamalar arasındaki örnekleme azaltma adımı.
  • window_positional_embedding_background_size (list[int], isteğe bağlı, varsayılan [7, 7]) — Küresel dikkat kullanılmadığında aşama başına pencere boyutu.
  • num_query_pool_stages (int, isteğe bağlı, varsayılan 3) — Sorgu havuzlama aşamalarının sayısı.
  • blocks_per_stage (list[int], isteğe bağlı, varsayılan [1, 2, 7, 2]) — Aşama başına blok sayısı.
  • embed_dim_per_stage (list[int], isteğe bağlı, varsayılan [96, 192, 384, 768]) — Aşama başına gömme boyutu.
  • num_attention_heads_per_stage (list[int], isteğe bağlı, varsayılan [1, 2, 4, 8]) — Aşama başına dikkat başlığı sayısı.
  • window_size_per_stage (list[int], isteğe bağlı, varsayılan [8, 4, 14, 7]) — Aşama başına pencere boyutu.
  • global_attention_blocks (list[int], isteğe bağlı, varsayılan [5, 7, 9]) — Küresel dikkatin kullanıldığı bloklar.
  • mlp_ratio (float, isteğe bağlı, varsayılan 4.0) — MLP gizli boyutunun gömme boyutuna oranı.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

Bu, bir Sam2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Sam2 modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/sam2.1-hiera-tiny modelinin yapılandırmasına benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Sam2VisionConfig

sınıf transformers.Sam2VisionConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonebackbone_channel_list: list[int] | None = Nonebackbone_feature_sizes: list | None = Nonefpn_hidden_size: int = 256fpn_kernel_size: int = 1fpn_stride: int = 1fpn_padding: int = 0fpn_top_down_levels: list[int] | None = Nonenum_feature_levels: int = 3hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06initializer_range: float = 0.02 )

Parametreler

  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Backbone modelinin yapılandırması.
  • backbone_channel_list (List[int], isteğe bağlı, varsayılan [768, 384, 192, 96]) — Backbone için kanal boyutlarının listesi.
  • backbone_feature_sizes (List[List[int]], isteğe bağlı, varsayılan [[256, 256], [128, 128], [64, 64]]) — Backbone'dan gelen özellik haritalarının uzamsal boyutları.
  • fpn_hidden_size (int, isteğe bağlı, varsayılan 256) — FPN'nin gizli boyutu.
  • fpn_kernel_size (int, isteğe bağlı, varsayılan 1) — Neck içindeki konvolüsyonlar için çekirdek boyutu.
  • fpn_stride (int, isteğe bağlı, varsayılan 1) — Neck içindeki konvolüsyonlar için stride.
  • fpn_padding (int, isteğe bağlı, varsayılan 0) — Neck'teki konvolüsyonlar için dolgu.
  • fpn_top_down_levels (List[int], isteğe bağlı, varsayılan [2, 3]) — Yukarıdan aşağı FPN bağlantıları için seviyeler.
  • num_feature_levels (int, isteğe bağlı, varsayılan 3) — Kullanılacak FPN özellik seviyesi sayısı.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

Bu, bir Sam2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Sam2 modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/sam2.1-hiera-tiny modelinin yapılandırmasına benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Sam2MaskDecoderConfig

sınıf transformers.Sam2MaskDecoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 256hidden_act: str = 'gelu'mlp_dim: int = 2048num_hidden_layers: int = 2num_attention_heads: int = 8attention_downsample_rate: int = 2num_multimask_outputs: int = 3iou_head_depth: int = 3iou_head_hidden_dim: int = 256dynamic_multimask_via_stability: bool = Truedynamic_multimask_stability_delta: float = 0.05dynamic_multimask_stability_thresh: float = 0.98 )

Parametreler

  • hidden_size (int, isteğe bağlı, varsayılan 256) — Gizli temsillerin boyutu.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • mlp_dim (int, isteğe bağlı, varsayılan 2048) — İki yönlü dönüştürücüdeki MLP'nin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 2) — Transformer decoder'ındaki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 8) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • attention_downsample_rate (int, isteğe bağlı, varsayılan 2) — Dikkat katmanları için indirgeme oranı.
  • num_multimask_outputs (int, isteğe bağlı, varsayılan 3) — Çoklu maske çıktılarının sayısı.
  • iou_head_depth (int, isteğe bağlı, varsayılan 3) — IoU başlığının derinliği.
  • iou_head_hidden_dim (int, isteğe bağlı, varsayılan 256) — IoU başlığının gizli boyutu.
  • dynamic_multimask_via_stability (bool, isteğe bağlı, varsayılan True) — Stabilite üzerinden dinamik çoklu maske kullanılıp kullanılmayacağı.
  • dynamic_multimask_stability_delta (float, isteğe bağlı, varsayılan 0.05) — Dinamik çoklu maskenin kararlılık farkı.
  • dynamic_multimask_stability_thresh (float, isteğe bağlı, varsayılan 0.98) — Dinamik çoklu maskenin kararlılık eşiği.

Bu, bir Sam2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Sam2 modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/sam2.1-hiera-tiny modelinin yapılandırmasına benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Sam2PromptEncoderConfig

sınıf transformers.Sam2PromptEncoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 256image_size: int | list[int] | tuple[int, int] = 1024patch_size: int | list[int] | tuple[int, int] = 16mask_input_channels: int = 16num_point_embeddings: int = 4hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06scale: int = 1 )

Parametreler

  • hidden_size (int, isteğe bağlı, varsayılan 256) — Gizli temsillerin boyutu.
  • image_size (Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan 1024) — Her bir görüntünün boyutu (çözünürlüğü).
  • patch_size (Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan 16) — Her yamanın boyutu (çözünürlüğü).
  • mask_input_channels (int, isteğe bağlı, varsayılan 16) — MaskDecoder modülüne verilecek kanal sayısı.
  • num_point_embeddings (int, isteğe bağlı, varsayılan 4) — Kullanılacak nokta gömme sayısı.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • scale (float, isteğe bağlı, varsayılan 1) — İstem kodlayıcısı için ölçekleme çarpanı.

Bu, bir Sam2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Sam2 modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, facebook/sam2.1-hiera-tiny modelinin yapılandırmasına benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

Sam2Processor

sınıf transformers.Sam2Processor

< >

( image_processortarget_size: int | None = Nonepoint_pad_value: int = -10**kwargs )

Parametreler

  • image_processor (Sam2ImageProcessor) — Görüntü işleyici zorunlu bir girdidir.
  • target_size (int, isteğe bağlı) — Girdi noktalarını ve sınırlayıcı kutuları normalize etmek için hedef boyut (piksel cinsinden). Belirtilmezse, varsayılan olarak görüntü işleyicisinin boyut yapılandırması kullanılır. Modelde kullanılmadan önce tüm girdi koordinatları (noktalar ve kutular) bu boyuta normalize edilir. Bu, orijinal görüntü boyutlarından bağımsız olarak tutarlı bir koordinat temsilini sağlar.
  • point_pad_value (int, isteğe bağlı, varsayılan -10) — Farklı uzunluklardaki dizilerin toplu işlenmesi sırasında girdi noktalarını doldurmak için kullanılan değer. Bu değer, doldurulmuş konumları işaretlemek için kullanılır ve koordinat normalizasyonu sırasında korunur.

Bir görüntü işleyicisini tek bir işleyiciye sararak bir Sam2Processor oluşturur.

Sam2Processor, Sam2ImageProcessor'ün tüm işlevlerini sunar. Daha fazla bilgi için ~Sam2ImageProcessor sayfasına bakın.

__call__

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonesegmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneinput_points: typing.Union[list[list[list[list[float]]]], torch.Tensor, NoneType] = Noneinput_labels: typing.Union[list[list[list[int]]], torch.Tensor, NoneType] = Noneinput_boxes: typing.Union[list[list[list[float]]], torch.Tensor, NoneType] = Noneoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → A BatchEncoding with the following fields

Parametreler

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], isteğe bağlı) — Ön işleme yapılacak görüntü. Piksel değerleri 0 ile 255 arasında değişen tek bir görüntü veya görüntü grubu beklenir. Piksel değerleri 0 ile 1 arasında olan görüntüler geçiriliyorsa do_rescale=False olarak ayarlayın.
  • segmentation_maps (ImageInput, isteğe bağlı) — İşlenecek segmentasyon haritaları.
  • input_points (list[list[list[list[float]]]], torch.Tensor, isteğe bağlı) — Çerçeveye eklenecek noktalar.
  • input_labels (list[list[list[int]]], torch.Tensor, isteğe bağlı) — Noktaların etiketleri.
  • input_boxes (list[list[list[float]]], torch.Tensor, opsiyonel) — Kareye eklenecek sınırlayıcı kutular.
  • original_sizes (list[list[float]], torch.Tensor, isteğe bağlı) — Görsellerin orijinal boyutları.
  • return_tensors (Union[str, ~utils.generic.TensorType], isteğe bağlı) — Belirlenirse, belirli bir çerçeveye ait tensörler döndürülür. Kabul edilen değerler şunlardır:
    • 'pt': PyTorch torch.Tensor nesnelerini döndürür.
    • 'np': NumPy np.ndarray nesnelerini döndürür.

Dönüş değeri

Aşağıdaki alanlara sahip bir BatchEncoding

  • pixel_values (torch.Tensor): İşlenmiş görüntü(ler).
  • original_sizes (list[list[float]]): Görsellerin orijinal boyutları.
  • labels (torch.Tensor): İşlenmiş segmentasyon haritaları (verildiyse).
  • input_points (torch.Tensor): İşlenmiş noktalar.
  • input_labels (torch.Tensor): İşlenmiş etiketler.
  • input_boxes (torch.Tensor): İşlenmiş sınırlayıcı kutuları.

post_process_masks

< >

( masksoriginal_sizesmask_threshold = 0.0binarize = Truemax_hole_area = 0.0max_sprinkle_area = 0.0apply_non_overlapping_constraints = False**kwargs ) → (torch.Tensor)

Parametreler

  • masks (Union[List[torch.Tensor], List[np.ndarray]]) — mask_decoder'dan gelen, (batch_size, num_channels, height, width) biçiminde toplu maskeler.
  • original_sizes (Union[torch.Tensor, List[Tuple[int,int]]]) — Görsellerin, modelin beklenen giriş biçimine yeniden boyutlandırılmadan önceki orijinal boyutları, (yükseklik, genişlik) biçiminde.
  • mask_threshold (float, isteğe bağlı, varsayılan 0.0) — İkileştirme ve son işlemleme işlemleri için eşik değeri.
  • binarize (bool, isteğe bağlı, varsayılan True) — Maskelerin ikileştirilip ikileştirilmeyeceğini belirtir.
  • max_hole_area (float, isteğe bağlı, varsayılan 0.0) — Doldurulacak deliğin maksimum alanı.
  • max_sprinkle_area (float, isteğe bağlı, varsayılan 0.0) — Doldurulacak bir sprinkle'in maksimum alanı.
  • apply_non_overlapping_constraints (bool, isteğe bağlı, varsayılan False) — Maskelere örtüşmeyen kısıtlamaların uygulanıp uygulanmayacağı.

Dönüş değeri

(torch.Tensor)

Batched masks in batch_size, num_channels, height, width) format, where (height, width) is given by original_size.

Dolgu (padding) kaldırılır ve maskeler orijinal görüntü boyutuna ölçeklenir.

Sam2ImageProcessor

sınıf transformers.Sam2ImageProcessor

< >

( **kwargs: *<class 'transformers.models.sam2.image_processing_sam2.Sam2ImageProcessorKwargs'> )

Parametreler

  • do_convert_rgb (bool, kwargs, opsiyonel, varsayılan True) — Görselin RGB'ye dönüştürülüp dönüştürülmemesi.
  • do_resize (bool, kwargs, isteğe bağlı, varsayılan True) — Görselin yeniden boyutlandırılıp boyutlandırılmayacağı.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, varsayılan {'height' -- 1024, 'width': 1024}): Modelin kabul ettiği maksimum giriş boyutlarını açıklar.
  • default_to_square (bool, kwargs, isteğe bağlı, varsayılan True) — size bir int ise, yeniden boyutlandırma sırasında varsayılan olarak kare bir görüntü kullanılıp kullanılmayacağı.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop uygulandıktan sonra çıktı görüntüsünün boyutu.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, varsayılan 2) — Görsel yeniden boyutlandırılıyorsa kullanılacak yeniden örnekleme filtresi. Bu, PILImageResampling enum değerlerinden biri olabilir. Yalnızca do_resize True olarak ayarlanırsa etkilidir.
  • do_rescale (bool, kwargs, isteğe bağlı, varsayılan True) — Görselin yeniden ölçeklendirilip ölçeklendirilmeyeceği.
  • rescale_factor (float, kwargs, opsiyonel, varsayılan 0.00392156862745098) — do_rescale True olarak ayarlandığında görüntüyü yeniden ölçeklemek için kullanılan yeniden ölçekleme faktörü.
  • do_normalize (bool, kwargs, opsiyonel, varsayılan True) — Görselin normalize edilip edilmeyeceği.
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel, varsayılan [0.485, 0.456, 0.406]) — Normalizasyon için kullanılacak görüntü ortalaması. Yalnızca do_normalize True olarak ayarlanırsa etkilidir.
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel, varsayılan [0.229, 0.224, 0.225]) — Normalizasyon için kullanılacak görüntü standart sapması. Yalnızca do_normalize True olarak ayarlanırsa etkilidir.
  • do_pad (bool, kwargs, opsiyonel, varsayılan None) — Görselin dolgu (padding) uygulanıp uygulanmayacağı. Dolgu, ya batch içindeki en büyük boyuta ya da görsel başına sabit bir kare boyutuna göre yapılır. Kesin dolgu stratejisi modele bağlıdır.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, varsayılan None) — Görsellerin doldurulacağı {"height": int, "width" int} boyutu. Ön işleme için sağlanan herhangi bir görsel boyutundan büyük olmalıdır. pad_size sağlanmazsa, görseller partideki en büyük yüksekliğe ve genişliğe doldurulur. Yalnızca do_pad=True. olduğunda uygulanır.
  • do_center_crop (bool, kwargs, opsiyonel) — Görselin ortadan kırpılıp kırpılmayacağı.
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — Yalnızca ChannelDimension.FIRST desteklenir. Yavaş işleyicilerle uyumluluk için eklendi.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — Girdi görüntüsü için kanal boyutu biçimi. Ayarlanmazsa, kanal boyutu biçimi girdi görüntüsünden çıkarılır. Aşağıdakilerden biri olabilir:
    • "channels_first" veya ChannelDimension.FIRST: (num_channels, height, width) biçiminde görüntü.
    • "channels_last" veya ChannelDimension.LAST: (yükseklik, genişlik, kanal sayısı) biçiminde görüntü.
    • "none" veya ChannelDimension.NONE: (height, width) biçiminde görüntü.
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — Videoların işleneceği cihaz. Ayarlanmamışsa, cihaz girdi videolarından çıkarılır.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' olarak ayarlanırsa yığılmış tensörler döndürür, aksi takdirde tensör listesi döndürür.
  • disable_grouping (bool, kwargs, opsiyonel) — Görsellerin boyuta göre gruplandırılmasını devre dışı bırakıp onları toplu olarak değil, bireysel olarak işlenmesini belirtir. None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, burada ayrıntılandırıldığı üzere ampirik gözlemlere dayanmaktadır: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int, kwargs, isteğe bağlı) — Girdideki her görüntü için kullanılacak görüntü jetonlarının sayısı. Geriye dönük uyumluluk için eklendi ancak gelecekteki modellerde bu, bir işlemci özniteliği olarak ayarlanmalıdır.
  • mask_size (dict[str, *kwargs*, int], isteğe bağlı) — Segmentasyon haritalarının yeniden boyutlandırılacağı boyut {"height": int, "width": int}.

Sam2ImageProcessor görüntü işleyicisi oluşturur.

ön işleme

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.sam2.image_processing_sam2.Sam2ImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

Parametreler

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Ön işleme uygulanacak görüntü. Piksel değerleri 0 ile 255 arasında değişen tek bir görüntü veya görüntü grubu beklenir. Piksel değerleri 0 ile 1 arasında olan görüntüler geçiriliyorsa do_rescale=False olarak ayarlayın.
  • segmentation_maps (ImageInput, isteğe bağlı) — Ön işleme yapılacak segmentasyon haritaları.
  • do_convert_rgb (bool, kwargs, opsiyonel) — Görselin RGB'ye dönüştürülüp dönüştürülmemesi.
  • do_resize (bool, kwargs, opsiyonel) — Görselin yeniden boyutlandırılıp boyutlandırılmayacağı.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Modelin kabul ettiği maksimum giriş boyutlarını açıklar.
  • default_to_square (bool, kwargs, opsiyonel) — Boyut bir int ise, yeniden boyutlandırma sırasında varsayılan olarak kare bir görüntüye geçilip geçilmeyeceği.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop uygulandıktan sonra çıktı görüntüsünün boyutu.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Görsel yeniden boyutlandırılıyorsa kullanılacak yeniden örnekleme filtresi. Bu, PILImageResampling enum değerlerinden biri olabilir. Yalnızca do_resize True olarak ayarlanırsa etkilidir.
  • do_rescale (bool, kwargs, opsiyonel) — Görselin yeniden ölçeklendirilip ölçeklendirilmeyeceği.
  • rescale_factor (float, kwargs, opsiyonel) — do_rescale True olarak ayarlanırsa görüntüyü yeniden ölçeklemek için kullanılan yeniden ölçekleme faktörü.
  • do_normalize (bool, kwargs, opsiyonel) — Görselin normalize edilip edilmeyeceği.
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel) — Normalizasyon için kullanılacak görüntü ortalaması. Yalnızca do_normalize True olarak ayarlanırsa etkilidir.
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel) — Normalizasyon için kullanılacak görüntü standart sapması. Yalnızca do_normalize True olarak ayarlanmışsa etkilidir.
  • do_pad (bool, kwargs, opsiyonel) — Görselin dolgu (padding) uygulanıp uygulanmayacağı. Dolgu, partideki en büyük boyuta veya görsel başına sabit kare bir boyuta yapılır. Kesin dolgu stratejisi modele bağlıdır.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Görsellerin doldurulacağı boyut, {"height": int, "width" int} biçiminde. Ön işleme için sağlanan herhangi bir görsel boyutundan büyük olmalıdır. pad_size sağlanmazsa, görseller batch içindeki en büyük yüksekliğe ve genişliğe doldurulur. Yalnızca do_pad=True. olduğunda uygulanır.
  • do_center_crop (bool, kwargs, opsiyonel) — Görselin ortadan kırpılıp kırpılmayacağı.
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — Yalnızca ChannelDimension.FIRST desteklenir. Yavaş işleyicilerle uyumluluk için eklendi.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — Girdi görüntüsü için kanal boyutu biçimi. Ayarlanmazsa, kanal boyutu biçimi girdi görüntüsünden çıkarılır. Aşağıdakilerden biri olabilir:
    • "channels_first" veya ChannelDimension.FIRST: (num_channels, height, width) biçiminde görüntü.
    • "channels_last" veya ChannelDimension.LAST: (yükseklik, genişlik, kanal sayısı) biçiminde görüntü.
    • "none" veya ChannelDimension.NONE: (height, width) biçiminde görüntü.
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — Videoların işleneceği cihaz. Ayarlanmamışsa, cihaz girdi videolarından çıkarılır.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' olarak ayarlanırsa yığılmış tensörler döndürür, aksi takdirde tensör listesi döndürür.
  • disable_grouping (bool, kwargs, opsiyonel) — Görsellerin boyuta göre gruplandırılmasını devre dışı bırakıp onları toplu olarak değil, bireysel olarak işlenmesini belirtir. None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, burada ayrıntılandırıldığı üzere ampirik gözlemlere dayanmaktadır: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int, kwargs, isteğe bağlı) — Girdideki her görüntü için kullanılacak görüntü jetonlarının sayısı. Geriye dönük uyumluluk için eklendi ancak gelecekteki modellerde bu, bir işlemci özniteliği olarak ayarlanmalıdır.
  • mask_size (dict[str, *kwargs*, int], isteğe bağlı) — Segmentasyon haritalarının yeniden boyutlandırılacağı boyut {"height": int, "width": int}.

Dönüş değeri

~image_processing_base.BatchFeature

  • data (dict) — call yönteminin döndürdüğü listeler/diziler/tensörler sözlüğü (‘pixel_values’ vb.).
  • tensor_type (Union[None, str, TensorType], isteğe bağlı) — Başlatma sırasında PyTorch/Numpy Tensörlerindeki tamsayı listelerini dönüştürmek için burada bir tensor_type verebilirsiniz.

Sam2HieraDetModel

sınıf transformers.Sam2HieraDetModel

< >

( config: Sam2HieraDetConfig )

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )

Sam2VisionModel

sınıf transformers.Sam2VisionModel

< >

( config: Sam2VisionConfig )

Parametreler

  • config (Sam2VisionConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Üzerinde herhangi bir başlık veya projeksiyon olmadan Sam'dan gelen görme modeli.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )

Sam2Model

sınıf transformers.Sam2Model

< >

( config: Sam2Config )

Parametreler

  • config (Sam2Config) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Girdi olarak bir görüntü ile girdi noktaları ve etiketleri, kutuları veya maskeleri alarak segmentasyon maskeleri üretmek için Segment Anything Model 2 (SAM 2).

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Noneinput_points: typing.Optional[torch.Tensor] = Noneinput_labels: typing.Optional[torch.LongTensor] = Noneinput_boxes: typing.Optional[torch.Tensor] = Noneinput_masks: typing.Optional[torch.LongTensor] = Noneimage_embeddings: typing.Optional[torch.Tensor] = Nonemultimask_output: bool = Trueattention_similarity: typing.Optional[torch.Tensor] = Nonetarget_embedding: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Sam2ImageSegmentationOutput or tuple(torch.Tensor)

Parametreler

  • pixel_values (torch.Tensor, şekli (batch_size, num_channels, image_size, image_size), isteğe bağlı) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri Sam2ImageProcessor kullanılarak elde edilebilir. Ayrıntılar için Sam2ImageProcessor.call() bölümüne bakın (Sam2Processor, görüntü işleme için Sam2ImageProcessor kullanır).
  • input_points (torch.Tensor, şekli (batch_size, num_points, 2)) — Girdi 2B uzamsal noktalar; bu, prompt kodlayıcısının (prompt encoder) promptu kodlaması için kullanılır. Genel olarak çok daha iyi sonuçlar verir. Noktalar, işlemciye (processor) liste içi liste içi liste geçirilerek elde edilebilir; işlemci buna karşılık gelen 4 boyutlu torch tensörlerini oluşturur. İlk boyut görüntü parti boyutudur, ikinci boyut nokta parti boyutudur (yani girdi noktası başına modelden kaç segmentasyon maskesi tahmin etmesini istediğimiz), üçüncü boyut segmentasyon maskesi başına nokta sayısıdır (tek bir maske için birden fazla nokta geçirilebilir) ve son boyut noktanın x (dikey) ve y (yatay) koordinatlarıdır. Her görüntü için veya her maske için farklı sayıda nokta geçirilirse, işlemci (0, 0) koordinatına karşılık gelen “PAD” noktaları oluşturur ve bu noktalar için etiketler kullanılarak gömme (embedding) hesabı atlanır.
  • input_labels (torch.LongTensor şeklinde (batch_size, point_batch_size, num_points)) — Noktalar için giriş etiketleri; bu, prompt kodlayıcısının prompt'u kodlamasında kullanılır. Resmi uygulamanın belirttiğine göre 3 tür etiket vardır
    • 1: nokta, ilgi nesnesini içeren bir noktadır
    • 0: nokta, ilgi nesnesini içermeyen bir noktadır
    • -1: nokta arka plana karşılık gelir

    Etiketi ekledik:

    • -10: nokta bir dolgu noktasıdır, bu nedenle prompt kodlayıcı tarafından yok sayılmalıdır

    Dolgu etiketleri, işlemci tarafından otomatik olarak yapılmalıdır.

  • input_boxes (torch.Tensor şeklinde (batch_size, num_boxes, 4)) — Noktalar için giriş kutuları; bu, prompt kodlayıcısının (prompt encoder) prompt'u kodlaması için kullanılır. Genel olarak çok daha iyi üretilen maskeler sağlar. Kutular, işlemciye (processor) liste içeren liste içeren liste geçirilerek elde edilebilir; bu işlem bir torch tensörü oluşturur ve her boyut sırasıyla görüntü partisi boyutuna, görüntü başına kutu sayısına ve kutunun sol üst ile sağ alt noktasının koordinatlarına karşılık gelir. Sırasıyla (x1, y1, x2, y2):
    • x1: giriş kutusunun sol üst noktasının x koordinatı
    • y1: girdi kutusunun sol üst noktasının y koordinatı
    • x2: giriş kutusunun sağ alt noktasının x koordinatı
    • y2: giriş kutusunun sağ alt noktasının y koordinatı
  • input_masks (torch.Tensor, şekli (batch_size, image_size, image_size)) — SAM modeli, girdi olarak segmentasyon maskelerini de kabul eder. Maske, prompt encoder tarafından gömülecek (embed) ve daha sonra mask decoder'a beslenecek olan karşılık gelen gömme (embedding) oluşturulacaktır. Bu maskelerin kullanıcı tarafından manuel olarak sağlanması gerekir ve şekilleri (batch_size, image_size, image_size) olmalıdır.
  • image_embeddings (torch.Tensor, şekli (batch_size, output_channels, window_size, window_size)) — Görsel gömlemeleri (embeddings); bunlar, mask decoder tarafından maskeler ve iou skorları üretmek için kullanılır. Daha bellek verimli hesaplama için kullanıcılar, önce get_image_embeddings metodunu kullanarak görsel gömlemelerini alabilir ve ardından pixel_values yerine bunları forward metoduna girdi olarak verebilir.
  • multimask_output (bool, isteğe bağlı) — Orijinal uygulama ve makalede, model her zaman görüntü başına 3 maske (ilgili durumlarda nokta başına / sınırlayıcı kutu başına) üretir. Ancak, multimask_output=False belirtmek suretiyle, yalnızca “en iyi” maskeye karşılık gelen tek bir maske üretmek mümkündür.
  • attention_similarity (torch.Tensor, isteğe bağlı) — Model, PerSAM'da tanıtıldığı gibi kişiselleştirme için kullanılıyorsa hedefe yönelik dikkat için mask kodlayıcıya sağlanacak dikkat benzerlik tensörü.
  • target_embedding (torch.Tensor, isteğe bağlı) — Model, PerSAM'de tanıtıldığı gibi kişiselleştirme için kullanılıyorsa, hedef-antikavram istemciliği için mask çözücüye sağlanacak hedef kavram gömme.

Dönüş değeri

Sam2ImageSegmentationOutput veya tuple(torch.Tensor)

Sam2ImageSegmentationOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (Sam2Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

Sam2Model forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • iou_scores (torch.Tensor, şekli (batch_size, point_batch_size, num_masks)) — Tahmin edilen maskelerin Intersection over Union (IoU) puanları.
  • pred_masks (torch.Tensor, şekli (batch_size, point_batch_size, num_masks, height, width)) — Tahmin edilen düşük çözünürlüklü maskeler. Bu, low_res_masks için bir takma addır. Bu maskelerin orijinal görüntü boyutuna getirilebilmesi için işlemci tarafından son işlem görmesi gerekir.
  • object_score_logits (torch.Tensor, şekli (batch_size, point_batch_size, 1)) — Bir nesnenin var olup olmadığını gösteren nesne puanı için logitler.
  • image_embeddings (tuple(torch.Tensor)) — Mask decoder tarafından kullanılan FPN özellikleri. Bu, her tensörün (batch_size, channels, height, width) biçiminde olduğu torch.Tensor içeren bir tuple'dır.
  • vision_hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True olduğunda döndürülür) — Her aşamanın çıktısı için bir adet içeren, (batch_size, height, width, hidden_size) biçiminde torch.Tensor içeren bir demet. Görüntü modelinin her aşamanın çıktısındaki gizli durumları.
  • vision_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True olduğunda döndürülür) — torch.Tensor (her katman için bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length). Görüntü modelinin dikkat ağırlıkları.
  • mask_decoder_attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True olduğunda döndürülür) — torch.Tensor (her katman için bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length). Mask decoder'ın dikkat ağırlıkları.

Örnek:

>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoModel, AutoProcessor

>>> model = AutoModel.from_pretrained("danelcsb/sam2.1_hiera_tiny")
>>> processor = AutoProcessor.from_pretrained("danelcsb/sam2.1_hiera_tiny")

>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/sam-car.png"
>>> with httpx.stream("GET", url) as response:
...     raw_image = Image.open(BytesIO(response.read())).convert("RGB")
>>> input_points = [[[400, 650]]]  # 2D location of a window on the car
>>> inputs = processor(images=raw_image, input_points=input_points, return_tensors="pt")

>>> # Get segmentation mask
>>> outputs = model(**inputs)

>>> # Postprocess masks
>>> masks = processor.post_process_masks(
...     outputs.pred_masks, inputs["original_sizes"]
... )

get_image_features

< >

( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Sam2VisionEncoderOutput or tuple(torch.Tensor)

Parametreler

  • pixel_values (torch.Tensor) — (batch_size, num_channels, height, width) biçiminde girdi piksel değerleri.

Dönüş değeri

Sam2VisionEncoderOutput veya tuple(torch.Tensor)

Sam2VisionEncoderOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (Sam2Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

  • last_hidden_state (torch.Tensor, şekli (batch_size, height, width, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

  • pooler_output (torch.Tensor, şekli (batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, yardımcı ön eğitim görevi için kullanılan katmanlar üzerinden ek işlemden geçirildikten sonraki hali. Örneğin BERT ailesi modelleri için, bu, sınıflandırma token'ının doğrusal bir katman ve tanh aktivasyon fonksiyonu üzerinden işlenmesinden sonra döndürülen değerdir. Doğrusal katman ağırlıkları, ön eğitim sırasında bir sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir.

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • fpn_hidden_states (tuple(torch.Tensor)) — torch.Tensor (her özellik seviyesi için bir tane, yüksekten düşük çözünürlüğe doğru) içeren bir tuple, şekli (batch_size, hidden_size, height, width). Feature Pyramid Network boyunundan gelen özellik haritaları.

  • fpn_position_encoding (tuple(torch.Tensor)) — torch.Tensor (her özellik seviyesi için bir tane, yüksekten düşük çözünürlüğe doğru) içeren bir tuple, şekli (batch_size, hidden_size, height, width). fpn_hidden_states ile eşleşen konumsal kodlamalar.

Örnek:

Update on GitHub