Transformers documentation
Backbones
Backbones
Tugas computer vision tingkat tinggi, seperti object detection atau image segmentation, menggunakan beberapa model secara bersama untuk menghasilkan prediksi. Model terpisah digunakan untuk backbone, neck, dan head. Backbone mengekstrak fitur yang berguna dari gambar input menjadi feature map, neck menggabungkan dan memproses feature map tersebut, dan head menggunakannya untuk membuat prediksi.

Muat backbone dengan from_pretrained() dan gunakan parameter out_indices untuk menentukan lapisan mana, yang diberikan oleh indeks, yang akan diekstrak peta fiturnya.
from transformers import AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))Panduan ini menjelaskan kelas backbone, backbone dari pustaka timm, dan cara mengekstrak fitur dengan menggunakan backbone tersebut.
Kelas backbone
Ada dua kelas backbone.
~transformers.utils.BackboneMixinmemungkinkan Anda memuat backbone dan mencakup fungsi untuk mengekstrak feature maps dan indeks dari config.~transformers.utils.BackboneConfigMixinmemungkinkan Anda untuk mengatur, menyelaraskan, dan memverifikasi peta fitur serta indeks dari konfigurasi backbone.
Lihat dokumentasi API Backbone untuk memeriksa model mana yang mendukung backbone.
Ada dua cara untuk memuat backbone Transformers, yaitu AutoBackbone dan kelas backbone yang spesifik untuk model tertentu.
API AutoClass secara otomatis memuat model visi pralatih dengan from_pretrained() sebagai backbone jika didukung.
Atur parameter out_indices ke lapisan yang ingin Anda dapatkan peta fiturnya. Jika Anda mengetahui nama lapisannya, Anda juga bisa menggunakan out_features. Parameter-parameter ini dapat digunakan secara bergantian, tetapi jika Anda menggunakan keduanya, pastikan mereka merujuk ke lapisan yang sama.
Ketika out_indices atau out_features tidak digunakan, backbone mengembalikan feature map dari lapisan terakhir. Kode contoh di bawah menggunakan out_indices=(1,) untuk mendapatkan feature map dari lapisan pertama.

from transformers import AutoImageProcessor, AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))Ketika Anda mengetahui bahwa sebuah model mendukung backbone, Anda dapat memuat backbone dan neck secara langsung ke dalam konfigurasi model. Teruskan konfigurasi tersebut ke model untuk menginisialisasinya untuk suatu tugas.
Contoh di bawah ini memuat backbone dan neck ResNet untuk digunakan dalam head segmentasi instans MaskFormer.
Perhatikan bahwa inisialisasi dari konfigurasi akan membuat model dengan bobot acak. Jika Anda ingin memuat model pralatih, gunakan API from_pretrained.
from transformers import AutoConfig, MaskFormerConfig, MaskFormerForInstanceSegmentation
backbone_config = AutoConfig.from_pretrained("microsoft/resnet-50")
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)Opsi lain adalah memuat konfigurasi backbone secara terpisah dan kemudian meneruskannya ke backbone_config dalam konfigurasi model.
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, ResNetConfig
# instantiate backbone configuration
backbone_config = ResNetConfig()
# load backbone in model
config = MaskFormerConfig(backbone_config=backbone_config)
# attach backbone to model head
model = MaskFormerForInstanceSegmentation(config)backbone timm
timm adalah kumpulan model visi untuk pelatihan dan inferensi. Transformers mendukung model timm sebagai backbone dengan kelas TimmBackbone dan TimmBackboneConfig. Atur checkpoint backbone yang diperlukan di backbone untuk membuat model dengan backbone Timm yang bobotnya diinisialisasi secara acak.
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, TimmBackboneConfig
backbone_config = TimmBackboneConfig(backbone="resnet50", out_indices=[-1])
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)Anda juga dapat secara eksplisit memanggil kelas TimmBackboneConfig untuk memuat dan membuat timm backbone yang telah dilatih sebelumnya.
from transformers import TimmBackboneConfig
backbone_config = TimmBackboneConfig("resnet50")Lewatkan konfigurasi backbone ke konfigurasi model dan instansiasi kepala model, MaskFormerForInstanceSegmentation, dengan backbone.
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)Ekstraksi fitur
Backbone digunakan untuk mengekstrak fitur gambar. Lewatkan gambar melalui backbone untuk mendapatkan peta fitur.
Muat dan praproses sebuah gambar lalu teruskan ke backbone. Contoh di bawah mengekstrak peta fitur dari lapisan pertama.
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)Fitur disimpan dan diakses dari atribut feature_maps pada output.
feature_maps = outputs.feature_maps
list(feature_maps[0].shape)
[1, 96, 56, 56]