Transformers documentation

DEIMv2

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

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

DEIMv2

Обзор

DEIMv2 (DETR with Improved Matching v2) был предложен в статье DEIMv2: Real-Time Object Detection Meets DINOv3 авторами Shihua Huang, Yongjie Hou, Longfei Liu, Xuanlong Yu и Xi Shen.

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

Благодаря простому и эффективному Dense O2O, DEIM демонстрирует более быструю сходимость и улучшенную производительность. В данной работе мы расширяем его с использованием признаков DINOv3, что приводит к созданию DEIMv2. DEIMv2 включает восемь размеров моделей от X до Atto, охватывая развёртывание на GPU, edge-устройствах и мобильных платформах. Для вариантов X, L, M и S мы используем предобученные / дистиллированные бэкбоны DINOv3 и вводим Spatial Tuning Adapter (STA), который эффективно преобразует одноуровневый вывод DINOv3 в многоуровневые признаки и дополняет сильные семантические признаки детализированными деталями для улучшения обнаружения. Для сверхлёгких моделей (Nano, Pico, Femto и Atto) мы применяем HGNetv2 с обрезкой глубины и ширины, чтобы соответствовать строгим ограничениям ресурсов. В сочетании с упрощённым декодером и обновлённым Dense O2O этот единый дизайн позволяет DEIMv2 достичь превосходного соотношения производительности и стоимости в различных сценариях, устанавливая новые рекордные результаты. Примечательно, что наша крупнейшая модель, DEIMv2-X, достигает 57.8 AP всего с 50.3M параметров, превосходя предыдущие модели масштаба X, которым требуется более 60M параметров для достижения лишь 56.5 AP. На компактном уровне DEIMv2-S — первая модель с менее чем 10M параметров (9.71M), превысившая рубеж 50 AP на COCO, достигнув 50.9 AP. Даже сверхлёгкая DEIMv2-Pico, имеющая всего 1.5M параметров, обеспечивает 38.5 AP, сопоставимый с YOLOv10-Nano (2.3M), при этом имея примерно на 50% меньше параметров.

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

Использование

from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = load_image(url)

image_processor = AutoImageProcessor.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
model = AutoModelForObjectDetection.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers", device_map="auto")

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

results = image_processor.post_process_object_detection(
    outputs, threshold=0.5, target_sizes=[image.size[::-1]]
)

for result in results:
    for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
        box = [round(i, 2) for i in box.tolist()]
        print(f"Detected {model.config.id2label[label.item()]} with confidence {round(score.item(), 3)} at location {box}")

Deimv2Config

класс transformers.Deimv2Config

< >

