Transformers documentation
MM Grounding DINO
Эта модель была опубликована в 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.
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}")Примечания
Ниже представлена таблица с результатами работы моделей в задаче обнаружения объектов на COCO (данные из официального репозитория):
Модель Backbone Данные для предварительного обучения Стиль COCO mAP mm_grounding_dino_tiny_o365v1_goldg Swin-T O365,GoldG Zero-shot 50.4(+2.3) mm_grounding_dino_tiny_o365v1_goldg_grit Swin-T O365,GoldG,GRIT Zero-shot 50.5(+2.1) mm_grounding_dino_tiny_o365v1_goldg_v3det Swin-T O365,GoldG,V3Det Zero-shot 50.6(+2.2) mm_grounding_dino_tiny_o365v1_goldg_grit_v3det Swin-T O365,GoldG,GRIT,V3Det Zero-shot 50.4(+2.0) mm_grounding_dino_base_o365v1_goldg_v3det Swin-B O365,GoldG,V3Det Zero-shot 52.5 mm_grounding_dino_base_all Swin-B O365,ALL - 59.5 mm_grounding_dino_large_o365v2_oiv6_goldg Swin-L O365V2,OpenImageV6,GoldG Zero-shot 53.0 mm_grounding_dino_large_all Swin-L O365V2,OpenImageV6,ALL - 60.3 Ниже представлена таблица с моделями MM Grounding DINO tiny и их показателями точности обнаружения объектов на LVIS (результаты из официального репозитория):
Модель Данные для предварительного обучения MiniVal APr MiniVal APc MiniVal APf MiniVal AP Val1.0 APr Val1.0 APc Val1.0 APf Val1.0 AP mm_grounding_dino_tiny_o365v1_goldg O365,GoldG 28.1 30.2 42.0 35.7(+6.9) 17.1 22.4 36.5 27.0(+6.9) mm_grounding_dino_tiny_o365v1_goldg_grit O365,GoldG,GRIT 26.6 32.4 41.8 36.5(+7.7) 17.3 22.6 36.4 27.1(+7.0) mm_grounding_dino_tiny_o365v1_goldg_v3det O365,GoldG,V3Det 33.0 36.0 45.9 40.5(+11.7) 21.5 25.5 40.2 30.6(+10.5) mm_grounding_dino_tiny_o365v1_goldg_grit_v3det O365,GoldG,GRIT,V3Det 34.2 37.4 46.2 41.4(+12.6) 23.6 27.6 40.5 31.9(+11.8) Эта реализация также поддерживает инференс для LLMDet. Ниже приведена таблица моделей LLMDet и их производительность на LVIS (результаты из официального репозитория):
Модель Данные для предварительного обучения MiniVal APr MiniVal APc MiniVal APf MiniVal AP Val1.0 APr Val1.0 APc Val1.0 APf Val1.0 AP llmdet_tiny (O365,GoldG,GRIT,V3Det) + GroundingCap-1M 44.7 37.3 39.5 50.7 34.9 26.0 30.1 44.3 llmdet_base (O365,GoldG,V3Det) + GroundingCap-1M 48.3 40.8 43.1 54.3 38.5 28.2 34.3 47.8 llmdet_large (O365V2,OpenImageV6,GoldG) + GroundingCap-1M 51.1 45.1 46.1 56.6 42.0 31.6 38.8 50.2
MMGroundingDinoConfig
класс transformers.MMGroundingDinoConfig
< 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 = 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.configMMGroundingDinoModel
класс transformers.MMGroundingDinoModel
< source >( config: MMGroundingDinoConfig )
Параметры
- config (MMGroundingDinoConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Grounding DINO без дополнительных компонентов (состоящая из backbone и encoder-decoder Transformer), выводящая «сырые» hidden-states без какого-либо специализированного head сверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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. Seeattentions` under returned tensors for more detail. - output_hidden_states (`
) -- Whether or not to return the hidden states of all layers. Seehidden_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 с наивысшими оценками (topconfig.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
< source >( config: MMGroundingDinoConfig )
Параметры
- config (MMGroundingDinoConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Grounding DINO (состоящая из backbone и encoder-decoder Transformer) с головками обнаружения объектов, для таких задач, как обнаружение объектов COCO.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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]