Transformers documentation

MM Grounding DINO

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 04.01.2024 и добавлена в Hugging Face Transformers 01.08.2025.

MM Grounding DINO

Модель MM Grounding DINO была предложена в работе An Open and Comprehensive Pipeline for Unified Object Grounding and Detection авторами Xiangyu Zhao, Yicheng Chen, Shilin Xu, Xiangtai Li, Xinjiang Wang, Yining Li, Haian Huang.

MM Grounding DINO улучшает Grounding DINO за счёт доработки контрастивного класс-хэда и отказа от общего использования параметров в декодере, что повышает качество zero-shot обнаружения как на COCO (50.6(+2.2) AP), так и на LVIS (31.9(+11.8) val AP и 41.4(+12.6) minival AP).

Все исходные контрольные точки MM Grounding DINO можно найти в коллекции MM Grounding DINO. Эта модель также поддерживает инференс LLMDet. Контрольные точки LLMDet доступны в коллекции LLMDet.

Нажмите на модели MM Grounding DINO в боковой панели справа, чтобы увидеть больше примеров применения MM Grounding DINO к различным задачам MM Grounding DINO.

Приведённый ниже пример демонстрирует, как генерировать текст на основе изображения с помощью класса AutoModelForZeroShotObjectDetection.

AutoModel
import torch

from transformers import AutoModelForZeroShotObjectDetection, AutoProcessor
from transformers.image_utils import load_image


# Prepare processor and model
model_id = "openmmlab-community/mm_grounding_dino_tiny_o365v1_goldg_v3det"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id, device_map="auto")

# Prepare inputs
image_url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = load_image(image_url)
text_labels = [["a cat", "a remote control"]]
inputs = processor(images=image, text=text_labels, return_tensors="pt").to(model.device)

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

# Postprocess outputs
results = processor.post_process_grounded_object_detection(
    outputs,
    threshold=0.4,
    target_sizes=[(image.height, image.width)]
)

# Retrieve the first image result
result = results[0]
for box, score, labels in zip(result["boxes"], result["scores"], result["labels"]):
    box = [round(x, 2) for x in box.tolist()]
    print(f"Detected {labels} with confidence {round(score.item(), 3)} at location {box}")

Примечания

MMGroundingDinoConfig

класс transformers.MMGroundingDinoConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_queries: int = 900encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8activation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0auxiliary_loss: bool = Falseposition_embedding_type: str = 'sine'num_feature_levels: int = 4encoder_n_points: int = 4decoder_n_points: int = 4two_stage: bool = Trueclass_cost: float = 1.0bbox_cost: float = 5.0giou_cost: float = 2.0bbox_loss_coefficient: float = 5.0giou_loss_coefficient: float = 2.0focal_alpha: float = 0.25disable_custom_kernels: bool = Falsemax_text_len: int = 256text_enhancer_dropout: float | int = 0.0fusion_droppath: float | int = 0.1fusion_dropout: float | int = 0.0embedding_init_target: bool = Truequery_dim: int = 4positional_embedding_temperature: int = 20decoder_bbox_embed_share: bool = Truedecoder_cls_embed_share: bool = Trueinit_std: float = 0.02layer_norm_eps: float = 1e-05tie_word_embeddings: bool = True )

