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.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Backbones

Las tareas de visión por computadora de alto nivel, como la detección de objetos o la segmentación de imágenes, utilizan varios modelos juntos para generar una predicción. Se utiliza un modelo separado para el backbone, el cuello y la cabeza. El backbone extrae características útiles de una imagen de entrada en un mapa de características, el cuello combina y procesa los mapas de características, y la cabeza los utiliza para hacer una predicción.

Carga un backbone con from_pretrained() y usa el parámetro out_indices para determinar de qué capa, indicada por el índice, extraer el mapa de características.

from transformers import AutoBackbone

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

Esta guía describe la clase backbone, los backbones de la biblioteca timm y cómo extraer características con ellos.

Clases de backbone

Hay dos clases de backbone.

  • ~transformers.utils.BackboneMixin permite cargar un backbone e incluye funciones para extraer los mapas de características y los índices de la configuración.
  • ~transformers.utils.BackboneConfigMixin le permite establecer, alinear y verificar el mapa de características y los índices de una configuración de backbone.

Consulte la documentación de la API de Backbone para verificar qué modelos admiten un backbone.

Hay dos formas de cargar un backbone de Transformers, AutoBackbone y una clase de backbone específica de un modelo.

AutoBackbone
backbone específico del modelo

La API AutoClass carga automáticamente un modelo de visión preentrenado con from_pretrained() como backbone si se admite.

Establezca el parámetro out_indices en la capa de la que desea obtener el mapa de características. Si conoce el nombre de la capa, también puede usar out_features. Estos parámetros se pueden usar de forma intercambiable, pero si usa ambos, asegúrese de que se refieran a la misma capa.

Cuando no se usa out_indices ni out_features, el backbone devuelve el mapa de características de la última capa. El código de ejemplo siguiente usa out_indices=(1,) para obtener el mapa de características de la primera capa.

from transformers import AutoImageProcessor, AutoBackbone

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

backbones de timm

timm es una colección de modelos de visión para entrenamiento e inferencia. Transformers admite modelos de timm como columnas verticales mediante las clases TimmBackbone y TimmBackboneConfig. Establezca el punto de control de columna vertical necesario en backbone para crear un modelo con columna vertical de Timm con 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)

También puede llamar explícitamente a la clase TimmBackboneConfig para cargar y crear un backbone de timm preentrenado.

from transformers import TimmBackboneConfig

backbone_config = TimmBackboneConfig("resnet50")

Pase la configuración del backbone a la configuración del modelo e instancie la cabeza del modelo, MaskFormerForInstanceSegmentation, con el backbone.

from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation

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

Extracción de características

El backbone se utiliza para extraer características de la imagen. Pasa una imagen a través del backbone para obtener los mapas de características.

Cargue y preprocesar una imagen y pásela al backbone. El siguiente ejemplo extrae los mapas de características de la primera capa.

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)

Las características se almacenan y se accede a ellas desde el atributo feature_maps de las salidas.

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