Transformers documentation

RT-DETR

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 17 de abril de 2023 y se contribuyó a Hugging Face Transformers el 22 de junio de 2024.

RT-DETR

Resumen

El modelo RT-DETR fue propuesto en DETRs Beat YOLOs on Real-time Object Detection por Wenyu Lv, Yian Zhao, Shangliang Xu, Jinman Wei, Guanzhong Wang, Cheng Cui, Yuning Du, Qingqing Dang, Yi Liu.

RT-DETR es un modelo de detección de objetos que significa “Real-Time DEtection Transformer” (Transformador de Detección en Tiempo Real). Este modelo está diseñado para realizar tareas de detección de objetos con un enfoque en lograr un rendimiento en tiempo real manteniendo una alta precisión. Aprovechando la arquitectura de transformadores, que ha ganado una popularidad significativa en diversos campos del aprendizaje profundo, RT-DETR procesa imágenes para identificar y localizar múltiples objetos en ellas.

El resumen del artículo es el siguiente:

Recientemente, los detectores basados en transformers de extremo a extremo (DETR) han alcanzado un rendimiento notable. Sin embargo, el problema del alto costo computacional de los DETR no se ha abordado de manera efectiva, lo que limita su aplicación práctica y les impide aprovechar plenamente las ventajas de no requerir posprocesamiento, como la supresión de máximos no máximos (NMS). En este artículo, primero analizamos la influencia de la NMS en los detectores de objetos en tiempo real modernos sobre la velocidad de inferencia y establecemos una línea base de velocidad de extremo a extremo. Para evitar el retraso de inferencia causado por la NMS, proponemos un Real-Time DEtection TRansformer (RT-DETR), el primer detector de objetos en tiempo real de extremo a extremo, según nuestro conocimiento. Específicamente, diseñamos un codificador híbrido eficiente para procesar de manera eficiente las características multiescala al desacoplar la interacción intraescala y la fusión entre escalas, y proponemos una selección de consultas consciente del IoU para mejorar la inicialización de las consultas de objetos. Además, nuestro detector propuesto permite ajustar flexiblemente la velocidad de inferencia utilizando diferentes capas del decodificador sin necesidad de volver a entrenar, lo que facilita la aplicación práctica de los detectores de objetos en tiempo real. Nuestro RT-DETR-L alcanza un 53,0 % de AP en COCO val2017 y 114 FPS en una GPU T4, mientras que RT-DETR-X alcanza un 54,8 % de AP y 74 FPS, superando a todos los detectores YOLO de la misma escala tanto en velocidad como en precisión. Además, nuestro RT-DETR-R50 alcanza un 53,1 % de AP y 108 FPS, superando a DINO-Deformable-DETR-R50 en un 2,2 % de AP en precisión y aproximadamente 21 veces en FPS.

drawing RT-DETR performance relative to YOLO models. Taken from the original paper.

La versión del modelo fue contribuida por rafaelpadilla y sangbumchoi. El código original se puede encontrar aquí.

Consejos de uso

Inicialmente, una imagen se procesa utilizando una red neuronal convolucional preentrenada, específicamente una variante de Resnet-D, tal como se referencia en el código original. Esta red extrae características de las tres capas finales de la arquitectura. A continuación, se emplea un codificador híbrido para convertir las características multiescala en un array secuencial de características de imagen. Luego, un decodificador, equipado con cabezas de predicción auxiliares, se utiliza para refinar las consultas de objetos. Este proceso facilita la generación directa de cajas delimitadoras, eliminando la necesidad de cualquier postprocesamiento adicional para adquirir los logits y las coordenadas de las cajas delimitadoras. El modelo está diseñado para utilizarse con imágenes redimensionadas a un tamaño de 640x640 con el ImageProcessor correspondiente. Redimensionar a otros tamaños generalmente degradará el rendimiento.

import requests
import torch
from PIL import Image

from transformers import RTDetrForObjectDetection, RTDetrImageProcessor


url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

image_processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_r50vd")
model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd", device_map="auto")

inputs = image_processor(images=image, return_tensors="pt").to(model.device)

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

results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([(image.height, image.width)]), threshold=0.3)

for result in results:
    for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
        score, label = score.item(), label_id.item()
        box = [round(i, 2) for i in box.tolist()]
        print(f"{model.config.id2label[label]}: {score:.2f} {box}")
