Transformers documentation

Hiera

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

Hiera

Обзор

Hiera была предложена в статье Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles авторами Chaitanya Ryali, Yuan-Ting Hu, Daniel Bolya, Chen Wei, Haoqi Fan, Po-Yao Huang, Vaibhav Aggarwal, Arkabandhu Chowdhury, Omid Poursaeed, Judy Hoffman, Jitendra Malik, Yanghao Li, Christoph Feichtenhofer

В статье представлен «Hiera» — иерархический Vision Transformer, который упрощает архитектуру современных иерархических vision-трансформеров, удаляя ненужные компоненты без потери точности или эффективности. В отличие от традиционных трансформеров, в которые добавляют сложные компоненты, специфичные для компьютерного зрения, чтобы улучшить результаты контролируемой классификации, Hiera демонстрирует, что такие дополнения, часто называемые «bells-and-whistles», не являются необходимыми для достижения высокой точности. За счёт использования мощной визуальной предварительной задачи (MAE) для предобучения Hiera сохраняет простоту и обеспечивает превосходную точность и скорость как на этапе инференса, так и на этапе обучения на различных задачах распознавания изображений и видео. Подход показывает, что пространственные смещения, необходимые для задач компьютерного зрения, могут быть эффективно выучены при правильном предобучении, что исключает необходимость в дополнительной архитектурной сложности.

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

Современные иерархические vision-трансформеры добавили несколько компонентов, специфичных для задач компьютерного зрения, в погоне за качеством контролируемой классификации. Хотя эти компоненты обеспечивают высокую точность и привлекательное количество FLOP, добавленная сложность на самом деле делает такие трансформеры медленнее, чем их базовые аналоги на основе ViT. В данной статье мы утверждаем, что этот дополнительный «балласт» не нужен. Проведя предобучение с помощью мощной визуальной предзадачей (MAE), мы можем убрать все лишние элементы из передового многоэтапного vision-трансформера, не теряя в точности. В результате мы создали Hiera — чрезвычайно простой иерархический vision-трансформер, который точнее предыдущих моделей и при этом значительно быстрее как на этапе инференса, так и во время обучения. Мы оцениваем Hiera на разнообразных задачах распознавания изображений и видео. Наш код и модели доступны по адресу https://github.com/facebookresearch/hiera.

drawing Hiera architecture. Taken from the original paper.

