Transformers documentation

MM Grounding DINO

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

Este modelo se publicó en HF papers el 2024-01-04 y se contribuyó a Hugging Face Transformers el 2025-08-01.

MM Grounding DINO

El modelo MM Grounding DINO fue propuesto en An Open and Comprehensive Pipeline for Unified Object Grounding and Detection por Xiangyu Zhao, Yicheng Chen, Shilin Xu, Xiangtai Li, Xinjiang Wang, Yining Li, Haian Huang.

MM Grounding DINO mejora el Grounding DINO al optimizar la cabeza de clase contrastiva y eliminar el intercambio de parámetros en el decodificador, lo que mejora el rendimiento de detección zero-shot tanto en COCO (50.6(+2.2) AP) como en LVIS (31.9(+11.8) val AP y 41.4(+12.6) minival AP).

Puedes encontrar todos los checkpoints originales de MM Grounding DINO en la colección MM Grounding DINO. Este modelo también admite inferencia de LLMDet. Puedes encontrar los checkpoints de LLMDet en la colección LLMDet.

Haz clic en los modelos MM Grounding DINO en la barra lateral derecha para ver más ejemplos de cómo aplicar MM Grounding DINO a diferentes tareas de MM Grounding DINO.

El siguiente ejemplo demuestra cómo generar texto a partir de una imagen con la clase AutoModelForZeroShotObjectDetection.

AutoModel
import torch

from transformers import AutoModelForZeroShotObjectDetection, AutoProcessor
from transformers.image_utils import load_image


# Prepare processor and model
model_id = "openmmlab-community/mm_grounding_dino_tiny_o365v1_goldg_v3det"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id, device_map="auto")

# Prepare inputs
image_url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = load_image(image_url)
text_labels = [["a cat", "a remote control"]]
inputs = processor(images=image, text=text_labels, return_tensors="pt").to(model.device)

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

# Postprocess outputs
results = processor.post_process_grounded_object_detection(
    outputs,
    threshold=0.4,
    target_sizes=[(image.height, image.width)]
)

# Retrieve the first image result
result = results[0]
for box, score, labels in zip(result["boxes"], result["scores"], result["labels"]):
    box = [round(x, 2) for x in box.tolist()]
    print(f"Detected {labels} with confidence {round(score.item(), 3)} at location {box}")

Notas

MMGroundingDinoConfig

clase transformers.MMGroundingDinoConfig

< >

( 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_queries: int = 900encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8activation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0auxiliary_loss: bool = Falseposition_embedding_type: str = 'sine'num_feature_levels: int = 4encoder_n_points: int = 4decoder_n_points: int = 4two_stage: bool = Trueclass_cost: float = 1.0bbox_cost: float = 5.0giou_cost: float = 2.0bbox_loss_coefficient: float = 5.0giou_loss_coefficient: float = 2.0focal_alpha: float = 0.25disable_custom_kernels: bool = Falsemax_text_len: int = 256text_enhancer_dropout: float | int = 0.0fusion_droppath: float | int = 0.1fusion_dropout: float | int = 0.0embedding_init_target: bool = Truequery_dim: int = 4positional_embedding_temperature: int = 20decoder_bbox_embed_share: bool = Truedecoder_cls_embed_share: bool = Trueinit_std: float = 0.02layer_norm_eps: float = 1e-05tie_word_embeddings: bool = True )