sofa: 0.97 [0.14, 0.38, 640.13, 476.21]
cat: 0.96 [343.38, 24.28, 640.14, 371.5]
cat: 0.96 [13.23, 54.18, 318.98, 472.22]
remote: 0.95 [40.11, 73.44, 175.96, 118.48]
remote: 0.92 [333.73, 76.58, 369.97, 186.99]

Recursos

Una lista de recursos oficiales de Hugging Face y de la comunidad (indicados por 🌎) para ayudarte a empezar con RT-DETR.

Object Detection

RTDetrConfig

clase transformers.RTDetrConfig

< >

( 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 = Trueinitializer_range: float = 0.01initializer_bias_prior_prob: float | None = Nonelayer_norm_eps: float = 1e-05batch_norm_eps: float = 1e-05backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonefreeze_backbone_batch_norms: bool = Trueencoder_hidden_dim: int = 256encoder_in_channels: list[int] | tuple[int, ...] = (512, 1024, 2048)feat_strides: list[int] | tuple[int, ...] = (8, 16, 32)encoder_layers: int = 1encoder_ffn_dim: int = 1024encoder_attention_heads: int = 8dropout: float | int = 0.0activation_dropout: float | int = 0.0encode_proj_layers: list[int] | tuple[int, ...] = (2,)positional_encoding_temperature: int = 10000encoder_activation_function: str = 'gelu'activation_function: str = 'silu'eval_size: int | None = Nonenormalize_before: bool = Falsehidden_expansion: float = 1.0d_model: int = 256num_queries: int = 300decoder_in_channels: list[int] | tuple[int, ...] = (256, 256, 256)decoder_ffn_dim: int = 1024num_feature_levels: int = 3decoder_n_points: int = 4decoder_layers: int = 6decoder_attention_heads: int = 8decoder_activation_function: str = 'relu'attention_dropout: float | int = 0.0num_denoising: int = 100label_noise_ratio: float = 0.5box_noise_scale: float = 1.0learn_initial_query: bool = Falseanchor_image_size: int | list[int] | None = Nonedisable_custom_kernels: bool = Truewith_box_refine: bool = Truematcher_alpha: float = 0.25matcher_gamma: float = 2.0matcher_class_cost: float = 2.0matcher_bbox_cost: float = 5.0matcher_giou_cost: float = 2.0use_focal_loss: bool = Trueauxiliary_loss: bool = Truefocal_loss_alpha: float = 0.75focal_loss_gamma: float = 2.0weight_loss_vfl: float = 1.0weight_loss_bbox: float = 5.0weight_loss_giou: float = 2.0eos_coefficient: float = 0.0001 )

