Transformers documentation
DETR
Эта модель была опубликована в HF papers 26.05.2020 и добавлена в Hugging Face Transformers 09.06.2021.
DETR
DETR состоит из свёрточного бэкбона, за которым следует трансформер с архитектурой «энкодер-декодер», обучаемый end-to-end для обнаружения объектов. Он значительно упрощает сложность моделей, таких как Faster-R-CNN и Mask-R-CNN, которые используют, например, region proposals, процедуру non-maximum suppression и генерацию anchor. Кроме того, DETR можно естественным образом расширить для выполнения паноптической сегментации, просто добавив mask head поверх выходов декодера.
Все исходные контрольные точки DETR можно найти в организации AI at Meta.
Эта модель была добавлена пользователем nielsr.
Щёлкните по моделям DETR в боковой панели справа, чтобы увидеть больше примеров применения DETR к различным задачам обнаружения объектов и сегментации.
Установите
use_kernels=Trueв from_pretrained(), чтобы заменить поддерживаемые слои на оптимизированные ядра из Hub. Подробнее см. в разделе Загрузка ядер.
Приведённый ниже пример показывает, как выполнять обнаружение объектов с помощью класса Pipeline или класса AutoModel.
from transformers import pipeline
pipeline = pipeline(
"object-detection",
model="facebook/detr-resnet-50",
device_map=0
)
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForObjectDetection
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
image_processor = AutoImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = AutoModelForObjectDetection.from_pretrained("facebook/detr-resnet-50", device_map="auto")
# prepare image for the model
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)
for result in results:
for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
score, label = score.item(), label_id.item()
box = [round(i, 2) for i in box.tolist()]
print(f"{model.config.id2label[label]}: {score:.2f} {box}")How DETR works
Вот краткое описание того, как работает DetrForObjectDetection:
Сначала изображение прогоняется через предобученный свёрточный бэкбон (в статье авторы используют ResNet-50/ResNet-101). Допустим, мы также добавляем размерность батча. Это означает, что входом в бэкбон является тензор формы (batch_size, 3, height, width), при условии, что изображение имеет 3 цветовых канала (RGB). Свёрточный бэкбон выводит новую карту признаков с более низким разрешением, как правило, формы (batch_size, 2048, height/32, width/32). Затем она проецируется в размерность скрытого слоя Transformer в DETR, которая по умолчанию составляет 256, с помощью слоя nn.Conv2D. Таким образом, у нас получается тензор формы (batch_size, 256, height/32, width/32). Далее карта признаков разворачивается и транспонируется, чтобы получить тензор формы (batch_size, seq_len, d_model) = (batch_size, width/32*height/32, 256). Таким образом, отличие от моделей NLP состоит в том, что длина последовательности здесь на самом деле длиннее обычного, но d_model меньше (в NLP он обычно составляет 768 или больше).
Далее эти данные передаются в энкодер, который выдает encoder_hidden_states той же формы (их можно рассматривать как признаки изображения). Затем в декодер передаются так называемые object queries. Это тензор формы (batch_size, num_queries, d_model), где num_queries обычно устанавливается равным 100, а значения инициализируются нулями. Эти входные эмбеддинги представляют собой обучаемые позиционные кодирования, которые авторы называют object queries; аналогично энкодеру, они добавляются ко входу каждого слоя внимания. Каждый object query ищет на изображении определенный объект. Декодер обновляет эти эмбеддинги через несколько слоев self-attention и encoder-decoder attention, чтобы на выходе получить decoder_hidden_states той же формы: (batch_size, num_queries, d_model). Далее сверху добавляются два слоя для обнаружения объектов: линейный слой для классификации каждого object query как одного из объектов или «no object», а также MLP для предсказания ограничивающих прямоугольников (bounding boxes) для каждого запроса.
Модель обучается с использованием потери бипартитного сопоставления: фактически мы сравниваем предсказанные классы и ограничивающие рамки для каждого из N = 100 запросов объектов с эталонными аннотациями, дополненными до той же длины N (таким образом, если на изображении содержится только 4 объекта, то для 96 аннотаций классом будет «нет объекта», а ограничивающей рамкой — «нет рамки»). Для поиска оптимального однозначного соответствия между каждым из N запросов и каждой из N аннотаций используется алгоритм венгерского сопоставления. Далее для оптимизации параметров модели применяются стандартная кросс-энтропия (для классов) и линейная комбинация L1 и потери обобщённого IoU (для ограничивающих рамок).
DETR можно естественным образом расширить для выполнения паноптической сегментации (которая объединяет семантическую и инстанс-сегментацию). DetrForSegmentation добавляет головку для сегментационных масок поверх DetrForObjectDetection. Головку маски можно обучать либо совместно, либо в двухэтапном процессе: сначала обучается модель DetrForObjectDetection для обнаружения ограничивающих прямоугольников вокруг «вещей» (инстансов) и «материала» (фоновых объектов, таких как деревья, дороги, небо), затем все веса замораживаются, и обучается только головка маски в течение 25 эпох. Экспериментально эти два подхода дают сопоставимые результаты. Обратите внимание, что предсказание прямоугольников необходимо для возможности обучения, поскольку венгерское сопоставление вычисляется на основе расстояний между прямоугольниками.
Примечания
- DETR использует так называемые object queries для обнаружения объектов на изображении. Количество запросов определяет максимальное число объектов, которые можно обнаружить на одном изображении, и по умолчанию установлено в 100 (см. параметр
num_queriesв DetrConfig). Обратите внимание, что полезно иметь некоторый запас (в COCO авторы использовали 100, тогда как максимальное количество объектов на изображении COCO составляет ~70). - Декодер DETR обновляет эмбеддинги запросов параллельно. Это отличается от языковых моделей, таких как GPT-2, которые используют автотрессивное декодирование вместо параллельного. Поэтому маска каузального внимания не используется.
- DETR добавляет позиционные эмбеддинги к скрытым состояниям на каждом слое само-внимания и кросс-внимания перед проекцией в запросы и ключи. Для позиционных эмбеддингов изображения можно выбрать фиксированные синусоидальные или обучаемые абсолютные позиционные эмбеддинги. По умолчанию параметр
position_embedding_typeв DetrConfig установлен в значение"sine". - В ходе обучения авторы DETR обнаружили, что использование вспомогательных потерь в декодере помогает модели, в частности, выводить правильное количество объектов каждого класса. Если установить параметр
auxiliary_lossв DetrConfig в значениеTrue, то после каждого слоя декодера будут добавлены предсказательные нейронные сети и венгерские потери (при этом FFN разделяют параметры). - Если вы хотите обучать модель в распределённой среде на нескольких узлах, необходимо обновить переменную num_boxes в классе DetrLoss файла modeling_detr.py. При обучении на нескольких узлах это значение должно быть равно среднему числу целевых боксов по всем узлам, как показано в исходной реализации здесь.
- DetrForObjectDetection и DetrForSegmentation можно инициализировать с любым свёрточным бэкбоном, доступным в timm library. Например, для инициализации с бэкбоном MobileNet необходимо установить атрибут
backboneобъекта DetrConfig в значение"tf_mobilenetv3_small_075", а затем инициализировать модель с этим конфигом. - DER изменяет размер входных изображений так, чтобы кратчайшая сторона была не менее определённого количества пикселей, а наибольшая — не более 1333 пикселей. Во время обучения используется масштабное аугментация, при которой кратчайшая сторона случайно устанавливается в диапазоне от 480 до 800 пикселей. Во время инференса кратчайшая сторона устанавливается в 800 пикселей. Для подготовки изображений (и необязательных аннотаций в формате COCO) для модели можно использовать DetrImageProcessor. Из-за такого изменения размера изображения в батче могут иметь разные размеры. DETR решает эту проблему, дополняя изображения до наибольшего размера в батче и создавая пиксельную маску, которая указывает, какие пиксели являются реальными, а какие — дополнением. Альтернативно, можно также определить собственную
collate_fnдля объединения изображений в батч, используя~transformers.DetrImageProcessor.pad_and_create_pixel_mask. - Размер изображений определяет объём используемой памяти, а значит, и значение
batch_size. Рекомендуется использовать размер батча 2 на каждый GPU. Подробнее — в этом треде на GitHub.
Существует три других способа создать экземпляр модели DETR (в зависимости от ваших предпочтений):
- Вариант 1: Инициализация DETR с предобученными весами для всей модели
from transformers import DetrForObjectDetection
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", device_map="auto")- Вариант 2: Инициализация DETR со случайными весами для Transformer, но с предобученными весами для backbone
from transformers import DetrConfig, DetrForObjectDetection
config = DetrConfig()
model = DetrForObjectDetection(config)- Вариант 3: Инициализация DETR со случайными весами для backbone + Transformer
config = DetrConfig() model = DetrForObjectDetection(config)
В качестве резюме рассмотрите следующую таблицу:
| Задача | Обнаружение объектов | Сегментация экземпляров | Паноптическая сегментация |
|---|---|---|---|
| Описание | Предсказание ограничивающих прямоугольников и классов объектов на изображении | Предсказание масок вокруг объектов (т. е. экземпляров) на изображении | Предсказание масок вокруг обоих объектов (т. е. экземпляров), а также «вещей» (т. е. фоновых элементов, таких как деревья и дороги) на изображении |
| Модель | DetrForObjectDetection | DetrForSegmentation | DetrForSegmentation |
| Пример датасета | Детекция COCO | детекция COCO, паноптическая сегментация COCO | COCO panoptic |
| Формат аннотаций, которые нужно передать в DetrImageProcessor | {‘image_id’: int, ‘annotations’: list[Dict]}, где каждый Dict является аннотацией объекта в формате COCO | {‘image_id’: int, ‘annotations’: list[Dict]} (в случае COCO detection) или {‘file_name’: str, ‘image_id’: int, ‘segments_info’: list[Dict]} (в случае COCO panoptic) | {‘file_name’: str, ‘image_id’: int, ‘segments_info’: list[Dict]} и masks_path (путь к каталогу, содержащему файлы PNG с масками) |
| Постобработка (т. е. преобразование вывода модели в формат Pascal VOC) | ~transformers.DetrImageProcessor.post_process | ~transformers.DetrImageProcessor.post_process_segmentation | ~transformers.DetrImageProcessor.post_process_segmentation, ~transformers.DetrImageProcessor.post_process_panoptic |
| evaluators | CocoEvaluator с iou_types="bbox" | CocoEvaluator с iou_types="bbox" или "segm" | CocoEvaluator с iou_types="bbox" или "segm", PanopticEvaluator |
- Кратко: данные следует подготовить в формате COCO detection или COCO panoptic, затем использовать DetrImageProcessor для создания
pixel_values,pixel_maskи необязательныхlabels, которые можно использовать для обучения (или дообучения) модели. - Для оценки необходимо сначала преобразовать выходные данные модели с помощью одного из методов постобработки DetrImageProcessor. Полученные результаты можно передать в
CocoEvaluatorилиPanopticEvaluator, которые позволяют вычислять метрики, такие как средняя точность (mAP) и паноптическое качество (PQ). Последние объекты реализованы в оригинальном репозитории. Дополнительную информацию об оценке см. в примерах в ноутбуках.
Ресурсы
- См. эти ноутбуки с примерами дообучения DetrForObjectDetection и DetrForSegmentation на собственном наборе данных.
DetrConfig
класс transformers.DetrConfig
< 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 = Nonenum_channels: int = 3num_queries: int = 100encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0activation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02init_xavier_std: float = 1.0auxiliary_loss: bool = Falseposition_embedding_type: str = 'sine'dilation: bool = Falseclass_cost: int = 1bbox_cost: int = 5giou_cost: int = 2mask_loss_coefficient: int = 1dice_loss_coefficient: int = 1bbox_loss_coefficient: int = 5giou_loss_coefficient: int = 2eos_coefficient: float = 0.1 )
Параметры
- is_encoder_decoder (
bool, необязательный, по умолчаниюTrue) — Указывает, используется ли модель в качестве энкодера/декодера. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], необязательный) — Конфигурация модели-бэкбона. - num_channels (
int, необязательный, по умолчанию3) — Количество входных каналов. - num_queries (
int, необязательный, по умолчанию 100) — Количество запросов объектов, то есть слотов для обнаружения. Это максимальное число объектов, которые ConditionalDetrModel может обнаружить на одном изображении. Для COCO рекомендуется использовать 100 запросов. - 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. - encoder_layerdrop (
Union[float, int], необязательный, по умолчанию0.0) — Вероятность LayerDrop для энкодера. Подробности — в [статье о LayerDrop](см. https://huggingface.co/papers/1909.11556). - decoder_layerdrop (
Union[float, int], необязательный, по умолчанию0.0) — Вероятность LayerDrop для декодера. Подробности — в [статье о LayerDrop](см. https://huggingface.co/papers/1909.11556). - 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 для активаций внутри полносвязного слоя. - init_std (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов. - init_xavier_std (
float, необязательный, по умолчанию1.0) — Коэффициент масштабирования, используемый для инициализации кросс-внимания по методу Ксавье. - auxiliary_loss (
bool, необязательный, по умолчаниюFalse) — Использовать ли вспомогательные потери декодирования (потери на каждом слое декодера). - position_embedding_type (
str, необязательный, по умолчанию"sine") — Тип позиционных эмбеддингов, применяемых поверх признаков изображения. Одно из значений:"sine"или"learned". - dilation (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли заменить stride на dilation в последнем свёрточном блоке (DC5). Поддерживается только приuse_timm_backbone=True. - class_cost (
int, необязательный, по умолчанию1) — Относительный вес ошибки классификации в стоимости венгерского сопоставления. - bbox_cost (
int, необязательный, по умолчанию5) — Относительный вес ошибки L1 для ограничивающих прямоугольников в стоимости венгерского сопоставления. - giou_cost (
int, необязательный, по умолчанию2) — Относительный вес потерь обобщённого IoU в стоимости венгерского сопоставления. - mask_loss_coefficient (
int, необязательный, по умолчанию1) — Относительный вес фокальной функции потерь в функции потерь паноптической сегментации. - dice_loss_coefficient (
int, необязательный, по умолчанию1) — Относительный вес функции потерь dice в функции потерь паноптической сегментации. - bbox_loss_coefficient (
int, необязательный, по умолчанию5) — Относительный вес потерь L1 для ограничивающих прямоугольников в потере панорамной сегментации. - giou_loss_coefficient (
int, необязательный, по умолчанию2) — Относительный вес функции потерь обобщённого IoU в функции потерь паноптической сегментации. - eos_coefficient (
float, необязательный, по умолчанию0.1) — Относительный вес класса «объект отсутствует» в функции потерь обнаружения объектов.
Это класс конфигурации для хранения настроек модели DetrModel. Он используется для создания модели Detr в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/detr-resnet-50
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Примеры:
>>> from transformers import DetrConfig, DetrModel
>>> # Initializing a DETR facebook/detr-resnet-50 style configuration
>>> configuration = DetrConfig()
>>> # Initializing a model (with random weights) from the facebook/detr-resnet-50 style configuration
>>> model = DetrModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configDetrImageProcessor
класс transformers.DetrImageProcessor
< source >( **kwargs: *<class 'transformers.models.detr.image_processing_detr.DetrImageProcessorKwargs'> )
Параметры
- do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли изменять размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, по умолчанию{'shortest_edge' -- 800, 'longest_edge': 1333}): Определяет максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional, по умолчаниюFalse) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size задано как int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, по умолчанию2) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли выполнять рескейлинг изображения. - rescale_factor (
float, kwargs, optional, по умолчанию0.00392156862745098) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.485, 0.456, 0.406]) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.229, 0.224, 0.225]) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - format (
str, kwargs, optional, по умолчаниюAnnotationFormat.COCO_DETECTION) — Формат данных аннотаций. Одно из значений: “coco_detection” или “coco_panoptic”. - do_convert_annotations (
bool, kwargs, optional, по умолчаниюTrue) — Управляет преобразованием аннотаций в формат, ожидаемый моделью DETR. Преобразует ограничивающие рамки в формат(center_x, center_y, width, height)в диапазоне[0, 1]. Может быть переопределён параметромdo_convert_annotationsв методеpreprocess.
Создаёт процессор изображений DetrImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.detr.image_processing_detr.DetrImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Параметры
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Изображение для предобработки. Ожидается одно изображение или батч изображений со значениями пикселей в диапазоне от 0 до 255. Если передаются изображения со значениями пикселей в диапазоне от 0 до 1, установитеdo_rescale=False. - annotations (
AnnotationTypeилиlist[AnnotationType], необязательный) — Аннотации, которые преобразуются в соответствии с применяемым к изображениям заполнением (padding). - return_segmentation_masks (
bool, необязательный, по умолчаниюself.return_segmentation_masks) — Возвращать ли маски сегментации. - masks_path (
strилиpathlib.Path, необязательный) — Путь к каталогу, содержащему маски сегментации. - do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional) — Указывает, нужно ли изменить размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Описывает максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size является целым числом. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional) — Нужно ли перемасштабировать изображение. - rescale_factor (
float, kwargs, optional) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional) — Нужно ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional) — Определяет, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Точная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - format (
str, kwargs, optional, по умолчаниюAnnotationFormat.COCO_DETECTION) — Формат данных аннотаций. Одно из значений: “coco_detection” или “coco_panoptic”. - do_convert_annotations (
bool, kwargs, optional, по умолчаниюTrue) — Управляет преобразованием аннотаций в формат, ожидаемый моделью DETR. Преобразует ограничивающие рамки в формат(center_x, center_y, width, height)в диапазоне[0, 1]. Может быть переопределён параметромdo_convert_annotationsв методеpreprocess.
Возвращает
~image_processing_base.BatchFeature
- data (
dict) — Словарь списков/массивов/тензоров, возвращаемый методом call (‘pixel_values’ и т. д.). - tensor_type (
Union[None, str, TensorType], необязательный) — Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[Dict]
Параметры
- outputs (
DetrObjectDetectionOutput) — Сырые выходные данные модели. - threshold (
float, необязательный) — Порог оценки для сохранения предсказаний обнаружения объектов. - target_sizes (
torch.Tensororlist[tuple[int, int]], необязательный) — Тензор формы(batch_size, 2)или список кортежей (tuple[int, int]), содержащих целевой размер(height, width)каждого изображения в батче. Если не задано, предсказания не будут масштабироваться.
Возвращает
list[Dict]
Список словарей, где каждый словарь содержит оценки, метки и рамки для изображения в батче, как их предсказал модель.
Преобразует необработанный вывод DetrForObjectDetection в итоговые ограничивающие рамки в формате (top_left_x, top_left_y, bottom_right_x, bottom_right_y). Поддерживается только PyTorch.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Параметры
- outputs (DetrForSegmentation) — Сырые выходные данные модели.
- target_sizes (
list[tuple[int, int]], необязательный) — Список кортежей (tuple[int, int]), содержащих целевой размер (высота, ширина) каждого изображения в пачке. Если не задано, предсказания не будут масштабироваться. - return_segmentation_scores (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли возвращать оценки сегментации вместе с картой сегментации. ЕслиTrue, каждый элемент возвращаемого списка представляет собойSemanticSegmentationPostProcessorOutputс полямиsegmentation(идентификаторы классов, форма(height, width)) иsegmentation_scores(форма(num_classes, height, width)).
Возвращает
list[torch.Tensor] или list[SemanticSegmentationPostProcessorOutput]
Если return_segmentation_scores=False (по умолчанию), возвращается список длины batch_size, где каждый элемент — это карта сегментации формы (height, width) с идентификаторами классов. Если return_segmentation_scores=True, возвращается список объектов SemanticSegmentationPostProcessorOutput с полями segmentation (идентификаторы классов, форма (height, width)) и segmentation_scores (форма (num_classes, height, width)). В обоих случаях (height, width) соответствует целевому размеру (если указан target_sizes).
Преобразует выход DetrForSegmentation в карты семантической сегментации. Поддерживается только PyTorch.
post_process_instance_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = False ) → list[Dict]
Параметры
- outputs (DetrForSegmentation) — Сырые выходные данные модели.
- threshold (
float, необязательный, по умолчанию 0.5) — Порог вероятности, ниже которого предсказанные маски экземпляров отбрасываются. - mask_threshold (
float, необязательный, по умолчанию 0.5) — Порог, используемый при преобразовании предсказанных масок в бинарные значения. - overlap_mask_area_threshold (
float, необязательный, по умолчанию 0.8) — Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра. - target_sizes (
list[Tuple], необязательный) — Список длины (batch_size), где каждый элемент списка (tuple[int, int]]) соответствует требуемому итоговому размеру (высота, ширина) каждого предсказания. Если не задано, предсказания не будут масштабироваться. - return_coco_annotation (
bool, необязательный) — По умолчаниюFalse. Если установлено вTrue, карты сегментации возвращаются в формате COCO run-length encoding (RLE).
Возвращает
list[Dict]
Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- segmentation — тензор формы
(height, width), где каждый пиксель представляетsegment_idилиlist[List]— RLE-кодирование карты сегментации, если return_coco_annotation установлено вTrue. ЗначениеNone, если маска не найдена вышеthreshold. - segments_info — Словарь, содержащий дополнительную информацию о каждом сегменте.
- id — целое число, представляющее
segment_id. - label_id — целое число, представляющее идентификатор метки / семантического класса, соответствующий
segment_id. - score — Оценка предсказания для сегмента с
segment_id.
- id — целое число, представляющее
Преобразует выход DetrForSegmentation в предсказания сегментации объектов. Поддерживается только PyTorch.
post_process_panoptic_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]
Параметры
- outputs (DetrForSegmentation) — Выводы модели DetrForSegmentation.
- threshold (
float, необязательный, по умолчанию 0.5) — Порог вероятности, ниже которого предсказанные маски экземпляров отбрасываются. - mask_threshold (
float, необязательный, по умолчанию 0.5) — Порог, используемый при преобразовании предсказанных масок в бинарные значения. - overlap_mask_area_threshold (
float, необязательный, по умолчанию 0.8) — Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра. - label_ids_to_fuse (
Set[int], необязательный) — Все экземпляры меток из этого состояния будут объединены в один. Например, можно указать, что на изображении может быть только одно небо, но несколько человек, тогда ID метки «небо» будет включён в этот набор, а ID метки «человек» — нет. - target_sizes (
list[Tuple], необязательный) — Список длины (batch_size), где каждый элемент списка (tuple[int, int]]) соответствует требуемому итоговому размеру (высота, ширина) каждого предсказания в батче. Если не задано, предсказания не будут масштабироваться.
Возвращает
list[Dict]
Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- segmentation — тензор формы
(height, width), где каждый пиксель представляетsegment_idилиNone, если маска вышеthresholdне найдена. Если указаноtarget_sizes, segmentation масштабируется до соответствующего элементаtarget_sizes. - segments_info — Словарь, содержащий дополнительную информацию о каждом сегменте.
- id — целое число, представляющее
segment_id. - label_id — целое число, представляющее идентификатор метки / семантического класса, соответствующий
segment_id. - was_fused — булево значение,
True, еслиlabel_idсодержалось вlabel_ids_to_fuse, иначеFalse. Несколько экземпляров одного и того же класса / метки были объединены и получили единыйsegment_id. - score — Оценка предсказания для сегмента с
segment_id.
- id — целое число, представляющее
Преобразует выход DetrForSegmentation в предсказания паноптической сегментации изображений. Поддерживается только PyTorch.
DetrImageProcessorPil
класс transformers.DetrImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.detr.image_processing_pil_detr.DetrImageProcessorKwargs'> )
Параметры
- do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли изменять размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, по умолчанию{'shortest_edge' -- 800, 'longest_edge': 1333}): Определяет максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional, по умолчаниюFalse) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size задано как int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, по умолчанию2) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли выполнять рескейлинг изображения. - rescale_factor (
float, kwargs, optional, по умолчанию0.00392156862745098) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.485, 0.456, 0.406]) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.229, 0.224, 0.225]) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - format (
str, kwargs, optional, по умолчаниюAnnotationFormat.COCO_DETECTION) — Формат данных аннотаций. Одно из значений: “coco_detection” или “coco_panoptic”. - do_convert_annotations (
bool, kwargs, optional, по умолчаниюTrue) — Управляет преобразованием аннотаций в формат, ожидаемый моделью DETR. Преобразует ограничивающие рамки в формат(center_x, center_y, width, height)в диапазоне[0, 1]. Может быть переопределён параметромdo_convert_annotationsв методеpreprocess.
Создаёт процессор изображений DetrImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.detr.image_processing_pil_detr.DetrImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Параметры
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Изображение для предобработки. Ожидается одно изображение или батч изображений со значениями пикселей в диапазоне от 0 до 255. Если передаются изображения со значениями пикселей в диапазоне от 0 до 1, установитеdo_rescale=False. - annotations (
AnnotationTypeилиlist[AnnotationType], необязательный) — Аннотации, которые преобразуются в соответствии с применяемым к изображениям заполнением (padding). - return_segmentation_masks (
bool, необязательный, по умолчаниюself.return_segmentation_masks) — Возвращать ли маски сегментации. - masks_path (
strилиpathlib.Path, необязательный) — Путь к каталогу, содержащему маски сегментации. - do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional) — Указывает, нужно ли изменить размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Описывает максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size является целым числом. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional) — Нужно ли перемасштабировать изображение. - rescale_factor (
float, kwargs, optional) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional) — Нужно ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional) — Определяет, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Точная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - format (
str, kwargs, optional, по умолчаниюAnnotationFormat.COCO_DETECTION) — Формат данных аннотаций. Одно из значений: “coco_detection” или “coco_panoptic”. - do_convert_annotations (
bool, kwargs, optional, по умолчаниюTrue) — Управляет преобразованием аннотаций в формат, ожидаемый моделью DETR. Преобразует ограничивающие рамки в формат(center_x, center_y, width, height)в диапазоне[0, 1]. Может быть переопределён параметромdo_convert_annotationsв методеpreprocess.
Возвращает
~image_processing_base.BatchFeature
- data (
dict) — Словарь списков/массивов/тензоров, возвращаемый методом call (‘pixel_values’ и т. д.). - tensor_type (
Union[None, str, TensorType], необязательный) — Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[Dict]
Параметры
- outputs (
DetrObjectDetectionOutput) — Сырые выходные данные модели. - threshold (
float, необязательный) — Порог оценки для сохранения предсказаний обнаружения объектов. - target_sizes (
torch.Tensororlist[tuple[int, int]], необязательный) — Тензор формы(batch_size, 2)или список кортежей (tuple[int, int]), содержащих целевой размер(height, width)каждого изображения в батче. Если не задано, предсказания не будут масштабироваться.
Возвращает
list[Dict]
Список словарей, где каждый словарь содержит оценки, метки и рамки для изображения в батче, как их предсказал модель.
Преобразует необработанный вывод DetrForObjectDetection в итоговые ограничивающие рамки в формате (top_left_x, top_left_y, bottom_right_x, bottom_right_y). Поддерживается только PyTorch.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Параметры
- outputs (DetrForSegmentation) — Сырые выходные данные модели.
- target_sizes (
list[tuple[int, int]], необязательный) — Список кортежей (tuple[int, int]), содержащих целевой размер (высота, ширина) каждого изображения в пачке. Если не задано, предсказания не будут масштабироваться. - return_segmentation_scores (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли возвращать оценки сегментации вместе с картой сегментации. ЕслиTrue, каждый элемент возвращаемого списка представляет собойSemanticSegmentationPostProcessorOutputс полямиsegmentation(идентификаторы классов, форма(height, width)) иsegmentation_scores(форма(num_classes, height, width)).
Возвращает
list[torch.Tensor] или list[SemanticSegmentationPostProcessorOutput]
Если return_segmentation_scores=False (по умолчанию), возвращается список длины batch_size, где каждый элемент — это карта сегментации формы (height, width) с идентификаторами классов. Если return_segmentation_scores=True, возвращается список объектов SemanticSegmentationPostProcessorOutput с полями segmentation (идентификаторы классов, форма (height, width)) и segmentation_scores (форма (num_classes, height, width)). В обоих случаях (height, width) соответствует целевому размеру (если указан target_sizes).
Преобразует выход DetrForSegmentation в карты семантической сегментации. Поддерживается только PyTorch.
post_process_instance_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = False ) → list[Dict]
Параметры
- outputs (DetrForSegmentation) — Сырые выходные данные модели.
- threshold (
float, необязательный, по умолчанию 0.5) — Порог вероятности, ниже которого предсказанные маски экземпляров отбрасываются. - mask_threshold (
float, необязательный, по умолчанию 0.5) — Порог, используемый при преобразовании предсказанных масок в бинарные значения. - overlap_mask_area_threshold (
float, необязательный, по умолчанию 0.8) — Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра. - target_sizes (
list[Tuple], необязательный) — Список длины (batch_size), где каждый элемент списка (tuple[int, int]]) соответствует требуемому итоговому размеру (высота, ширина) каждого предсказания. Если не задано, предсказания не будут масштабироваться. - return_coco_annotation (
bool, необязательный) — По умолчаниюFalse. Если установлено вTrue, карты сегментации возвращаются в формате COCO run-length encoding (RLE).
Возвращает
list[Dict]
Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- segmentation — тензор формы
(height, width), где каждый пиксель представляетsegment_idилиlist[List]— RLE-кодирование карты сегментации, если return_coco_annotation установлено вTrue. ЗначениеNone, если маска не найдена вышеthreshold. - segments_info — Словарь, содержащий дополнительную информацию о каждом сегменте.
- id — целое число, представляющее
segment_id. - label_id — целое число, представляющее идентификатор метки / семантического класса, соответствующий
segment_id. - score — Оценка предсказания для сегмента с
segment_id.
- id — целое число, представляющее
Преобразует выход DetrForSegmentation в предсказания сегментации объектов. Поддерживается только PyTorch.
post_process_panoptic_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]
Параметры
- outputs (DetrForSegmentation) — Выводы модели DetrForSegmentation.
- threshold (
float, необязательный, по умолчанию 0.5) — Порог вероятности, ниже которого предсказанные маски экземпляров отбрасываются. - mask_threshold (
float, необязательный, по умолчанию 0.5) — Порог, используемый при преобразовании предсказанных масок в бинарные значения. - overlap_mask_area_threshold (
float, необязательный, по умолчанию 0.8) — Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра. - label_ids_to_fuse (
Set[int], необязательный) — Все экземпляры меток из этого состояния будут объединены в один. Например, можно указать, что на изображении может быть только одно небо, но несколько человек, тогда ID метки «небо» будет включён в этот набор, а ID метки «человек» — нет. - target_sizes (
list[Tuple], необязательный) — Список длины (batch_size), где каждый элемент списка (tuple[int, int]]) соответствует требуемому итоговому размеру (высота, ширина) каждого предсказания в батче. Если не задано, предсказания не будут масштабироваться.
Возвращает
list[Dict]
Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- segmentation — тензор формы
(height, width), где каждый пиксель представляетsegment_idилиNone, если маска вышеthresholdне найдена. Если указаноtarget_sizes, segmentation масштабируется до соответствующего элементаtarget_sizes. - segments_info — Словарь, содержащий дополнительную информацию о каждом сегменте.
- id — целое число, представляющее
segment_id. - label_id — целое число, представляющее идентификатор метки / семантического класса, соответствующий
segment_id. - was_fused — булево значение,
True, еслиlabel_idсодержалось вlabel_ids_to_fuse, иначеFalse. Несколько экземпляров одного и того же класса / метки были объединены и получили единыйsegment_id. - score — Оценка предсказания для сегмента с
segment_id.
- id — целое число, представляющее
Преобразует выход DetrForSegmentation в предсказания паноптической сегментации изображений. Поддерживается только PyTorch.
Специфические для DETR выходные данные
класс transformers.models.detr.modeling_detr.DetrModelOutput
< source >( last_hidden_state: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Nonedecoder_hidden_states: tuple[torch.Tensor, ...] | None = Nonedecoder_attentions: tuple[torch.Tensor, ...] | None = Nonecross_attentions: tuple[torch.Tensor, ...] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor, ...] | None = Noneencoder_attentions: tuple[torch.Tensor, ...] | None = Noneintermediate_hidden_states: typing.Optional[torch.Tensor] = None )
Параметры
- last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя декодера модели.Если используется
past_key_values, выводится только последнее скрытое состояние последовательностей формы(batch_size, 1, hidden_size). - past_key_values (
EncoderDecoderCache, необязательный, возвращается, еслиuse_cache=Trueпередан или еслиconfig.use_cache=True) — это EncoderDecoderCache экземпляр. Подробнее см. в нашем руководстве по кэшированию KV.Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать (см. вход
past_key_values) для ускорения последовательного декодирования. - 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 внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- intermediate_hidden_states (
torch.Tensorформы(config.decoder_layers, batch_size, sequence_length, hidden_size), необязательный, возвращается приconfig.auxiliary_loss=True) — Промежуточные активации декодера, то есть выход каждого слоя декодера, прошедший через нормализацию слоя (layernorm).
Базовый класс для выходов модели DETR с архитектурой «кодировщик-декодировщик». Этот класс добавляет к Seq2SeqModelOutput один атрибут, а именно — необязательный стек промежуточных активаций декодера, то есть выходы каждого слоя декодера, каждый из которых прошёл через нормализацию слоя. Это полезно при обучении модели с использованием вспомогательных потерь декодирования.
класс transformers.models.detr.modeling_detr.DetrObjectDetectionOutput
< source >( loss: typing.Optional[torch.Tensor] = Noneloss_dict: dict | None = Nonelogits: typing.Optional[torch.Tensor] = Nonepred_boxes: typing.Optional[torch.Tensor] = Noneauxiliary_outputs: list[dict] | None = Nonelast_hidden_state: typing.Optional[torch.Tensor] = Nonedecoder_hidden_states: tuple[torch.Tensor] | None = Nonedecoder_attentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Noneencoder_attentions: tuple[torch.Tensor] | None = None )
Параметры
- loss (
torch.Tensorформы(1,), необязательный, возвращается, если предоставленыlabels)) — Суммарная потеря как линейная комбинация отрицательной логарифмической правдоподобности (кросс-энтропии) для предсказания класса и потери для ограничивающих прямоугольников. Последняя определяется как линейная комбинация L1-потери и обобщенной масштабно-инвариантной потери IoU. - loss_dict (
Dict, необязательный) — Словарь, содержащий отдельные значения потерь. Полезен для ведения журнала. - logits (
torch.Tensorформы(batch_size, num_queries, num_classes + 1)) — Логиты классификации (включая класс «нет объекта») для всех запросов. - pred_boxes (
torch.Tensorформы(batch_size, num_queries, 4)) — Нормализованные координаты границ для всех запросов, представленные в виде (center_x, center_y, width, height). Эти значения нормализованы в диапазоне [0, 1] относительно размера каждого отдельного изображения в батче (игнорируя возможное выравнивание). Вы можете использовать post_process_object_detection(), чтобы получить ненормализованные границы. - auxiliary_outputs (
list[Dict], необязательный) — Необязательный параметр, возвращается только при активации вспомогательных потерь (т. е.config.auxiliary_lossустановлен вTrue) и при наличии меток. Это список словарей, содержащих два указанных выше ключа (logitsиpred_boxes) для каждого слоя декодера. - last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя декодера модели. - 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 внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип результата DetrForObjectDetection.
класс transformers.models.detr.modeling_detr.DetrSegmentationOutput
< source >( loss: typing.Optional[torch.Tensor] = Noneloss_dict: dict | None = Nonelogits: typing.Optional[torch.Tensor] = Nonepred_boxes: typing.Optional[torch.Tensor] = Nonepred_masks: typing.Optional[torch.Tensor] = Noneauxiliary_outputs: list[dict] | None = Nonelast_hidden_state: typing.Optional[torch.Tensor] = Nonedecoder_hidden_states: tuple[torch.Tensor] | None = Nonedecoder_attentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Noneencoder_attentions: tuple[torch.Tensor] | None = None )
Параметры
- loss (
torch.Tensorформы(1,), необязательный, возвращается, если предоставленыlabels)) — Суммарная потеря как линейная комбинация отрицательной логарифмической правдоподобности (кросс-энтропии) для предсказания класса и потери для ограничивающих прямоугольников. Последняя определяется как линейная комбинация L1-потери и обобщенной масштабно-инвариантной потери IoU. - loss_dict (
Dict, необязательный) — Словарь, содержащий отдельные значения потерь. Полезен для ведения журнала. - logits (
torch.Tensorформы(batch_size, num_queries, num_classes + 1)) — Логиты классификации (включая класс «нет объекта») для всех запросов. - pred_boxes (
torch.Tensorформы(batch_size, num_queries, 4)) — Нормализованные координаты границ для всех запросов, представленные в виде (center_x, center_y, width, height). Эти значения нормализованы в диапазоне [0, 1] относительно размера каждого отдельного изображения в батче (игнорируя возможное выравнивание). Вы можете использовать post_process_object_detection(), чтобы получить ненормализованные границы. - pred_masks (
torch.Tensorформы(batch_size, num_queries, height/4, width/4)) — Логиты сегментационных масок для всех запросов. См. также post_process_semantic_segmentation() или post_process_instance_segmentation() post_process_panoptic_segmentation() для оценки семантических, инстантных и паноптических сегментационных масок соответственно. - auxiliary_outputs (
list[Dict], необязательный) — Необязательный параметр, возвращается только при активации вспомогательных потерь (т. е.config.auxiliary_lossустановлен вTrue) и при наличии меток. Это список словарей, содержащих два указанных выше ключа (logitsиpred_boxes) для каждого слоя декодера. - last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя декодера модели. - 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 внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Тип результата DetrForSegmentation.
DetrModel
класс transformers.DetrModel
< source >( config: DetrConfig )
Параметры
- config (DetrConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Базовая модель DETR (состоящая из backbone и encoder-decoder Transformer), выводящая «сырые» hidden-states без какого-либо специализированного head сверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrModelOutput 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 для пикселей, являющихся заполнением (т. е. замаскированных).
- decoder_attention_mask (
torch.Tensorформы(batch_size, num_queries), необязательный) — Маска для предотвращения выполнения внимания на определённых object queries в декодере. Значения маски выбираются из[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 + проекционного слоя), вы можете напрямую передать сглаженное представление изображения. Полезно для обхода визуального backbone. - decoder_inputs_embeds (
torch.Tensorформы(batch_size, num_queries, hidden_size), необязательный) — Необязательно, вместо инициализации запросов тензором нулей, можно передать встроенное представление напрямую. Полезно для задач, требующих кастомной инициализации запросов.
Возвращает
DetrModelOutput или tuple(torch.Tensor)
Объект DetrModelOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (None) и входных данных.
Метод forward класса DetrModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя декодера модели.Если используется
past_key_values, выводится только последнее скрытое состояние последовательностей формы(batch_size, 1, hidden_size).past_key_values (
EncoderDecoderCache, необязательный, возвращается при передачеuse_cache=Trueили когдаconfig.use_cache=True) — это экземпляр EncoderDecoderCache. Подробнее см. в нашем руководстве по кэшу kv.Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать (см. вход
past_key_values) для ускорения последовательного декодирования.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 внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
intermediate_hidden_states (
torch.Tensorформы(config.decoder_layers, batch_size, sequence_length, hidden_size), необязательный, возвращается приconfig.auxiliary_loss=True) — Промежуточные активации декодера, то есть выход каждого слоя декодера, каждый из которых прошёл через layernorm.
Примеры:
>>> from transformers import AutoImageProcessor, DetrModel
>>> 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("facebook/detr-resnet-50")
>>> model = DetrModel.from_pretrained("facebook/detr-resnet-50")
>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> # forward pass
>>> outputs = model(**inputs)
>>> # the last hidden states are the final query embeddings of the Transformer decoder
>>> # these are of shape (batch_size, num_queries, hidden_size)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 100, 256]DetrForObjectDetection
класс transformers.DetrForObjectDetection
< source >( config: DetrConfig )
Параметры
- config (DetrConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель DETR (состоящая из backbone и encoder-decoder Transformer) с головками для обнаружения объектов, предназначенная для таких задач, как COCO detection.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrObjectDetectionOutput 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 для пикселей, являющихся заполнением (т. е. замаскированных).
- decoder_attention_mask (
torch.Tensorформы(batch_size, num_queries), необязательный) — Маска для предотвращения выполнения внимания на определённых object queries в декодере. Значения маски выбираются из[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 + проекционного слоя), вы можете напрямую передать сглаженное представление изображения. Полезно для обхода визуального backbone. - decoder_inputs_embeds (
torch.Tensorформы(batch_size, num_queries, hidden_size), необязательный) — Необязательно, вместо инициализации запросов тензором нулей, можно передать встроенное представление напрямую. Полезно для задач, требующих кастомной инициализации запросов. - 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).
Возвращает
DetrObjectDetectionOutput или tuple(torch.Tensor)
Объект DetrObjectDetectionOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (None) и входных данных.
Метод forward класса DetrForObjectDetection переопределяет специальный метод __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] относительно размера каждого отдельного изображения в батче (без учета возможного выравнивания). Для получения ненормализованных границ используйте post_process_object_detection().auxiliary_outputs (
list[Dict], необязательный) — Необязательный параметр, возвращается только при активации вспомогательных потерь (т. е. когдаconfig.auxiliary_lossустановлено вTrue) и при наличии меток. Это список словарей, содержащих два указанных выше ключа (logitsиpred_boxes) для каждого слоя декодера.last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя декодера модели.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 внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Примеры:
>>> from transformers import AutoImageProcessor, DetrForObjectDetection
>>> import torch
>>> 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("facebook/detr-resnet-50")
>>> model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[
... 0
... ]
>>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
... box = [round(i, 2) for i in box.tolist()]
... print(
... f"Detected {model.config.id2label[label.item()]} with confidence "
... f"{round(score.item(), 3)} at location {box}"
... )
Detected remote with confidence 0.998 at location [40.16, 70.81, 175.55, 117.98]
Detected remote with confidence 0.996 at location [333.24, 72.55, 368.33, 187.66]
Detected couch with confidence 0.995 at location [-0.02, 1.15, 639.73, 473.76]
Detected cat with confidence 0.999 at location [13.24, 52.05, 314.02, 470.93]
Detected cat with confidence 0.999 at location [345.4, 23.85, 640.37, 368.72]DetrForSegmentation
класс transformers.DetrForSegmentation
< source >( config: DetrConfig )
Параметры
- config (DetrConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель DETR (состоящая из backbone и encoder-decoder Transformer) с сегментационным head сверху, для задач, таких как COCO panoptic.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrSegmentationOutput 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 для пикселей, являющихся заполнением (т. е. замаскированных).
- decoder_attention_mask (
torch.Tensorформы(batch_size, num_queries), необязательный) — Маска для предотвращения выполнения внимания на определённых object queries в декодере. Значения маски выбираются из[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, которые недоступны при обходе последнего с помощью inputs_embeds. - decoder_inputs_embeds (
torch.Tensorформы(batch_size, num_queries, hidden_size), необязательный) — Необязательно, вместо инициализации запросов тензором нулей, можно передать встроенное представление напрямую. Полезно для задач, требующих кастомной инициализации запросов. - labels (
list[Dict]длины(batch_size,), необязательный) — Метки для вычисления потерь bipartite matching, DICE/F-1 и Focal. Список словарей, каждый из которых содержит как минимум следующие три ключа: ‘class_labels’, ‘boxes’ и ‘masks’ (соответственно метки классов, ограничивающие рамки и маски сегментации для изображения в батче). Метки классов должны представлять собойtorch.LongTensorдлины(number of bounding boxes in the image,), рамки —torch.Tensorформы(number of bounding boxes in the image, 4), а маски —torch.Tensorформы(number of bounding boxes in the image, height, width).
Возвращает
DetrSegmentationOutput или tuple(torch.Tensor)
Объект DetrSegmentationOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (None) и входных данных.
Метод forward класса DetrForSegmentation переопределяет специальный метод __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] относительно размера каждого отдельного изображения в батче (без учета возможного выравнивания). Для получения ненормализованных границ используйте post_process_object_detection().pred_masks (
torch.Tensorформы(batch_size, num_queries, height/4, width/4)) — логиты сегментационных масок для всех запросов. См. также post_process_semantic_segmentation() или post_process_instance_segmentation() post_process_panoptic_segmentation() для оценки семантических, инстантных и паноптических сегментационных масок соответственно.auxiliary_outputs (
list[Dict], необязательный) — Необязательный параметр, возвращается только при активации вспомогательных потерь (т. е. когдаconfig.auxiliary_lossустановлено вTrue) и при наличии меток. Это список словарей, содержащих два указанных выше ключа (logitsиpred_boxes) для каждого слоя декодера.last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя декодера модели.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 внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Примеры:
>>> import io
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch
>>> import numpy
>>> from transformers import AutoImageProcessor, DetrForSegmentation
>>> from transformers.image_transforms import rgb_to_id
>>> 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("facebook/detr-resnet-50-panoptic")
>>> model = DetrForSegmentation.from_pretrained("facebook/detr-resnet-50-panoptic")
>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> # forward pass
>>> outputs = model(**inputs)
>>> # Use the `post_process_panoptic_segmentation` method of the `image_processor` to retrieve post-processed panoptic segmentation maps
>>> # Segmentation results are returned as a list of dictionaries
>>> result = image_processor.post_process_panoptic_segmentation(outputs, target_sizes=[(300, 500)])
>>> # A tensor of shape (height, width) where each value denotes a segment id, filled with -1 if no segment is found
>>> panoptic_seg = result[0]["segmentation"]
>>> panoptic_seg.shape
torch.Size([300, 500])
>>> # Get prediction score and segment_id to class_id mapping of each segment
>>> panoptic_segments_info = result[0]["segments_info"]
>>> len(panoptic_segments_info)
5