Transformers documentation
Grounding DINO
Este modelo se publicó en HF papers el 2023-03-09 y se contribuyó a Hugging Face Transformers el 2024-04-11.
Grounding DINO
Resumen
El modelo Grounding DINO se propuso en Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection de Shilong Liu, Zhaoyang Zeng, Tianhe Ren, Feng Li, Hao Zhang, Jie Yang, Chunyuan Li, Jianwei Yang, Hang Su, Jun Zhu, Lei Zhang. Grounding DINO extiende un modelo de detección de objetos de conjunto cerrado con un codificador de texto, lo que permite la detección de objetos de conjunto abierto. El modelo logra resultados notables, como 52,5 AP en COCO zero-shot.
El resumen del artículo es el siguiente:
En este artículo, presentamos un detector de objetos de conjunto abierto, llamado Grounding DINO, que combina el detector basado en Transformer DINO con el preentrenamiento con anclaje, lo que permite detectar objetos arbitrarios mediante entradas humanas como nombres de categorías o expresiones de referencia. La solución clave para la detección de objetos de conjunto abierto es introducir el lenguaje en un detector de conjunto cerrado para la generalización de conceptos de conjunto abierto. Para fusionar de manera efectiva las modalidades de lenguaje y visión, dividimos conceptualmente un detector de conjunto cerrado en tres fases y proponemos una solución de fusión estrecha, que incluye un mejorador de características, una selección de consultas guiada por el lenguaje y un decodificador de multimodalidad para la fusión entre modalidades. Si bien los trabajos anteriores evalúan principalmente la detección de objetos de conjunto abierto en categorías novedosas, proponemos realizar también evaluaciones en la comprensión de expresiones de referencia para objetos especificados con atributos. Grounding DINO rinde de manera notable en los tres escenarios, incluidos los puntos de referencia en COCO, LVIS, ODinW y RefCOCO/+/g. Grounding DINO alcanza un AP de 52.5 en el punto de referencia de transferencia sin ejemplos de detección de COCO, es decir, sin ningún dato de entrenamiento de COCO. Establece un nuevo récord en el punto de referencia sin ejemplos de ODinW con un AP medio de 26.1.
Grounding DINO overview. Taken from the original paper. Este modelo fue aportado por EduardoPacheco y nielsr. El código original se puede encontrar aquí.
Consejos de uso
- Se puede usar GroundingDinoProcessor para preparar pares de imagen y texto para el modelo.
- Para separar clases en el texto, use un punto, por ejemplo, “a cat. a dog.”
- Al usar múltiples clases (p. ej.
"a cat. a dog."), usepost_process_grounded_object_detectionde GroundingDinoProcessor para postprocesar las salidas. Dado que las etiquetas devueltas porpost_process_object_detectionrepresentan los índices de la dimensión del modelo donde prob > threshold.
Así es como se utiliza el modelo para la detección de objetos en cero disparos:
import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForZeroShotObjectDetection
model_id = "IDEA-Research/grounding-dino-tiny"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id, device_map="auto")
image_url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)
# Check for cats and remote controls
text_labels = [["a cat", "a remote control"]]
inputs = processor(images=image, text=text_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
results = processor.post_process_grounded_object_detection(
outputs,
inputs.input_ids,
threshold=0.4,
text_threshold=0.3,
target_sizes=[image.size[::-1]]
)
# 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}")
Detected a cat with confidence 0.468 at location [344.78, 22.9, 637.3, 373.62]
Detected a cat with confidence 0.426 at location [11.74, 51.55, 316.51, 473.22]Grounded SAM
Se puede combinar Grounding DINO con el modelo Segment Anything para la generación de máscaras basadas en texto, tal como se introduce en Grounded SAM: Assembling Open-World Models for Diverse Visual Tasks. Puede consultar este cuaderno de demostración 🌍 para más detalles.
Grounded SAM overview. Taken from the original repository. Recursos
Una lista de recursos oficiales de Hugging Face y de la comunidad (indicados con 🌎) para ayudarte a empezar con Grounding DINO. Si te interesa enviar un recurso para que se incluya aquí, no dudes en abrir una Pull Request y la revisaremos. Lo ideal es que el recurso demuestre algo nuevo en lugar de duplicar un recurso existente.
- Los cuadernos de demostración sobre inferencia con Grounding DINO, así como su combinación con SAM, se pueden encontrar aquí. 🌎
GroundingDinoImageProcessor
clase transformers.GroundingDinoImageProcessor
< source >( **kwargs: *<class 'transformers.models.grounding_dino.image_processing_grounding_dino.GroundingDinoImageProcessorKwargs'> )
Parámetros
- do_convert_rgb (
bool, kwargs, opcional) — Si se debe convertir la imagen a RGB. - do_resize (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe redimensionar la imagen. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, por defecto{'shortest_edge' -- 800, 'longest_edge': 1333}): Describe las dimensiones de entrada máximas para el modelo. - default_to_square (
bool, kwargs, opcional, valor predeterminadoFalse) — Si se debe usar una imagen cuadrada por defecto al redimensionar, si size es un int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamaño de la imagen de salida tras aplicarcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, por defecto2) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los valores de la enumeraciónPILImageResampling. Solo tiene efecto sido_resizeestá establecido enTrue. - do_rescale (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe reescalar la imagen. - rescale_factor (
float, kwargs, opcional, valor predeterminado0.00392156862745098) — Factor de reescalado para reescalar la imagen sido_rescaleestá establecido enTrue. - do_normalize (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe normalizar la imagen. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, valor predeterminado[0.485, 0.456, 0.406]) — Media de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, valor predeterminado[0.229, 0.224, 0.225]) — Desviación estándar de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - do_pad (
bool, kwargs, opcional, valor predeterminadoTrue) — Indica si se debe aplicar relleno a la imagen. El relleno se realiza hasta el tamaño más grande del lote o hasta un tamaño cuadrado fijo por imagen. La estrategia exacta de relleno depende del modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — El tamaño en{"height": int, "width" int}al que se rellenan las imágenes. Debe ser mayor que cualquier tamaño de imagen proporcionado para el preprocesamiento. Si no se proporcionapad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Si se debe recortar la imagen centrada. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — Solo se admiteChannelDimension.FIRST. Se añadió para garantizar la compatibilidad con los procesadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — El formato de la dimensión de canales para la imagen de entrada. Si no se establece, el formato de la dimensión de canales se infiere a partir de la imagen de entrada. Puede ser uno de:"channels_first"oChannelDimension.FIRST: imagen en formato (num_channels, height, width)."channels_last"oChannelDimension.LAST: imagen en formato (altura, ancho, num_canales)."none"oChannelDimension.NONE: imagen en formato (altura, ancho).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — El dispositivo en el que se procesarán los videos. Si no se establece, el dispositivo se infiere a partir de los videos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador. - format (
str, kwargs, opcional, por defectoAnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”. - do_convert_annotations (
bool, kwargs, opcional, valor predeterminadoTrue) — Controla si se convierten las anotaciones al formato esperado por el modelo GROUNDING_DINO. Convierte las cajas delimitadoras al formato(center_x, center_y, width, height)y en el rango[0, 1]. Puede ser anulado por el parámetrodo_convert_annotationsen el métodopreprocess.
Construye un procesador de imágenes GroundingDinoImageProcessor.
preprocesar
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.grounding_dino.image_processing_grounding_dino.GroundingDinoImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Parámetros
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Imagen a preprocesar. Espera una imagen única o un lote de imágenes con valores de píxeles que van de 0 a 255. Si se pasan imágenes con valores de píxeles entre 0 y 1, establezcado_rescale=False. - annotations (
AnnotationTypeolist[AnnotationType], opcional) — Anotaciones que se transformarán según el relleno aplicado a las imágenes. - return_segmentation_masks (
bool, opcional, por defectoself.return_segmentation_masks) — Si se deben devolver las máscaras de segmentación. - masks_path (
stropathlib.Path, opcional) — Ruta al directorio que contiene las máscaras de segmentación. - do_convert_rgb (
bool, kwargs, opcional) — Si se debe convertir la imagen a RGB. - do_resize (
bool, kwargs, opcional) — Si se debe redimensionar la imagen. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Describe las dimensiones de entrada máximas del modelo. - default_to_square (
bool, kwargs, opcional) — Si se debe usar una imagen cuadrada por defecto al redimensionar, si size es un int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamaño de la imagen de salida tras aplicarcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los enumPILImageResampling. Solo tiene efecto sido_resizeestá establecido enTrue. - do_rescale (
bool, kwargs, opcional) — Si se debe reescalar la imagen. - rescale_factor (
float, kwargs, opcional) — Factor de reescalado para reescalar la imagen sido_rescaleestá establecido enTrue. - do_normalize (
bool, kwargs, opcional) — Si se debe normalizar la imagen. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Media de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Desviación estándar de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - do_pad (
bool, kwargs, opcional) — Indica si se debe aplicar relleno a la imagen. El relleno se realiza hasta el tamaño más grande del lote o hasta un tamaño cuadrado fijo por imagen. La estrategia exacta de relleno depende del modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — El tamaño en{"height": int, "width" int}al que se rellenan las imágenes. Debe ser mayor que cualquier tamaño de imagen proporcionado para el preprocesamiento. Si no se proporcionapad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Si se debe recortar la imagen centrada. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — Solo se admiteChannelDimension.FIRST. Se añadió para garantizar la compatibilidad con los procesadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — El formato de la dimensión de canales para la imagen de entrada. Si no se establece, el formato de la dimensión de canales se infiere a partir de la imagen de entrada. Puede ser uno de:"channels_first"oChannelDimension.FIRST: imagen en formato (num_channels, height, width)."channels_last"oChannelDimension.LAST: imagen en formato (altura, ancho, num_canales)."none"oChannelDimension.NONE: imagen en formato (altura, ancho).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — El dispositivo en el que se procesarán los videos. Si no se establece, el dispositivo se infiere a partir de los videos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador. - format (
str, kwargs, opcional, por defectoAnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”. - do_convert_annotations (
bool, kwargs, opcional, valor predeterminadoTrue) — Controla si se convierten las anotaciones al formato esperado por el modelo GROUNDING_DINO. Convierte las cajas delimitadoras al formato(center_x, center_y, width, height)y en el rango[0, 1]. Puede ser anulado por el parámetrodo_convert_annotationsen el métodopreprocess.
Devuelve
~image_processing_base.BatchFeature
- data (
dict) — Diccionario de listas/arrays/tensores devueltos por el método call (‘pixel_values’, etc.). - tensor_type (
Union[None, str, TensorType], opcional) — Puede especificar un tensor_type aquí para convertir las listas de enteros en Tensors de PyTorch/Numpy durante la inicialización.
GroundingDinoImageProcessorPil
clase transformers.GroundingDinoImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.grounding_dino.image_processing_pil_grounding_dino.GroundingDinoImageProcessorKwargs'> )
Parámetros
- do_convert_rgb (
bool, kwargs, opcional) — Si se debe convertir la imagen a RGB. - do_resize (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe redimensionar la imagen. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, por defecto{'shortest_edge' -- 800, 'longest_edge': 1333}): Describe las dimensiones de entrada máximas para el modelo. - default_to_square (
bool, kwargs, opcional, valor predeterminadoFalse) — Si se debe usar una imagen cuadrada por defecto al redimensionar, si size es un int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamaño de la imagen de salida tras aplicarcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, por defecto2) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los valores de la enumeraciónPILImageResampling. Solo tiene efecto sido_resizeestá establecido enTrue. - do_rescale (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe reescalar la imagen. - rescale_factor (
float, kwargs, opcional, valor predeterminado0.00392156862745098) — Factor de reescalado para reescalar la imagen sido_rescaleestá establecido enTrue. - do_normalize (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe normalizar la imagen. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, valor predeterminado[0.485, 0.456, 0.406]) — Media de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, valor predeterminado[0.229, 0.224, 0.225]) — Desviación estándar de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - do_pad (
bool, kwargs, opcional, valor predeterminadoTrue) — Indica si se debe aplicar relleno a la imagen. El relleno se realiza hasta el tamaño más grande del lote o hasta un tamaño cuadrado fijo por imagen. La estrategia exacta de relleno depende del modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — El tamaño en{"height": int, "width" int}al que se rellenan las imágenes. Debe ser mayor que cualquier tamaño de imagen proporcionado para el preprocesamiento. Si no se proporcionapad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Si se debe recortar la imagen centrada. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — Solo se admiteChannelDimension.FIRST. Se añadió para garantizar la compatibilidad con los procesadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — El formato de la dimensión de canales para la imagen de entrada. Si no se establece, el formato de la dimensión de canales se infiere a partir de la imagen de entrada. Puede ser uno de:"channels_first"oChannelDimension.FIRST: imagen en formato (num_channels, height, width)."channels_last"oChannelDimension.LAST: imagen en formato (altura, ancho, num_canales)."none"oChannelDimension.NONE: imagen en formato (altura, ancho).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — El dispositivo en el que se procesarán los videos. Si no se establece, el dispositivo se infiere a partir de los videos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador. - format (
str, kwargs, opcional, por defectoAnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”. - do_convert_annotations (
bool, kwargs, opcional, valor predeterminadoTrue) — Controla si se convierten las anotaciones al formato esperado por el modelo GROUNDING_DINO. Convierte las cajas delimitadoras al formato(center_x, center_y, width, height)y en el rango[0, 1]. Puede ser anulado por el parámetrodo_convert_annotationsen el métodopreprocess.
Construye un procesador de imágenes GroundingDinoImageProcessor.
preprocesar
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.grounding_dino.image_processing_pil_grounding_dino.GroundingDinoImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Parámetros
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Imagen a preprocesar. Espera una imagen única o un lote de imágenes con valores de píxeles que van de 0 a 255. Si se pasan imágenes con valores de píxeles entre 0 y 1, establezcado_rescale=False. - annotations (
AnnotationTypeolist[AnnotationType], opcional) — Anotaciones que se transformarán según el relleno aplicado a las imágenes. - return_segmentation_masks (
bool, opcional, por defectoself.return_segmentation_masks) — Si se deben devolver las máscaras de segmentación. - masks_path (
stropathlib.Path, opcional) — Ruta al directorio que contiene las máscaras de segmentación. - do_convert_rgb (
bool, kwargs, opcional) — Si se debe convertir la imagen a RGB. - do_resize (
bool, kwargs, opcional) — Si se debe redimensionar la imagen. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Describe las dimensiones de entrada máximas del modelo. - default_to_square (
bool, kwargs, opcional) — Si se debe usar una imagen cuadrada por defecto al redimensionar, si size es un int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamaño de la imagen de salida tras aplicarcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los enumPILImageResampling. Solo tiene efecto sido_resizeestá establecido enTrue. - do_rescale (
bool, kwargs, opcional) — Si se debe reescalar la imagen. - rescale_factor (
float, kwargs, opcional) — Factor de reescalado para reescalar la imagen sido_rescaleestá establecido enTrue. - do_normalize (
bool, kwargs, opcional) — Si se debe normalizar la imagen. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Media de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Desviación estándar de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - do_pad (
bool, kwargs, opcional) — Indica si se debe aplicar relleno a la imagen. El relleno se realiza hasta el tamaño más grande del lote o hasta un tamaño cuadrado fijo por imagen. La estrategia exacta de relleno depende del modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — El tamaño en{"height": int, "width" int}al que se rellenan las imágenes. Debe ser mayor que cualquier tamaño de imagen proporcionado para el preprocesamiento. Si no se proporcionapad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Si se debe recortar la imagen centrada. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — Solo se admiteChannelDimension.FIRST. Se añadió para garantizar la compatibilidad con los procesadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — El formato de la dimensión de canales para la imagen de entrada. Si no se establece, el formato de la dimensión de canales se infiere a partir de la imagen de entrada. Puede ser uno de:"channels_first"oChannelDimension.FIRST: imagen en formato (num_channels, height, width)."channels_last"oChannelDimension.LAST: imagen en formato (altura, ancho, num_canales)."none"oChannelDimension.NONE: imagen en formato (altura, ancho).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — El dispositivo en el que se procesarán los videos. Si no se establece, el dispositivo se infiere a partir de los videos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador. - format (
str, kwargs, opcional, por defectoAnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”. - do_convert_annotations (
bool, kwargs, opcional, valor predeterminadoTrue) — Controla si se convierten las anotaciones al formato esperado por el modelo GROUNDING_DINO. Convierte las cajas delimitadoras al formato(center_x, center_y, width, height)y en el rango[0, 1]. Puede ser anulado por el parámetrodo_convert_annotationsen el métodopreprocess.
Devuelve
~image_processing_base.BatchFeature
- data (
dict) — Diccionario de listas/arrays/tensores devueltos por el método call (‘pixel_values’, etc.). - tensor_type (
Union[None, str, TensorType], opcional) — Puede especificar un tensor_type aquí para convertir las listas de enteros en Tensors de PyTorch/Numpy durante la inicialización.
post_process_object_detection
< source >( outputs: GroundingDinoObjectDetectionOutputthreshold: float = 0.1target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[Dict]
Parámetros
- outputs (
GroundingDinoObjectDetectionOutput) — Salidas crudas del modelo. - threshold (
float, opcional, valor predeterminado 0.1) — Umbral de puntuación para conservar las predicciones de detección de objetos. - target_sizes (
torch.Tensorolist[tuple[int, int]], opcional) — Tensor de forma(batch_size, 2)o lista de tuplas (tuple[int, int]) que contiene el tamaño objetivo(height, width)de cada imagen del lote. Si no se establece, las predicciones no se redimensionarán.
Devuelve
list[Dict]
Una lista de diccionarios, donde cada diccionario contiene las siguientes claves:
- “scores”: Las puntuaciones de confianza para cada caja predicha en la imagen.
- “labels”: Índices de las clases predichas por el modelo en la imagen.
- “boxes”: cajas delimitadoras de la imagen en el formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y).
Convierte la salida cruda de GroundingDinoForObjectDetection en cajas delimitadoras finales en el formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y).
GroundingDinoProcessor
clase transformers.GroundingDinoProcessor
< source >( image_processortokenizer )
Construye un GroundingDinoProcessor que envuelve un procesador de imágenes y un tokenizador en un único procesador.
GroundingDinoProcessor ofrece todas las funcionalidades de GroundingDinoImageProcessor y BertTokenizer. Consulte ~GroundingDinoImageProcessor y ~BertTokenizer para obtener más información.
__call__
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | list[list[str]] | None = Nonevideos: 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] = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'> )
Parámetros
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], opcional) — Imagen a preprocesar. Espera una imagen única o un lote de imágenes con valores de píxeles que van de 0 a 255. Si se pasan imágenes con valores de píxeles entre 0 y 1, establezcado_rescale=False. - text (
Union[str, list[str], list[list[str]]], opcional) — La secuencia o lote de secuencias que se codificarán. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadenas pre-tokenizadas). Si se pasa una entrada pre-tokenizada, establezcais_split_into_words=Truepara evitar ambigüedad con las entradas por lotes. - videos (
Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], list[list[PIL.Image.Image]], list[list[numpy.ndarray]], list[list[torch.Tensor]], ~video_utils.URL, list[~video_utils.URL], list[list[~video_utils.URL]], ~video_utils.Path, list[~video_utils.Path], list[list[~video_utils.Path]]], opcional) — Vídeo a preprocesar. Espera un único vídeo o un lote de vídeos con valores de píxeles que van de 0 a 255. Si se pasan vídeos con valores de píxeles entre 0 y 1, establecedo_rescale=False. - audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]], opcional) — El audio o lote de audios que se va a preparar. Cada audio puede ser un array de NumPy o un tensor de PyTorch. En el caso de un array de NumPy/tensor de PyTorch, cada audio debe tener la forma (C, T), donde C es el número de canales y T es la longitud de la muestra del audio. - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetosnp.ndarrayde NumPy.
- **kwargs (ProcessingKwargs, opcional) — Opciones de procesamiento adicionales para cada modalidad (texto, imágenes, videos, audio). Los parámetros específicos del modelo se enumeran arriba; consulte la clase TypedDict para obtener la lista completa de argumentos admitidos.
post_process_grounded_object_detection
< source >( outputs: GroundingDinoObjectDetectionOutputinput_ids: transformers.utils.generic.TensorType | None = Nonethreshold: float = 0.25text_threshold: float = 0.25target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = Nonetext_labels: list[list[str]] | None = None ) → list[Dict]
Parámetros
- outputs (
GroundingDinoObjectDetectionOutput) — Salidas crudas del modelo. - input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Los ids de los tokens del texto de entrada. Si no se proporcionan, se tomarán de la salida del modelo. - threshold (
float, opcional, valor predeterminado 0.25) — Umbral para mantener las predicciones de detección de objetos basándose en la puntuación de confianza. - text_threshold (
float, opcional, valor predeterminado 0.25) — Umbral de puntuación para mantener las predicciones de detección de texto. - target_sizes (
torch.Tensorolist[tuple[int, int]], opcional) — Tensor de forma(batch_size, 2)o lista de tuplas (tuple[int, int]) que contiene el tamaño objetivo(height, width)de cada imagen del lote. Si no se establece, las predicciones no se redimensionarán. - text_labels (
list[list[str]], opcional) — Lista de etiquetas candidatas a detectar en cada imagen. Por el momento NO se utiliza, pero es obligatoria en la firma del pipeline de detección de objetos zero-shot. Las etiquetas de texto se extraen en su lugar del tensorinput_idsproporcionado enoutputs.
Devuelve
list[Dict]
Una lista de diccionarios, donde cada diccionario contiene
- scores: tensor de puntuaciones de confianza para los objetos detectados
- boxes: tensor de cajas delimitadoras en formato [x0, y0, x1, y1]
- labels: lista de etiquetas de texto para cada objeto detectado (se reemplazarán con ids enteros en v4.51.0)
- text_labels: lista de etiquetas de texto para los objetos detectados
Convierte la salida cruda de GroundingDinoForObjectDetection en cajas delimitadoras finales en el formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y) y obtiene la etiqueta de texto asociada.
GroundingDinoConfig
clase transformers.GroundingDinoConfig
< 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 = 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 = 4decoder_bbox_embed_share: bool = Truetwo_stage_bbox_embed_share: bool = Falsepositional_embedding_temperature: int = 20init_std: float = 0.02layer_norm_eps: float = 1e-05tie_word_embeddings: bool = True )
Parámetros
- is_encoder_decoder (
bool, opcional, valor predeterminadoTrue) — 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 GroundingDinoModel puede detectar en una sola imagen. - encoder_layers (
int, opcional, valor predeterminado6) — Número de capas ocultas en el codificador del Transformer. Usará el mismo valor quenum_layerssi no se establece. - encoder_ffn_dim (
int, opcional, valor predeterminado2048) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el codificador. - encoder_attention_heads (
int, opcional, valor predeterminado8) — Número de cabezas de atención para cada capa de atención en el codificador Transformer. - decoder_layers (
int, opcional, valor predeterminado6) — Número de capas ocultas en el decodificador del Transformer. Si no se establece, se usará el mismo valor quenum_layers. - decoder_ffn_dim (
int, opcional, valor predeterminado2048) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el decodificador. - decoder_attention_heads (
int, opcional, valor predeterminado8) — Número de cabezas de atención para cada capa de atención en el decodificador del Transformer. - activation_function (
str, opcional, valor predeterminadorelu) — 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 predeterminado256) — Tamaño de las capas del codificador y de la capa pooler. - dropout (
Union[float, int], opcional, valor predeterminado0.1) — La proporción para todas las capas de dropout. - attention_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las probabilidades de atención. - activation_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada. - auxiliary_loss (
bool, opcional, valor predeterminadoFalse) — Si se deben utilizar las pérdidas de decodificación auxiliares (pérdidas 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 predeterminadoTrue) — 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 predeterminado1.0) — Peso relativo del error de clasificación en el coste de correspondencia húngara. - bbox_cost (
float, opcional, valor predeterminado5.0) — Peso relativo del error de la caja delimitadora L1 en el costo de correspondencia húngara. - giou_cost (
float, opcional, valor predeterminado2.0) — Peso relativo de la pérdida de IoU generalizada en el costo de correspondencia húngara. - bbox_loss_coefficient (
float, opcional, valor predeterminado5.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 predeterminado2.0) — Peso relativo de la pérdida de IoU generalizada en la pérdida de segmentación panóptica. - focal_alpha (
float, opcional, valor predeterminado0.25) — Parámetro alfa en la pérdida focal. - disable_custom_kernels (
bool, opcional, valor predeterminadoFalse) — 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 predeterminadoTrue) — Si se debe inicializar el objetivo con pesos de Embedding. - query_dim (
int, opcional, valor predeterminado 4) — La dimensión del vector de consulta. - decoder_bbox_embed_share (
bool, opcional, valor predeterminadoTrue) — Si se comparte la cabeza de regresión de bbox para todas las capas del decodificador. - two_stage_bbox_embed_share (
bool, opcional, valor predeterminadoFalse) — Si se comparte el embedding de bbox entre el generador de bbox de dos etapas y la generación de propuestas de región. - positional_embedding_temperature (
float, opcional, valor predeterminado 20) — La temperatura para el Sine Positional Embedding que se utiliza junto con el vision backbone. - init_std (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - layer_norm_eps (
float, opcional, valor predeterminado1e-05) — El epsilon utilizado por las capas de normalización de capa. - tie_word_embeddings (
bool, opcional, valor predeterminadoTrue) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel modelo.
Esta es la clase de configuración para almacenar la configuración de un modelo Grounding Dino. Se utiliza para instanciar un modelo 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 IDEA-Research/grounding-dino-tiny
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 GroundingDinoConfig, GroundingDinoModel
>>> # Initializing a Grounding DINO IDEA-Research/grounding-dino-tiny style configuration
>>> configuration = GroundingDinoConfig()
>>> # Initializing a model (with random weights) from the IDEA-Research/grounding-dino-tiny style configuration
>>> model = GroundingDinoModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configGroundingDinoModel
clase transformers.GroundingDinoModel
< source >( config: GroundingDinoConfig )
Parámetros
- config (GroundingDinoConfig) — 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
< source >( 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 ) → GroundingDinoModelOutput or tuple(torch.FloatTensor)
Parámetros
- pixel_values (
torch.Tensorde 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.LongTensorde 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.LongTensorde 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 desentence A, 1 corresponde a un token desentence B - attention_mask (
torch.Tensorde 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.
- pixel_mask (
torch.Tensorde 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).
- 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. Seeattentions` under returned tensors for more detail. - output_hidden_states (`
) -- Whether or not to return the hidden states of all layers. Seehidden_states` under returned tensors for more detail. - return_dict (“) — Indica si se debe devolver un ModelOutput en lugar de una tupla simple.
Devuelve
GroundingDinoModelOutput o tuple(torch.FloatTensor)
Un GroundingDinoModelOutput o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (GroundingDinoConfig) y las entradas.
El método forward de GroundingDinoModel 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
Moduledespué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.FloatTensorde 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.FloatTensorde forma(batch_size, num_queries, 4)) — Puntos de referencia iniciales enviados a través del decodificador Transformer.intermediate_hidden_states (
torch.FloatTensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermedios apilados (salida de cada capa del decodificador).intermediate_reference_points (
torch.FloatTensorde 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.FloatTensor], opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(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.FloatTensor]], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(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.FloatTensorde 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.FloatTensorde 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.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(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.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(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.FloatTensor)), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla de tuplas detorch.FloatTensor(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, potenciador de texto (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.FloatTensorde forma(batch_size, sequence_length, config.num_labels), opcional, devuelto cuandoconfig.two_stage=True) — Puntuaciones de las cajas delimitadoras predichas, donde lasconfig.num_queriescajas 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.FloatTensorde forma(batch_size, sequence_length, 4), opcional, devuelto cuandoconfig.two_stage=True) — Logits de las coordenadas de las cajas delimitadoras predichas en la primera etapa.encoder_logits (
torch.FloatTensorde forma(batch_size, sequence_length, config.num_labels), opcional, devuelto cuandoconfig.two_stage=True) — Logits de lasconfig.num_queriescajas delimitadoras con mayor puntuación en la primera etapa.encoder_pred_boxes (
torch.FloatTensorde forma(batch_size, sequence_length, 4), opcional, devuelto cuandoconfig.two_stage=True) — Coordenadas de lasconfig.num_queriescajas 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]GroundingDinoForObjectDetection
clase transformers.GroundingDinoForObjectDetection
< source >( config: GroundingDinoConfig )
Parámetros
- config (GroundingDinoConfig) — 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
< source >( pixel_values: FloatTensorinput_ids: LongTensortoken_type_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonepixel_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: transformers.models.grounding_dino.modeling_grounding_dino.GroundingDinoEncoderOutput | tuple | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: list[dict[str, typing.Union[torch.LongTensor, torch.FloatTensor]]] | None = None**kwargs )
Parámetros
- pixel_values (
torch.FloatTensorde 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.LongTensorde 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.LongTensorde 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 desentence A, 1 corresponde a un token desentence B - attention_mask (
torch.LongTensorde 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.
- pixel_mask (
torch.BoolTensorde 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).
- encoder_outputs (
Union[~models.grounding_dino.modeling_grounding_dino.GroundingDinoEncoderOutput, tuple], opcional) — La tupla consiste en (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de hidden-states 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. Consulteattentionsen 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. Consultehidden_statesen 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 untorch.LongTensorde longitud(number of bounding boxes in the image,)y las cajas untorch.FloatTensorde forma(number of bounding boxes in the image, 4).
El método forward de GroundingDinoForObjectDetection 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
Moduledespué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]