Transformers documentation

العمود الفقري

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

العمود الفقري

تستخدم مهام الرؤية الحاسوبية الأعلى مستوى، مثل اكتشاف الكائنات أو تجزئة الصور، عدة نماذج معًا لتوليد تنبؤ. يُستخدم نموذج منفصل لكل من backbone والرقبة والرأس. يستخرج الـ backbone ميزات مفيدة من صورة الإدخال إلى خريطة ميزات، وتقوم الرقبة بدمج ومعالجة خرائط الميزات، بينما يستخدم الرأس هذه الميزات لإجراء تنبؤ.

حمّل العمود الفقري باستخدام from_pretrained() واستخدم معامل out_indices لتحديد الطبقة التي سيتم استخراج خريطة الميزات منها، وذلك بناءً على الفهرس المُعطى.

from transformers import AutoBackbone

model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(1,))

يصف هذا الدليل فئة العمود الفقري (backbone)، والأعمدة الفقرية من مكتبة timm، وكيفية استخراج الميزات باستخدامها.

فئات الهيكل

توجد فئتان أساسيتان.

  • ~transformers.utils.BackboneMixin يتيح لك تحميل العمود الفقري (backbone) ويتضمن دوال لاستخراج خرائط الميزات والفهارس من الإعدادات.
  • ~transformers.utils.BackboneConfigMixin يتيح لك ضبط خريطة الميزات والفهارس وإتقانها والتحقق منها في إعداد العمود الفقري.

راجع توثيق واجهة Backbone للتحقق من النماذج التي تدعم العمود الفقري.

هناك طريقتان لتحميل هيكل Transformers الأساسي، وهما AutoBackbone وفئة هيكل مخصصة لنموذج معين.

AutoBackbone
الهيكل الأساسي الخاص بالنموذج

تحمّل واجهة AutoClass تلقائيًا نموذج رؤية مُدرَّب مسبقًا كهيكل أساسي باستخدام 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. اضبط نقطة التفتيش اللازمة للهيكل الأساسي في backbone لإنشاء نموذج بهيكل أساسي Timm بأوزان مهيأة عشوائيًا.

from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, TimmBackboneConfig

backbone_config = TimmBackboneConfig(backbone="resnet50", out_indices=[-1])
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)

يمكنك أيضًا استدعاء فئة TimmBackboneConfig صراحةً لتحميل وإنشاء هيكل عظمي (backbone) مُدرَّب مسبقًا من timm.

from transformers import TimmBackboneConfig

backbone_config = TimmBackboneConfig("resnet50")

مرّر إعداد العمود الفقري إلى إعداد النموذج وأنشئ رأس النموذج، 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]
Update on GitHub