Transformers documentation

RT-DETRv2

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

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 24.07.2024 и добавлена в Hugging Face Transformers 06.02.2025.

RT-DETRv2

Обзор

Модель RT-DETRv2 была предложена в статье RT-DETRv2: Improved Baseline with Bag-of-Freebies for Real-Time Detection Transformer авторами Wenyu Lv, Yian Zhao, Qinyao Chang, Kui Huang, Guanzhong Wang, Yi Liu.

RT-DETRv2 дорабатывает RT-DETR, вводя селективное многомасштабное извлечение признаков, дискретный оператор выборки для более широкой совместимости при развертывании, а также улучшенные стратегии обучения, такие как динамическая аугментация данных и масштабно-адаптивные гиперпараметры. Эти изменения повышают гибкость и практичность, сохраняя при этом производительность в реальном времени.

Аннотация из статьи следующая:

В данном отчёте мы представляем RT-DETRv2 — улучшенную версию Real-Time DEtection TRansformer (RT-DETR). RT-DETRv2 основана на предыдущем детекторе реального времени, RT-DETR, и предлагает набор «бесплатных улучшений» (bag-of-freebies) для повышения гибкости и практичности, а также оптимизирует стратегию обучения для достижения более высоких показателей. Для повышения гибкости мы предлагаем задавать разное количество точек выборки для признаков на разных масштабах в деформируемом внимании, чтобы декодер мог выполнять селективное извлечение признаков с нескольких масштабов. Для повышения практичности мы предлагаем опциональный дискретный оператор выборки, заменяющий оператор grid_sample, который является специфичным для RT-DETR по сравнению с YOLOs. Это устраняет ограничения при развёртывании, обычно связанные с DETR. В части стратегии обучения мы предлагаем динамическое аугментирование данных и адаптивную настройку гиперпараметров в зависимости от масштаба, чтобы улучшить качество без потери скорости.

Эта модель была предоставлена пользователем jadechoghari. Исходный код можно найти здесь.

Советы по использованию

Эта вторая версия RT-DETR улучшает способ, которым декодер находит объекты на изображении.

  • улучшенная выборка – корректирует смещения, чтобы модель обращала внимание на нужные области
  • flexible attention – может использовать сглаженное (билинейное) или фиксированное (дискретное) сэмплирование
  • оптимизированная обработка – улучшает способ, которым веса внимания смешивают информацию

Модель предназначена для использования с изображениями, изменёнными до размера 640x640 с помощью соответствующего ImageProcessor. Изменение размера до других значений, как правило, приводит к ухудшению качества.

import requests
import torch
from PIL import Image

from transformers import RTDetrImageProcessor, RTDetrV2ForObjectDetection


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

image_processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_v2_r18vd")
model = RTDetrV2ForObjectDetection.from_pretrained("PekingU/rtdetr_v2_r18vd", 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.5)

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}")
cat: 0.97 [341.14, 25.11, 639.98, 372.89]
cat: 0.96 [12.78, 56.35, 317.67, 471.34]
remote: 0.95 [39.96, 73.12, 175.65, 117.44]
sofa: 0.86 [-0.11, 2.97, 639.89, 473.62]
sofa: 0.82 [-0.12, 1.78, 639.87, 473.52]
remote: 0.79 [333.65, 76.38, 370.69, 187.48]

Ресурсы

Список официальных ресурсов Hugging Face и сообщества (отмечены 🌎), которые помогут вам начать работу с RT-DETRv2.

Object Detection

RTDetrV2Config

класс transformers.RTDetrV2Config

< >

( 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 = Nonewith_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.0001decoder_n_levels: int = 3decoder_offset_scale: float = 0.5decoder_method: str = 'default'tie_word_embeddings: bool = True )