Parámetros

  • is_encoder_decoder (bool, opcional, valor predeterminado True) — Indica si el modelo se utiliza como codificador/decodificador o no.
  • initializer_range (float, opcional, valor predeterminado 0.01) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • initializer_bias_prior_prob (float, opcional) — La probabilidad a priori utilizada por el inicializador de sesgo para inicializar los sesgos de enc_score_head y class_embed. Si None, prior_prob se calcula como prior_prob = 1 / (num_labels + 1) durante la inicialización de los pesos del modelo.
  • layer_norm_eps (float, opcional, valor predeterminado 1e-05) — El epsilon utilizado por las capas de normalización de capa.
  • batch_norm_eps (float, opcional, valor predeterminado 1e-05) — La epsilon utilizada por las capas de normalización por lote.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — La configuración del modelo backbone.
  • freeze_backbone_batch_norms (bool, opcional, valor predeterminado True) — Si se congelan las capas de normalización por lote en el backbone.
  • encoder_hidden_dim (int, opcional, valor predeterminado 256) — Dimensión de las representaciones ocultas.
  • encoder_in_channels (list, opcional, valor predeterminado [512, 1024, 2048]) — Entrada de características multinivel para el codificador.
  • feat_strides (list[int], opcional, valor predeterminado [8, 16, 32]) — Pasos utilizados en cada mapa de características.
  • encoder_layers (int, opcional, valor predeterminado 1) — 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 1024) — 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.
  • dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción para todas las capas de dropout.
  • activation_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada.
  • encode_proj_layers (list[int], opcional, valor predeterminado [2]) — Índices de las capas proyectadas que se usarán en el codificador.
  • positional_encoding_temperature (int, opcional, valor predeterminado 10000) — El parámetro de temperatura utilizado para crear las codificaciones posicionales.
  • encoder_activation_function (str, opcional, valor predeterminado "gelu") — La función de activación no lineal (función o cadena) en el codificador y el pooler. Si es una cadena, se admiten "gelu", "relu", "silu" y "gelu_new".
  • activation_function (str, opcional, valor predeterminado silu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo, "gelu", "relu", "silu", etc.
  • eval_size (tuple[int, int], opcional) — Altura y ancho utilizados para calcular la altura y el ancho efectivos de los embeddings de posición después de tener en cuenta el stride.
  • normalize_before (bool, opcional, valor predeterminado False) — Determina si se aplica la normalización de capas en la capa del codificador del transformer antes de los módulos de autoatención y de avance hacia adelante.
  • hidden_expansion (float, opcional, valor predeterminado 1.0) — Relación de expansión para aumentar el tamaño de la dimensión de RepVGGBlock y CSPRepLayer.
  • d_model (int, opcional, valor predeterminado 256) — Tamaño de las capas del codificador y de la capa pooler.
  • num_queries (int, opcional, valor predeterminado 300) — Número de consultas de objetos.
  • decoder_in_channels (list, opcional, por defecto [256, 256, 256]) — Dimensión de las características de múltiples niveles para el decodificador
  • decoder_ffn_dim (int, opcional, valor predeterminado 1024) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el decodificador.
  • num_feature_levels (int, opcional, valor predeterminado 3) — El número de niveles de características de entrada.
  • 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.
  • 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_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.
  • decoder_activation_function (str, opcional, valor predeterminado "relu") — La función de activación no lineal (función o cadena) en el decodificador. Si es una cadena, se admiten "gelu", "relu", "silu" y "gelu_new".
  • attention_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las probabilidades de atención.
  • num_denoising (int, opcional, valor predeterminado 100) — El número total de tareas o consultas de denoising que se utilizarán para el denoising contrastivo.
  • label_noise_ratio (float, opcional, valor predeterminado 0.5) — La proporción de etiquetas de desruido a las que se debe añadir ruido aleatorio.
  • box_noise_scale (float, opcional, valor predeterminado 1.0) — Escala o magnitud del ruido que se añadirá a las cajas delimitadoras.
  • learn_initial_query (bool, opcional, valor predeterminado False) — Indica si las incrustaciones de consulta inicial del decodificador deben aprenderse durante el entrenamiento
  • anchor_image_size (tuple[int, int], opcional) — Altura y ancho de la imagen de entrada utilizada durante la evaluación para generar los anclajes de las cajas delimitadoras. Si es None, se aplica la generación automática de anclajes.
  • disable_custom_kernels (bool, opcional, valor predeterminado True) — Si se desactivan los kernels personalizados.
  • with_box_refine (bool, opcional, valor predeterminado True) — Si se aplica un refinamiento iterativo de las cajas delimitadoras, donde cada capa del decodificador refina las cajas delimitadoras en función de las predicciones de la capa anterior.
  • matcher_alpha (float, opcional, valor predeterminado 0.25) — Parámetro alpha utilizado por el Hungarian Matcher.
  • matcher_gamma (float, opcional, valor predeterminado 2.0) — Parámetro gamma utilizado por el Hungarian Matcher.
  • matcher_class_cost (float, opcional, valor predeterminado 2.0) — El peso relativo de la pérdida de clase utilizada por el Hungarian Matcher.
  • matcher_bbox_cost (float, opcional, valor predeterminado 5.0) — El peso relativo de la pérdida de la caja delimitadora utilizada por el Hungarian Matcher.
  • matcher_giou_cost (float, opcional, valor predeterminado 2.0) — El peso relativo de la pérdida giou utilizada por el Hungarian Matcher.
  • use_focal_loss (bool, opcional, valor predeterminado True) — Parámetro que indica si se debe utilizar la pérdida focal.
  • auxiliary_loss (bool, opcional, valor predeterminado True) — Si se deben utilizar las pérdidas de decodificación auxiliares (pérdidas en cada capa del decodificador).
  • focal_loss_alpha (float, opcional, valor predeterminado 0.75) — Parámetro alpha utilizado para calcular la focal loss.
  • focal_loss_gamma (float, opcional, valor predeterminado 2.0) — Parámetro gamma utilizado para calcular la focal loss.
  • weight_loss_vfl (float, opcional, valor predeterminado 1.0) — Peso relativo de la pérdida varifocal en la pérdida de detección de objetos.
  • weight_loss_bbox (float, opcional, valor predeterminado 5.0) — Peso relativo de la pérdida de caja delimitadora L1 en la pérdida de detección de objetos.
  • weight_loss_giou (float, opcional, valor predeterminado 2.0) — Peso relativo de la pérdida de IoU generalizada en la pérdida de detección de objetos.
  • eos_coefficient (float, opcional, valor predeterminado 0.0001) — Peso de clasificación relativo de la clase ‘no-object’ en la pérdida de detección de objetos.

Esta es la clase de configuración para almacenar la configuración de un RTDetrModel. Se utiliza para instanciar un modelo Rt Detr 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 PekingU/rtdetr_r50vd

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 RTDetrConfig, RTDetrModel

>>> # Initializing a RT-DETR configuration
>>> configuration = RTDetrConfig()

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

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

RTDetrResNetConfig

clase transformers.RTDetrResNetConfig

< >

( 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 = Nonenum_channels: int = 3embedding_size: int = 64hidden_sizes: list[int] | tuple[int, ...] = (256, 512, 1024, 2048)depths: list[int] | tuple[int, ...] = (3, 4, 6, 3)layer_type: str = 'bottleneck'hidden_act: str = 'relu'downsample_in_first_stage: bool = Falsedownsample_in_bottleneck: bool = False_out_features: list[str] | None = None_out_indices: list[int] | None = None )

Parámetros

  • num_channels (int, opcional, valor predeterminado 3) — El número de canales de entrada.
  • embedding_size (int, opcional, valor predeterminado 64) — Dimensionalidad de los embeddings y los estados ocultos.
  • hidden_sizes (Union[list[int], tuple[int, ...]], opcional, valor predeterminado (256, 512, 1024, 2048)) — Dimensionalidad (tamaño oculto) en cada etapa del modelo.
  • depths (list[int], opcional, valor predeterminado [3, 4, 6, 3]) — Profundidad (número de capas) de cada etapa.
  • layer_type (str, opcional, valor predeterminado "bottleneck") — La capa a utilizar, puede ser "basic" (usada para modelos más pequeños, como resnet-18 o resnet-34) o "bottleneck" (usada para modelos más grandes como resnet-50 y superiores).
  • hidden_act (str, opcional, valor predeterminado "relu") — La función de activación no lineal en cada bloque. Si es una cadena, se admiten "gelu", "relu", "selu" y "gelu_new".
  • downsample_in_first_stage (bool, opcional, valor predeterminado False) — Si es True, la primera etapa reducirá la resolución de las entradas utilizando un stride de 2.
  • downsample_in_bottleneck (bool, opcional, valor predeterminado False) — Si es True, la primera conv 1x1 en ResNetBottleNeckLayer reducirá la resolución de las entradas utilizando un stride de 2.

Esta es la clase de configuración para almacenar la configuración de un Rt Detr ResnetModel. Se utiliza para instanciar un modelo Rt Detr Resnet 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 microsoft/resnet-50

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.

Ejemplo:

>>> from transformers import RTDetrResNetConfig, RTDetrResnetBackbone

>>> # Initializing a ResNet resnet-50 style configuration
>>> configuration = RTDetrResNetConfig()

>>> # Initializing a model (with random weights) from the resnet-50 style configuration
>>> model = RTDetrResnetBackbone(configuration)

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

RTDetrImageProcessor

clase transformers.RTDetrImageProcessor

< >

( **kwargs: *<class 'transformers.models.rt_detr.image_processing_rt_detr.RTDetrImageProcessorKwargs'> )

Parámetros

  • do_convert_rgb (bool, kwargs, opcional) — Si se debe convertir la imagen a RGB.
  • do_resize (bool, kwargs, opcional, valor predeterminado True) — Si se debe redimensionar la imagen.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, por defecto {'height' -- 640, 'width': 640}): Describe las dimensiones de entrada máximas para el modelo.
  • default_to_square (bool, kwargs, opcional, valor predeterminado False) — 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 aplicar center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, por defecto 2) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los valores de la enumeración PILImageResampling. Solo tiene efecto si do_resize está establecido en True.
  • do_rescale (bool, kwargs, opcional, valor predeterminado True) — Si se debe reescalar la imagen.
  • rescale_factor (float, kwargs, opcional, valor predeterminado 0.00392156862745098) — Factor de reescalado para reescalar la imagen si do_rescale está establecido en True.
  • do_normalize (bool, kwargs, opcional, valor predeterminado False) — 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 si do_normalize está establecido en True.
  • 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 si do_normalize está establecido en True.
  • do_pad (bool, kwargs, opcional, valor predeterminado False) — 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 proporciona pad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuando do_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 admite ChannelDimension.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" o ChannelDimension.FIRST: imagen en formato (num_channels, height, width).
    • "channels_last" o ChannelDimension.LAST: imagen en formato (altura, ancho, num_canales).
    • "none" o ChannelDimension.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 defecto AnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”.
  • do_convert_annotations (bool, kwargs, opcional, valor predeterminado True) — Controla si se convierten las anotaciones al formato esperado por el modelo RT_DETR. Convierte las cajas delimitadoras al formato (center_x, center_y, width, height) y en el rango [0, 1]. Puede ser anulado por el parámetro do_convert_annotations en el método preprocess.

