Transformers documentation
SAM3 Video
Эта модель была добавлена в Hugging Face Transformers 19.11.2025.
SAM3 Video
Обзор
SAM3 (Segment Anything Model 3) был представлен в статье SAM 3: Segment Anything with Concepts.
SAM3 Video выполняет PCS (Promptable Concept Segmentation) для видео. PCS принимает на вход текст (например, «жёлтый школьный автобус») и предсказывает маски инстансов и семантические маски для каждого объекта, соответствующего заданному концепту, сохраняя идентичность объектов между кадрами видео.
Модель объединяет модуль обнаружения (SAM3) с модулем отслеживания (трекер в стиле SAM2), что обеспечивает надёжное отслеживание объектов по кадрам видео с использованием текстовых подсказок.
Аннотация из статьи следующая:
Мы представляем Segment Anything Model (SAM) 3 — унифицированную модель, которая обнаруживает, сегментирует и отслеживает объекты на изображениях и в видео на основе концептуальных промптов, которые мы определяем как короткие существительные (например, «жёлтый школьный автобус»), образцы изображений или комбинацию обоих. Promptable Concept Segmentation (PCS) принимает такие промпты и возвращает маски сегментации и уникальные идентификаторы для всех соответствующих экземпляров объектов. Для развития PCS мы создали масштабируемый движок данных, который формирует высококачественный датасет с 4 млн уникальных концептуальных меток, включая сложные негативные примеры, для изображений и видео. Наша модель состоит из детектора на уровне изображения и видео-трекера на основе памяти, которые используют общий бэкбон. Распознавание и локализация разделены с помощью presence head, что повышает точность обнаружения. SAM 3 удваивает точность существующих систем как в PCS для изображений, так и для видео, а также улучшает возможности предыдущих версий SAM в задачах визуальной сегментации. Мы открыли исходный код SAM 3 вместе с нашим новым бенчмарком Segment Anything with Concepts (SA-Co) для promptable concept segmentation.
Эта модель была предоставлена yonigozlan и ronghanghu.
Пример использования
Сегментация и отслеживание объектов на видео
Видеовычисления с предварительной загрузкой
Обработка видео, в котором все кадры уже доступны, с использованием текстовых подсказок:
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}")Вы также можете отслеживать несколько категорий объектов одновременно, передавая несколько подсказок. Модель эффективно переиспользует визуальные признаки для всех подсказок:
# 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 objectsПотоковое видео-инференс
Для приложений реального времени SAM3 Video поддерживает обработку кадров видео по мере их поступления:
# 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}")Вывод с настраиваемым разрешением
Для более быстрого вывода или меньшего потребления памяти:
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
класс 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 )
Параметры
- detector_config (
dictилиSam3Config, необязательный) — Конфигурация для модели детектора Sam3. Если не указано, будет использоваться конфигурация Sam3Config по умолчанию. - tracker_config (
dictилиSam2VideoConfig, необязательный) — Конфигурация для модели трекера Sam2Video. Если не задана, будет использоваться конфигурация Sam2VideoConfig по умолчанию. - initializer_range (
float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer для инициализации матриц весов. - low_res_mask_size (
int, необязательный, по умолчанию 288) — Размер (высота и ширина) низкокачественных масок, выводимых трекером до увеличения до разрешения видео. - score_threshold_detection (
float, необязательный, по умолчанию 0.5) — Порог вероятности для результатов детектирования — сохраняются только детекции с вероятностью выше этого порога. - det_nms_thresh (
float, необязательный, по умолчанию 0.1) — порог IoU для NMS (Non-Maximum Suppression) в задачах обнаружения. - assoc_iou_thresh (
float, необязательный, по умолчанию 0.1) — порог IoU для сопоставления детекций с треками. Детекция считается «сопоставленной» с tracklet, если пересечение с tracklet превышает этот порог. Обычно используется низкий порог, например 0.1. - trk_assoc_iou_thresh (
float, необязательный, по умолчанию 0.5) — порог IoU для сопоставления детекций с треками, используется для определения, является ли masklet «несопоставленным» с какими-либо детекциями. Часто используется более строгий порог, например 0.5. - new_det_thresh (
float, необязательный, по умолчанию 0.7) — Порог вероятности, при котором обнаружение добавляется как новый объект. - recondition_on_trk_masks (
bool, необязательный, по умолчаниюTrue) — Определяет, использовать ли отслеживаемые маски (True) или маски детектирования (False) для переусловливания. Установите True, если отслеживаемые маски имеют более высокое качество, а детектор служит сигналом валидации для укрепления памяти и предотвращения дрейфа. - hotstart_delay (
int, необязательный, по умолчанию 15) — Количество кадров, которые буферизуются на выходе во время hotstart. Мы задерживаем вывод наhotstart_delayкадров и удаляем tracklets на основе эвристик hotstart. - hotstart_unmatch_thresh (
int, необязательный, по умолчанию 8) — Количество несоответствующих кадров, необходимое для удаления треклета в период hotstart. - hotstart_dup_thresh (
int, необязательный, по умолчанию 8) — Количество перекрывающихся кадров, необходимое для удаления дублирующего tracklet в период hotstart. - suppress_unmatched_only_within_hotstart (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли подавлять маски только в течение периода hotstart. Если установлено в False, маски могут подавляться даже в том случае, если они начинаются до периода hotstart. - init_trk_keep_alive (
int, необязательный, по умолчанию 30) — Начальное значение счетчика keep-alive для новых треков. - max_trk_keep_alive (
int, необязательный, по умолчанию 30) — Максимальное значение счетчика keep-alive. Для треков с совпавшими детекциями счетчик увеличивается до этого значения. - min_trk_keep_alive (
int, необязательный, по умолчанию -1) — Минимальное значение счётчика keep-alive. Для треков, у которых нет соответствующих детекций, счётчик уменьшается до этого значения. - suppress_overlapping_based_on_recent_occlusion_threshold (
float, необязательный, по умолчанию 0.7) — Порог для подавления перекрывающихся объектов на основе недавнего перекрытия. Маски, перекрывающиеся с IoU выше этого порога, подавляются в зависимости от того, какой объект был перекрыт недавно. - decrease_trk_keep_alive_for_empty_masklets (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли уменьшать счётчик keep-alive для masklets с нулевой площадью в предсказаниях SAM2. - fill_hole_area (
int, необязательный, по умолчанию 16) — Минимальная площадь (в пикселях) для заполнения отверстий в масках и удаления мелких вкраплений. - max_num_objects (
int, необязательный, по умолчанию 10000) — Максимальное количество отслеживаемых объектов. Значение по умолчанию 10000 фактически отключает это ограничение. - recondition_every_nth_frame (
int, необязательный, по умолчанию 16) — Частота повторной настройки маски (в кадрах). Установите 0, чтобы отключить повторную настройку. - high_conf_thresh (
float, необязательный, по умолчанию 0.8) — Порог высокой уверенности для реусловливания. Только детекции с уверенностью выше этого порога могут реусловливать треклеты. - high_iou_thresh (
float, необязательный, по умолчанию 0.8) — Высокий порог IoU для реусловливания. Только детекции с IoU выше этого порога могут реусловливать треклеты.
Это класс конфигурации для хранения настроек модели Sam3VideoModel. Он используется для создания модели Sam3 Video в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/sam3
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> 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
класс transformers.Sam3VideoProcessor
< source >( image_processorvideo_processortokenizertarget_size: int | None = None**kwargs )
Параметры
- image_processor (
Sam3ImageProcessor) — Обработчик изображений является обязательным входным параметром. - video_processor (
video_processor_class) — Обработчик видео является обязательным входным параметром. - tokenizer (
CLIPTokenizer) — Токенизатор является обязательным входным параметром. - target_size (
int, необязательный) — Целевой размер (target_size, target_size), к которому будет изменён размер изображения.
Создаёт Sam3VideoProcessor, который объединяет процессор изображений, процессор видео и токенизатор в единый процессор.
Sam3VideoProcessor предоставляет все возможности Sam3ImageProcessor, video_processor_class и CLIPTokenizer. Подробнее см. в ~Sam3ImageProcessor, ~video_processor_class и ~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] = 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
Параметры
- images (
ImageInput, необязательный) — Изображение(я) для обработки. - segmentation_maps (
ImageInput, необязательный) — Сегментационные карты для обработки (необязательно, для процессора изображений). - original_sizes (
list[list[float]],torch.Tensor, необязательный) — Исходные размеры изображений. Используется только в том случае, если images не передан. - return_tensors (
Union[str, ~utils.generic.TensorType], необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
Возвращает
BatchEncoding со следующими полями
pixel_values(torch.Tensor): Обработанное изображение или изображения.original_sizes(list[list[float]]): исходные размеры изображений.labels(torch.Tensor, необязательный): Обработанные карты сегментации (если предоставлены).
postprocess_outputs
< source >( inference_sessionmodel_outputsoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = None ) → dict
Параметры
- inference_session (
Sam3VideoInferenceSession) — Объект сессии инференса. - model_outputs (
Sam3VideoSegmentationOutput) — Сырой вывод модели изSam3VideoModel.forward(). - original_sizes (
list[list[float]]илиtorch.Tensor, необязательный) — Необязательные исходные размеры кадров [высота, ширина]. Требуется для потокового вывода, если video_height/video_width не заданы в сессии.
Возвращает
dict
Словарь, содержащий следующие ключи:
- object_ids (
torch.Tensorформы(num_objects,)): идентификаторы объектов для каждого обнаруженного объекта. - scores (
torch.Tensorформы(num_objects,)): Оценки обнаружения для каждого объекта. - boxes (
torch.Tensorформы(num_objects, 4)): Ограничивающие рамки в формате XYXY (top_left_x, top_left_y, bottom_right_x, bottom_right_y). - masks (
torch.Tensorформы(num_objects, height, width)): бинарные маски сегментации для каждого объекта в исходном разрешении видео. - prompt_to_obj_ids (
dict[str, list[int]]): Соответствие между текстом подсказки и списком идентификаторов объектов, обнаруженных этой подсказкой.
Выполните постобработку выходов модели, чтобы получить итоговые маски, рамки и оценки.
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 )
Параметры
- video (
VideoInput, необязательный) — Видео для обработки. Не требуется при потоковой передаче. - inference_device (
strилиtorch.device, необязательный, по умолчанию “cpu”) — Устройство, используемое для инференса. - inference_state_device (
strилиtorch.device, необязательный) — Устройство, на котором хранится состояние инференса. - processing_device (
strилиtorch.device, необязательный) — Устройство, используемое для обработки видео. - video_storage_device (
strortorch.device, необязательный) — Устройство, на котором будут храниться обработанные кадры видео. - max_vision_features_cache_size (
int, необязательный, по умолчанию 1) — Максимальное количество кэшируемых визуальных признаков. - dtype (
torch.dtype, необязательный, по умолчаниюtorch.float32) — dtype PyTorch, используемый для всей сессии.
Инициализирует видеосессию для инференса.
Если видео предоставлено (асинхронный инференс), оно будет обработано и сохранено на video_storage_device.
add_text_prompt
< source >( inference_session: Sam3VideoInferenceSessiontext: str | list[str] ) → Sam3VideoInferenceSession
Добавьте текстовый промпт(ы) в сессию инференса.
Sam3VideoInferenceSession
класс transformers.Sam3VideoInferenceSession
< source >( video: typing.Optional[torch.FloatTensor] = 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 )
Параметры
- video (
torch.FloatTensor, необязательный) — Видео для обработки. Не требуется при потоковой передаче. - video_height (
int, необязательный) — Высота видео. - video_width (
int, необязательный) — Ширина видео. - inference_device (
torch.device, необязательный, по умолчанию"cpu") — Устройство, используемое для инференса. - inference_state_device (
torch.device, необязательный, по умолчанию"cpu") — Устройство, на котором хранится состояние инференса. - video_storage_device (
torch.device, необязательный, по умолчанию"cpu") — Устройство, на котором будет храниться видео. - dtype (
torch.dtype, необязательный, по умолчанию"float32") — Тип данных, используемый для видео. - max_vision_features_cache_size (
int, необязательный, по умолчанию 1) — Максимальное количество кэшируемых визуальных признаков.
Управляет параметрами, состоянием и кэшем сессии инференса видео.
Добавьте входные маски с автоматическим размещением на устройстве.
Добавить новый кадр с автоматическим размещением на устройстве.
Добавляет текстовый промпт в сессию и возвращает его уникальный идентификатор. Если промпт уже существует, возвращает существующий идентификатор.
Получить кадр из видео.
Получите общее количество уникальных идентификаторов объектов, полученных на данный момент в этой сессии.
get_output
< source >( obj_idx: intframe_idx: intoutput_key: stris_conditioning_frame: bool = True )
Получите вывод с умным управлением устройствами.
Соответствие идентификатора объекта индексу, при необходимости создавая новую запись.
Соответствие индекса объекта на стороне модели идентификатору объекта на стороне клиента.
Удалите входные маски.
remove_object
< source >( obj_id: intstrict: bool = False )
Удалить объект из сессии инференса. Это удалит объект со всех кадров видео.
Сбросить данные отслеживания и кэш.
Сбросить состояние сессии вывода.
Сбросить данные отслеживания, но сохранить кэш.
store_output
< source >( obj_idx: intframe_idx: intoutput_key: str | None = Noneoutput_value: typing.Union[torch.Tensor, dict, NoneType] = Noneis_conditioning_frame: bool = True )
Параметры
- obj_idx (int) — Индекс объекта.
- frame_idx (int) — Индекс кадра.
- output_key (Optional[str]) — Ключ вывода. Если значение равно None, результат сохраняется в виде словаря.
- output_value (Optional[Union[torch.Tensor, dict]]) — Значение вывода.
- is_conditioning_frame (bool) — Указывает, является ли вывод кадром для conditioning.
Сохраняйте вывод с умным управлением устройствами. Если output_key равно None, вывод сохраняется в виде словаря.
Sam3VideoSegmentationOutput
класс transformers.Sam3VideoSegmentationOutput
< source >( object_ids: list[int] | None = Noneobj_id_to_mask: dict[int, torch.FloatTensor] | 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 )
Параметры
- object_ids (
list[int], необязательный) — Список идентификаторов объектов, отслеживаемых в текущем кадре. - obj_id_to_mask (
dict[int, torch.FloatTensor], необязательный) — Словарь, сопоставляющий идентификаторы объектов с их предсказанными масками низкого разрешения. Каждая маска имеет форму(1, H_low, W_low). - obj_id_to_score (
dict[int, float], необязательный) — Словарь, сопоставляющий идентификаторы объектов с их оценками обнаружения. - obj_id_to_tracker_score (
dict[int, float], необязательный) — Словарь, сопоставляющий идентификаторы объектов их оценкам трекера для текущего кадра. - removed_obj_ids (
set[int], необязательный) — Множество идентификаторов объектов, которые были удалены (например, с помощью эвристик hotstart). - suppressed_obj_ids (
set[int], необязательный) — Множество идентификаторов объектов, подавленных в текущем кадре. - frame_idx (
int, необязательный) — Индекс кадра видео.
Базовый класс для вывода модели Sam3Video.
Sam3VideoModel
класс transformers.Sam3VideoModel
< source >( config: Sam3VideoConfig )
Параметры
- config (Sam3VideoConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Sam3 Video, выводящая «сырые» скрытые состояния без какого-либо специализированного слоя на выходе.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( inference_session: Sam3VideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs )
Параметры
- inference_session (
~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — Объект сессии видеоинференса. - frame_idx (
int, необязательный) — Индекс кадра, для которого выполняется инференс. Не требуется при инференсе на новом потоковом кадре. - frame (
torch.Tensor, необязательный) — Кадр для обработки. Указывается при потоковой обработке. - reverse (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли распространять в обратном направлении.
Передайте объекты через кадр потокового видео.
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.FloatTensor)
Параметры
- inference_session (
~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — Объект сессии видеоинференса. - start_frame_idx (
int, необязательный, по умолчанию0) — Индекс начального кадра для распространения. - max_frame_num_to_track (
int, необязательный) — Максимальное количество кадров для отслеживания. Если не указано, будут отслеживаться все кадры в видео. - reverse (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли распространять в обратном направлении. - show_progress_bar (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли отображать индикатор прогресса во время распространения.
Возвращает
Sam3VideoSegmentationOutput или tuple(torch.FloatTensor)
Объект Sam3VideoSegmentationOutput или кортеж из
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (Sam3VideoConfig) и входных данных.
Передайте промпты, чтобы получить результаты привязки для всего видео. Используется при инициализации сессии инференса с полным видео. Возвращает Sam3VideoSegmentationOutput для каждого кадра.
- object_ids (
list[int], необязательный) — Список идентификаторов объектов, отслеживаемых в текущем кадре. - obj_id_to_mask (
dict[int, torch.FloatTensor], необязательный) — Словарь, сопоставляющий идентификаторы объектов с их предсказанными масками низкого разрешения. Каждая маска имеет форму(1, H_low, W_low). - obj_id_to_score (
dict[int, float], необязательный) — Словарь, сопоставляющий идентификаторы объектов с их оценками обнаружения. - obj_id_to_tracker_score (
dict[int, float], необязательный) — Словарь, сопоставляющий идентификаторы объектов их оценкам трекера для текущего кадра. - removed_obj_ids (
set[int], необязательный) — Множество идентификаторов объектов, которые были удалены (например, с помощью эвристик hotstart). - suppressed_obj_ids (
set[int], необязательный) — Множество идентификаторов объектов, подавленных в текущем кадре. - frame_idx (
int, необязательный) — Индекс кадра видео.