Transformers documentation
SAM3 Video
Model ini disumbangkan ke Hugging Face Transformers pada 2025-11-19.
SAM3 Video
Ikhtisar
SAM3 (Segment Anything Model 3) diperkenalkan dalam SAM 3: Segment Anything with Concepts.
SAM3 Video melakukan Promptable Concept Segmentation (PCS) pada video. PCS menerima teks sebagai input (misalnya, “yellow school bus”), dan memprediksi mask instance dan semantik untuk setiap objek yang cocok dengan konsep tersebut, sambil mempertahankan identitas objek di antara frame video.
Model ini menggabungkan modul deteksi (SAM3) dengan modul pelacakan (pelacak bergaya SAM2) untuk memungkinkan pelacakan objek yang andal di antara bingkai video menggunakan prompt teks.
Abstrak dari makalah tersebut adalah sebagai berikut:
Kami memperkenalkan Segment Anything Model (SAM) 3, sebuah model terpadu yang mendeteksi, memsegmentasi, dan melacak objek dalam gambar dan video berdasarkan prompt konsep, yang kami definisikan sebagai frasa nomina pendek (misalnya, “yellow school bus”), contoh gambar, atau kombinasi keduanya. Promptable Concept Segmentation (PCS) menerima prompt semacam itu dan mengembalikan mask segmentasi serta identitas unik untuk semua instans objek yang cocok. Untuk memajukan PCS, kami membangun mesin data yang dapat diskalakan yang menghasilkan dataset berkualitas tinggi dengan 4 juta label konsep unik, termasuk negatif yang sulit, di seluruh gambar dan video. Model kami terdiri dari detektor tingkat gambar dan pelacak video berbasis memori yang berbagi satu backbone tunggal. Pengenalan dan lokalisasi dipisahkan dengan presence head, yang meningkatkan akurasi deteksi. SAM 3 menggandakan akurasi sistem yang ada dalam PCS gambar dan video, serta meningkatkan kemampuan SAM sebelumnya pada tugas segmentasi visual. Kami membuka sumber SAM 3 bersama dengan benchmark baru kami, Segment Anything with Concepts (SA-Co), untuk segmentasi konsep yang dapat diprompt.
Model ini disumbangkan oleh yonigozlan dan ronghanghu.
Contoh penggunaan
Segmentasi dan Pelacakan Video
Inferensi Video Pra-muat
Proses video dengan semua frame yang sudah tersedia menggunakan prompt teks:
from transformers import Sam3VideoModel, Sam3VideoProcessor
import torch
model = Sam3VideoModel.from_pretrained("facebook/sam3", device_map="auto")
processor = Sam3VideoProcessor.from_pretrained("facebook/sam3")
# Load video frames
from transformers.video_utils import load_video
video_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/bedroom.mp4"
video_frames, _ = load_video(video_url)
# Initialize video inference session
inference_session = processor.init_video_session(
video=video_frames,
inference_device=device,
processing_device="cpu",
video_storage_device="cpu",
)
# Add text prompt to detect and track objects
text = "person"
inference_session = processor.add_text_prompt(
inference_session=inference_session,
text=text,
)
# Process all frames in the video
outputs_per_frame = {}
# Pass show_progress_bar=True to display a tqdm progress bar.
for model_outputs in model.propagate_in_video_iterator(
inference_session=inference_session, max_frame_num_to_track=50
):
processed_outputs = processor.postprocess_outputs(inference_session, model_outputs)
outputs_per_frame[model_outputs.frame_idx] = processed_outputs
print(f"Processed {len(outputs_per_frame)} frames")
Processed 51 frames
# Access results for a specific frame
frame_0_outputs = outputs_per_frame[0]
print(f"Detected {len(frame_0_outputs['object_ids'])} objects")
print(f"Object IDs: {frame_0_outputs['object_ids'].tolist()}")
print(f"Scores: {frame_0_outputs['scores'].tolist()}")
print(f"Boxes shape (XYXY format, absolute coordinates): {frame_0_outputs['boxes'].shape}")
print(f"Masks shape: {frame_0_outputs['masks'].shape}")Anda juga dapat melacak beberapa kategori objek secara bersamaan dengan menyediakan beberapa prompt. Model ini secara efisien menggunakan ulang fitur visual di semua prompt:
# Add multiple text prompts (or use a list in add_text_prompt)
multi_prompt_session = processor.init_video_session(
video=video_frames,
inference_device=device,
processing_device="cpu",
video_storage_device="cpu",
)
>>>
prompts = ["person", "bed", "lamp"]
processor.add_text_prompt(multi_prompt_session, prompts)
>>>
# Process video - detects objects from ALL prompts in a single pass
multi_outputs_per_frame = {}
# Pass show_progress_bar=True to display a tqdm progress bar.
for model_outputs in model.propagate_in_video_iterator(
inference_session=multi_prompt_session, max_frame_num_to_track=50
):
processed_outputs = processor.postprocess_outputs(multi_prompt_session, model_outputs)
multi_outputs_per_frame[model_outputs.frame_idx] = processed_outputs
>>>
# Check which objects were detected by each prompt
frame_0_outputs = multi_outputs_per_frame[0]
prompt_to_obj_ids = frame_0_outputs["prompt_to_obj_ids"]
for prompt, obj_ids in prompt_to_obj_ids.items():
print(f"{prompt}: {len(obj_ids)} objects")
person: 2 objects
bed: 1 objects
lamp: 1 objectsInferensi Video Streaming
Untuk aplikasi real-time, SAM3 Video mendukung pemrosesan bingkai video saat bingkai tersebut tiba:
# Initialize session for streaming
streaming_inference_session = processor.init_video_session(
inference_device=device,
processing_device="cpu",
video_storage_device="cpu",
)
# Add text prompt
text = "person"
streaming_inference_session = processor.add_text_prompt(
inference_session=streaming_inference_session,
text=text,
)
# Process frames one by one (streaming mode)
streaming_outputs_per_frame = {}
for frame_idx, frame in enumerate(video_frames[:50]): # Process first 50 frames
# First, process the frame using the processor
inputs = processor(images=frame, device=device, return_tensors="pt").to(model.device)
...
# Process frame using streaming inference - pass the processed pixel_values
model_outputs = model(
inference_session=streaming_inference_session,
frame=inputs.pixel_values[0], # Provide processed frame - this enables streaming mode
reverse=False,
)
...
# Post-process outputs with original_sizes for proper resolution handling
processed_outputs = processor.postprocess_outputs(
streaming_inference_session,
model_outputs,
original_sizes=inputs.original_sizes, # Required for streaming inference
)
streaming_outputs_per_frame[frame_idx] = processed_outputs
...
if (frame_idx + 1) % 10 == 0:
print(f"Processed {frame_idx + 1} frames...")
print(f"✓ Streaming inference complete! Processed {len(streaming_outputs_per_frame)} frames")
✓ Streaming inference complete! Processed 50 frames
# Access results
frame_0_outputs = streaming_outputs_per_frame[0]
print(f"Detected {len(frame_0_outputs['object_ids'])} objects in first frame")
print(f"Boxes are in XYXY format (absolute pixel coordinates): {frame_0_outputs['boxes'].shape}")
print(f"Masks are at original video resolution: {frame_0_outputs['masks'].shape}")Inferensi Resolusi Kustom
Untuk inferensi yang lebih cepat atau penggunaan memori yang lebih rendah:
config = Sam3VideoConfig.from_pretrained("facebook/sam3")
config.image_size = 560
model = Sam3VideoModel.from_pretrained("facebook/sam3", config=config, device_map="auto")
processor = Sam3VideoProcessor.from_pretrained("facebook/sam3", size={"height": 560, "width": 560})Sam3VideoConfig
kelas transformers.Sam3VideoConfig
< 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 = Nonedetector_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetracker_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02low_res_mask_size: int = 288score_threshold_detection: float = 0.5det_nms_thresh: float = 0.1assoc_iou_thresh: float = 0.1trk_assoc_iou_thresh: float = 0.5new_det_thresh: float = 0.7recondition_on_trk_masks: bool = Truehotstart_delay: int = 15hotstart_unmatch_thresh: int = 8hotstart_dup_thresh: int = 8suppress_unmatched_only_within_hotstart: bool = Trueinit_trk_keep_alive: int = 30max_trk_keep_alive: int = 30min_trk_keep_alive: int = -1suppress_overlapping_based_on_recent_occlusion_threshold: float = 0.7decrease_trk_keep_alive_for_empty_masklets: bool = Falsefill_hole_area: int = 16max_num_objects: int = 10000recondition_every_nth_frame: int = 16high_conf_thresh: float = 0.8high_iou_thresh: float = 0.8 )
Parameter
- detector_config (
dictatauSam3Config, opsional) — Konfigurasi untuk model detektor Sam3. Jika tidak disediakan, Sam3Config default akan digunakan. - tracker_config (
dictatauSam2VideoConfig, opsional) — Konfigurasi untuk model pelacak Sam2Video. Jika tidak disediakan, Sam2VideoConfig default akan digunakan. - initializer_range (
float, opsional, default 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi matriks bobot. - low_res_mask_size (
int, opsional, default 288) — Ukuran (tinggi dan lebar) output mask resolusi rendah dari pelacak sebelum di-upsample ke resolusi video. - score_threshold_detection (
float, opsional, default 0.5) — Ambang batas probabilitas untuk output deteksi - hanya simpan deteksi yang berada di atas ambang batas ini. - det_nms_thresh (
float, opsional, default 0.1) — Ambang IoU untuk NMS (Non-Maximum Suppression) deteksi. - assoc_iou_thresh (
float, opsional, default 0.1) — Ambang IoU untuk pencocokan deteksi ke track. Sebuah deteksi dianggap “cocok” dengan tracklet jika tumpang tindihnya dengan tracklet melebihi ambang ini. Biasanya digunakan ambang longgar seperti 0.1. - trk_assoc_iou_thresh (
float, opsional, default 0.5) — Ambang IoU untuk pencocokan deteksi-ke-track, digunakan untuk menentukan apakah sebuah masklet “tidak cocok” dengan deteksi mana pun. Biasanya menggunakan ambang yang lebih ketat seperti 0.5. - new_det_thresh (
float, opsional, default 0.7) — Ambang batas probabilitas agar deteksi ditambahkan sebagai objek baru. - recondition_on_trk_masks (
bool, opsional, defaultTrue) — Apakah akan menggunakan mask pelacakan (True) atau mask deteksi (False) untuk reconditioning. Gunakan True ketika mask pelacakan memiliki kualitas lebih tinggi dan detektor berfungsi sebagai sinyal validasi untuk memperkuat memori serta mencegah drift. - hotstart_delay (
int, opsional, default 15) — Jumlah frame untuk men-buffer output selama hotstart. Kami menahan output selamahotstart_delayframe dan menghapus tracklet berdasarkan heuristik hotstart. - hotstart_unmatch_thresh (
int, opsional, default 8) — Jumlah frame yang tidak cocok yang diperlukan untuk menghapus tracklet selama periode hotstart. - hotstart_dup_thresh (
int, opsional, default 8) — Jumlah frame tumpang tindih yang diperlukan untuk menghapus tracklet duplikat selama periode hotstart. - suppress_unmatched_only_within_hotstart (
bool, opsional, defaultTrue) — Apakah akan menekan mask hanya di dalam periode hotstart. Jika False, mask dapat ditekan meskipun dimulai sebelum periode hotstart. - init_trk_keep_alive (
int, opsional, default 30) — Penghitung keep-alive awal untuk track baru. - max_trk_keep_alive (
int, opsional, default 30) — Nilai maksimum penghitung keep-alive. Track yang memiliki deteksi yang cocok akan memiliki penghitungnya ditingkatkan hingga nilai ini. - min_trk_keep_alive (
int, opsional, default -1) — Nilai minimum penghitung keep-alive. Pelacak dengan deteksi yang tidak cocok akan memiliki penghitungnya dikurangi hingga nilai ini. - suppress_overlapping_based_on_recent_occlusion_threshold (
float, opsional, default 0.7) — Ambang batas untuk menekan objek yang tumpang tindih berdasarkan oklusi terbaru. Mask yang tumpang tindih dengan IoU di atas ambang batas ini akan ditekan berdasarkan mana yang paling baru teroklusi. - decrease_trk_keep_alive_for_empty_masklets (
bool, opsional, defaultFalse) — Apakah akan menurunkan penghitung keep-alive untuk masklet dengan area nol dalam prediksi SAM2. - fill_hole_area (
int, opsional, default 16) — Luas minimum (dalam piksel) untuk mengisi lubang pada mask dan menghilangkan bintik-bintik kecil. - max_num_objects (
int, opsional, default 10000) — Jumlah maksimum objek yang dilacak. Default 10000 secara efektif menonaktifkan batas ini. - recondition_every_nth_frame (
int, opsional, default 16) — Frekuensi reconditioning mask (dalam frame). Atur ke 0 untuk menonaktifkan reconditioning. - high_conf_thresh (
float, opsional, default 0.8) — Ambang batas kepercayaan tinggi untuk reconditioning. Hanya deteksi di atas ambang batas ini yang dapat melakukan reconditioning pada tracklet. - high_iou_thresh (
float, opsional, default 0.8) — Ambang batas IoU tinggi untuk reconditioning. Hanya deteksi dengan IoU di atas ambang batas ini yang dapat melakukan reconditioning pada tracklet.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Sam3VideoModel. Kelas ini digunakan untuk membuat instans model Sam3 Video berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari facebook/sam3
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import Sam3VideoConfig, Sam3VideoModel
>>> # Initializing a SAM3 Video configuration with default detector and tracker
>>> configuration = Sam3VideoConfig()
>>> # Changing image size for custom resolution inference (automatically propagates to all nested configs)
>>> configuration.image_size = 560
>>> # Initializing a model from the configuration
>>> model = Sam3VideoModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> detector_config = configuration.detector_config
>>> tracker_config = configuration.tracker_configSam3VideoProcessor
kelas transformers.Sam3VideoProcessor
< source >( image_processorvideo_processortokenizertarget_size: int | None = None**kwargs )
Parameter
- image_processor (
Sam3ImageProcessor) — Image processor adalah input yang wajib diisi. - video_processor (
video_processor_class) — Video processor adalah input yang wajib diisi. - tokenizer (
CLIPTokenizer) — Tokenizer adalah input yang wajib. - target_size (
int, opsional) — Ukuran target (target_size, target_size) yang akan digunakan untuk mengubah ukuran gambar.
Membangun Sam3VideoProcessor yang membungkus image processor, video processor, dan tokenizer menjadi satu processor tunggal.
Sam3VideoProcessor menyediakan semua fungsionalitas dari Sam3ImageProcessor, video_processor_class, dan CLIPTokenizer. Lihat ~Sam3ImageProcessor, ~video_processor_class, dan ~CLIPTokenizer untuk informasi lebih lanjut.
__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] = Nonesegmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['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
Parameter
- images (
ImageInput, opsional) — Gambar yang akan diproses. - segmentation_maps (
ImageInput, opsional) — Peta segmentasi yang akan diproses (opsional, untuk image processor). - original_sizes (
list[list[float]],torch.Tensor, opsional) — Ukuran asli dari gambar. Hanya digunakan ketika images tidak disediakan. - return_tensors (
Union[str, ~utils.generic.TensorType], opsional) — Jika diatur, akan mengembalikan tensor dari framework tertentu. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek NumPynp.ndarray.
Mengembalikan
BatchEncoding dengan field-field berikut
pixel_values(torch.Tensor): Gambar yang telah diproses.original_sizes(list[list[float]]): Ukuran asli dari gambar-gambar tersebut.labels(torch.Tensor, opsional): Peta segmentasi yang telah diproses (jika disediakan).
postprocess_outputs
< source >( inference_sessionmodel_outputsoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = None ) → dict
Parameter
- inference_session (
Sam3VideoInferenceSession) — Objek sesi inferensi. - model_outputs (
Sam3VideoSegmentationOutput) — Output mentah model dariSam3VideoModel.forward(). - original_sizes (
list[list[float]]atautorch.Tensor, opsional) — Ukuran asli frame [height, width] yang opsional. Wajib diisi untuk streaming inference ketika video_height/video_width tidak diatur dalam sesi.
Mengembalikan
dict
Kamus yang berisi kunci-kunci berikut:
- object_ids (
torch.Tensordengan bentuk(num_objects,)): ID objek untuk setiap objek yang terdeteksi. - scores (
torch.Tensordengan bentuk(num_objects,)): Skor deteksi untuk setiap objek. - boxes (
torch.Tensordengan bentuk(num_objects, 4)): Kotak pembatas dalam format XYXY (top_left_x, top_left_y, bottom_right_x, bottom_right_y). - masks (
torch.Tensordengan bentuk(num_objects, height, width)): Mask segmentasi biner untuk setiap objek pada resolusi video asli. - prompt_to_obj_ids (
dict[str, list[int]]): Pemetaan dari teks prompt ke daftar ID objek yang terdeteksi oleh prompt tersebut.
Lakukan pascapemrosesan keluaran model untuk mendapatkan mask, kotak, dan skor akhir.
init_video_session
< source >( video: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneinference_device: typing.Union[str, ForwardRef('torch.device')] = 'cpu'inference_state_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Noneprocessing_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Nonevideo_storage_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Nonemax_vision_features_cache_size: int = 1dtype: dtype = torch.float32 )
Parameter
- video (
VideoInput, opsional) — Video yang akan diproses. Tidak perlu disediakan saat streaming. - inference_device (
stratautorch.device, opsional, default “cpu”) — Perangkat yang akan digunakan untuk inferensi. - inference_state_device (
stratautorch.device, opsional) — Perangkat untuk menyimpan state inferensi. - processing_device (
stratautorch.device, opsional) — Perangkat yang akan digunakan untuk pemrosesan video. - video_storage_device (
stratautorch.device, opsional) — Perangkat untuk menyimpan bingkai video yang telah diproses. - max_vision_features_cache_size (
int, opsional, default 1) — Jumlah maksimum fitur visual yang akan di-cache. - dtype (
torch.dtype, opsional, defaulttorch.float32) — torch dtype yang digunakan untuk seluruh sesi.
Menginisialisasi sesi video untuk inferensi.
Jika video disediakan (inferensi asinkron), video tersebut akan diproses dan disimpan di video_storage_device.
add_text_prompt
< source >( inference_session: Sam3VideoInferenceSessiontext: str | list[str] ) → Sam3VideoInferenceSession
Tambahkan prompt teks ke sesi inferensi.
Sam3VideoInferenceSession
kelas transformers.Sam3VideoInferenceSession
< source >( video: typing.Optional[torch.Tensor] = Nonevideo_height: int | None = Nonevideo_width: int | None = Noneinference_device: typing.Union[torch.device, str] = 'cpu'inference_state_device: typing.Union[torch.device, str] = 'cpu'video_storage_device: typing.Union[torch.device, str] = 'cpu'dtype: typing.Union[torch.dtype, str] = 'float32'max_vision_features_cache_size: int = 1 )
Parameter
- video (
torch.Tensor, opsional) — Video yang akan diproses. Tidak perlu disediakan saat streaming. - video_height (
int, opsional) — Tinggi video. - video_width (
int, opsional) — Lebar video. - inference_device (
torch.device, opsional, default"cpu") — Perangkat yang digunakan untuk inferensi. - inference_state_device (
torch.device, opsional, default"cpu") — Perangkat untuk menyimpan state inferensi. - video_storage_device (
torch.device, opsional, default"cpu") — Perangkat untuk menyimpan video. - dtype (
torch.dtype, opsional, defaultnya"float32") — dtype yang akan digunakan untuk video. - max_vision_features_cache_size (
int, opsional, default 1) — Jumlah maksimum fitur visual yang akan di-cache.
Mengelola parameter, status, dan cache sesi inferensi video.
Tambahkan input mask dengan penempatan perangkat otomatis.
Tambahkan frame baru dengan penempatan perangkat otomatis.
Tambahkan prompt teks ke sesi dan kembalikan ID uniknya. Jika prompt sudah ada, kembalikan ID yang sudah ada.
Ambil frame dari video.
Dapatkan jumlah total id objek unik yang diterima sejauh ini dalam sesi ini.
get_output
< source >( obj_idx: intframe_idx: intoutput_key: stris_conditioning_frame: bool = True )
Dapatkan output dengan manajemen perangkat pintar.
Petakan ID objek ke indeks, buat entri baru jika diperlukan.
Petakan indeks objek sisi model ke id objek sisi klien.
Hapus input mask.
remove_object
< source >( obj_id: intstrict: bool = False )
Hapus objek dari sesi inferensi. Hal ini akan menghapus objek tersebut dari semua frame dalam video.
Reset data pelacakan dan cache.
Reset status sesi inferensi.
Reset data pelacakan tetapi pertahankan cache.
store_output
< source >( obj_idx: intframe_idx: intoutput_key: str | None = Noneoutput_value: typing.Union[torch.Tensor, dict, NoneType] = Noneis_conditioning_frame: bool = True )
Parameter
- obj_idx (int) — Indeks dari objek.
- frame_idx (int) — Indeks dari frame.
- output_key (Optional[str]) — Kunci dari output. Jika None, output disimpan sebagai kamus.
- output_value (Optional[Union[torch.Tensor, dict]]) — Nilai dari output.
- is_conditioning_frame (bool) — Apakah output tersebut untuk frame conditioning.
Simpan output dengan manajemen perangkat yang cerdas. Jika output_key adalah None, output disimpan sebagai kamus.
Sam3VideoSegmentationOutput
kelas transformers.Sam3VideoSegmentationOutput
< source >( object_ids: list[int] | None = Noneobj_id_to_mask: dict[int, torch.Tensor] | None = Noneobj_id_to_score: dict[int, float] | None = Noneobj_id_to_tracker_score: dict[int, float] | None = Noneremoved_obj_ids: set[int] | None = Nonesuppressed_obj_ids: set[int] | None = Noneframe_idx: int | None = None )
Parameter
- object_ids (
list[int], opsional) — Daftar ID objek yang dilacak pada frame saat ini. - obj_id_to_mask (
dict[int, torch.Tensor], opsional) — Kamus yang memetakan ID objek ke mask resolusi rendah yang diprediksi. Setiap mask memiliki bentuk(1, H_low, W_low). - obj_id_to_score (
dict[int, float], opsional) — Kamus yang memetakan ID objek ke skor deteksi mereka. - obj_id_to_tracker_score (
dict[int, float], opsional) — Kamus yang memetakan ID objek ke skor pelacaknya untuk frame saat ini. - removed_obj_ids (
set[int], opsional) — Set ID objek yang telah dihapus (misalnya, melalui heuristik hotstart). - suppressed_obj_ids (
set[int], opsional) — Kumpulan ID objek yang telah disupresikan di frame saat ini. - frame_idx (
int, opsional) — Indeks frame dari video.
Kelas dasar untuk output model Sam3Video.
Sam3VideoModel
kelas transformers.Sam3VideoModel
< source >( config: Sam3VideoConfig )
Parameter
- config (Sam3VideoConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Sam3 Video polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( inference_session: Sam3VideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs )
Parameter
- inference_session (
~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — Objek sesi inferensi video. - frame_idx (
int, opsional) — Indeks frame tempat inferensi dijalankan. Tidak perlu disediakan saat melakukan inferensi pada frame streaming baru. - frame (
torch.Tensor, opsional) — Frame yang akan diproses. Berikan saat streaming. - reverse (
bool, opsional, defaultFalse) — Apakah akan melakukan propagasi secara terbalik.
Propagasi objek melalui bingkai video yang dialirkan.
propagate_in_video_iterator
< source >( inference_session: Sam3VideoInferenceSessionstart_frame_idx: int = 0max_frame_num_to_track: int | None = Nonereverse: bool = Falseshow_progress_bar: bool = False ) → Sam3VideoSegmentationOutput or tuple(torch.Tensor)
Parameter
- inference_session (
~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — Objek sesi inferensi video. - start_frame_idx (
int, opsional, default0) — Indeks frame awal untuk propagasi. - max_frame_num_to_track (
int, opsional) — Jumlah maksimum frame yang akan dilacak. Jika tidak diberikan, semua frame dalam video akan dilacak. - reverse (
bool, opsional, defaultFalse) — Apakah akan melakukan propagasi secara terbalik. - show_progress_bar (
bool, opsional, defaultFalse) — Apakah menampilkan progress bar selama propagasi.
Mengembalikan
Sam3VideoSegmentationOutput atau tuple(torch.Tensor)
A Sam3VideoSegmentationOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (Sam3VideoConfig) dan input.
Propagasi prompt untuk mendapatkan hasil grounding untuk seluruh video. Digunakan saat menginisialisasi sesi inferensi dengan video utuh. Menghasilkan Sam3VideoSegmentationOutput untuk setiap frame.
- object_ids (
list[int], opsional) — Daftar ID objek yang dilacak pada frame saat ini. - obj_id_to_mask (
dict[int, torch.Tensor], opsional) — Kamus yang memetakan ID objek ke mask resolusi rendah yang diprediksi. Setiap mask memiliki bentuk(1, H_low, W_low). - obj_id_to_score (
dict[int, float], opsional) — Kamus yang memetakan ID objek ke skor deteksinya. - obj_id_to_tracker_score (
dict[int, float], opsional) — Kamus yang memetakan ID objek ke skor pelacaknya untuk frame saat ini. - removed_obj_ids (
set[int], opsional) — Himpunan ID objek yang telah dihapus (misalnya, melalui heuristik hotstart). - suppressed_obj_ids (
set[int], opsional) — Himpunan ID objek yang telah diredam di frame saat ini. - frame_idx (
int, opsional) — Indeks frame dari video.