Transformers documentation

ConvNeXt V2

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

ConvNeXt V2

Обзор

Модель ConvNeXt V2 была предложена в статье ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders авторами Sanghyun Woo, Shoubhik Debnath, Ronghang Hu, Xinlei Chen, Zhuang Liu, In So Kweon, Saining Xie. ConvNeXt V2 — это чисто свёрточная модель (ConvNet), вдохновлённая архитектурой Vision Transformers, и преемник ConvNeXT.

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

Благодаря улучшенным архитектурам и более эффективным фреймворкам обучения представлений, область визуального распознавания переживает стремительную модернизацию и рост производительности в начале 2020-х годов. Например, современные ConvNets, представленные моделью ConvNeXt, демонстрируют высокую производительность в различных сценариях. Хотя эти модели изначально были разработаны для обучения с учителем с использованием меток ImageNet, они также могут извлекать выгоду из методов обучения без учителя, таких как маскированные автоэнкодеры (MAE). Однако мы обнаружили, что простое сочетание этих двух подходов приводит к неудовлетворительным результатам. В данной статье мы предлагаем полностью свёрточный фреймворк маскированного автоэнкодера и новый слой Global Response Normalization (GRN), который можно добавить в архитектуру ConvNeXt для усиления конкуренции признаков между каналами. Эта совместная разработка методов обучения без учителя и архитектурных улучшений привела к появлению нового семейства моделей — ConvNeXt V2, — которое значительно повышает производительность чистых ConvNets на различных бенчмарках распознавания, включая классификацию ImageNet, детекцию COCO и сегментацию ADE20K. Мы также предоставляем предобученные модели ConvNeXt V2 различных размеров: от эффективной модели Atto с 3,7 млн параметров и точностью top-1 76,7% на ImageNet до модели Huge с 650 млн параметров, достигающей рекордной точности 88,9% при использовании только публичных данных для обучения.

drawing ConvNeXt V2 architecture. Taken from the original paper.

Эта модель была предоставлена adirik. Исходный код можно найти здесь.

Ресурсы

Список официальных ресурсов Hugging Face и сообщества (отмечены значком 🌎), которые помогут вам начать работу с ConvNeXt V2.

Image Classification

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

ConvNextV2Config

класс transformers.ConvNextV2Config

< >

( 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 = Nonenum_channels: int = 3patch_size: int | list[int] | tuple[int, int] = 4num_stages: int = 4hidden_sizes: list[int] | tuple[int, ...] | None = (96, 192, 384, 768)depths: list[int] | tuple[int, ...] | None = (3, 3, 9, 3)hidden_act: str = 'gelu'initializer_range: float = 0.02layer_norm_eps: float = 1e-12drop_path_rate: float | int = 0.0image_size: int | list[int] | tuple[int, int] = 224_out_features: list[str] | None = None_out_indices: list[int] | None = None )

Параметры

  • num_channels (int, необязательный, по умолчанию 3) — Количество входных каналов.
  • patch_size (Union[int, list[int], tuple[int, int]], необязательный, по умолчанию 4) — Размер (разрешение) каждого патча.
  • num_stages (int, необязательный, по умолчанию 4) — Количество стадий в модели.
  • hidden_sizes (Union[list[int], tuple[int, ...]], необязательный, по умолчанию (96, 192, 384, 768)) — Размерность (hidden size) на каждом этапе модели.
  • depths (Union[list[int], tuple[int, ...]], необязательный, по умолчанию (3, 3, 9, 3)) — Глубина каждого слоя в Transformer.
  • hidden_act (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-12) — Значение epsilon, используемое слоями нормализации.
  • drop_path_rate (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент drop path для слияния патчей.
  • image_size (Union[int, list[int], tuple[int, int]], необязательный, по умолчанию 224) — Размер (разрешение) каждого изображения.

Это класс конфигурации для хранения настроек модели ConvNextV2Model. Он используется для создания модели Convnextv2 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/convnextv2-tiny-1k-224

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

Пример:

>>> from transformers import ConvNeXTV2Config, ConvNextV2Model

>>> # Initializing a ConvNeXTV2 convnextv2-tiny-1k-224 style configuration
>>> configuration = ConvNeXTV2Config()

>>> # Initializing a model (with random weights) from the convnextv2-tiny-1k-224 style configuration
>>> model = ConvNextV2Model(configuration)

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

ConvNextV2Model

класс transformers.ConvNextV2Model

< >

( config: ConvNextV2Config )

Параметры

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

Модель Convnextv2 без дополнительных слоёв, выводящая необработанные скрытые состояния.

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPoolingAndNoAttention or tuple(torch.Tensor)

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью ConvNextImageProcessor. Подробности см. в ConvNextImageProcessor.call() (processor_class использует ConvNextImageProcessor для обработки изображений).

Возвращает

BaseModelOutputWithPoolingAndNoAttention или tuple(torch.Tensor)

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

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

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

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

  • pooler_output (torch.Tensor формы (batch_size, hidden_size)) — Скрытое состояние последнего слоя после операции пулинга по пространственным измерениям.

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

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

Пример:

ConvNextV2ForImageClassification

класс transformers.ConvNextV2ForImageClassification

< >

( config: ConvNextV2Config )

Параметры

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

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

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → ImageClassifierOutputWithNoAttention or tuple(torch.Tensor)

Параметры

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью ConvNextImageProcessor. Подробности см. в ConvNextImageProcessor.call() (processor_class использует ConvNextImageProcessor для обработки изображений).
  • labels (torch.LongTensor формы (batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии изображений. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1]. Если config.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если config.num_labels > 1 — функция потерь классификации (кросс-энтропия).

Возвращает

ImageClassifierOutputWithNoAttention или tuple(torch.Tensor)

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

Метод forward класса ConvNextV2ForImageClassification переопределяет специальный метод __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), необязательный, возвращается при передаче output_hidden_states=True или при config.output_hidden_states=True) — Кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого этапа) формы (batch_size, num_channels, height, width). Скрытые состояния (также называемые картами признаков) модели на выходе каждого этапа.

Пример:

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
>>> model = ConvNextV2ForImageClassification.from_pretrained("facebook/convnextv2-tiny-1k-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