Параметры

  • is_encoder_decoder (bool, необязательный, по умолчанию True) — Указывает, используется ли модель в качестве энкодера/декодера.
  • initializer_range (float, необязательный, по умолчанию 0.01) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • initializer_bias_prior_prob (float, необязательный) — Априорная вероятность, используемая инициализатором смещения для инициализации смещений в enc_score_head и class_embed. Если None, prior_prob вычисляется как prior_prob = 1 / (num_labels + 1) при инициализации весов модели.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями нормализации.
  • batch_norm_eps (float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями batch normalization.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], необязательный) — Конфигурация модели-бэкбона.
  • freeze_backbone_batch_norms (bool, необязательный, по умолчанию True) — Определяет, следует ли заморозить слои batch normalization в backbone.
  • encoder_hidden_dim (int, необязательный, по умолчанию 256) — Размерность скрытых представлений.
  • encoder_in_channels (list, необязательный, по умолчанию [512, 1024, 2048]) — Многоуровневые входные признаки для энкодера.
  • feat_strides (list[int], необязательный, по умолчанию [8, 16, 32]) — Шаги, используемые в каждой feature map.
  • encoder_layers (int, необязательный, по умолчанию 1) — Количество скрытых слоев в кодере Transformer. Если не задано, используется то же значение, что и у num_layers.
  • encoder_ffn_dim (int, необязательный, по умолчанию 1024) — Размерность «промежуточного» (часто называемого feed-forward) слоя в энкодере.
  • encoder_attention_heads (int, необязательный, по умолчанию 8) — Количество голок внимания в каждом слое внимания в кодере Transformer.
  • dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент для всех слоёв dropout.
  • activation_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для активаций внутри полносвязного слоя.
  • encode_proj_layers (list[int], необязательный, по умолчанию [2]) — Индексы проецируемых слоёв, используемых в кодировщике.
  • positional_encoding_temperature (int, необязательный, по умолчанию 10000) — Параметр температуры, используемый для создания позиционных кодировок.
  • encoder_activation_function (str, необязательный, по умолчанию "gelu") — Нелинейная функция активации (функция или строка) в кодере и пулере. Если передана строка, поддерживаются значения "gelu", "relu", "silu" и "gelu_new".
  • activation_function (str, необязательный, по умолчанию "silu") — Нелинейная функция активации (функция или строка) в общем слое. Если передана строка, поддерживаются "gelu", "relu", "silu" и "gelu_new".
  • eval_size (tuple[int, int], необязательный) — Высота и ширина, используемые для вычисления эффективной высоты и ширины позиционных эмбеддингов с учетом шага (stride).
  • normalize_before (bool, необязательный, по умолчанию False) — Определяет, следует ли применять нормализацию слоя в слое кодировщика трансформера перед модулями само-внимания и последовательной обработки.
  • hidden_expansion (float, необязательный, по умолчанию 1.0) — Коэффициент расширения для увеличения размерности RepVGGBlock и CSPRepLayer.
  • d_model (int, необязательный, по умолчанию 256) — Размер слоев кодировщика и пулера.
  • num_queries (int, необязательный, по умолчанию 300) — Количество запросов объектов.
  • decoder_in_channels (list, необязательный, по умолчанию [256, 256, 256]) — Размерность многоуровневых признаков для декодера
  • decoder_ffn_dim (int, необязательный, по умолчанию 1024) — Размерность «промежуточного» (часто называемого feed-forward) слоя в декодере.
  • num_feature_levels (int, необязательный, по умолчанию 3) — Количество уровней входных признаков.
  • decoder_n_points (int, необязательный, по умолчанию 4) — Количество выбранных ключей на каждом уровне признаков для каждой головы внимания в декодере.
  • decoder_layers (int, необязательный, по умолчанию 6) — Количество скрытых слоев в декодере Transformer. Если не задано, будет использовано то же значение, что и у num_layers.
  • decoder_attention_heads (int, необязательный, по умолчанию 8) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • decoder_activation_function (str, необязательный, по умолчанию "relu") — Нелинейная функция активации (функция или строка) в декодере. Если передана строка, поддерживаются "gelu", "relu", "silu" и "gelu_new".
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • num_denoising (int, необязательный, по умолчанию 100) — Общее количество задач или запросов денойзинга, используемых для контрастивного денойзинга.
  • label_noise_ratio (float, необязательный, по умолчанию 0.5) — Доля меток для денойзинга, к которым следует добавить случайный шум.
  • box_noise_scale (float, необязательный, по умолчанию 1.0) — Масштаб или величина шума, добавляемого к ограничивающим рамкам.
  • learn_initial_query (bool, необязательный, по умолчанию False) — Указывает, следует ли обучать начальные эмбеддинги запросов для декодера в процессе обучения
  • anchor_image_size (tuple[int, int], optional) — Высота и ширина входного изображения, используемые при оценке для генерации якорных ограничивающих прямоугольников. Если значение равно None, применяется автоматическая генерация якорей.
  • with_box_refine (bool, необязательный, по умолчанию True) — Определяет, следует ли применять итеративное уточнение ограничивающих прямоугольников, при котором каждый слой декодера уточняет прямоугольники на основе предсказаний предыдущего слоя.
  • matcher_alpha (float, необязательный, по умолчанию 0.25) — Параметр alpha, используемый Hungarian Matcher.
  • matcher_gamma (float, необязательный, по умолчанию 2.0) — Параметр gamma, используемый Hungarian Matcher.
  • matcher_class_cost (float, необязательный, по умолчанию 2.0) — Относительный вес потерь по классам, используемый Hungarian Matcher.
  • matcher_bbox_cost (float, необязательный, по умолчанию 5.0) — Относительный вес потерь по ограничивающим рамкам, используемый Hungarian Matcher.
  • matcher_giou_cost (float, необязательный, по умолчанию 2.0) — Относительный вес потери giou, используемой Hungarian Matcher.
  • use_focal_loss (bool, необязательный, по умолчанию True) — Параметр, указывающий, следует ли использовать focal loss.
  • auxiliary_loss (bool, необязательный, по умолчанию True) — Использовать ли вспомогательные потери декодирования (потери на каждом слое декодера).
  • focal_loss_alpha (float, необязательный, по умолчанию 0.75) — Параметр alpha, используемый для вычисления focal loss.
  • focal_loss_gamma (float, необязательный, по умолчанию 2.0) — Параметр gamma, используемый для вычисления focal loss.
  • weight_loss_vfl (float, необязательный, по умолчанию 1.0) — Относительный вес varifocal loss в функции потерь обнаружения объектов.
  • weight_loss_bbox (float, необязательный, по умолчанию 5.0) — Относительный вес потерь L1 для ограничивающих прямоугольников в функции потерь обнаружения объектов.
  • weight_loss_giou (float, необязательный, по умолчанию 2.0) — Относительный вес функции потерь обобщённого IoU в функции потерь обнаружения объектов.
  • eos_coefficient (float, необязательный, по умолчанию 0.0001) — Относительный вес класса «нет объекта» в функции потерь обнаружения объектов.
  • decoder_n_levels (int, необязательный, по умолчанию 3) — Количество уровней признаков, используемых декодером.
  • decoder_offset_scale (float, необязательный, по умолчанию 0.5) — Коэффициент масштабирования, применяемый к смещениям внимания в декодере.
  • decoder_method (str, необязательный, по умолчанию "default") — Метод, используемый для декодера: "default" или "discrete".
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.