Construye un procesador de imágenes RTDetrImageProcessor.

preprocesar

< >

( 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.rt_detr.image_processing_rt_detr.RTDetrImageProcessorKwargs'> ) → ~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, establezca do_rescale=False.
  • annotations (AnnotationType o list[AnnotationType], opcional) — Anotaciones que se transformarán según el relleno aplicado a las imágenes.
  • return_segmentation_masks (bool, opcional, por defecto self.return_segmentation_masks) — Si se deben devolver las máscaras de segmentación.
  • masks_path (str o pathlib.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 aplicar center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los enum PILImageResampling. Solo tiene efecto si do_resize está establecido en True.
  • do_rescale (bool, kwargs, opcional) — Si se debe reescalar la imagen.
  • rescale_factor (float, kwargs, opcional) — Factor de reescalado para reescalar la imagen si do_rescale está establecido en True.
  • 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 si do_normalize está establecido en True.
  • 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 si do_normalize está establecido en True.
  • 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 proporciona pad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuando do_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 admite ChannelDimension.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" o ChannelDimension.FIRST: imagen en formato (num_channels, height, width).
    • "channels_last" o ChannelDimension.LAST: imagen en formato (altura, ancho, num_canales).
    • "none" o ChannelDimension.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 defecto AnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”.
  • do_convert_annotations (bool, kwargs, opcional, valor predeterminado True) — Controla si se convierten las anotaciones al formato esperado por el modelo RT_DETR. Convierte las cajas delimitadoras al formato (center_x, center_y, width, height) y en el rango [0, 1]. Puede ser anulado por el parámetro do_convert_annotations en el método preprocess.

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

< >

( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] = Noneuse_focal_loss: bool = True ) → list[Dict]

Parámetros

  • outputs (DetrObjectDetectionOutput) — Salidas sin procesar del modelo.
  • threshold (float, opcional, valor predeterminado 0.5) — Umbral de puntuación para conservar las predicciones de detección de objetos.
  • target_sizes (torch.Tensor o list[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.
  • use_focal_loss (bool por defecto True) — Variable que informa si se utilizó la focal loss para predecir las salidas. Si es True, se aplica una sigmoid para calcular las puntuaciones de cada detección; en caso contrario, se utiliza una función softmax.

Devuelve

list[Dict]

Una lista de diccionarios, donde cada diccionario contiene las puntuaciones, etiquetas y cajas para una imagen del lote, tal como las predice el modelo.

Convierte la salida cruda de DetrForObjectDetection en cajas delimitadoras finales en el formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y). Solo admite PyTorch.

RTDetrImageProcessorPil

clase transformers.RTDetrImageProcessorPil

< >

( **kwargs: *<class 'transformers.models.rt_detr.image_processing_pil_rt_detr.RTDetrImageProcessorKwargs'> )

Parámetros

  • do_convert_rgb (bool, kwargs, opcional) — Si se debe convertir la imagen a RGB.
  • do_resize (bool, kwargs, opcional, valor predeterminado True) — Si se debe redimensionar la imagen.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, por defecto {'height' -- 640, 'width': 640}): Describe las dimensiones de entrada máximas para el modelo.
  • default_to_square (bool, kwargs, opcional, valor predeterminado False) — 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 aplicar center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, por defecto 2) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los valores de la enumeración PILImageResampling. Solo tiene efecto si do_resize está establecido en True.
  • do_rescale (bool, kwargs, opcional, valor predeterminado True) — Si se debe reescalar la imagen.
  • rescale_factor (float, kwargs, opcional, valor predeterminado 0.00392156862745098) — Factor de reescalado para reescalar la imagen si do_rescale está establecido en True.
  • do_normalize (bool, kwargs, opcional, valor predeterminado False) — 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 si do_normalize está establecido en True.
  • 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 si do_normalize está establecido en True.
  • do_pad (bool, kwargs, opcional, valor predeterminado False) — 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 proporciona pad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuando do_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 admite ChannelDimension.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" o ChannelDimension.FIRST: imagen en formato (num_channels, height, width).
    • "channels_last" o ChannelDimension.LAST: imagen en formato (altura, ancho, num_canales).
    • "none" o ChannelDimension.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 defecto AnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”.
  • do_convert_annotations (bool, kwargs, opcional, valor predeterminado True) — Controla si se convierten las anotaciones al formato esperado por el modelo RT_DETR. Convierte las cajas delimitadoras al formato (center_x, center_y, width, height) y en el rango [0, 1]. Puede ser anulado por el parámetro do_convert_annotations en el método preprocess.