Parámetros

  • is_encoder_decoder (bool, opcional, valor predeterminado True) — Indica si el modelo se utiliza como codificador/decodificador o no.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — La configuración del modelo backbone.
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — El objeto de configuración o el diccionario del backbone de texto.
  • num_queries (int, opcional, valor predeterminado 900) — Número de consultas de objetos, es decir, ranuras de detección. Este es el número máximo de objetos que MMGroundingDinoModel puede detectar en una sola imagen.
  • encoder_layers (int, opcional, valor predeterminado 6) — Número de capas ocultas en el codificador del Transformer. Usará el mismo valor que num_layers si no se establece.
  • encoder_ffn_dim (int, opcional, valor predeterminado 2048) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el codificador.
  • encoder_attention_heads (int, opcional, valor predeterminado 8) — Número de cabezas de atención para cada capa de atención en el codificador Transformer.
  • decoder_layers (int, opcional, valor predeterminado 6) — Número de capas ocultas en el decodificador del Transformer. Si no se establece, se usará el mismo valor que num_layers.
  • decoder_ffn_dim (int, opcional, valor predeterminado 2048) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el decodificador.
  • decoder_attention_heads (int, opcional, valor predeterminado 8) — Número de cabezas de atención para cada capa de atención en el decodificador del Transformer.
  • activation_function (str, opcional, valor predeterminado relu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo, "gelu", "relu", "silu", etc.
  • d_model (int, opcional, valor predeterminado 256) — Tamaño de las capas del codificador y de la capa pooler.
  • dropout (Union[float, int], opcional, valor predeterminado 0.1) — La proporción para todas las capas de dropout.
  • attention_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las probabilidades de atención.
  • activation_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada.
  • auxiliary_loss (bool, opcional, valor predeterminado False) — Si se deben utilizar las pérdidas de decodificación auxiliares (pérdida en cada capa del decodificador).
  • position_embedding_type (str, opcional, valor predeterminado "sine") — Tipo de embeddings de posición que se utilizará sobre las características de la imagen. Uno de "sine" o "learned".
  • num_feature_levels (int, opcional, valor predeterminado 4) — El número de niveles de características de entrada.
  • encoder_n_points (int, opcional, valor predeterminado 4) — El número de claves muestreadas en cada nivel de características para cada cabeza de atención en el codificador.
  • decoder_n_points (int, opcional, valor predeterminado 4) — El número de claves muestreadas en cada nivel de características para cada cabeza de atención en el decodificador.
  • two_stage (bool, opcional, valor predeterminado True) — Si se aplica un DETR deformable de dos etapas, donde las propuestas de región también se generan mediante una variante de Grounding DINO, que se alimenta al decodificador para un refinamiento iterativo de las cajas delimitadoras.
  • class_cost (float, opcional, valor predeterminado 1.0) — Peso relativo del error de clasificación en el coste de correspondencia húngara.
  • bbox_cost (float, opcional, valor predeterminado 5.0) — Peso relativo del error de la caja delimitadora L1 en el costo de correspondencia húngara.
  • giou_cost (float, opcional, valor predeterminado 2.0) — Peso relativo de la pérdida de IoU generalizada en el costo de correspondencia húngara.
  • bbox_loss_coefficient (float, opcional, valor predeterminado 5.0) — Peso relativo de la pérdida de caja delimitadora L1 en la pérdida de segmentación panóptica.
  • giou_loss_coefficient (float, opcional, valor predeterminado 2.0) — Peso relativo de la pérdida de IoU generalizada en la pérdida de segmentación panóptica.
  • focal_alpha (float, opcional, valor predeterminado 0.25) — Parámetro alfa en la pérdida focal.
  • disable_custom_kernels (bool, opcional, valor predeterminado False) — Desactiva el uso de kernels personalizados de CUDA y CPU. Esta opción es necesaria para la exportación a ONNX, ya que los kernels personalizados no son compatibles con la exportación ONNX de PyTorch.
  • max_text_len (int, opcional, valor predeterminado 256) — La longitud máxima de la entrada de texto.
  • text_enhancer_dropout (float, opcional, valor predeterminado 0.0) — La proporción de dropout para el mejorador de texto.
  • fusion_droppath (float, opcional, valor predeterminado 0.1) — La proporción de droppath para el módulo de fusión.
  • fusion_dropout (float, opcional, valor predeterminado 0.0) — La proporción de dropout para el módulo de fusión.
  • embedding_init_target (bool, opcional, valor predeterminado True) — Si se debe inicializar el objetivo con pesos de Embedding.
  • query_dim (int, opcional, valor predeterminado 4) — La dimensión del vector de consulta.
  • positional_embedding_temperature (float, opcional, valor predeterminado 20) — La temperatura para el Sine Positional Embedding que se utiliza junto con el vision backbone.
  • decoder_bbox_embed_share (bool, opcional, valor predeterminado True) — Si se comparte la cabeza de regresión de bbox para todas las capas del decodificador.
  • decoder_cls_embed_share (bool, opcional, valor predeterminado True) — Si se comparte la cabeza de incrustación de clase para todas las capas del decodificador.
  • init_std (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • layer_norm_eps (float, opcional, valor predeterminado 1e-05) — El epsilon utilizado por las capas de normalización de capa.
  • tie_word_embeddings (bool, opcional, valor predeterminado True) — Si se deben vincular las matrices de pesos de embeddings según el mapeo tied_weights_keys del modelo.

Esta es la clase de configuración para almacenar la configuración de un modelo Mm Grounding Dino. Se utiliza para instanciar un modelo Mm Grounding Dino según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de openmmlab-community/mm_grounding_dino_tiny_o365v1_goldg_v3det

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

Ejemplos:

>>> from transformers import MMGroundingDinoConfig, MMGroundingDinoModel

>>> # Initializing a MM Grounding DINO configuration
>>> configuration = MMGroundingDinoConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = MMGroundingDinoModel(configuration)

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

MMGroundingDinoModel

clase transformers.MMGroundingDinoModel

< >

( config: MMGroundingDinoConfig )

Parámetros

  • config (MMGroundingDinoConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El modelo Grounding DINO básico (constituido por un backbone y un Transformer encoder-decoder) que genera hidden-states sin procesar, sin ninguna cabeza específica en la parte superior.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( pixel_values: Tensorinput_ids: Tensortoken_type_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonepixel_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs = Noneoutput_attentions = Noneoutput_hidden_states = Nonereturn_dict = None**kwargs ) → MMGroundingDinoModelOutput or tuple(torch.Tensor)

Parámetros

  • pixel_values (torch.Tensor de forma (batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando GroundingDinoImageProcessor. Consulte GroundingDinoImageProcessor.call() para más detalles (GroundingDinoProcessor utiliza GroundingDinoImageProcessor para procesar las imágenes).
  • input_ids (torch.LongTensor de forma (batch_size, text_sequence_length)) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada si lo proporcionas. Los índices se pueden obtener usando AutoTokenizer. Consulta BertTokenizer.call() para más detalles.

    Los índices se pueden obtener usando AutoTokenizer. Consulte BertTokenizer.call() para obtener más detalles.

  • token_type_ids (torch.LongTensor de forma (batch_size, text_sequence_length), opcional) — Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en [0, 1]: 0 corresponde a un token de sentence A , 1 corresponde a un token de sentence B

    ¿Qué son los IDs de tipo de token?

  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • pixel_mask (torch.Tensor de forma (batch_size, height, width), opcional) — Máscara para evitar realizar atención sobre los valores de píxeles de relleno. Valores de la máscara seleccionados en [0, 1]:
    • 1 para los píxeles reales (es decir, no enmascarados),
    • 0 para los píxeles que son relleno (es decir, mascarados).

    ¿Qué son las máscaras de atención?

  • encoder_outputs (`) -- Tuple consists of (last_hidden_state, *optional*: hidden_states, *optional*: attentions) last_hidden_stateof shape(batch_size, sequence_length, hidden_size)`, optional) is a sequence of hidden-states at the output of the last layer of the encoder. Used in the cross-attention of the decoder.
  • output_attentions (`) -- Whether or not to return the attentions tensors of all attention layers. See attentions` under returned tensors for more detail.
  • output_hidden_states (`) -- Whether or not to return the hidden states of all layers. See hidden_states` under returned tensors for more detail.
  • return_dict (“) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple.

Devuelve

MMGroundingDinoModelOutput o tuple(torch.Tensor)

Un MMGroundingDinoModelOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (MMGroundingDinoConfig) y las entradas.

El método forward de MMGroundingDinoModel reemplaza el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • last_hidden_state (torch.Tensor de forma (batch_size, num_queries, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del decodificador del modelo.

  • init_reference_points (torch.Tensor de forma (batch_size, num_queries, 4)) — Puntos de referencia iniciales enviados a través del decodificador Transformer.

  • intermediate_hidden_states (torch.Tensor de forma (batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermedios apilados (salida de cada capa del decodificador).

  • intermediate_reference_points (torch.Tensor de forma (batch_size, config.decoder_layers, num_queries, 4)) — Puntos de referencia intermedios apilados (puntos de referencia de cada capa del decodificador).

  • decoder_hidden_states (tuple[torch.Tensor], opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del decodificador en la salida de cada capa más las salidas de la incrustación inicial.

  • decoder_attentions (tuple[tuple[torch.Tensor]], opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

  • encoder_last_hidden_state_vision (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.

  • encoder_last_hidden_state_text (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.

  • encoder_vision_hidden_states (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de los embeddings visuales + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size). Estados ocultos del codificador visual en la salida de cada capa más las salidas de los embeddings iniciales.

  • encoder_text_hidden_states (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones de texto + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size). Estados ocultos del codificador de texto en la salida de cada capa más las salidas de las incrustaciones iniciales.

  • encoder_attentions (tuple(tuple(torch.Tensor)), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de tuplas de torch.Tensor (una para la atención de cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de atención después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención texto-visión, visión-texto, text-enhancer (autoatención) y atención deformable multiescala. softmax de atención, utilizado para calcular la media ponderada en las cabezas de biatención.

  • enc_outputs_class (torch.Tensor de forma (batch_size, sequence_length, config.num_labels), opcional, devuelto cuando config.two_stage=True) — Puntuaciones de las cajas delimitadoras predichas, donde las config.num_queries cajas delimitadoras con mayor puntuación se seleccionan como propuestas de región en la primera etapa. Salida de la clasificación binaria de cajas delimitadoras (es decir, primer plano y fondo).

  • enc_outputs_coord_logits (torch.Tensor de forma (batch_size, sequence_length, 4), opcional, devuelto cuando config.two_stage=True) — Logits de las coordenadas de las cajas delimitadoras predichas en la primera etapa.

  • encoder_logits (torch.Tensor de forma (batch_size, sequence_length, config.num_labels), opcional, devuelto cuando config.two_stage=True) — Logits de las config.num_queries cajas delimitadoras con mayor puntuación en la primera etapa.

  • encoder_pred_boxes (torch.Tensor de forma (batch_size, sequence_length, 4), opcional, devuelto cuando config.two_stage=True) — Coordenadas de las config.num_queries cajas delimitadoras con mayor puntuación en la primera etapa.

Ejemplos:

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

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> text = "a cat."

>>> processor = AutoProcessor.from_pretrained("IDEA-Research/grounding-dino-tiny")
>>> model = AutoModel.from_pretrained("IDEA-Research/grounding-dino-tiny")

>>> inputs = processor(images=image, text=text, return_tensors="pt")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 900, 256]

MMGroundingDinoForObjectDetection

clase transformers.MMGroundingDinoForObjectDetection

< >

( config: MMGroundingDinoConfig )

Parámetros

  • config (MMGroundingDinoConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

Modelo Grounding DINO (constituido por un backbone y un Transformer encoder-decoder) con cabezas de detección de objetos en la parte superior, para tareas como la detección COCO.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( pixel_values: Tensorinput_ids: LongTensortoken_type_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonepixel_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: transformers.models.mm_grounding_dino.modeling_mm_grounding_dino.MMGroundingDinoEncoderOutput | tuple | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: list[dict[str, typing.Union[torch.LongTensor, torch.Tensor]]] | None = None**kwargs )

Parámetros

  • pixel_values (torch.Tensor de forma (batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando GroundingDinoImageProcessor. Consulte GroundingDinoImageProcessor.call() para más detalles (GroundingDinoProcessor utiliza GroundingDinoImageProcessor para procesar las imágenes).
  • input_ids (torch.LongTensor de forma (batch_size, text_sequence_length)) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada si lo proporcionas. Los índices se pueden obtener usando AutoTokenizer. Consulta BertTokenizer.call() para más detalles.

    Los índices se pueden obtener usando AutoTokenizer. Consulte BertTokenizer.call() para obtener más detalles.

  • token_type_ids (torch.LongTensor de forma (batch_size, text_sequence_length), opcional) — Índices de tokens de segmento para indicar las primeras y segundas partes de las entradas. Los índices se seleccionan en [0, 1]: 0 corresponde a un token de sentence A , 1 corresponde a un token de sentence B

    ¿Qué son los IDs de tipo de token?

  • attention_mask (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • pixel_mask (torch.BoolTensor de forma (batch_size, height, width), opcional) — Máscara para evitar realizar atención sobre los valores de píxeles de relleno. Valores de la máscara seleccionados en [0, 1]:
    • 1 para los píxeles reales (es decir, no enmascarados),
    • 0 para los píxeles que son relleno (es decir, mascarados).

    ¿Qué son las máscaras de atención?

  • encoder_outputs (Union[~models.mm_grounding_dino.modeling_mm_grounding_dino.MMGroundingDinoEncoderOutput, tuple], opcional) — La tupla consiste en (last_hidden_state, opcional: hidden_states, opcional: attentions) last_hidden_state de forma (batch_size, sequence_length, hidden_size), opcional) es una secuencia de estados ocultos en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador.
  • output_attentions (bool, opcional) — Indica si se deben devolver los tensores de atención de todas las capas de atención. Consulte attentions en los tensores devueltos para obtener más detalles.
  • output_hidden_states (bool, opcional) — Indica si se deben devolver los estados ocultos de todas las capas. Consulte hidden_states en los tensores devueltos para obtener más detalles.
  • return_dict (bool, opcional) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple.
  • labels (list[Dict] de longitud (batch_size,), opcional) — Etiquetas para calcular la pérdida de bipartite matching. Lista de diccionarios, donde cada diccionario contiene al menos las siguientes 2 claves: ‘class_labels’ y ‘boxes’ (las etiquetas de clase y las cajas delimitadoras de una imagen del lote, respectivamente). Las etiquetas de clase en sí deben ser un torch.LongTensor de longitud (number of bounding boxes in the image,) y las cajas un torch.Tensor de forma (number of bounding boxes in the image, 4).

El método forward de MMGroundingDinoForObjectDetection sobrescribe el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

Ejemplos:

>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> import torch
>>> from PIL import Image
>>> from transformers import AutoProcessor, AutoModelForZeroShotObjectDetection

>>> model_id = "IDEA-Research/grounding-dino-tiny"
>>> device = "cuda"

>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id).to(device)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> # Check for cats and remote controls
>>> text_labels = [["a cat", "a remote control"]]

>>> inputs = processor(images=image, text=text_labels, return_tensors="pt").to(device)
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> results = processor.post_process_grounded_object_detection(
...     outputs,
...     threshold=0.4,
...     text_threshold=0.3,
...     target_sizes=[(image.height, image.width)]
... )
>>> # Retrieve the first image result
>>> result = results[0]
>>> for box, score, text_label in zip(result["boxes"], result["scores"], result["text_labels"]):
...     box = [round(x, 2) for x in box.tolist()]
...     print(f"Detected {text_label} with confidence {round(score.item(), 3)} at location {box}")
Detected a cat with confidence 0.479 at location [344.7, 23.11, 637.18, 374.28]
Detected a cat with confidence 0.438 at location [12.27, 51.91, 316.86, 472.44]
Detected a remote control with confidence 0.478 at location [38.57, 70.0, 176.78, 118.18]
Update on GitHub