Transformers documentation
DEIMv2
Эта модель была опубликована в 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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = 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
< source >( config: Deimv2Config )
Параметры
- config (Deimv2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель RT-DETR (состоящая из backbone и encoder-decoder), выводящая необработанные скрытые состояния без какого-либо head сверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( config: Deimv2Config )
Параметры
- config (Deimv2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель RT-DETR (состоящая из backbone и encoder-decoder), которая выдает bounding boxes и logits для последующей декодировки в scores и classes.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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}"
... )