( 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: list[int] | tuple[int, 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 | list[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.0weight_loss_fgl: float = 0.15weight_loss_ddf: float = 1.5eos_coefficient: float = 0.0001eval_idx: int = -1layer_scale: int | float = 1.0max_num_bins: int = 32reg_scale: float = 4.0depth_mult: float = 1.0top_prob_values: int = 4lqe_hidden_dim: int = 64lqe_layers: int = 2decoder_offset_scale: float = 0.5decoder_method: str = 'default'up: float = 0.5tie_word_embeddings: bool = Trueweight_loss_mal: float = 1.0use_dense_one_to_one: bool = Truemal_alpha: float | None = Noneencoder_fuse_op: str = 'sum'spatial_tuning_adapter_inplanes: int = 16encoder_type: str = 'hybrid'use_gateway: bool = Trueshare_bbox_head: bool = Falseencoder_has_trailing_conv: 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") — Нелинейная функция активации (функция или строка) в кодере и пулере.
  • activation_function (str, необязательный, по умолчанию silu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • eval_size (list[int] или tuple[int, int], необязательный) — Высота и ширина, используемые для вычисления эффективной высоты и ширины позиционных эмбеддингов с учётом шага.
  • 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") — Нелинейная функция активации (функция или строка) в декодере.
  • 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], необязательный) — Высота и ширина входного изображения, используемые при оценке для генерации якорных ограничивающих прямоугольников.
  • 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 в функции потерь обнаружения объектов.
  • weight_loss_fgl (float, необязательный, по умолчанию 0.15) — Относительный вес потерь точной локализации в общей потере обнаружения объектов.
  • weight_loss_ddf (float, необязательный, по умолчанию 1.5) — Относительный вес потерь фокальной дистилляции с развязкой в функции потерь обнаружения объектов.
  • eos_coefficient (float, необязательный, по умолчанию 0.0001) — Относительный вес класса «нет объекта» в функции потерь обнаружения объектов.
  • eval_idx (int, необязательный, по умолчанию -1) — Индекс слоя декодера, используемого для оценки.
  • layer_scale (float, необязательный, по умолчанию 1.0) — Коэффициент масштабирования скрытого измерения в последующих слоях декодера.
  • max_num_bins (int, необязательный, по умолчанию 32) — Максимальное количество интервалов для уточнения ограничивающих прямоугольников с использованием распределения.
  • reg_scale (float, необязательный, по умолчанию 4.0) — Коэффициент масштабирования для распределения регрессии.
  • depth_mult (float, необязательный, по умолчанию 1.0) — Множитель для количества блоков в слоях RepNCSPELAN5.
  • top_prob_values (int, необязательный, по умолчанию 4) — Количество верхних значений вероятностей, которые следует учитывать из распределения каждого угла.
  • lqe_hidden_dim (int, необязательный, по умолчанию 64) — Размер скрытого слоя для сети Location Quality Estimator (LQE).
  • lqe_layers (int, необязательный, по умолчанию 2) — Количество слоев в MLP Location Quality Estimator.
  • decoder_offset_scale (float, необязательный, по умолчанию 0.5) — Масштаб смещения, используемый в деформируемом внимании.
  • decoder_method (str, необязательный, по умолчанию "default") — Метод, используемый для декодера: "default" или "discrete".
  • up (float, необязательный, по умолчанию 0.5) — Управляет верхними границами функции взвешивания.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.
  • weight_loss_mal (float, необязательный, по умолчанию 1.0) — Относительный вес вспомогательной функции потерь для соответствия в функции потерь обнаружения объектов.
  • use_dense_one_to_one (bool, необязательный, по умолчанию True) — Использовать ли плотное сопоставление один-к-одному между слоями декодера.
  • mal_alpha (float, необязательный) — Параметр Alpha для Matching Auxiliary Loss (MAL). Если None, используется focal_loss_alpha.
  • encoder_fuse_op (str, необязательный, по умолчанию "sum") — Операция слияния, используемая в FPN кодировщика. DEIMv2 использует "sum" вместо "cat" из D-FINE.
  • spatial_tuning_adapter_inplanes (int, необязательный, по умолчанию 16) — Количество входных плоскостей для свёрточного стебля STA.
  • encoder_type (str, необязательный, по умолчанию "hybrid") — Тип используемого энкодера. "hybrid" использует полный HybridEncoder с AIFI, FPN и PAN. "lite" использует облегчённый LiteEncoder с слиянием GAP для малых вариантов (Atto, Femto, Pico).
  • use_gateway (bool, необязательный, по умолчанию True) — Определяет, следует ли использовать механизм gateway (гейтинг кросс-внимания) в слоях декодера. Если False, вместо этого применяется RMSNorm к выводу внимания энкодера.
  • share_bbox_head (bool, необязательный, по умолчанию False) — Определяет, следует ли использовать общий слой предсказания ограничивающих прямоугольников для всех слоев декодера.
  • encoder_has_trailing_conv (bool, необязательный, по умолчанию True) — Указывает, содержат ли CSP-блоки энкодера завершающую 3x3 свёртку после бутылочного пути. True для RepNCSPELAN4 (используется в вариантах HGNetV2 N и LiteEncoder). False для RepNCSPELAN5 (используется в вариантах DINOv3).

Это класс конфигурации для хранения настроек модели Deimv2Model. Он используется для создания модели Deimv2 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации Intellindust/DEIMv2_HGNetv2_N_COCO

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

Deimv2Model

класс transformers.Deimv2Model

< >

( config: Deimv2Config )

Параметры

  • config (Deimv2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод 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'> ) → Deimv2ModelOutput 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).

Возвращает

Deimv2ModelOutput или tuple(torch.Tensor)

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

Метод forward модели Deimv2Model переопределяет специальный метод __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, Deimv2Model
>>> 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/Deimv2_r50vd")
>>> model = Deimv2Model.from_pretrained("PekingU/Deimv2_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]

Deimv2ForObjectDetection

класс transformers.Deimv2ForObjectDetection

< >

( config: Deimv2Config )

Параметры

  • config (Deimv2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод 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'> ) → Deimv2ObjectDetectionOutput 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), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • 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).

Возвращает

Deimv2ObjectDetectionOutput или tuple(torch.Tensor)

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

Метод forward класса Deimv2ForObjectDetection переопределяет специальный метод __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] относительно размера каждого отдельного изображения в батче (без учёта возможного выравнивания). Для получения ненормализованных (абсолютных) границ используйте ~Deimv2ImageProcessor.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, необязательный) — Дополнительный словарь для значений, связанных с процессом денуазинга

Пример:

>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoImageProcessor, Deimv2ForObjectDetection

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> image_processor = AutoImageProcessor.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
>>> model = Deimv2ForObjectDetection.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")

>>> # 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)
>>> result = results[0]  # first image in batch

>>> for score, label, box in zip(result["scores"], result["labels"], result["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}"
...     )
Update on GitHub