Transformers documentation

SAM3 Vidéo

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

and get access to the augmented documentation experience

to get started

Ce modèle a été contribué à Hugging Face Transformers le 2025-11-19.

SAM3 Vidéo

SDPA FlashAttention

Aperçu

SAM3 (Segment Anything Model 3) a été introduit dans SAM 3: Segment Anything with Concepts.

SAM3 Video effectue le segmentation de concepts promptables (PCS) sur des vidéos. Le PCS prend du texte en entrée (par exemple, « bus scolaire jaune ») et prédit des masques d’instance et sémantiques pour chaque objet correspondant au concept, tout en préservant l’identité des objets d’un frame à l’autre de la vidéo.

Le modèle combine un module de détection (SAM3) avec un module de suivi (traceur de type SAM2) afin de permettre un suivi robuste d'objets à travers les images vidéo à l'aide de prompts textuels.

L'abstract de l'article est le suivant :

Nous présentons Segment Anything Model (SAM) 3, un modèle unifié qui détecte, segmente et suit des objets dans des images et des vidéos à partir de prompts de concepts, que nous définissons comme des phrases nominales courtes (par exemple, « yellow school bus »), des exemplaires d’images, ou une combinaison des deux. La segmentation de concepts promptable (PCS) prend de tels prompts en entrée et renvoie des masques de segmentation et des identités uniques pour toutes les instances d’objets correspondantes. Pour faire progresser la PCS, nous avons construit un moteur de données scalable qui produit un jeu de données de haute qualité avec 4M de libellés de concepts uniques, incluant des négatifs difficiles, sur des images et des vidéos. Notre modèle se compose d’un détecteur au niveau de l’image et d’un suiveur vidéo basé sur la mémoire qui partagent un seul backbone. La reconnaissance et la localisation sont découplées par une tête de présence, ce qui améliore la précision de la détection. SAM 3 double la précision des systèmes existants en PCS sur images et vidéos, et améliore les capacités précédentes de SAM sur les tâches de segmentation visuelle. Nous open source SAM 3 ainsi que notre nouveau benchmark Segment Anything with Concepts (SA-Co) pour la segmentation de concepts promptable.

Ce modèle a été contribué par yonigozlan et ronghanghu.

Exemple d'utilisation

Segmentation et suivi vidéo

Inférence vidéo préchargée

Traiter une vidéo dont toutes les images sont déjà disponibles à l'aide de prompts texte :

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}")

Vous pouvez également suivre simultanément plusieurs catégories d’objets en fournissant plusieurs prompts. Le modèle réutilise efficacement les caractéristiques visuelles pour tous les prompts :

# 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

Inférence vidéo en streaming

⚠️ **Remarque sur la qualité de l'inférence en streaming** : l'inférence en streaming désactive les heuristiques de démarrage à chaud qui suppriment les objets non appariés et les objets dupliqués, car celles-ci nécessitent un accès aux images futures pour prendre des décisions éclairées. Cela peut entraîner un plus grand nombre de fausses détections positives et de trajectoires d'objets dupliquées par rapport à l'inférence sur une vidéo préchargée. Pour obtenir les meilleurs résultats, utilisez l'inférence sur une vidéo préchargée lorsque toutes les images sont disponibles.

Pour les applications en temps réel, SAM3 Video prend en charge le traitement des images vidéo à mesure qu’elles arrivent :

# 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}")

Inférence à résolution personnalisée

⚠️ **Note sur les performances** : Les résolutions personnalisées peuvent dégrader la précision. Le modèle est conçu pour être utilisé à une résolution de 1008 px.

Pour une inférence plus rapide ou une consommation mémoire réduite :

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

classe transformers.Sam3VideoConfig

< >

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