Эта модель была разработана совместно EduardoPacheco и namangarg110. Исходный код можно найти [здесь] (https://github.com/facebookresearch/hiera).

Ресурсы

Список официальных ресурсов Hugging Face и ресурсов сообщества (отмечены значком 🌎), которые помогут вам начать работу с Hiera. Если вы хотите предложить ресурс для включения в этот список, пожалуйста, создайте Pull Request, и мы его рассмотрим! В идеале ресурс должен демонстрировать что-то новое, а не дублировать существующий.

Image Classification

HieraConfig

класс transformers.HieraConfig

< >

( 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Noneembed_dim: int = 96image_size: list[int] | tuple[int, ...] = (224, 224)patch_size: list[int] | tuple[int, ...] = (7, 7)patch_stride: list[int] | tuple[int, ...] = (4, 4)patch_padding: list[int] | tuple[int, ...] = (3, 3)mlp_ratio: float = 4.0depths: list[int] | tuple[int, ...] = (2, 3, 16, 3)num_heads: list[int] | tuple[int, ...] = (1, 2, 4, 8)embed_dim_multiplier: float | int = 2.0num_query_pool: int = 3query_stride: list[int] | tuple[int, ...] = (2, 2)masked_unit_size: list[int] | tuple[int, ...] = (8, 8)masked_unit_attention: list[bool] | tuple[bool, ...] = (True, True, False, False)drop_path_rate: float | int = 0.0num_channels: int = 3hidden_act: str = 'gelu'initializer_range: float = 0.02layer_norm_init: float = 1.0layer_norm_eps: float = 1e-06decoder_hidden_size: int | None = Nonedecoder_depth: int | None = Nonedecoder_num_heads: int | None = Nonenormalize_pixel_loss: bool | None = Truemask_ratio: float = 0.6_out_features: list[str] | None = None_out_indices: list[int] | None = None )

Параметры

  • embed_dim (int, необязательный, по умолчанию 96) — Размерность эмбеддингов и скрытых состояний.
  • image_size (Union[list[int], tuple[int, ...]], необязательный, по умолчанию (224, 224)) — Размер (разрешение) каждого изображения.
  • patch_size (Union[list[int], tuple[int, ...]], необязательный, по умолчанию (7, 7)) — Размер (разрешение) каждого патча.
  • patch_stride (list(int), необязательный, по умолчанию [4, 4]) — Шаг (stride) патча.
  • patch_padding (list(int), необязательный, по умолчанию [3, 3]) — Размер отступов патча.
  • mlp_ratio (float, необязательный, по умолчанию 4.0) — Соотношение скрытого размера MLP к размеру эмбеддинга.
  • depths (Union[list[int], tuple[int, ...]], необязательный, по умолчанию (2, 3, 16, 3)) — Глубина каждого слоя в Transformer.
  • num_heads (list(int), необязательный, по умолчанию [1, 2, 4, 8]) — Количество головок внимания в каждом слое кодировщика Transformer.
  • embed_dim_multiplier (float, необязательный, по умолчанию 2.0) — Множитель размерности встраивания патчей в каждом слое кодировщика Transformer.
  • num_query_pool (int, необязательный, по умолчанию 3) — Количество этапов пула запросов.
  • query_stride (list(int), необязательный, по умолчанию [2, 2]) — Шаг пулинга запроса.
  • masked_unit_size (list(int), необязательный, по умолчанию [8, 8]) — Размер маскируемой единицы.
  • masked_unit_attention (list(bool), необязательный, по умолчанию [True, True, False, False]) — Использовать ли masked unit attention в каждом слое кодировщика Transformer.
  • drop_path_rate (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент drop path для слияния патчей.
  • num_channels (int, необязательный, по умолчанию 3) — Количество входных каналов.
  • hidden_act (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • layer_norm_init (float, необязательный, по умолчанию 1.0) — Начальное значение веса для слоёв нормализации по слоям.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-06) — Значение epsilon, используемое слоями нормализации.
  • decoder_hidden_size (int, необязательный) — Размерность скрытых представлений.
  • decoder_depth (int, необязательный) — Глубина декодера для предварительного обучения MAE.
  • decoder_num_heads (int, необязательный) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • normalize_pixel_loss (bool, необязательный, по умолчанию True) — Нормализовать ли потерю пикселей по количеству пикселей.
  • mask_ratio (float, необязательный, по умолчанию 0.6) — Доля замаскированных токенов во входных данных.

Это класс конфигурации для хранения конфигурации модели HieraModel. Он используется для создания экземпляра модели Hiera в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/hiera-base-224

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

Пример:

>>> from transformers import HieraConfig, HieraModel

>>> # Initializing a Hiera hiera-base-patch16-224 style configuration
>>> configuration = HieraConfig()

>>> # Initializing a model (with random weights) from the hiera-base-patch16-224 style configuration
>>> model = HieraModel(configuration)

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

HieraModel

класс transformers.HieraModel

< >

( config: HieraConfigadd_pooling_layer: bool = Trueis_mae: bool = False )

Параметры

  • config (HieraConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
  • add_pooling_layer (bool, необязательный, по умолчанию True) — Указывает, следует ли применять слой пулинга.
  • is_mae (bool, необязательный, по умолчанию False) — Указывает, следует ли запускать модель в режиме MAE.

Базовая модель Hiera, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinterpolate_pos_encoding: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью BitImageProcessor. Подробности см. в BitImageProcessor.call() (processor_class использует BitImageProcessor для обработки изображений).
  • noise (torch.Tensor формы (batch_size, num_mask_units), необязательный) — Используется в основном для тестирования, чтобы контролировать случайность и обеспечивать воспроизводимость
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • interpolate_pos_encoding (bool, необязательный) — Указывает, следует ли интерполировать предобученные позиционные кодировки.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.

Возвращает

BaseModelOutputWithPooling или tuple(torch.Tensor)

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

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

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

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

  • pooler_output (torch.Tensor формы (batch_size, hidden_size)) — Скрытое состояние последнего слоя для первого токена последовательности (токен классификации) после дополнительной обработки слоями, используемыми для вспомогательной задачи предварительного обучения. Например, для моделей семейства BERT это возвращает токен классификации после обработки линейным слоем и функцией активации tanh. Веса линейного слоя обучаются по задаче предсказания следующего предложения (классификации) во время предварительного обучения.

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

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

HieraForPreTraining

класс transformers.HieraForPreTraining

< >

( config: HieraConfig )

Параметры

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

Трансформер Hiera Model с декодером сверху для самообучения без учителя.

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonenoise: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinterpolate_pos_encoding: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → HieraForPreTrainingOutput or tuple(torch.Tensor)

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью BitImageProcessor. Подробности см. в BitImageProcessor.call() (processor_class использует BitImageProcessor для обработки изображений).
  • noise (torch.Tensor формы (batch_size, num_mask_units), необязательный) — Используется в основном для тестирования, чтобы контролировать случайность и обеспечивать воспроизводимость
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • interpolate_pos_encoding (bool, необязательный) — Указывает, следует ли интерполировать предобученные позиционные кодировки.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.

Возвращает

HieraForPreTrainingOutput или tuple(torch.Tensor)

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

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

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

  • loss (torch.Tensor формы (1,)) — Потеря пиксельной реконструкции.

  • logits (torch.Tensor формы (batch_size, sequence_length, patch_size ** 2 * num_channels)) — Логиты реконструкции пикселей.

  • bool_masked_pos (torch.BoolTensor формы (batch_size, sequence_length)) — тензор, указывающий, какие патчи замаскированы (0), а какие нет (1).

  • ids_restore (torch.LongTensor формы (batch_size, sequence_length)) — тензор, содержащий исходные индексы (перемешанных) замаскированных патчей.

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

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

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

Примеры:

>>> from transformers import AutoImageProcessor, HieraForPreTraining
>>> 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/hiera-tiny-224-mae-hf")
>>> model = HieraForPreTraining.from_pretrained("facebook/hiera-tiny-224-mae-hf")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> loss = outputs.loss
>>> print(list(logits.shape))
[1, 196, 768]

HieraForImageClassification

класс transformers.HieraForImageClassification

< >

( config: HieraConfig )

Параметры

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

Модель Hiera — трансформер с головной частью для классификации изображений (линейный слой поверх финального скрытого состояния со средним пулингом), например, для ImageNet.

Обратите внимание, что Hiera можно дообучать на изображениях с более высоким разрешением, чем те, на которых он обучался, установив interpolate_pos_encoding в True в forward модели. Это позволит интерполировать предобученные позиционные эмбеддинги под более высокое разрешение.

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

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

forward

< >

( pixel_valueslabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneinterpolate_pos_encoding: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → HieraForImageClassificationOutput or tuple(torch.Tensor)

Параметры

  • pixel_values (`of shape(batch_size, num_channels, image_size, image_size)) -- The tensors corresponding to the input images. Pixel values can be obtained using [BitImageProcessor](/docs/transformers/main/en/model_doc/bit#transformers.BitImageProcessor). See [BitImageProcessor.__call__()](/docs/transformers/main/en/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) for details (processor_class` uses BitImageProcessor for processing images).
  • labels (torch.LongTensor формы (batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии изображений. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1]. Если config.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если config.num_labels > 1 — функция потерь классификации (кросс-энтропия).
  • output_attentions (bool, необязательный) — Указывает, следует ли возвращать тензоры внимания всех слоев внимания. Подробности см. в описании attentions в разделе возвращаемых тензоров.
  • output_hidden_states (bool, необязательный) — Указывает, следует ли возвращать скрытые состояния всех слоев. Подробности см. в описании hidden_states среди возвращаемых тензоров.
  • interpolate_pos_encoding (bool, необязательный) — Указывает, следует ли интерполировать предобученные позиционные кодировки.
  • return_dict (bool, необязательный) — Указывает, следует ли возвращать ModelOutput вместо обычного кортежа.

Возвращает

HieraForImageClassificationOutput или tuple(torch.Tensor)

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

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

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

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери классификации (или регрессии, если config.num_labels==1).

  • logits (torch.Tensor формы (batch_size, config.num_labels)) — Оценки для классификации (или регрессии, если config.num_labels==1) до применения SoftMax.

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

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, patch_size, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • reshaped_hidden_states (tuple(torch.Tensor), optional) — Кортеж torch.Tensor (один для вывода эмбеддингов + один для вывода каждого этапа) формы (batch_size, height, width, hidden_size). Это переформатированные и свернутые обратно скрытые состояния модели.

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

Пример:

>>> from transformers import AutoImageProcessor, HieraForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/hiera-base-224")
>>> model = HieraForImageClassification.from_pretrained("facebook/hiera-base-224")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...
Update on GitHub