Transformers documentation
백본
백본
객체 감지나 이미지 분할과 같은 고수준 컴퓨터 비전 작업은 예측을 생성하기 위해 여러 모델을 함께 사용합니다. backbone, neck, head 각각에 별도의 모델이 사용됩니다. backbone은 입력 이미지에서 유용한 특징을 feature map으로 추출하고, neck은 feature map을 결합 및 처리하며, head는 이를 사용하여 예측을 수행합니다.

from_pretrained()로 백본을 로드하고 out_indices 매개변수를 사용하여 인덱스로 지정된 레이어에서 특징 맵을 추출합니다.
from transformers import AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))이 가이드에서는 backbone 클래스, timm 라이브러리에서 제공하는 backbones, 그리고 이를 사용하여 특징을 추출하는 방법에 대해 설명합니다.
Backbone 클래스
두 가지 backbone 클래스가 있습니다.
~transformers.utils.BackboneMixin은 백본을 로드할 수 있게 하며, config에서 feature map과 인덱스를 추출하는 함수를 포함합니다.~transformers.utils.BackboneConfigMixin은 백본 구성의 feature map과 인덱스를 설정, 정렬 및 검증할 수 있도록 합니다.
어떤 모델이 backbone을 지원하는지 확인하려면 Backbone API 문서를 참조하세요.
Transformers 백본을 로드하는 방법은 두 가지가 있습니다. AutoBackbone과 모델별 백본 클래스입니다.
AutoClass API는 지원되는 경우 from_pretrained()를 통해 사전 학습된 비전 모델을 백본으로 자동으로 로드합니다.
out_indices 매개변수를 피처 맵을 가져오려는 레이어로 설정합니다. 레이어 이름을 알고 있다면 out_features를 사용할 수도 있습니다. 이 두 매개변수는 상호 교환적으로 사용할 수 있지만, 둘 다 사용하는 경우 동일한 레이어를 참조하도록 확인하세요.
out_indices 또는 out_features가 사용되지 않으면 backbone은 마지막 레이어의 feature map을 반환합니다. 아래 예제 코드는 out_indices=(1,)를 사용하여 첫 번째 레이어의 feature map을 가져옵니다.

from transformers import AutoImageProcessor, AutoBackbone
model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))모델이 backbone을 지원하는지 확인되면, backbone과 neck을 모델의 구성에 직접 로드할 수 있습니다. 구성을 모델에 전달하여 작업을 초기화합니다.
아래 예시에서는 MaskFormer 인스턴스 분할 헤드에 사용하기 위해 ResNet 백본과 넥을 로드합니다.
config에서 초기화하면 무작위 가중치로 모델이 생성됩니다. 사전 학습된 모델을 로드하려면 from_pretrained API를 사용하세요.
from transformers import AutoConfig, MaskFormerConfig, MaskFormerForInstanceSegmentation
backbone_config = AutoConfig.from_pretrained("microsoft/resnet-50")
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)다른 옵션으로는 백본 구성을 별도로 로드한 후 모델 구성의 backbone_config에 전달하는 것입니다.
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)timm 백본
timm은 학습 및 추론을 위한 비전 모델 모음입니다. Transformers는 TimmBackbone 및 TimmBackboneConfig 클래스를 통해 timm 모델을 백본으로 지원합니다. 무작위 초기화 가중치를 가진 Timm 백본 모델을 생성하려면 backbone에 필요한 백본 체크포인트를 설정하세요.
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, TimmBackboneConfig
backbone_config = TimmBackboneConfig(backbone="resnet50", out_indices=[-1])
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)또한 TimmBackboneConfig 클래스를 명시적으로 호출하여 사전 학습된 timm 백본을 로드하고 생성할 수도 있습니다.
from transformers import TimmBackboneConfig
backbone_config = TimmBackboneConfig("resnet50")backbone 구성을 model 구성에 전달하고 backbone으로 model head인 MaskFormerForInstanceSegmentation을 초기화합니다.
from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)Feature extraction
backbone는 이미지 특징을 추출하는 데 사용됩니다. 이미지를 backbone에 통과시켜 특징 맵을 얻습니다.
이미지를 로드하고 전처리한 뒤 백본에 전달합니다. 아래 예제에서는 첫 번째 레이어에서 특징 맵을 추출합니다.
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]