Paramètres

  • detector_config (dict ou Sam3Config, facultatif) — Configuration du modèle de détecteur Sam3. Si aucune configuration n'est fournie, la configuration Sam3Config par défaut sera utilisée.
  • tracker_config (dict ou Sam2VideoConfig, facultatif) — Configuration pour le modèle de tracker Sam2Video. Si aucune configuration n'est fournie, la configuration Sam2VideoConfig par défaut sera utilisée.
  • initializer_range (float, facultatif, valeur par défaut 0.02) — L'écart-type de l'initialiseur `truncated_normal_initializer` pour l'initialisation des matrices de poids.
  • low_res_mask_size (int, facultatif, valeur par défaut : 288) — Taille (hauteur et largeur) des masques basse résolution produits par le tracker avant le redimensionnement à la résolution de la vidéo.
  • score_threshold_detection (float, facultatif, valeur par défaut 0,5) — Seuil de probabilité pour les sorties de détection : seules les détections dont le score est supérieur à ce seuil sont conservées.
  • det_nms_thresh (float, facultatif, valeur par défaut 0,1) — Seuil d'IoU pour la NMS (Non-Maximum Suppression) de détection.
  • assoc_iou_thresh (float, facultatif, valeur par défaut 0,1) — Seuil d'IoU pour l'appariement détection-piste. Une détection est considérée comme « appariée » à un tracklet si elle chevauche le tracklet au-delà de ce seuil. Un seuil large, comme 0,1, est souvent utilisé.
  • trk_assoc_iou_thresh (float, facultatif, valeur par défaut 0,5) — Seuil d'IoU pour l'association détection-piste, utilisé pour déterminer si un masklet est « non associé » par les détections. Un seuil plus strict, comme 0,5, est souvent utilisé.
  • new_det_thresh (float, facultatif, valeur par défaut 0,7) — Seuil de probabilité pour qu'une détection soit ajoutée en tant que nouvel objet.
  • recondition_on_trk_masks (bool, facultatif, valeur par défaut True) — Indique s'il faut utiliser les masques suivis (True) ou les masques de détection (False) pour la reconditionnement. Utilisez True lorsque les masques suivis sont de meilleure qualité et que le détecteur sert de signal de validation pour renforcer la mémoire et prévenir la dérive.
  • hotstart_delay (int, facultatif, valeur par défaut : 15) — Nombre d'images à mettre en tampon pour les sorties pendant le démarrage à chaud. Nous retenons les sorties pendant hotstart_delay images et supprimons les tracklets en fonction des heuristiques de démarrage à chaud.
  • hotstart_unmatch_thresh (int, facultatif, valeur par défaut : 8) — Nombre de frames non appariées nécessaires pour supprimer un tracklet pendant la période de hotstart.
  • hotstart_dup_thresh (int, facultatif, valeur par défaut : 8) — Nombre de frames superposées nécessaires pour supprimer un tracklet en double pendant la période de hotstart.
  • suppress_unmatched_only_within_hotstart (bool, facultatif, valeur par défaut True) — Indique s'il faut supprimer les masques uniquement au cours de la période de hotstart. Si la valeur est False, les masques peuvent être supprimés même s'ils commencent avant la période de hotstart.
  • init_trk_keep_alive (int, facultatif, valeur par défaut : 30) — Compteur de maintien de connexion initial pour les nouvelles trajectoires.
  • max_trk_keep_alive (int, facultatif, valeur par défaut : 30) — Valeur maximale du compteur de maintien en vie. Les trajectoires associées à des détections voient leur compteur incrémenté jusqu'à cette valeur.
  • min_trk_keep_alive (int, facultatif, valeur par défaut : -1) — Valeur minimale du compteur de maintien en vie. Les trajectoires sans détection correspondante voient leur compteur diminué jusqu'à cette valeur.
  • suppress_overlapping_based_on_recent_occlusion_threshold (float, facultatif, valeur par défaut 0,7) — Seuil pour supprimer les objets superposés en fonction de l'occlusion récente. Les masques superposés dont l'IoU dépasse ce seuil sont supprimés en fonction de celui qui a été le plus récemment occlus.
  • decrease_trk_keep_alive_for_empty_masklets (bool, facultatif, valeur par défaut False) — Indique s'il faut diminuer le compteur keep-alive pour les masklets dont la surface est nulle dans la prédiction de SAM2.
  • fill_hole_area (int, facultatif, valeur par défaut : 16) — Surface minimale (en pixels) pour combler les trous dans les masques et supprimer les petites taches.
  • max_num_objects (int, facultatif, valeur par défaut 10000) — Nombre maximal d'objets à suivre. La valeur par défaut de 10000 désactive en pratique cette limite.
  • recondition_every_nth_frame (int, facultatif, valeur par défaut 16) — Fréquence de la reconditionnement du masque (en nombre de frames). Définir à 0 pour désactiver le reconditionnement.
  • high_conf_thresh (float, facultatif, valeur par défaut 0,8) — Seuil de confiance élevé pour le reconditionnement. Seules les détections supérieures à ce seuil peuvent reconditionner des tracklets.
  • high_iou_thresh (float, facultatif, valeur par défaut 0.8) — Seuil d'IoU élevé pour le reconditionnement. Seules les détections dont l'IoU est supérieur à ce seuil peuvent reconditionner des tracklets.