Construye un procesador de imágenes RTDetrImageProcessor.

preprocesar

< >

( 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.rt_detr.image_processing_pil_rt_detr.RTDetrImageProcessorKwargs'> ) → ~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, establezca do_rescale=False.
  • annotations (AnnotationType o list[AnnotationType], opcional) — Anotaciones que se transformarán según el relleno aplicado a las imágenes.
  • return_segmentation_masks (bool, opcional, por defecto self.return_segmentation_masks) — Si se deben devolver las máscaras de segmentación.
  • masks_path (str o pathlib.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 aplicar center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los enum PILImageResampling. Solo tiene efecto si do_resize está establecido en True.
  • do_rescale (bool, kwargs, opcional) — Si se debe reescalar la imagen.
  • rescale_factor (float, kwargs, opcional) — Factor de reescalado para reescalar la imagen si do_rescale está establecido en True.
  • 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 si do_normalize está establecido en True.
  • 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 si do_normalize está establecido en True.
  • 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 proporciona pad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuando do_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 admite ChannelDimension.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" o ChannelDimension.FIRST: imagen en formato (num_channels, height, width).
    • "channels_last" o ChannelDimension.LAST: imagen en formato (altura, ancho, num_canales).
    • "none" o ChannelDimension.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 defecto AnnotationFormat.COCO_DETECTION) — Formato de datos de las anotaciones. Uno de “coco_detection” o “coco_panoptic”.
  • do_convert_annotations (bool, kwargs, opcional, valor predeterminado True) — Controla si se convierten las anotaciones al formato esperado por el modelo RT_DETR. Convierte las cajas delimitadoras al formato (center_x, center_y, width, height) y en el rango [0, 1]. Puede ser anulado por el parámetro do_convert_annotations en el método preprocess.

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

< >

( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] = Noneuse_focal_loss: bool = True ) → list[Dict]