Это класс конфигурации для хранения настроек модели RTDetrV2Model. Он используется для создания модели Rt Detr V2 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации PekingU/rtdetr_r18vd

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

Примеры:

>>> from transformers import RTDetrV2Config, RTDetrV2Model

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

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

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

RTDetrV2Model

класс transformers.RTDetrV2Model

< >

( config: RTDetrV2Config )

Параметры

  • config (RTDetrV2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель RT-DETR (состоящая из backbone и encoder-decoder), выводящая необработанные скрытые состояния без какого-либо head сверху.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

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'> ) → RTDetrV2ModelOutput or tuple(torch.Tensor)

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью image_processor_class. Подробности см. в image_processor_class.__call__ (processor_class использует image_processor_class для обработки изображений).
  • pixel_mask (torch.LongTensor формы (batch_size, height, width), , необязательный) — Маска для исключения пикселей padding из вычислений внимания. Значения маски из диапазона [0, 1]:
    • 1 для пикселей, которые являются реальными (т. е. не замаскированы),
    • 0 для пикселей, являющихся заполнением (т. е. замаскированных).

    Что такое маски внимания?

  • encoder_outputs (torch.Tensor, необязательный) — Кортеж, состоящий из (last_hidden_state, необязательный: hidden_states, необязательный: attentions) last_hidden_state формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании декодера.
  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Необязательно, вместо передачи сглаженной карты признаков (выход backbone + проекционного слоя), вы можете напрямую передать сглаженное представление изображения.
  • labels (list[Dict] длины (batch_size,), необязательный) — Метки для вычисления функции потерь двудольного сопоставления. Список словарей, каждый из которых содержит как минимум следующие два ключа: ‘class_labels’ и ‘boxes’ (метки классов и ограничивающие рамки изображения в батче соответственно). Метки классов должны представлять собой torch.LongTensor длины (number of bounding boxes in the image,), а рамки — torch.Tensor формы (number of bounding boxes in the image, 4).

Возвращает

RTDetrV2ModelOutput или tuple(torch.Tensor)

RTDetrV2ModelOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (None) и входных данных.

Метод forward модели RTDetrV2Model переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.Tensor формы (batch_size, num_queries, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя декодера модели.

  • intermediate_hidden_states (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, hidden_size)) — Стек промежуточных скрытых состояний (выход каждого слоя декодера).

  • intermediate_logits (torch.Tensor формы (batch_size, config.decoder_layers, sequence_length, config.num_labels)) — Стек промежуточных логитов (логиты каждого слоя декодера).

  • intermediate_reference_points (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, 4)) — Стек промежуточных опорных точек (опорные точки каждого слоя декодера).

  • intermediate_predicted_corners (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, 4)) — Стек промежуточных предсказанных углов (предсказанные углы каждого слоя декодера).

  • initial_reference_points (torch.Tensor формы (batch_size, num_queries, 4)) — Начальные опорные точки, используемые для первого слоя декодера.

  • decoder_hidden_states (tuple[torch.Tensor], необязательный, возвращается при передаче output_hidden_states=True или при config.output_hidden_states=True) — Кортеж torch.Tensor (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния декодера на выходе каждого слоя, а также выходные значения начального слоя встраивания.

  • decoder_attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • cross_attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания кросс-внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах кросс-внимания.

  • encoder_last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера модели.

  • encoder_hidden_states (tuple[torch.Tensor], необязательный, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — Кортеж torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния кодировщика на выходе каждого слоя, а также выходные значения начального слоя встраиваний.

  • encoder_attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания энкодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • init_reference_points (torch.Tensor формы (batch_size, num_queries, 4)) — Начальные опорные точки, передаваемые через декодер Transformer.

  • enc_topk_logits (torch.Tensor формы (batch_size, sequence_length, config.num_labels)) — Оценки предсказанных ограничивающих прямоугольников, где верхние по оценке config.two_stage_num_proposals ограничивающие прямоугольники выбираются в качестве региональных предложений на этапе кодировщика. Выход бинарной классификации ограничивающих прямоугольников (т. е. передний план и фон).

  • enc_topk_bboxes (torch.Tensor формы (batch_size, sequence_length, 4)) — Логиты координат предсказанных ограничивающих прямоугольников на этапе кодирования.

  • enc_outputs_class (torch.Tensor формы (batch_size, sequence_length, config.num_labels), необязательный, возвращается, если config.with_box_refine=True и config.two_stage=True) — Оценки предсказанных ограничивающих прямоугольников, где верхние config.two_stage_num_proposals прямоугольников с наивысшими оценками выбираются в качестве региональных предложений на первом этапе. Результат бинарной классификации ограничивающих прямоугольников (т. е. передний план и фон).

  • enc_outputs_coord_logits (torch.Tensor формы (batch_size, sequence_length, 4), необязательный, возвращается, если config.with_box_refine=True и config.two_stage=True) — Логиты координат предсказанных ограничивающих прямоугольников на первом этапе.

  • denoising_meta_values (dict, необязательный) — Дополнительный словарь для значений, связанных с процессом денойзинга.

Примеры:

>>> from transformers import AutoImageProcessor, RTDetrV2Model
>>> 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/RTDetrV2_r50vd")
>>> model = RTDetrV2Model.from_pretrained("PekingU/RTDetrV2_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]

RTDetrV2ForObjectDetection

класс transformers.RTDetrV2ForObjectDetection

< >

( config: RTDetrV2Config )

Параметры

  • config (RTDetrV2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель RT-DETR (состоящая из backbone и encoder-decoder), которая выдает bounding boxes и logits для последующей декодировки в scores и classes.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

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'> ) → RTDetrV2ObjectDetectionOutput or tuple(torch.Tensor)

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью image_processor_class. Подробности см. в image_processor_class.__call__ (processor_class использует image_processor_class для обработки изображений).
  • pixel_mask (torch.LongTensor формы (batch_size, height, width), , необязательный) — Маска для исключения пикселей padding из вычислений внимания. Значения маски из диапазона [0, 1]:
    • 1 для пикселей, которые являются реальными (т. е. не замаскированы),
    • 0 для пикселей, являющихся заполнением (т. е. замаскированных).

    Что такое маски внимания?

  • encoder_outputs (torch.Tensor, необязательный) — Кортеж, состоящий из (last_hidden_state, необязательный: hidden_states, необязательный: attentions) last_hidden_state формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании декодера.
  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Необязательно, вместо передачи сглаженной карты признаков (выход backbone + проекционного слоя), вы можете напрямую передать сглаженное представление изображения.
  • labels (list[Dict] длины (batch_size,), необязательный) — Метки для вычисления функции потерь двудольного сопоставления. Список словарей, каждый из которых содержит как минимум следующие два ключа: ‘class_labels’ и ‘boxes’ (метки классов и ограничивающие рамки изображения в батче соответственно). Метки классов должны представлять собой torch.LongTensor длины (number of bounding boxes in the image,), а рамки — torch.Tensor формы (number of bounding boxes in the image, 4).

Возвращает

RTDetrV2ObjectDetectionOutput или tuple(torch.Tensor)

RTDetrV2ObjectDetectionOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (None) и входных данных.

Метод forward класса RTDetrV2ForObjectDetection переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если предоставлены labels) — Суммарная потеря, представляющая собой линейную комбинацию отрицательного логарифма правдоподобия (кросс-энтропии) для предсказания класса и потери для ограничивающих прямоугольников. Последняя определяется как линейная комбинация L1-потери и обобщенной масштабно-инвариантной потери IoU.

  • loss_dict (Dict, необязательный) — словарь, содержащий отдельные значения потерь. Полезен для логирования.

  • logits (torch.Tensor формы (batch_size, num_queries, num_classes + 1)) — Логиты классификации (включая no-object) для всех запросов.

  • pred_boxes (torch.Tensor формы (batch_size, num_queries, 4)) — Нормализованные координаты границ для всех запросов, представленные в виде (center_x, center_y, width, height). Эти значения нормализованы в диапазоне [0, 1] относительно размера каждого отдельного изображения в батче (игнорируя возможное выравнивание). Вы можете использовать ~RTDetrV2ImageProcessor.post_process_object_detection, чтобы получить ненормализованные (абсолютные) границы объектов.

  • auxiliary_outputs (list[Dict], необязательный) — Необязательный параметр, возвращается только при активации вспомогательных потерь (т. е. когда config.auxiliary_loss установлено в True) и при наличии меток. Это список словарей, содержащих два указанных выше ключа (logits и pred_boxes) для каждого слоя декодера.

  • last_hidden_state (torch.Tensor формы (batch_size, num_queries, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя декодера модели.

  • intermediate_hidden_states (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, hidden_size)) — Стек промежуточных скрытых состояний (выход каждого слоя декодера).

  • intermediate_logits (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, config.num_labels)) — Стек промежуточных логитов (логиты каждого слоя декодера).

  • intermediate_reference_points (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, 4)) — Стек промежуточных опорных точек (опорные точки каждого слоя декодера).

  • intermediate_predicted_corners (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, 4)) — Стек промежуточных предсказанных углов (предсказанные углы каждого слоя декодера).

  • initial_reference_points (torch.Tensor формы (batch_size, config.decoder_layers, num_queries, 4)) — Стек начальных опорных точек (начальные опорные точки каждого слоя декодера).

  • decoder_hidden_states (tuple[torch.Tensor], необязательный, возвращается при передаче output_hidden_states=True или при config.output_hidden_states=True) — Кортеж torch.Tensor (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния декодера на выходе каждого слоя, а также выходные значения начального слоя встраивания.

  • decoder_attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • cross_attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания кросс-внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах кросс-внимания.

  • encoder_last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера модели.

  • encoder_hidden_states (tuple[torch.Tensor], необязательный, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — Кортеж torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния кодировщика на выходе каждого слоя, а также выходные значения начального слоя встраиваний.

  • encoder_attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания энкодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • init_reference_points (torch.Tensor формы (batch_size, num_queries, 4)) — Начальные опорные точки, передаваемые через декодер Transformer.

  • enc_topk_logits (torch.Tensor формы (batch_size, sequence_length, config.num_labels), необязательный, возвращается, если config.with_box_refine=True и config.two_stage=True) — Логиты координат предсказанных ограничивающих прямоугольников в энкодере.

  • enc_topk_bboxes (torch.Tensor формы (batch_size, sequence_length, 4), необязательный, возвращается, если config.with_box_refine=True и config.two_stage=True) — Логиты координат предсказанных ограничивающих прямоугольников в энкодере.

  • enc_outputs_class (torch.Tensor формы (batch_size, sequence_length, config.num_labels), необязательный, возвращается, если config.with_box_refine=True и config.two_stage=True) — Оценки предсказанных ограничивающих прямоугольников, где верхние config.two_stage_num_proposals прямоугольников с наивысшими оценками выбираются в качестве региональных предложений на первом этапе. Результат бинарной классификации ограничивающих прямоугольников (т. е. передний план и фон).

  • enc_outputs_coord_logits (torch.Tensor формы (batch_size, sequence_length, 4), необязательный, возвращается, если config.with_box_refine=True и config.two_stage=True) — Логиты координат предсказанных ограничивающих прямоугольников на первом этапе.

  • denoising_meta_values (dict, необязательный) — Дополнительный словарь для значений, связанных с процессом денуазинга

Примеры:

>>> from transformers import RTDetrV2ImageProcessor, RTDetrV2ForObjectDetection
>>> 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 = RTDetrV2ImageProcessor.from_pretrained("PekingU/RTDetrV2_r50vd")
>>> model = RTDetrV2ForObjectDetection.from_pretrained("PekingU/RTDetrV2_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]
Update on GitHub