Il s'agit de la classe de configuration permettant de stocker la configuration d'un Sam3VideoModel. Elle est utilisée pour instancier un modèle Sam3 Video en fonction des arguments spécifiés, en définissant l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de facebook/sam3

Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.

Exemple :

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

Sam3VideoProcessor

classe transformers.Sam3VideoProcessor

< >

( image_processorvideo_processortokenizertarget_size: int | None = None**kwargs )

Paramètres

  • image_processor (Sam3ImageProcessor) — Le processeur d’images est une entrée obligatoire.
  • video_processor (video_processor_class) — Le processeur vidéo est une entrée obligatoire.
  • tokenizer (CLIPTokenizer) — Le tokenizer est une entrée obligatoire.
  • target_size (int, facultatif) — La taille cible (target_size, target_size) à laquelle l'image sera redimensionnée.

Construit un Sam3VideoProcessor qui encapsule un processeur d’images, un processeur de vidéos et un tokeniseur en un seul processeur.

Sam3VideoProcessor propose toutes les fonctionnalités de Sam3ImageProcessor, video_processor_class et CLIPTokenizer. Consultez ~Sam3ImageProcessor, ~video_processor_class et ~CLIPTokenizer pour plus d’informations.

__call__

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonesegmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = 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

Paramètres

  • images (ImageInput, optional) — The image(s) to process.
  • segmentation_maps (ImageInput, facultatif) — Les cartes de segmentation à traiter (facultatif, pour le processeur d’images).
  • original_sizes (list[list[float]], torch.Tensor, facultatif) — Les dimensions d'origine des images. Utilisé uniquement lorsque images n'est pas fourni.
  • return_tensors (Union[str, ~utils.generic.TensorType], facultatif) — Si défini, renvoie des tenseurs d'un framework particulier. Les valeurs acceptables sont :
    • 'pt' : Renvoie des objets torch.Tensor de PyTorch.
    • 'np' : Renvoie des objets NumPy np.ndarray.

Retourne

Un BatchEncoding avec les champs suivants

  • pixel_values (torch.Tensor) : l’image (ou les images) traitée(s).
  • original_sizes (list[list[float]]) : Les dimensions d’origine des images.
  • labels (torch.Tensor, facultatif) : les cartes de segmentation traitées (si fournies).

postprocess_outputs

< >

( inference_sessionmodel_outputsoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = None ) → dict

Paramètres

  • inference_session (Sam3VideoInferenceSession) — Objet de session d'inférence.
  • model_outputs (Sam3VideoSegmentationOutput) — La sortie brute du modèle issue de Sam3VideoModel.forward().
  • original_sizes (list[list[float]] ou torch.Tensor, facultatif) — Tailles d'origine des images [hauteur, largeur]. Obligatoire pour l'inférence en streaming lorsque video_height/video_width ne sont pas définis dans la session.

Retourne

dict

Un dictionnaire contenant les clés suivantes :

  • object_ids (torch.Tensor de forme (num_objects,)) : identifiants des objets pour chaque objet détecté.
  • scores (torch.Tensor de forme (num_objects,)) : Scores de détection pour chaque objet.
  • boxes (torch.Tensor de forme (num_objects, 4)) : Boîtes englobantes au format XYXY (top_left_x, top_left_y, bottom_right_x, bottom_right_y).
  • masks (torch.Tensor de forme (num_objects, height, width)) : Masques de segmentation binaires pour chaque objet à la résolution d'origine de la vidéo.
  • prompt_to_obj_ids (dict[str, list[int]]) : Correspondance entre le texte du prompt et la liste des identifiants d'objets détectés par ce prompt.

Post-traitez les sorties du modèle pour obtenir les masques, les boîtes et les scores finaux.

init_video_session

< >

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

Paramètres

  • video (VideoInput, facultatif) — La vidéo à traiter. Aucun besoin de la fournir lors d’un flux en continu.
  • inference_device (str ou torch.device, facultatif, par défaut “cpu”) — L’appareil à utiliser pour l’inférence.
  • inference_state_device (str ou torch.device, facultatif) — L'appareil sur lequel stocker l'état d'inférence.
  • processing_device (str ou torch.device, facultatif) — L'appareil à utiliser pour le traitement de la vidéo.
  • video_storage_device (str ou torch.device, facultatif) — L'appareil sur lequel stocker les images vidéo traitées.
  • max_vision_features_cache_size (int, facultatif, valeur par défaut 1) — Nombre maximal de fonctionnalités visuelles à mettre en cache.
  • dtype (torch.dtype, facultatif, par défaut torch.float32) — Le dtype torch à utiliser pour l'ensemble de la session.

