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

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.BackboneMixin cho 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.BackboneConfigMixin cho 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.

AutoBackbone
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,))

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]
Update on GitHub