Transformers documentation

Базовые модели

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

Базовые модели

Задачи компьютерного зрения высокого уровня, такие как обнаружение объектов или сегментация изображений, используют несколько моделей совместно для генерации предсказания. Отдельная модель используется для backbone, neck и head. Backbone извлекает полезные признаки из входного изображения в виде карты признаков, neck объединяет и обрабатывает карты признаков, а head использует их для формирования предсказания.

Загрузите backbone с помощью from_pretrained() и используйте параметр out_indices, чтобы определить, из какого слоя (по индексу) извлекать карту признаков.

from transformers import AutoBackbone

model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))

В этом руководстве описан базовый класс, бэкбоны из библиотеки timm и способы извлечения признаков с их помощью.

Классы базовых моделей

Существуют два класса базовых моделей.

  • ~transformers.utils.BackboneMixin позволяет загрузить backbone и включает функции для извлечения карт признаков и индексов из конфигурации.
  • ~transformers.utils.BackboneConfigMixin позволяет задавать, выравнивать и проверять карты признаков и индексы конфигурации бэкбона.

См. документацию API Backbone, чтобы узнать, какие модели поддерживают backbone.

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

AutoBackbone
бэкбон, специфичный для модели

API AutoClass автоматически загружает предобученную модель зрения с помощью from_pretrained() в качестве базовой сети, если это поддерживается.

Установите параметр out_indices в значение слоя, из которого вы хотите получить карту признаков. Если вам известно имя слоя, можно также использовать out_features. Эти параметры взаимозаменяемы, но если вы используете оба, убедитесь, что они ссылаются на один и тот же слой.

Если out_indices или out_features не используются, backbone возвращает карту признаков из последнего слоя. В примере кода ниже используется out_indices=(1,), чтобы получить карту признаков из первого слоя.

from transformers import AutoImageProcessor, AutoBackbone

model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))

backbones timm

timm — это коллекция моделей компьютерного зрения для обучения и инференса. Transformers поддерживает модели timm в качестве базовых (backbone) с помощью классов TimmBackbone и TimmBackboneConfig. Чтобы создать модель с базовой частью Timm и случайно инициализированными весами, укажите необходимый чекпоинт базовой части в backbone.

from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, TimmBackboneConfig

backbone_config = TimmBackboneConfig(backbone="resnet50", out_indices=[-1])
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)

Вы также можете явно вызвать класс TimmBackboneConfig, чтобы загрузить и создать предобученный timm backbone.

from transformers import TimmBackboneConfig

backbone_config = TimmBackboneConfig("resnet50")

Передайте конфигурацию backbone в конфигурацию модели и создайте голову модели MaskFormerForInstanceSegmentation с использованием backbone.

from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation

config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)

Извлечение признаков

Бэкбон используется для извлечения признаков изображения. Пропустите изображение через бэкбон, чтобы получить карты признаков.

Загрузите и предобработайте изображение и передайте его в backbone. В примере ниже извлекаются карты признаков из первого слоя.

from transformers import AutoImageProcessor, AutoBackbone
import torch
from PIL import Image
import requests

model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))
processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)

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

Особенности хранятся и доступны через атрибут feature_maps в выходных данных.

feature_maps = outputs.feature_maps
list(feature_maps[0].shape)
[1, 96, 56, 56]
Update on GitHub