Transformers documentation

Backbones

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

and get access to the augmented documentation experience

to get started

Backbones

Tarefas de visão computacional de alto nível, como detecção de objetos ou segmentação de imagem, utilizam vários modelos em conjunto para gerar uma previsão. Um modelo separado é usado para o backbone, o neck e o head. O backbone extrai recursos úteis de uma imagem de entrada para um mapa de recursos, o neck combina e processa os mapas de recursos, e o head os utiliza para fazer uma previsão.

Carregue um backbone com from_pretrained() e use o parâmetro out_indices para determinar de qual camada, indicada pelo índice, extrair o mapa de características.

from transformers import AutoBackbone

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

Este guia descreve a classe backbone, os backbones da biblioteca timm e como extrair recursos com eles.

Classes de backbone

Existem duas classes de backbone.

  • ~transformers.utils.BackboneMixin permite carregar um backbone e inclui funções para extrair os feature maps e os índices a partir do config.
  • ~transformers.utils.BackboneConfigMixin permite definir, alinhar e verificar o mapa de recursos e os índices de uma configuração de backbone.

Consulte a documentação da API Backbone para verificar quais modelos suportam um backbone.

Existem duas formas de carregar um backbone do Transformers, AutoBackbone e uma classe de backbone específica do modelo.

AutoBackbone
backbone específico do modelo

A API AutoClass carrega automaticamente um modelo de visão pré-treinado com from_pretrained() como backbone, caso seja suportado.

Defina o parâmetro out_indices para a camada da qual você deseja obter o mapa de recursos. Se você souber o nome da camada, também pode usar out_features. Esses parâmetros podem ser usados de forma intercambiável, mas, se usar ambos, certifique-se de que eles se refiram à mesma camada.

Quando out_indices ou out_features não são usados, o backbone retorna o mapa de características da última camada. O código de exemplo abaixo usa out_indices=(1,) para obter o mapa de características da primeira camada.

from transformers import AutoImageProcessor, AutoBackbone

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

backbones do timm

timm é uma coleção de modelos de visão para treinamento e inferência. O Transformers suporta modelos timm como backbones por meio das classes TimmBackbone e TimmBackboneConfig. Defina o checkpoint de backbone necessário em backbone para criar um modelo com backbone Timm com pesos inicializados aleatoriamente.

from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, TimmBackboneConfig

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

Você também pode chamar explicitamente a classe TimmBackboneConfig para carregar e criar um backbone timm pré-treinado.

from transformers import TimmBackboneConfig

backbone_config = TimmBackboneConfig("resnet50")

Passe a configuração do backbone para a configuração do modelo e instancie a cabeça do modelo, MaskFormerForInstanceSegmentation, com o backbone.

from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation

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

Extração de recursos

O backbone é usado para extrair recursos de imagem. Passe uma imagem pelo backbone para obter os mapas de recursos.

Carregue e pré-processa uma imagem e a passa para o backbone. O exemplo abaixo extrai os mapas de características da primeira camada.

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)

Os recursos são armazenados e acessados pelo atributo feature_maps das saídas.

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