Transformers documentation
SAM3
이 모델은 2025-11-19에 Hugging Face Transformers에 기여되었습니다.
SAM3
개요
SAM3(Segment Anything Model 3)은 SAM 3: Segment Anything with Concepts에서 소개되었습니다.
SAM3는 이미지에서 Promptable Concept Segmentation (PCS)를 수행합니다. PCS는 텍스트 및/또는 이미지 예시를 입력으로 받아(예: “yellow school bus”), 해당 개념에 일치하는 모든 개별 객체에 대해 인스턴스 마스크와 시맨틱 마스크를 예측합니다.
해당 논문의 초록은 다음과 같습니다:
Segment Anything Model (SAM) 3를 소개합니다. SAM 3은 개념 프롬프트를 기반으로 이미지와 비디오에서 객체를 감지, 분할 및 추적하는 통합 모델입니다. 여기서 개념 프롬프트는 짧은 명사 구(예: “yellow school bus”), 이미지 예시, 또는 이 둘의 조합으로 정의됩니다. Promptable Concept Segmentation(PCS)는 이러한 프롬프트를 입력으로 받아 일치하는 모든 객체 인스턴스에 대해 분할 마스크와 고유한 ID를 반환합니다. PCS를 발전시키기 위해, 이미지와 비디오에 걸쳐 400만 개의 고유한 개념 라벨(어려운 음수 포함)을 포함하는 고품질 데이터셋을 생성하는 확장 가능한 데이터 엔진을 구축했습니다. 우리의 모델은 단일 백본을 공유하는 이미지 수준의 감지기와 메모리 기반 비디오 트래커로 구성됩니다. 존재 헤드(presence head)를 통해 인식과 위치 파악을 분리하여 감지 정확도를 높였습니다. SAM 3은 이미지와 비디오 PCS 모두에서 기존 시스템의 정확도를 2배로 높였으며, 시각 분할 작업에서 이전 SAM의 기능을 향상시켰습니다. 우리는 프롬프트 기반 개념 분할을 위한 새로운 Segment Anything with Concepts(SA-Co) 벤치마크와 함께 SAM 3을 오픈소스로 공개합니다.
이 모델은 yonigozlan과 ronghanghu에 의해 기여되었습니다.
🤗 Transformers를 활용한 사용 예시
텍스트 전용 프롬프트
import requests
import torch
from PIL import Image
from transformers import Sam3Model, Sam3Processor
model = Sam3Model.from_pretrained("facebook/sam3", device_map="auto")
processor = Sam3Processor.from_pretrained("facebook/sam3")
# Load image
image_url = "http://images.cocodataset.org/val2017/000000077595.jpg"
image = Image.open(requests.get(image_url, stream=True).raw).convert("RGB")
# Segment using text prompt
inputs = processor(images=image, text="ear", return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Post-process results
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=inputs.get("original_sizes").tolist()
)[0]
print(f"Found {len(results['masks'])} objects")
# Results contain:
# - masks: Binary masks resized to original image size
# - boxes: Bounding boxes in absolute pixel coordinates (xyxy format)
# - scores: Confidence scores단일 바운딩 박스 프롬프트
시각적 개념에 바운딩 박스를 사용하여 객체를 세그먼트합니다:
# Box in xyxy format: [x1, y1, x2, y2] in pixel coordinates
# Example: laptop region
box_xyxy = [100, 150, 500, 450]
input_boxes = [[box_xyxy]] # [batch, num_boxes, 4]
input_boxes_labels = [[1]] # 1 = positive box
inputs = processor(
images=image,
input_boxes=input_boxes,
input_boxes_labels=input_boxes_labels,
return_tensors="pt"
).to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Post-process results
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=inputs.get("original_sizes").tolist()
)[0]여러 개의 박스 프롬프트(긍정 및 부정)
양(+)과 음(-) 라벨이 있는 여러 개의 박스를 사용하여 개념을 정제합니다:
# Load kitchen image
kitchen_url = "http://images.cocodataset.org/val2017/000000136466.jpg"
kitchen_image = Image.open(requests.get(kitchen_url, stream=True).raw).convert("RGB")
# Define two positive boxes (e.g., dial and button on oven)
# Boxes are in xyxy format [x1, y1, x2, y2] in pixel coordinates
box1_xyxy = [59, 144, 76, 163] # Dial box
box2_xyxy = [87, 148, 104, 159] # Button box
input_boxes = [[box1_xyxy, box2_xyxy]]
input_boxes_labels = [[1, 1]] # Both positive
inputs = processor(
images=kitchen_image,
input_boxes=input_boxes,
input_boxes_labels=input_boxes_labels,
return_tensors="pt"
).to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Post-process results
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=inputs.get("original_sizes").tolist()
)[0]결합 프롬프트(텍스트 + 네거티브 박스)
음의 시각 프롬프트를 텍스트 프롬프트와 함께 사용하여 개념을 정교하게 만듭니다:
# Segment "handle" but exclude the oven handle using a negative box
text = "handle"
# Negative box covering oven handle area (xyxy): [40, 183, 318, 204]
oven_handle_box = [40, 183, 318, 204]
input_boxes = [[oven_handle_box]]
inputs = processor(
images=kitchen_image,
text=text,
input_boxes=input_boxes,
input_boxes_labels=[[0]], # 0 = negative (exclude this region)
return_tensors="pt"
).to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Post-process results
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=inputs.get("original_sizes").tolist()
)[0]
# This will segment pot handles but exclude the oven handle텍스트 프롬프트를 사용한 배치 추론
다양한 텍스트 프롬프트를 가진 여러 이미지를 효율적으로 처리합니다:
cat_url = "http://images.cocodataset.org/val2017/000000077595.jpg"
kitchen_url = "http://images.cocodataset.org/val2017/000000136466.jpg"
images = [
Image.open(requests.get(cat_url, stream=True).raw).convert("RGB"),
Image.open(requests.get(kitchen_url, stream=True).raw).convert("RGB")
]
# Different text prompt for each image
text_prompts = ["ear", "dial"]
inputs = processor(images=images, text=text_prompts, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Post-process results for both images
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=inputs.get("original_sizes").tolist()
)
print(f"Image 1: {len(results[0]['masks'])} objects found")
print(f"Image 2: {len(results[1]['masks'])} objects found")배치된 혼합 프롬프트
같은 배치에서 서로 다른 이미지에 서로 다른 프롬프트 유형을 사용하려면:
# Image 1: text prompt "laptop"
# Image 2: visual prompt (dial box)
box2_xyxy = [59, 144, 76, 163]
inputs = processor(
images=images,
text=["laptop", None], # Only first image has text
input_boxes=[None, [box2_xyxy]], # Only second image has box
input_boxes_labels=[None, [1]], # Positive box for second image
return_tensors="pt"
).to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Post-process results for both images
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=inputs.get("original_sizes").tolist()
)
# Both images processed in single forward pass의미 분할 출력
SAM3는 인스턴스 마스크와 함께 시맨틱 분할도 제공합니다:
inputs = processor(images=image, text="ear", return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Instance segmentation masks
instance_masks = torch.sigmoid(outputs.pred_masks) # [batch, num_queries, H, W]
# Semantic segmentation (single channel)
semantic_seg = outputs.semantic_seg # [batch, 1, H, W]
print(f"Instance masks: {instance_masks.shape}")
print(f"Semantic segmentation: {semantic_seg.shape}")단일 이미지에서 효율적인 멀티 프롬프트 추론
이미지에 여러 텍스트 프롬프트를 실행할 경우, 중복 계산을 피하기 위해 비전 임베딩을 사전 계산하세요:
from transformers import Sam3Processor, Sam3Model
import torch
from PIL import Image
import requests
model = Sam3Model.from_pretrained("facebook/sam3", device_map="auto")
processor = Sam3Processor.from_pretrained("facebook/sam3")
# Load image
image_url = "http://images.cocodataset.org/val2017/000000077595.jpg"
image = Image.open(requests.get(image_url, stream=True).raw).convert("RGB")
# Pre-process image and compute vision embeddings once
img_inputs = processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
vision_embeds = model.get_vision_features(pixel_values=img_inputs.pixel_values)
# Run multiple text prompts efficiently
text_prompts = ["ear", "eye", "nose"]
all_results = []
for prompt in text_prompts:
text_inputs = processor(text=prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(vision_embeds=vision_embeds, **text_inputs)
...
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=img_inputs.get("original_sizes").tolist()
)[0]
all_results.append({"prompt": prompt, "results": results})
for item in all_results:
print(f"Prompt '{item['prompt']}': {len(item['results']['masks'])} objects found")여러 이미지에서 효율적인 단일 프롬프트 추론
여러 이미지에 동일한 텍스트 프롬프트를 적용할 경우, 중복 계산을 피하기 위해 텍스트 임베딩을 사전 계산하세요:
from transformers import Sam3Processor, Sam3Model
import torch
from PIL import Image
import requests
model = Sam3Model.from_pretrained("facebook/sam3", device_map="auto")
processor = Sam3Processor.from_pretrained("facebook/sam3")
# Pre-compute text embeddings once
text_prompt = "ear"
text_inputs = processor(text=text_prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
text_embeds = model.get_text_features(**text_inputs)
# Load multiple images
image_urls = [
"http://images.cocodataset.org/val2017/000000077595.jpg",
"http://images.cocodataset.org/val2017/000000039769.jpg",
]
images = [Image.open(requests.get(url, stream=True).raw).convert("RGB") for url in image_urls]
# Run inference on each image reusing text embeddings
# Note: attention_mask must be passed along with text_embeds for proper masking
all_results = []
for image in images:
img_inputs = processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(
pixel_values=img_inputs.pixel_values,
text_embeds=text_embeds,
attention_mask=text_inputs.attention_mask,
)
...
results = processor.post_process_instance_segmentation(
outputs,
threshold=0.5,
mask_threshold=0.5,
target_sizes=img_inputs.get("original_sizes").tolist()
)[0]
all_results.append(results)
for i, results in enumerate(all_results):
print(f"Image {i+1}: {len(results['masks'])} '{text_prompt}' objects found")사용자 지정 해상도 추론
더 빠른 추론 또는 더 낮은 메모리 사용량을 위해:
config = Sam3Config.from_pretrained("facebook/sam3")
config.image_size = 560
model = Sam3Model.from_pretrained("facebook/sam3", config=config, device_map="auto")
processor = Sam3Processor.from_pretrained("facebook/sam3", size={"height": 560, "width": 560})프롬프트 라벨 규칙
SAM3은 다음 라벨 규칙을 사용합니다:
점과 박스에 대해:
1: 긍정 프롬프트(이 영역/대상을 포함)0: Negative prompt(해당 영역/객체를 제외)-10: 배치 입력에 사용되는 패딩 값
좌표 형식:
- 입력 상자:
[x1, y1, x2, y2](xyxy 형식) 픽셀 좌표 - 출력 박스 (원시값):
[x1, y1, x2, y2](xyxy 형식), [0, 1]로 정규화 - 출력 박스(후처리됨): 절대 픽셀 좌표의
[x1, y1, x2, y2](xyxy 형식)
Sam3Config
클래스 transformers.Sam3Config
< source >( 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 = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonegeometry_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedetr_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedetr_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonemask_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02 )
매개변수
- vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 선택) — 비전 백본의 config 객체 또는 사전입니다. - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 선택) — 텍스트 백본의 config 객체 또는 사전입니다. - geometry_encoder_config (
dict또는Sam3GeometryEncoderConfig, 선택 사항) — geometry encoder의 설정입니다. - detr_encoder_config (
dict또는Sam3DETREncoderConfig, 선택) — DETR 인코더에 대한 설정입니다. - detr_decoder_config (
dict또는Sam3DETRDecoderConfig, 선택) — DETR decoder에 대한 설정입니다. - mask_decoder_config (
dict또는Sam3MaskDecoderConfig, 선택) — 마스크 디코더에 대한 설정입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
이것은 Sam3Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Sam3 모델을 초기화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 초기화하면 facebook/sam3와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
Sam3ViTConfig
클래스 transformers.Sam3ViTConfig
< source >( 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 = 1024intermediate_size: int = 4736num_hidden_layers: int = 32num_attention_heads: int = 16num_channels: int = 3image_size: int | list[int] | tuple[int, int] = 1008patch_size: int | list[int] | tuple[int, int] = 14hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06attention_dropout: float | int = 0.0window_size: int = 24global_attn_indexes: list[int] | None = Nonelayer_scale_init_value: float | None = Nonepretrain_image_size: int | list[int] | tuple[int, int] = 336hidden_dropout: float | int = 0.0initializer_range: float = 0.02rope_parameters: dict | None = None )
매개변수
- hidden_size (
int, 선택 사항, 기본값1024) — 숨겨진 표현의 차원입니다. - intermediate_size (
int, 선택 사항, 기본값4736) — MLP 표현의 차원입니다. - num_hidden_layers (
int, 선택 사항, 기본값32) — Transformer decoder의 숨겨진 레이어 수. - num_attention_heads (
int, 선택 사항, 기본값16) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - num_channels (
int, 선택 사항, 기본값3) — 입력 채널의 수입니다. - image_size (
Union[int, list[int], tuple[int, int]], 선택, 기본값1008) — 각 이미지의 크기(해상도). - patch_size (
Union[int, list[int], tuple[int, int]], 선택 사항, 기본값14) — 각 패치의 크기(해상도)입니다. - hidden_act (
str, 선택 사항, 기본값gelu) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - attention_dropout (
Union[float, int], 선택 사항, 기본값0.0) — Attention 확률에 적용할 dropout 비율입니다. - window_size (
int, 선택 사항, 기본값 24) — 윈도우드 어텐션에 사용할 윈도우 크기입니다. - global_attn_indexes (
list[int], 선택 사항, 기본값[7, 15, 23, 31]) — global attention을 사용하는 레이어의 인덱스입니다. - layer_scale_init_value (
float, 선택 사항) — self-attention 레이어에서 사용할 스케일 값입니다. base 모델은 0.1, large 모델은 1e-6을 사용합니다. layer scale을 비활성화하려면 0으로 설정하세요. - pretrain_image_size (
int, 선택 사항, 기본값 336) — 위치 임베딩 초기화에 사용되는 사전 학습 모델의 이미지 크기입니다. - hidden_dropout (
float, 선택 사항, 기본값 0.0) — hidden states에 적용할 dropout 확률입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다. - rope_parameters (
dict, 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는rope_theta값이 포함되어야 하며, 더 긴max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다.
이것은 Sam3Model의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Sam3 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 facebook/sam3와 유사한 구성이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
Sam3VisionConfig
클래스 transformers.Sam3VisionConfig
< source >( 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 = Nonefpn_hidden_size: int = 256backbone_feature_sizes: list | None = Nonescale_factors: list[float] | None = Nonehidden_act: str = 'gelu'layer_norm_eps: float = 1e-06initializer_range: float = 0.02 )
매개변수
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 선택) — backbone 모델의 설정입니다. - fpn_hidden_size (
int, 선택 사항, 기본값 256) — FPN의 숨겨진 차원입니다. - backbone_feature_sizes (
List[List[int]], 선택 사항, 기본값[[288, 288], [144, 144], [72, 72]]) — 다양한 스케일에서 backbone이 생성하는 feature map의 공간 크기(높이, 너비)입니다. - scale_factors (
list[float], 선택 사항, 기본값[4.0, 2.0, 1.0, 0.5]) — FPN 다중 스케일 특징을 위한 스케일 팩터입니다. 각 FPN 레벨에 대한 스케일 팩터 목록입니다. - hidden_act (
str, 선택 사항, 기본값gelu) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
이것은 Sam3Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Sam3 모델을 초기화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 초기화하면 facebook/sam3와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
Sam3GeometryEncoderConfig
클래스 transformers.Sam3GeometryEncoderConfig
< source >( 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 = 256num_layers: int = 3num_attention_heads: int = 8intermediate_size: int = 2048dropout: float | int = 0.1hidden_act: str = 'relu'hidden_dropout: float | int = 0.0layer_norm_eps: float = 1e-06roi_size: int = 7initializer_range: float = 0.02 )
매개변수
- hidden_size (
int, 선택 사항, 기본값256) — 숨겨진 표현의 차원입니다. - num_layers (
int, 선택 사항, 기본값3) — Transformer decoder의 hidden layer 수입니다. - num_attention_heads (
int, 선택 사항, 기본값8) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - intermediate_size (
int, 선택 사항, 기본값2048) — MLP 표현의 차원입니다. - dropout (
Union[float, int], 선택 사항, 기본값0.1) — 모든 dropout 레이어에 적용할 비율입니다. - hidden_act (
str, 선택 사항, 기본값relu) — 디코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - hidden_dropout (
Union[float, int], 선택 사항, 기본값0.0) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 dropout 확률입니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - roi_size (
int, 선택 사항, 기본값 7) — 박스 풀링 연산에 사용할 ROI 크기입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
이것은 Sam3Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Sam3 모델을 초기화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 초기화하면 facebook/sam3와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
Sam3DETREncoderConfig
클래스 transformers.Sam3DETREncoderConfig
< source >( 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 = 256num_layers: int = 6num_attention_heads: int = 8intermediate_size: int = 2048dropout: float | int = 0.1hidden_act: str = 'relu'hidden_dropout: float | int = 0.0layer_norm_eps: float = 1e-06initializer_range: float = 0.02 )
매개변수
- hidden_size (
int, 선택 사항, 기본값256) — 숨겨진 표현의 차원입니다. - num_layers (
int, 선택 사항, 기본값6) — Transformer decoder의 hidden layer 수입니다. - num_attention_heads (
int, 선택 사항, 기본값8) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - intermediate_size (
int, 선택 사항, 기본값2048) — MLP 표현의 차원입니다. - dropout (
Union[float, int], 선택 사항, 기본값0.1) — 모든 dropout 레이어에 적용할 비율입니다. - hidden_act (
str, 선택 사항, 기본값relu) — 디코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - hidden_dropout (
float, 선택 사항, 기본값 0.0) — hidden states에 적용할 dropout 확률입니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
이것은 Sam3Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Sam3 모델을 초기화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 초기화하면 facebook/sam3와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
Sam3DETRDecoderConfig
클래스 transformers.Sam3DETRDecoderConfig
< source >( 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 = 256num_layers: int = 6num_queries: int = 200num_attention_heads: int = 8intermediate_size: int = 2048dropout: float | int = 0.1hidden_act: str = 'relu'hidden_dropout: float | int = 0.0layer_norm_eps: float = 1e-06initializer_range: float = 0.02 )
매개변수
- hidden_size (
int, 선택 사항, 기본값256) — 숨겨진 표현의 차원입니다. - num_layers (
int, 선택 사항, 기본값6) — Transformer decoder의 hidden layer 수입니다. - num_queries (
int, 선택 사항, 기본값 200) — 객체 쿼리의 수입니다. - num_attention_heads (
int, 선택 사항, 기본값8) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - intermediate_size (
int, 선택 사항, 기본값2048) — MLP 표현의 차원입니다. - dropout (
Union[float, int], 선택 사항, 기본값0.1) — 모든 dropout 레이어에 적용할 비율입니다. - hidden_act (
str, 선택 사항, 기본값relu) — 디코더의 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어,"gelu","relu","silu"등이 있습니다. - hidden_dropout (
Union[float, int], 선택 사항, 기본값0.0) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 dropout 확률입니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
이것은 Sam3Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Sam3 모델을 초기화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 초기화하면 facebook/sam3와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
Sam3MaskDecoderConfig
class transformers.Sam3MaskDecoderConfig
< source >( 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 = 256num_upsampling_stages: int = 3layer_norm_eps: float = 1e-06dropout: float | int = 0.0num_attention_heads: int = 8initializer_range: float = 0.02 )
매개변수
- hidden_size (
int, 선택 사항, 기본값256) — 숨겨진 표현의 차원입니다. - num_upsampling_stages (
int, 선택 사항, 기본값 3) — 픽셀 디코더(FPN)의 업샘플링 단계 수입니다. - layer_norm_eps (
float, 선택 사항, 기본값1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - dropout (
Union[float, int], 선택 사항, 기본값0.0) — 모든 dropout 레이어에 적용할 비율입니다. - num_attention_heads (
int, 선택 사항, 기본값8) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
이것은 Sam3Model의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Sam3 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 facebook/sam3와 유사한 구성이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
Sam3Processor
class transformers.Sam3Processor
< source >( image_processortokenizertarget_size: int | None = Nonepoint_pad_value: int = -10**kwargs )
이미지 프로세서와 토크나이저를 단일 프로세서로 감싸는 Sam3Processor를 생성합니다.
Sam3Processor는 Sam3ImageProcessor와 CLIPTokenizer의 모든 기능을 제공합니다. 자세한 내용은 ~Sam3ImageProcessor와 ~CLIPTokenizer를 참고하세요.
__call__
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | list[list[str]] | None = 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_boxes: typing.Union[list[list[list[float]]], torch.Tensor, NoneType] = Noneinput_boxes_labels: typing.Union[list[list[list[int]]], 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
매개변수
- images (
ImageInput, 선택 사항) — 처리할 이미지입니다. - text (
str,list[str],list[list[str]], 선택 사항) — 처리할 텍스트입니다. - segmentation_maps (
ImageInput, 선택 사항) — 처리할 분할 맵입니다. - input_boxes (
list[list[list[float]]],torch.Tensor, 선택 사항) — 처리할 바운딩 박스입니다. - input_boxes_labels (
list[list[int]],torch.Tensor, 선택 사항) — 바운딩 박스의 라벨입니다. - original_sizes (
list[list[float]],torch.Tensor, 선택 사항) — 이미지의 원래 크기입니다. - return_tensors (
Union[str, ~utils.generic.TensorType], 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': NumPynp.ndarray객체를 반환합니다.
반환값
다음 필드를 가진 BatchEncoding
pixel_values(torch.Tensor): 처리된 이미지(들).original_sizes(list[list[float]]): 이미지의 원래 크기입니다.labels(torch.Tensor): 처리된 분할 맵(제공된 경우).input_boxes_labels(torch.Tensor): 바운딩 박스에 대한 처리된 라벨입니다.input_boxes(torch.Tensor): 처리된 바운딩 박스입니다.
Sam3ImageProcessor
클래스 transformers.Sam3ImageProcessor
< source >( **kwargs: *<class 'transformers.models.sam3.image_processing_sam3.Sam3ImageProcessorKwargs'> )
매개변수
- do_convert_rgb (
bool, kwargs, 선택 사항, 기본값True) — 이미지를 RGB로 변환할지 여부. - do_resize (
bool, kwargs, 선택 사항, 기본값True) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, 기본값{'height' -- 1008, 'width': 1008}): 모델에 입력되는 최대 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항, 기본값True) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부입니다. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_crop을 적용한 후 출력 이미지의 크기. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, 기본값2) — 이미지 크기를 조정할 때 사용할 리샘플링 필터입니다.PILImageResamplingenum 중 하나를 사용할 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택, 기본값True) — 이미지를 다시 스케일링할지 여부. - rescale_factor (
float, kwargs, 선택 사항, 기본값0.00392156862745098) —do_rescale이True로 설정된 경우 이미지를 재조정(rescale)하는 데 사용할 재조정 계수입니다. - do_normalize (
bool, kwargs, 선택, 기본값True) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[0.5, 0.5, 0.5]) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택, 기본값[0.5, 0.5, 0.5]) — 정규화에 사용할 이미지 표준 편차.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_pad (
bool, kwargs, 선택, 기본값None) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, 기본값None) —{"height": int, "width" int}형식으로 이미지를 패딩할 크기를 지정합니다. 전처리 시 제공된 모든 이미지 크기보다 커야 합니다.pad_size가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 패딩됩니다.do_pad=True.일 때만 적용됩니다. - do_center_crop (
bool, kwargs, 선택) — 이미지를 중앙으로 크롭할지 여부. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) —'pt'로 설정된 경우 스택된 텐서를 반환하고, 그렇지 않으면 텐서 목록을 반환합니다. - disable_grouping (
bool, kwargs, 선택 사항) — 이미지를 크기에 따라 그룹화하는 것을 비활성화하여 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다. - image_seq_length (
int, kwargs, 선택 사항) — 입력에서 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다. - mask_size (
dict[str, *kwargs*, int], 선택) — 세그멘테이션 맵을 리사이즈할 크기{"height": int, "width": int}.
Sam3ImageProcessor 이미지 프로세서를 생성합니다.
preprocess
< source >( 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.sam3.image_processing_sam3.Sam3ImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
매개변수
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 전처리할 이미지. 픽셀 값이 0에서 255 범위로 이루어진 단일 이미지 또는 배치 이미지를 기대합니다. 픽셀 값이 0에서 1 사이인 이미지를 전달하는 경우do_rescale=False로 설정하세요. - segmentation_maps (
ImageInput, 선택 사항) — 전처리할 분할 맵입니다. - do_convert_rgb (
bool, kwargs, 선택 사항) — 이미지를 RGB로 변환할지 여부입니다. - do_resize (
bool, kwargs, 선택) — 이미지를 리사이즈할지 여부. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 모델의 최대 입력 차원을 설명합니다. - default_to_square (
bool, kwargs, 선택 사항) — size가 int인 경우 리사이즈 시 정사각형 이미지로 기본 설정할지 여부. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_crop을 적용한 후 출력 이미지의 크기. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 이미지를 리사이즈할 경우 사용할 리샘플링 필터입니다. 이는PILImageResamplingenum 중 하나일 수 있습니다.do_resize가True로 설정된 경우에만 효과가 있습니다. - do_rescale (
bool, kwargs, 선택 사항) — 이미지를 다시 스케일링할지 여부입니다. - rescale_factor (
float, kwargs, optional) —do_rescale이True로 설정된 경우 이미지를 리스케일하기 위한 리스케일 팩터입니다. - do_normalize (
bool, kwargs, optional) — 이미지를 정규화할지 여부. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 평균입니다.do_normalize가True로 설정된 경우에만 효과가 있습니다. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, 선택) — 정규화에 사용할 이미지 표준 편차.do_normalize가True로 설정된 경우에만 효과가 있습니다. - do_pad (
bool, kwargs, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 이미지를 패딩할{"height": int, "width" int}크기를 지정합니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다.pad_size가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 패딩됩니다.do_pad=True.일 때만 적용됩니다. - do_center_crop (
bool, kwargs, 선택) — 이미지를 중앙으로 크롭할지 여부. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) —ChannelDimension.FIRST만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, 선택 사항) — 입력 이미지의 채널 차원 형식입니다. 설정되지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다:"channels_first"또는ChannelDimension.FIRST: (num_channels, height, width) 형식의 이미지."channels_last"또는ChannelDimension.LAST: (height, width, num_channels) 형식의 이미지."none"또는ChannelDimension.NONE: (height, width) 형식의 이미지.
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — 동영상을 처리할 장치입니다. 설정되지 않은 경우, 입력 동영상에서 장치를 추론합니다. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) —'pt'로 설정된 경우 스택된 텐서를 반환하고, 그렇지 않으면 텐서 목록을 반환합니다. - disable_grouping (
bool, kwargs, 선택 사항) — 이미지를 크기에 따라 그룹화하는 것을 비활성화하여 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다. - image_seq_length (
int, kwargs, 선택 사항) — 입력에서 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다. - mask_size (
dict[str, *kwargs*, int], 선택) — 세그멘테이션 맵을 리사이즈할 크기{"height": int, "width": int}.
반환값
~image_processing_base.BatchFeature
- data (
dict) — call 메서드가 반환하는 리스트/배열/텐서 딕셔너리(‘pixel_values’ 등). - tensor_type (
Union[None, str, TensorType], 선택 사항) — 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type를 지정할 수 있습니다.
Sam3ViTModel
클래스 transformers.Sam3ViTModel
< source >( config: Sam3ViTConfig )
매개변수
- config (Sam3ViTConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Sam3 모델은 특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.FloatTensor)
매개변수
- pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size)) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 Sam3ImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 Sam3ImageProcessor.call()를 참조하세요 (Sam3Processor는 이미지 처리에 Sam3ImageProcessor를 사용합니다).
반환값
BaseModelOutput 또는 tuple(torch.FloatTensor)
torch.FloatTensor의 튜플 또는 BaseModelOutput (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(Sam3Config)과 입력에 따라 다양한 요소를 포함합니다.
Sam3ViTModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.FloatTensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.hidden_states (
tuple(torch.FloatTensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.FloatTensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.FloatTensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.FloatTensor의 튜플로, 형태는(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
Sam3VisionModel
class transformers.Sam3VisionModel
< source >( config: Sam3VisionConfig )
매개변수
- config (Sam3VisionConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Sam의 비전 모델로, 상단에 헤드나 투영이 없는 상태입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( pixel_values: typing.Optional[torch.FloatTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )
Sam3Model
forward
< source >( pixel_values: typing.Optional[torch.FloatTensor] = Nonevision_embeds: transformers.models.sam3.modeling_sam3.Sam3VisionEncoderOutput | None = Noneinput_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetext_embeds: typing.Optional[torch.FloatTensor] = Noneinput_boxes: typing.Optional[torch.FloatTensor] = Noneinput_boxes_labels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Sam3ImageSegmentationOutput or tuple(torch.FloatTensor)
매개변수
- pixel_values (
torch.FloatTensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 Sam3ImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 Sam3ImageProcessor.call()를 참조하세요 (Sam3Processor는 이미지 처리에 Sam3ImageProcessor를 사용합니다). - vision_embeds (
Sam3VisionEncoderOutput, 선택) — 미리 계산된 비전 임베딩입니다. 비전 임베딩을 쉽게 재사용할 수 있습니다. 이 값을 전달하는 경우pixel_values는 전달하지 않아야 합니다.pixel_values와 상호 배타적입니다. - input_ids (
torch.LongTensor형상이(batch_size, sequence_length), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- text_embeds (
torch.FloatTensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 미리 계산된 텍스트 임베딩입니다. 텍스트 임베딩을 쉽게 재사용하는 데 사용할 수 있습니다. 이 인자가 제공되면input_ids를 전달해서는 안 됩니다.input_ids와 상호 배타적입니다. - input_boxes (
torch.FloatTensor, shape(batch_size, num_boxes, 4), 선택 사항) — [0, 1] 범위의 정규화된 박스 좌표, (cx, cy, w, h) 형식. - input_boxes_labels (
torch.LongTensor, shape(batch_size, num_boxes), 선택 사항) — 박스 라벨: 1 (양성), 0 (음성).
반환값
Sam3ImageSegmentationOutput 또는 tuple(torch.FloatTensor)
Sam3ImageSegmentationOutput 또는 torch.FloatTensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(Sam3Config)과 입력에 따라 다양한 요소를 포함합니다.
Sam3Model의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
- pred_masks (
torch.FloatTensor, shape(batch_size, num_queries, height, width)) — 각 query에 대한 예측된 분할 마스크. - pred_boxes (
torch.FloatTensor, shape(batch_size, num_queries, 4)) — (x1, y1, x2, y2) 형식으로 예측된 바운딩 박스. - pred_logits (
torch.FloatTensor, shape(batch_size, num_queries), 선택 사항) — 각 query에 대한 분류 신뢰도 점수입니다. decoder query feature와 text feature의 내적으로 계산됩니다. - presence_logits (
torch.FloatTensor, shape(batch_size, 1), 선택 사항) — DETR decoder의 presence token(마지막 레이어만)에서 생성된 presence logits입니다. 이는 장면 내에 객체가 존재하는지 여부를 나타냅니다. pred_logits와 곱하여 최종 점수를 계산하는 데 사용할 수 있습니다:final_scores = pred_logits.sigmoid() * presence_logits.sigmoid(). - semantic_seg (
torch.FloatTensor, shape(batch_size, 1, height, width), 선택 사항) — 시맨틱 세그멘테이션 출력. - decoder_hidden_states (
tuple[torch.FloatTensor], 선택 사항) — 모든 DETR decoder 레이어의 hidden states로 구성된 Tuple입니다. 각 텐서의 shape은(batch_size, num_queries, hidden_size)입니다. - decoder_reference_boxes (
torch.FloatTensor, shape(num_layers, batch_size, num_queries, 4), 선택) — 모든 DETR decoder 레이어의 reference boxes. - encoder_hidden_states (
tuple[torch.FloatTensor], 선택 사항) — DETR 인코더의 모든 레이어에서 생성된 숨겨진 상태(hidden states)의 튜플입니다. - vision_hidden_states (
tuple[torch.FloatTensor], 선택 사항) — 모든 vision encoder(ViT) 레이어의 hidden states로 구성된 튜플. - vision_attentions (
tuple[torch.FloatTensor], 선택 사항) — Vision encoder(ViT) 레이어의 attention weights. - detr_encoder_attentions (
tuple[torch.FloatTensor], 선택 사항) — DETR 인코더 레이어의 어텐션 가중치. - detr_decoder_attentions (
tuple[torch.FloatTensor], 선택 사항) — DETR decoder 레이어의 어텐션 가중치(자기 어텐션 및 교차 어텐션). - mask_decoder_attentions (
tuple[torch.FloatTensor], 선택 사항) — mask decoder 레이어의 attention 가중치입니다.
예:
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoModel, AutoProcessor
>>> model = AutoModel.from_pretrained("facebook/sam3")
>>> processor = AutoProcessor.from_pretrained("facebook/sam3")
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/sam-car.png"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read())).convert("RGB")
>>> text = "car"
>>> inputs = processor(images=image, text=text, return_tensors="pt")
>>> # Get segmentation output
>>> outputs = model(**inputs)
>>> pred_masks = outputs.pred_masks
>>> pred_boxes = outputs.pred_boxesget_text_features
< source >( input_ids: LongTensorattention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.FloatTensor)
매개변수
- input_ids (
torch.LongTensor다음 형식의(batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
반환값
BaseModelOutputWithPooling 또는 tuple(torch.FloatTensor)
torch.FloatTensor의 튜플 또는 BaseModelOutputWithPooling입니다. 구성(Sam3Config)과 입력에 따라 다양한 요소를 포함하며, return_dict=False가 전달되었거나 config.return_dict=False인 경우에도 동일합니다.
last_hidden_state (
torch.FloatTensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.pooler_output (
torch.FloatTensor, shape(batch_size, hidden_size)) — 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state로, 보조 사전학습 작업을 위해 사용되는 레이어들을 통해 추가 처리된 값입니다. 예를 들어 BERT 계열 모델의 경우, 선형 레이어와 tanh 활성화 함수를 통해 처리된 분류 토큰을 반환합니다. 선형 레이어의 가중치는 사전학습 단계에서 다음 문장 예측(분류) 목적 함수를 통해 학습됩니다.hidden_states (
tuple(torch.FloatTensor), 선택 사항,output_hidden_states=True가 전달되었거나config.output_hidden_states=True인 경우 반환됨) —torch.FloatTensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.FloatTensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.FloatTensor의 튜플로, 형태는(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
예:
>>> from transformers import Sam3Model, Sam3Processor
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> model = Sam3Model.from_pretrained("facebook/sam3")
>>> processor = Sam3Processor.from_pretrained("facebook/sam3")
>>> # Pre-compute text embeddings
>>> text_inputs = processor(text="cat", return_tensors="pt")
>>> text_embeds = model.get_text_features(**text_inputs).pooler_output
>>> # Reuse text embeddings for multiple images
>>> url = "http://images.cocodataset.org/val2017/000000077595.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> img_inputs = processor(images=image, return_tensors="pt")
>>> outputs = model(pixel_values=img_inputs.pixel_values, text_embeds=text_embeds)