Параметры

  • is_encoder_decoder (bool, необязательный, по умолчанию True) — Указывает, используется ли модель в качестве энкодера/декодера.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], необязательный) — Конфигурация модели-бэкбона.
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig], необязательный) — Объект конфигурации или словарь конфигурации текстового бэкбона.
  • num_queries (int, необязательный, по умолчанию 900) — Количество запросов объектов, то есть слотов для обнаружения. Это максимальное число объектов, которые MMGroundingDinoModel может обнаружить на одном изображении.
  • encoder_layers (int, необязательный, по умолчанию 6) — Количество скрытых слоев в кодере Transformer. Если не задано, используется то же значение, что и у num_layers.
  • encoder_ffn_dim (int, необязательный, по умолчанию 2048) — Размерность «промежуточного» (часто называемого feed-forward) слоя в энкодере.
  • encoder_attention_heads (int, необязательный, по умолчанию 8) — Количество голок внимания в каждом слое внимания в кодере Transformer.
  • decoder_layers (int, необязательный, по умолчанию 6) — Количество скрытых слоев в декодере Transformer. Если не задано, будет использовано то же значение, что и у num_layers.
  • decoder_ffn_dim (int, необязательный, по умолчанию 2048) — Размерность «промежуточного» (часто называемого feed-forward) слоя в декодере.
  • decoder_attention_heads (int, необязательный, по умолчанию 8) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • activation_function (str, необязательный, по умолчанию relu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • d_model (int, необязательный, по умолчанию 256) — Размер слоев кодировщика и пулера.
  • dropout (Union[float, int], необязательный, по умолчанию 0.1) — Коэффициент для всех слоёв dropout.
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • activation_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для активаций внутри полносвязного слоя.
  • auxiliary_loss (bool, необязательный, по умолчанию False) — Использовать ли вспомогательные потери декодирования (потери на каждом слое декодера).
  • position_embedding_type (str, необязательный, по умолчанию "sine") — Тип позиционных эмбеддингов, применяемых поверх признаков изображения. Одно из значений: "sine" или "learned".
  • num_feature_levels (int, необязательный, по умолчанию 4) — Количество уровней входных признаков.
  • encoder_n_points (int, необязательный, по умолчанию 4) — Количество выбранных ключей на каждом уровне признаков для каждой головы внимания в кодере.
  • decoder_n_points (int, необязательный, по умолчанию 4) — Количество выбранных ключей на каждом уровне признаков для каждой головы внимания в декодере.
  • two_stage (bool, необязательный, по умолчанию True) — Указывает, следует ли применять двухэтапный деформируемый DETR, в котором предложения областей также генерируются вариантом Grounding DINO и затем передаются в декодер для итеративного уточнения ограничивающих прямоугольников.
  • class_cost (float, необязательный, по умолчанию 1.0) — Относительный вес ошибки классификации в стоимости венгерского сопоставления.
  • bbox_cost (float, необязательный, по умолчанию 5.0) — Относительный вес ошибки L1 для ограничивающих прямоугольников в стоимости венгерского сопоставления.
  • giou_cost (float, необязательный, по умолчанию 2.0) — Относительный вес функции потерь обобщённого IoU в стоимости венгерского сопоставления.
  • bbox_loss_coefficient (float, необязательный, по умолчанию 5.0) — Относительный вес потерь L1 для ограничивающих прямоугольников в потере панорамной сегментации.
  • giou_loss_coefficient (float, необязательный, по умолчанию 2.0) — Относительный вес функции потерь обобщённого IoU в функции потерь панорамной сегментации.
  • focal_alpha (float, необязательный, по умолчанию 0.25) — Параметр alpha в функции потерь focal loss.
  • disable_custom_kernels (bool, необязательный, по умолчанию False) — Отключает использование собственных CUDA- и CPU-ядер. Этот параметр необходим для экспорта в ONNX, так как собственные ядра не поддерживаются экспортом PyTorch в ONNX.
  • max_text_len (int, необязательный, по умолчанию 256) — Максимальная длина текстового входа.
  • text_enhancer_dropout (float, необязательный, по умолчанию 0.0) — Коэффициент dropout для текстового усилителя.
  • fusion_droppath (float, необязательный, по умолчанию 0.1) — Коэффициент droppath для модуля fusion.
  • fusion_dropout (float, необязательный, по умолчанию 0.0) — Коэффициент dropout для модуля fusion.
  • embedding_init_target (bool, необязательный, по умолчанию True) — Следует ли инициализировать целевую модель весами Embedding.
  • query_dim (int, необязательный, по умолчанию 4) — Размерность вектора запроса.
  • positional_embedding_temperature (float, необязательный, по умолчанию 20) — Температура для Sine Positional Embedding, используемая совместно с vision backbone.
  • decoder_bbox_embed_share (bool, необязательный, по умолчанию True) — Определяет, следует ли использовать общий заголовок регрессии bbox для всех слоев декодера.
  • decoder_cls_embed_share (bool, необязательный, по умолчанию True) — Определяет, следует ли использовать общий слой встраивания классов для всех слоев декодера.
  • init_std (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями нормализации.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.

Это класс конфигурации для хранения конфигурации модели Mm Grounding Dino. Он используется для создания модели Mm Grounding Dino в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации openmmlab-community/mm_grounding_dino_tiny_o365v1_goldg_v3det

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

Примеры:

>>> from transformers import MMGroundingDinoConfig, MMGroundingDinoModel

>>> # Initializing a MM Grounding DINO configuration
>>> configuration = MMGroundingDinoConfig()

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

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

MMGroundingDinoModel

класс transformers.MMGroundingDinoModel

< >

( config: MMGroundingDinoConfig )

Параметры

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

Модель Grounding DINO без дополнительных компонентов (состоящая из backbone и encoder-decoder Transformer), выводящая «сырые» hidden-states без какого-либо специализированного head сверху.

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

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

forward

< >

( pixel_values: Tensorinput_ids: Tensortoken_type_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonepixel_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs = Noneoutput_attentions = Noneoutput_hidden_states = Nonereturn_dict = None**kwargs ) → MMGroundingDinoModelOutput or tuple(torch.Tensor)

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью GroundingDinoImageProcessor. Подробности см. в GroundingDinoImageProcessor.call() (GroundingDinoProcessor использует GroundingDinoImageProcessor для обработки изображений).
  • input_ids (torch.LongTensor формы (batch_size, text_sequence_length)) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется, если вы его передаёте.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в BertTokenizer.call().

  • token_type_ids (torch.LongTensor формы (batch_size, text_sequence_length), необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из [0, 1]: 0 соответствует токену sentence A , 1 — токену sentence B Токенные идентификаторы типов

    Что такое идентификаторы типов токенов?

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

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

  • pixel_mask (torch.Tensor формы (batch_size, height, width), , необязательный) — Маска для исключения пикселей-заполнителей из вычислений внимания. Значения маски из диапазона [0, 1]:
    • 1 для пикселей, которые являются реальными (т. е. не замаскированы),
    • 0 для пикселей, являющихся заполнением (т. е. замаскированных).

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

  • encoder_outputs (`) -- Tuple consists of (last_hidden_state, *optional*: hidden_states, *optional*: attentions) last_hidden_stateof shape(batch_size, sequence_length, hidden_size)`, optional) is a sequence of hidden-states at the output of the last layer of the encoder. Used in the cross-attention of the decoder.
  • output_attentions (`) -- Whether or not to return the attentions tensors of all attention layers. See attentions` under returned tensors for more detail.
  • output_hidden_states (`) -- Whether or not to return the hidden states of all layers. See hidden_states` under returned tensors for more detail.
  • return_dict (“) — Определяет, возвращать ли ModelOutput вместо обычного кортежа.

Возвращает

MMGroundingDinoModelOutput или tuple(torch.Tensor)

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

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

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

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

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

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

  • intermediate_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[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_vision (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера модели.

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

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

  • encoder_text_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(tuple(torch.Tensor)), optional, возвращается, если передано output_attentions=True или если config.output_attentions=True) — Кортеж кортежей torch.Tensor (по одному для внимания каждого слоя) формы (batch_size, num_heads, sequence_length, sequence_length). Веса внимания после softmax внимания, используемые для вычисления взвешенного среднего в заголовках внимания текст-зрение, зрение-текст, текст-усилитель (само-внимание) и многомасштабного деформируемого внимания. softmax внимания, используемые для вычисления взвешенного среднего в заголовках би-внимания.

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

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

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

  • encoder_pred_boxes (torch.Tensor формы (batch_size, sequence_length, 4), необязательный, возвращается, если config.two_stage=True) — Координаты bounding boxes с наивысшими оценками (top config.num_queries) на первом этапе.

Примеры:

>>> from transformers import AutoProcessor, AutoModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

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

>>> processor = AutoProcessor.from_pretrained("IDEA-Research/grounding-dino-tiny")
>>> model = AutoModel.from_pretrained("IDEA-Research/grounding-dino-tiny")

>>> inputs = processor(images=image, text=text, return_tensors="pt")
>>> outputs = model(**inputs)

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

MMGroundingDinoForObjectDetection

класс transformers.MMGroundingDinoForObjectDetection

< >

( config: MMGroundingDinoConfig )

Параметры

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

Модель Grounding DINO (состоящая из backbone и encoder-decoder Transformer) с головками обнаружения объектов, для таких задач, как обнаружение объектов COCO.

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

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

forward

< >

( pixel_values: Tensorinput_ids: LongTensortoken_type_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonepixel_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: transformers.models.mm_grounding_dino.modeling_mm_grounding_dino.MMGroundingDinoEncoderOutput | tuple | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: list[dict[str, typing.Union[torch.LongTensor, torch.Tensor]]] | None = None**kwargs )

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью GroundingDinoImageProcessor. Подробности см. в GroundingDinoImageProcessor.call() (GroundingDinoProcessor использует GroundingDinoImageProcessor для обработки изображений).
  • input_ids (torch.LongTensor формы (batch_size, text_sequence_length)) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется, если вы его передаёте.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в BertTokenizer.call().

  • token_type_ids (torch.LongTensor формы (batch_size, text_sequence_length), необязательный) — Индексы сегментных токенов для указания первой и второй частей входных данных. Индексы выбираются из [0, 1]: 0 соответствует токену sentence A , 1 — токену sentence B Токенные идентификаторы типов

    Что такое идентификаторы типов токенов?

  • attention_mask (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

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

  • pixel_mask (torch.BoolTensor формы (batch_size, height, width), , необязательный) — Маска для исключения пикселей padding из вычислений внимания. Значения маски из диапазона [0, 1]:
    • 1 для пикселей, которые являются реальными (т. е. не замаскированы),
    • 0 для пикселей, являющихся заполнением (т. е. замаскированных).

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

  • encoder_outputs (Union[~models.mm_grounding_dino.modeling_mm_grounding_dino.MMGroundingDinoEncoderOutput, tuple], необязательный) — Кортеж состоит из (last_hidden_state, необязательный: hidden_states, необязательный: attentions) last_hidden_state формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании декодера.
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.
  • 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).

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

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

Примеры:

>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> import torch
>>> from PIL import Image
>>> from transformers import AutoProcessor, AutoModelForZeroShotObjectDetection

>>> model_id = "IDEA-Research/grounding-dino-tiny"
>>> device = "cuda"

>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id).to(device)

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> # Check for cats and remote controls
>>> text_labels = [["a cat", "a remote control"]]

>>> inputs = processor(images=image, text=text_labels, return_tensors="pt").to(device)
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> results = processor.post_process_grounded_object_detection(
...     outputs,
...     threshold=0.4,
...     text_threshold=0.3,
...     target_sizes=[(image.height, image.width)]
... )
>>> # Retrieve the first image result
>>> result = results[0]
>>> for box, score, text_label in zip(result["boxes"], result["scores"], result["text_labels"]):
...     box = [round(x, 2) for x in box.tolist()]
...     print(f"Detected {text_label} with confidence {round(score.item(), 3)} at location {box}")
Detected a cat with confidence 0.479 at location [344.7, 23.11, 637.18, 374.28]
Detected a cat with confidence 0.438 at location [12.27, 51.91, 316.86, 472.44]
Detected a remote control with confidence 0.478 at location [38.57, 70.0, 176.78, 118.18]
Update on GitHub