Transformers documentation
Backbones
Backbones
Các tác vụ thị giác máy tính cấp cao hơn, chẳng hạn như phát hiện đối tượng hoặc phân đoạn hình ảnh, sử dụng nhiều mô hình cùng nhau để tạo ra một dự đoán. Một mô hình riêng biệt được sử dụng cho backbone, neck và head. Backbone trích xuất các đặc trưng hữu ích từ hình ảnh đầu vào thành một bản đồ đặc trưng, neck kết hợp và xử lý các bản đồ đặc trưng, và head sử dụng chúng để đưa ra dự đoán.

Tải một backbone bằng from_pretrained() và sử dụng tham số out_indices để xác định lớp nào, được chỉ định bằng chỉ số, để trích xuất bản đồ đặc trưng từ đó.
from transformers import AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))Hướng dẫn này mô tả lớp backbone, các backbone từ thư viện timm, và cách trích xuất đặc trưng bằng chúng.
Các lớp Backbone
Có hai lớp backbone.
~transformers.utils.BackboneMixincho phép bạn tải một backbone và bao gồm các hàm để trích xuất các feature maps và indices từ config.~transformers.utils.BackboneConfigMixincho phép bạn thiết lập, căn chỉnh và xác minh bản đồ đặc trưng (feature map) cùng các chỉ số (indices) của một cấu hình backbone.
Tham khảo tài liệu API Backbone để kiểm tra các mô hình nào hỗ trợ backbone.
Có hai cách để nạp backbone của Transformers, đó là AutoBackbone và lớp backbone cụ thể cho từng model.
API AutoClass tự động tải một mô hình thị giác được huấn luyện trước với from_pretrained() làm backbone nếu được hỗ trợ.
Đặt tham số out_indices thành lớp mà bạn muốn lấy feature map từ đó. Nếu bạn biết tên của lớp, bạn cũng có thể sử dụng out_features. Các tham số này có thể được sử dụng thay thế cho nhau, nhưng nếu bạn sử dụng cả hai, hãy đảm bảo chúng tham chiếu đến cùng một lớp.
Khi out_indices hoặc out_features không được sử dụng, backbone sẽ trả về feature map từ lớp cuối cùng. Mã ví dụ bên dưới sử dụng out_indices=(1,) để lấy feature map từ lớp đầu tiên.

from transformers import AutoImageProcessor, AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))Khi bạn biết một model hỗ trợ backbone, bạn có thể nạp trực tiếp backbone và neck vào cấu hình của model. Truyền cấu hình này vào model để khởi tạo nó cho một tác vụ.
Ví dụ dưới đây tải một backbone và neck ResNet để sử dụng trong đầu phân đoạn instance MaskFormer.
Lưu ý rằng khởi tạo từ config sẽ tạo mô hình với trọng số ngẫu nhiên. Nếu bạn muốn tải một mô hình được huấn luyện trước, hãy sử dụng 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)Một lựa chọn khác là tải cấu hình backbone riêng biệt rồi truyền nó vào backbone_config trong cấu hình mô hình.
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)backbones timm
timm là một bộ sưu tập các mô hình thị giác phục vụ cho huấn luyện và suy luận. Transformers hỗ trợ các mô hình timm làm backbone thông qua các lớp TimmBackbone và TimmBackboneConfig. Đặt checkpoint backbone cần thiết vào backbone để tạo một mô hình có backbone Timm với trọng số được khởi tạo ngẫu nhiên.
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, TimmBackboneConfig
backbone_config = TimmBackboneConfig(backbone="resnet50", out_indices=[-1])
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)Bạn cũng có thể gọi trực tiếp lớp TimmBackboneConfig để tải và tạo một timm backbone được huấn luyện trước.
from transformers import TimmBackboneConfig
backbone_config = TimmBackboneConfig("resnet50")Truyền cấu hình backbone vào cấu hình model và khởi tạo model head, MaskFormerForInstanceSegmentation, với backbone.
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)Trích xuất đặc trưng
Backbone được sử dụng để trích xuất đặc trưng của ảnh. Truyền một ảnh qua backbone để nhận các bản đồ đặc trưng.
Tải và tiền xử lý một hình ảnh rồi truyền nó vào backbone. Ví dụ dưới đây trích xuất các bản đồ đặc trưng từ lớp đầu tiên.
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)Các đặc trưng được lưu trữ và truy cập từ thuộc tính feature_maps của đầu ra.
feature_maps = outputs.feature_maps
list(feature_maps[0].shape)
[1, 96, 56, 56]