Initialise une session vidéo pour l'inférence. Si une vidéo est fournie (inférence asynchrone), la vidéo sera traitée et stockée sur le video_storage_device.

add_text_prompt

< >

( inference_session: Sam3VideoInferenceSessiontext: str | list[str] ) → Sam3VideoInferenceSession

Paramètres

  • inference_session (Sam3VideoInferenceSession) — La session d'inférence.
  • text (str ou list[str]) — Le ou les prompts de texte à ajouter.

Retourne

Sam3VideoInferenceSession

La session d'inférence avec le ou les prompts de texte ajoutés.

Ajouter des invite(s) de texte à la session d'inférence.

Sam3VideoInferenceSession

classe transformers.Sam3VideoInferenceSession

< >

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

Paramètres

  • video (torch.FloatTensor, facultatif) — La vidéo à traiter. Inutile de la fournir lors d’un streaming.
  • video_height (int, facultatif) — La hauteur de la vidéo.
  • video_width (int, facultatif) — La largeur de la vidéo.
  • inference_device (torch.device, facultatif, par défaut "cpu") — L’appareil à utiliser pour l’inférence.
  • inference_state_device (torch.device, facultatif, par défaut "cpu") — L’appareil sur lequel stocker l’état d’inférence.
  • video_storage_device (torch.device, facultatif, par défaut "cpu") — L’appareil sur lequel stocker la vidéo.
  • dtype (torch.dtype, facultatif, par défaut "float32") — Le dtype à utiliser pour la vidéo.
  • max_vision_features_cache_size (int, facultatif, valeur par défaut 1) — Nombre maximal de fonctionnalités visuelles à mettre en cache.

Gère les paramètres, l'état et le cache des sessions d'inférence vidéo.

add_mask_inputs

< >

( obj_idx: intframe_idx: intinputs: Tensor )

Ajoutez des entrées de masque avec un placement automatique sur l'appareil.

add_new_frame

< >

( pixel_values: Tensorframe_idx: int | None = None )

Ajouter un nouveau frame avec un placement automatique des appareils.

add_prompt

< >

( prompt_text: str )

Ajoute un prompt texte à la session et renvoie son identifiant unique. Si le prompt existe déjà, renvoie l'identifiant existant.

get_frame

< >

( frame_idx: int )

Obtenir une image à partir d'une vidéo.

get_obj_num

< >

( )

Obtenir le nombre total d'identifiants d'objets uniques reçus jusqu'à présent dans cette session.

get_output

< >

( obj_idx: intframe_idx: intoutput_key: stris_conditioning_frame: bool = True )

Paramètres

  • obj_idx (int) — L'index de l'objet.
  • frame_idx (int) — L'index de la frame.
  • output_key (str) — La clé de la sortie.
  • is_conditioning_frame (bool) — Indique si la sortie correspond à une image de conditionnement.

Obtenez la sortie avec une gestion intelligente des appareils.

obj_id_to_idx

< >

( obj_id: int )

Associer l'ID d'objet à un index, en créant une nouvelle entrée si nécessaire.

obj_idx_to_id

< >

( obj_idx: int )

Associer l'index d'objet côté modèle à l'identifiant d'objet côté client.

remove_mask_inputs

< >

( obj_idx: intframe_idx: int )

Supprimer les entrées de masque.

remove_object

< >

( obj_id: intstrict: bool = False )

Paramètres

  • obj_id (int) — L'identifiant de l'objet à supprimer.
  • strict (bool, facultatif, valeur par défaut False) — Indique s'il faut lever une erreur si l'objet n'existe pas.

Supprime un objet de la session d’inférence. Cela supprime l’objet de toutes les images de la vidéo.

reset_inference_session

< >

( )

Réinitialiser les données de suivi et le cache.

reset_state

< >

( )

Réinitialiser l'état de la session d'inférence.

reset_tracking_data

< >

( )

Réinitialiser les données de suivi mais conserver le cache.

store_output

< >

( obj_idx: intframe_idx: intoutput_key: str | None = Noneoutput_value: typing.Union[torch.Tensor, dict, NoneType] = Noneis_conditioning_frame: bool = True )

Paramètres

  • obj_idx (int) — L'index de l'objet.
  • frame_idx (int) — L'index de la frame.
  • output_key (Optional[str]) — La clé de la sortie. Si None, la sortie est stockée sous forme de dictionnaire.
  • output_value (Optional[Union[torch.Tensor, dict]]) — La valeur de la sortie.
  • is_conditioning_frame (bool) — Indique si la sortie correspond à une image de conditionnement.