Parámetros

  • outputs (DetrObjectDetectionOutput) — Salidas sin procesar del modelo.
  • threshold (float, opcional, valor predeterminado 0.5) — Umbral de puntuación para conservar las predicciones de detección de objetos.
  • target_sizes (torch.Tensor o list[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.
  • use_focal_loss (bool por defecto True) — Variable que informa si se utilizó la focal loss para predecir las salidas. Si es True, se aplica una sigmoid para calcular las puntuaciones de cada detección; en caso contrario, se utiliza una función softmax.

Devuelve

list[Dict]

Una lista de diccionarios, donde cada diccionario contiene las puntuaciones, etiquetas y cajas para una imagen del lote, tal como las predice el modelo.

Convierte la salida cruda de DetrForObjectDetection en cajas delimitadoras finales en el formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y). Solo admite PyTorch.

RTDetrModel

clase transformers.RTDetrModel

< >

( config: RTDetrConfig )

Parámetros

  • config (RTDetrConfig) — 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 RT-DETR (constituido por un backbone y un encoder-decoder) que genera estados ocultos sin procesar sin ninguna cabeza 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: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → RTDetrModelOutput 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 image_processor_class. Consulte image_processor_class.__call__ para más detalles (processor_class utiliza image_processor_class para procesar las imágenes).
  • pixel_mask (torch.LongTensor de forma (batch_size, height, width), opcional) — Máscara para evitar realizar atención sobre los valores de píxeles de relleno. Valores de 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 (torch.Tensor, 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 hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador.
  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar el mapa de características aplanado (salida del backbone + capa de proyección), puedes elegir pasar directamente una representación aplanada de una imagen.
  • 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).

Devuelve

RTDetrModelOutput o tuple(torch.Tensor)

Un RTDetrModelOutput 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 (None) y las entradas.

El método forward de RTDetrModel 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.

  • 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.

  • 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_logits (torch.Tensor de forma (batch_size, config.decoder_layers, sequence_length, config.num_labels)) — Logits intermedios apilados (logits 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).

  • intermediate_predicted_corners (torch.Tensor de forma (batch_size, config.decoder_layers, num_queries, 4)) — Esquinas intermedias predichas apiladas (esquinas predichas de cada capa del decodificador).

  • initial_reference_points (torch.Tensor de forma (batch_size, num_queries, 4)) — Puntos de referencia iniciales utilizados para la primera 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[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.

  • cross_attentions (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 de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.

  • encoder_last_hidden_state (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_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, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

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

  • encoder_attentions (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 codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

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

  • enc_topk_logits (torch.Tensor de forma (batch_size, sequence_length, config.num_labels)) — Puntuaciones de las cajas delimitadoras predichas, donde las cajas delimitadoras con las config.two_stage_num_proposals puntuaciones más altas se seleccionan como propuestas de región en la etapa del codificador. Salida de la clasificación binaria de cajas delimitadoras (es decir, primer plano y fondo).

  • enc_topk_bboxes (torch.Tensor de forma (batch_size, sequence_length, 4)) — Logits de las coordenadas de las cajas delimitadoras predichas en la etapa del codificador.

  • enc_outputs_class (torch.Tensor de forma (batch_size, sequence_length, config.num_labels), opcional, devuelto cuando config.with_box_refine=True y config.two_stage=True) — Puntuaciones de las cajas delimitadoras predichas, donde las config.two_stage_num_proposals 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, se devuelve cuando config.with_box_refine=True y config.two_stage=True) — Logits de las coordenadas de las cajas delimitadoras predichas en la primera etapa.

  • denoising_meta_values (dict, opcional) — Diccionario adicional para los valores relacionados con el denoising.

Ejemplos:

>>> from transformers import AutoImageProcessor, RTDetrModel
>>> 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()))

>>> image_processor = AutoImageProcessor.from_pretrained("PekingU/rtdetr_r50vd")
>>> model = RTDetrModel.from_pretrained("PekingU/rtdetr_r50vd")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)

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

RTDetrForObjectDetection

clase transformers.RTDetrForObjectDetection

< >

( config: RTDetrConfig )

Parámetros

  • config (RTDetrConfig) — 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 RT-DETR (que consta de un backbone y un encoder-decoder) genera bounding boxes y logits para ser decodificados posteriormente en scores y clases.

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: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → RTDetrObjectDetectionOutput 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 image_processor_class. Consulte image_processor_class.__call__ para más detalles (processor_class utiliza image_processor_class para procesar las imágenes).
  • pixel_mask (torch.LongTensor de forma (batch_size, height, width), opcional) — Máscara para evitar realizar atención sobre los valores de píxeles de relleno. Valores de 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 (torch.Tensor, 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 hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador.
  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar el mapa de características aplanado (salida del backbone + capa de proyección), puedes elegir pasar directamente una representación aplanada de una imagen.
  • 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).

Devuelve

RTDetrObjectDetectionOutput o tuple(torch.Tensor)

Un RTDetrObjectDetectionOutput 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 (None) y las entradas.

El método forward de RTDetrForObjectDetection 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.

  • loss (torch.Tensor de forma (1,), opcional, devuelta cuando se proporcionan labels) — Pérdida total como combinación lineal de una log-verosimilitud negativa (entropía cruzada) para la predicción de clases y una pérdida de caja delimitadora. Esta última se define como una combinación lineal de la pérdida L1 y la pérdida de IoU generalizada e invariante a la escala.

  • loss_dict (Dict, opcional) — Un diccionario que contiene las pérdidas individuales. Útil para el registro.

  • logits (torch.Tensor de forma (batch_size, num_queries, num_classes + 1)) — Logits de clasificación (incluyendo no-objeto) para todas las consultas.

  • pred_boxes (torch.Tensor de forma (batch_size, num_queries, 4)) — Coordenadas de cajas normalizadas para todas las consultas, representadas como (center_x, center_y, width, height). Estos valores están normalizados en [0, 1], relativos al tamaño de cada imagen individual del lote (ignorando el relleno posible). Puede usar post_process_object_detection() para obtener las cajas delimitadoras no normalizadas (absolutas).

  • auxiliary_outputs (list[Dict], opcional) — Opcional, solo se devuelve cuando se activan las pérdidas auxiliares (es decir, config.auxiliary_loss está establecido en True) y se proporcionan etiquetas. Es una lista de diccionarios que contienen las dos claves anteriores (logits y pred_boxes) para cada capa del decodificador.

  • 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.

  • 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_logits (torch.Tensor de forma (batch_size, config.decoder_layers, num_queries, config.num_labels)) — Logits intermedios apilados (logits 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).

  • intermediate_predicted_corners (torch.Tensor de forma (batch_size, config.decoder_layers, num_queries, 4)) — Esquinas intermedias predichas apiladas (esquinas predichas de cada capa del decodificador).

  • initial_reference_points (torch.Tensor de forma (batch_size, config.decoder_layers, num_queries, 4)) — Puntos de referencia iniciales apilados (puntos de referencia iniciales 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[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.

  • cross_attentions (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 de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.

  • encoder_last_hidden_state (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_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, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

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

  • encoder_attentions (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 codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

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

  • enc_topk_logits (torch.Tensor de forma (batch_size, sequence_length, config.num_labels), opcional, se devuelve cuando config.with_box_refine=True y config.two_stage=True) — Logits de las coordenadas de las cajas delimitadoras predichas en el codificador.

  • enc_topk_bboxes (torch.Tensor de forma (batch_size, sequence_length, 4), opcional, se devuelve cuando config.with_box_refine=True y config.two_stage=True) — Logits de las coordenadas de las cajas delimitadoras predichas en el codificador.

  • enc_outputs_class (torch.Tensor de forma (batch_size, sequence_length, config.num_labels), opcional, devuelto cuando config.with_box_refine=True y config.two_stage=True) — Puntuaciones de las cajas delimitadoras predichas, donde las config.two_stage_num_proposals 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, se devuelve cuando config.with_box_refine=True y config.two_stage=True) — Logits de las coordenadas de las cajas delimitadoras predichas en la primera etapa.

  • denoising_meta_values (dict, opcional) — Diccionario adicional para los valores relacionados con el denoising

Ejemplos:

>>> from transformers import RTDetrImageProcessor, RTDetrForObjectDetection
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import torch

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

>>> image_processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_r50vd")
>>> model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> logits = outputs.logits
>>> list(logits.shape)
[1, 300, 80]

>>> boxes = outputs.pred_boxes
>>> list(boxes.shape)
[1, 300, 4]

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[
...     0
... ]

>>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
...     box = [round(i, 2) for i in box.tolist()]
...     print(
...         f"Detected {model.config.id2label[label.item()]} with confidence "
...         f"{round(score.item(), 3)} at location {box}"
...     )
Detected sofa with confidence 0.97 at location [0.14, 0.38, 640.13, 476.21]
Detected cat with confidence 0.96 at location [343.38, 24.28, 640.14, 371.5]
Detected cat with confidence 0.958 at location [13.23, 54.18, 318.98, 472.22]
Detected remote with confidence 0.951 at location [40.11, 73.44, 175.96, 118.48]
Detected remote with confidence 0.924 at location [333.73, 76.58, 369.97, 186.99]

RTDetrResNetBackbone

clase transformers.RTDetrResNetBackbone

< >

( config: RTDetrResNetConfig )

Parámetros

  • config (RTDetrResNetConfig) — 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.

Backbone de ResNet, para ser utilizado con frameworks como RTDETR.

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: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BackboneOutput 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 image_processor_class. Consulte image_processor_class.__call__ para más detalles (processor_class utiliza image_processor_class para procesar las imágenes).
  • 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.

Devuelve

BackboneOutput o tuple(torch.Tensor)

Un BackboneOutput 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 (RTDetrResNetConfig) y las entradas.

El método forward de RTDetrResNetBackbone 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.

  • feature_maps (tuple(torch.Tensor) de forma (batch_size, num_channels, height, width)) — Mapas de características de las etapas.

  • hidden_states (tuple(torch.Tensor), opcional, devuelto 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 + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size) o (batch_size, num_channels, height, width), según el backbone.

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

  • attentions (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). Solo aplicable si el backbone usa atención.

    Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Ejemplos:

>>> from transformers import RTDetrResNetConfig, RTDetrResNetBackbone
>>> import torch
precation import deprecate_kwarg
precation import deprecate_kwarg
precation import deprecate_kwarg
utils.deprecation import deprecate_kwarg
utils.deprecation import deprecate_kwarg

>>> config = RTDetrResNetConfig()
>>> model = RTDetrResNetBackbone(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 2048, 7, 7]
Update on GitHub