Transformers 文件
骨幹網路
並獲得增強的文件體驗
開始使用
骨幹網路
更高級別的計算機視覺任務,例如目標檢測或影像分割,會使用多個模型協同生成預測。其中一個單獨的模型用於**骨幹網路**、頸部和頭部。骨幹網路從輸入影像中提取有用特徵到特徵圖,頸部組合並處理特徵圖,頭部則利用這些特徵圖進行預測。

使用 from_pretrained() 載入骨幹網路,並使用 out_indices
引數確定從哪個索引層提取特徵圖。
from transformers import AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))
本指南介紹了骨幹網路類、來自 timm 庫的骨幹網路以及如何使用它們提取特徵。
骨幹網路類
骨幹網路類有兩個。
- BackboneMixin 允許您載入骨幹網路,幷包含提取特徵圖和索引的函式。
- BackboneConfigMixin 允許您設定骨幹網路配置的特徵圖和索引。
請參閱骨幹網路 API 文件以檢視哪些模型支援骨幹網路。
有兩種載入 Transformers 骨幹網路的方法:AutoBackbone 和模型特定的骨幹網路類。
AutoClass API 在支援的情況下,會自動使用 from_pretrained() 載入預訓練的視覺模型作為骨幹網路。
將 out_indices
引數設定為您希望從中獲取特徵圖的層。如果您知道層的名稱,也可以使用 out_features
。這些引數可以互換使用,但如果兩者都使用,請確保它們指向同一層。
當未使用 out_indices
或 out_features
時,骨幹網路會返回最後一層的特徵圖。以下示例程式碼使用 out_indices=(1,)
從第一層獲取特徵圖。

from transformers import AutoImageProcessor, AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))
timm 骨幹網路
timm 是用於訓練和推理的視覺模型集合。Transformers 支援 timm 模型作為骨幹網路,透過 TimmBackbone 和 TimmBackboneConfig 類實現。
設定 use_timm_backbone=True
以載入預訓練的 timm 權重,並設定 use_pretrained_backbone
以使用預訓練或隨機初始化的權重。
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation
config = MaskFormerConfig(backbone="resnet50", use_timm_backbone=True, use_pretrained_backbone=True)
model = MaskFormerForInstanceSegmentation(config)
您也可以顯式呼叫 TimmBackboneConfig 類來載入和建立預訓練的 timm 骨幹網路。
from transformers import TimmBackboneConfig
backbone_config = TimmBackboneConfig("resnet50", use_pretrained_backbone=True)
將骨幹網路配置傳遞給模型配置,並使用骨幹網路例項化模型頭部,即 MaskFormerForInstanceSegmentation。
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)
特徵提取
骨幹網路用於提取影像特徵。透過骨幹網路傳遞影像以獲取特徵圖。
載入並預處理影像,然後將其傳遞給骨幹網路。以下示例從第一層提取特徵圖。
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]