Stockage de la sortie avec une gestion intelligente des appareils. Si output_key est None, la sortie est stockée sous forme de dictionnaire.

Sam3VideoSegmentationOutput

classe transformers.Sam3VideoSegmentationOutput

< >

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

Paramètres

  • object_ids (list[int], facultatif) — Liste des identifiants d'objets suivis dans l'image courante.
  • obj_id_to_mask (dict[int, torch.FloatTensor], facultatif) — Dictionnaire associant les identifiants d'objets à leurs masques prédits en basse résolution. Chaque masque a la forme (1, H_low, W_low).
  • obj_id_to_score (dict[int, float], facultatif) — Dictionnaire associant les identifiants d’objets à leurs scores de détection.
  • obj_id_to_tracker_score (dict[int, float], facultatif) — Dictionnaire associant les identifiants d'objets à leurs scores de suivi pour l'image courante.
  • removed_obj_ids (set[int], facultatif) — Ensemble des identifiants d’objets qui ont été supprimés (par exemple, via des heuristiques de démarrage à chaud).
  • suppressed_obj_ids (set[int], facultatif) — Ensemble des identifiants d'objets qui ont été supprimés dans la frame actuelle.
  • frame_idx (int, facultatif) — L'index de la frame de la vidéo.

Classe de base pour la sortie du modèle Sam3Video.

Sam3VideoModel

classe transformers.Sam3VideoModel

< >

( config: Sam3VideoConfig )

Paramètres

  • config (Sam3VideoConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L'initialisation à partir d'un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.

Le modèle Sam3 Video brut, qui produit des états cachés bruts sans aucune tête spécifique au sommet.

Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)

Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.

forward

< >

( inference_session: Sam3VideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs )

Paramètres

  • inference_session (~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — Objet de session d'inférence vidéo.
  • frame_idx (int, facultatif) — L’index de la frame sur laquelle exécuter l’inférence. Pas besoin de le fournir lors de l’inférence sur une nouvelle frame diffusée en continu.
  • frame (torch.Tensor, facultatif) — La frame à traiter. À fournir lors du streaming.
  • reverse (bool, facultatif, par défaut False) — Indique s'il faut propager en sens inverse.

Propagez les objets à travers une image vidéo diffusée en continu.

propagate_in_video_iterator

< >

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

Paramètres

  • inference_session (~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — Objet de session d'inférence vidéo.
  • start_frame_idx (int, facultatif, par défaut 0) — Index de la première image pour la propagation.
  • max_frame_num_to_track (int, facultatif) — Nombre maximal de frames à suivre. Si non fourni, toutes les frames de la vidéo seront suivies.
  • reverse (bool, facultatif, par défaut False) — Indique s'il faut propager en sens inverse.
  • show_progress_bar (bool, facultatif, valeur par défaut False) — Indique s'il faut afficher une barre de progression pendant la propagation.

Retourne

Sam3VideoSegmentationOutput ou tuple(torch.FloatTensor)

Un Sam3VideoSegmentationOutput ou un tuple de torch.FloatTensor (si return_dict=False est passé ou si config.return_dict=False) comprenant divers éléments en fonction de la configuration (Sam3VideoConfig) et des entrées.

Propage les invites pour obtenir les résultats de localisation sur l’ensemble de la vidéo. Utilisé lors de l’initialisation d’une session d’inférence avec une vidéo complète. Produit un Sam3VideoSegmentationOutput pour chaque image.

  • object_ids (list[int], facultatif) — Liste des identifiants d'objets suivis dans l'image actuelle.
  • obj_id_to_mask (dict[int, torch.FloatTensor], facultatif) — Dictionnaire associant les identifiants d'objets à leurs masques prédits en basse résolution. Chaque masque a la forme (1, H_low, W_low).
  • obj_id_to_score (dict[int, float], facultatif) — Dictionnaire associant les identifiants d'objets à leurs scores de détection.
  • obj_id_to_tracker_score (dict[int, float], facultatif) — Dictionnaire associant les identifiants d'objets à leurs scores de suivi pour l'image courante.
  • removed_obj_ids (set[int], facultatif) — Ensemble des identifiants d'objets qui ont été supprimés (par exemple, via des heuristiques de démarrage à chaud).
  • suppressed_obj_ids (set[int], facultatif) — Ensemble des identifiants d'objets qui ont été supprimés dans le cadre actuel.
  • frame_idx (int, facultatif) — L'index de la frame de la vidéo.
Update on GitHub