Transformers documentation

ViTPose

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

نُشر هذا النموذج في أوراق HF في 26 أبريل 2022، وأُضيف إلى مكتبة Hugging Face Transformers في 8 يناير 2025.

ViTPose

ViTPose هو نموذج مبني على محوّل الرؤية لتقدير النقاط الرئيسية (الوضعية). يستخدم هيكلًا أساسيًا بسيطًا وغير هرمي من ViT مع رأس فك ترميز خفيف. تُبسّط هذه البنية تصميم النموذج، وتستفيد من قابلية توسّع المحوّلات، ويمكن تكييفها مع استراتيجيات تدريب مختلفة.

يحسّن ViTPose++ أداء ViTPose من خلال دمج وحدة مزيج الخبراء (MoE) في الهيكل العظمي، واستخدام بيانات تدريب مسبق أكثر تنوعاً.

drawing

يمكنك العثور على جميع نقاط التفتيش الخاصة بـ ViTPose وViTPose++ ضمن مجموعة ViTPose.

يُظهر المثال أدناه تقدير الوضعية باستخدام فئة VitPoseForPoseEstimation.

import requests
import supervision as sv
import torch
from PIL import Image

from transformers import AutoProcessor, RTDetrForObjectDetection, VitPoseForPoseEstimation


url = "https://www.fcbarcelona.com/fcbarcelona/photo/2021/01/31/3c55a19f-dfc1-4451-885e-afd14e890a11/mini_2021-01-31-BARCELONA-ATHLETIC-BILBAOI-30.JPG"
image = Image.open(requests.get(url, stream=True).raw)

# Detect humans in the image
person_image_processor = AutoProcessor.from_pretrained("PekingU/rtdetr_r50vd_coco_o365")
person_model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd_coco_o365", device_map="auto")

inputs = person_image_processor(images=image, return_tensors="pt").to(person_model.device)

with torch.no_grad():
    outputs = person_model(**inputs)

results = person_image_processor.post_process_object_detection(
    outputs, target_sizes=torch.tensor([(image.height, image.width)]), threshold=0.3
)
result = results[0]

# Human label refers 0 index in COCO dataset
person_boxes = result["boxes"][result["labels"] == 0]
person_boxes = person_boxes.cpu().numpy()

# Convert boxes from VOC (x1, y1, x2, y2) to COCO (x1, y1, w, h) format
person_boxes[:, 2] = person_boxes[:, 2] - person_boxes[:, 0]
person_boxes[:, 3] = person_boxes[:, 3] - person_boxes[:, 1]

# Detect keypoints for each person found
image_processor = AutoProcessor.from_pretrained("usyd-community/vitpose-base-simple")
model = VitPoseForPoseEstimation.from_pretrained("usyd-community/vitpose-base-simple", device_map="auto")

inputs = image_processor(image, boxes=[person_boxes], return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

pose_results = image_processor.post_process_pose_estimation(outputs, boxes=[person_boxes])
image_pose_result = pose_results[0]

xy = torch.stack([pose_result['keypoints'] for pose_result in image_pose_result]).cpu().numpy()
scores = torch.stack([pose_result['scores'] for pose_result in image_pose_result]).cpu().numpy()

key_points = sv.KeyPoints(
    xy=xy, confidence=scores
)

edge_annotator = sv.EdgeAnnotator(
    color=sv.Color.GREEN,
    thickness=1
)
vertex_annotator = sv.VertexAnnotator(
    color=sv.Color.RED,
    radius=2
)
annotated_frame = edge_annotator.annotate(
    scene=image.copy(),
    key_points=key_points
)
annotated_frame = vertex_annotator.annotate(
    scene=annotated_frame,
    key_points=key_points
)
annotated_frame

تقلل عملية التكميم العبء على الذاكرة في النماذج الكبيرة من خلال تمثيل الأوزان بدقة أقل. راجع نظرة عامة على التكميم للاطلاع على المزيد من واجهات التكميم المتاحة.

يستخدم المثال أدناه torchao لاختزال الأوزان إلى int4 فقط.

# pip install torchao
import requests
import torch
from PIL import Image

from transformers import AutoProcessor, RTDetrForObjectDetection, TorchAoConfig, VitPoseForPoseEstimation


url = "https://www.fcbarcelona.com/fcbarcelona/photo/2021/01/31/3c55a19f-dfc1-4451-885e-afd14e890a11/mini_2021-01-31-BARCELONA-ATHLETIC-BILBAOI-30.JPG"
image = Image.open(requests.get(url, stream=True).raw)

person_image_processor = AutoProcessor.from_pretrained("PekingU/rtdetr_r50vd_coco_o365")
person_model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd_coco_o365", device_map="auto")

inputs = person_image_processor(images=image, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = person_model(**inputs)

results = person_image_processor.post_process_object_detection(
    outputs, target_sizes=torch.tensor([(image.height, image.width)]), threshold=0.3
)
result = results[0]

person_boxes = result["boxes"][result["labels"] == 0]
person_boxes = person_boxes.cpu().numpy()

person_boxes[:, 2] = person_boxes[:, 2] - person_boxes[:, 0]
person_boxes[:, 3] = person_boxes[:, 3] - person_boxes[:, 1]

quantization_config = TorchAoConfig("int4_weight_only", group_size=128)

image_processor = AutoProcessor.from_pretrained("usyd-community/vitpose-plus-huge")
model = VitPoseForPoseEstimation.from_pretrained("usyd-community/vitpose-plus-huge", device_map="auto", quantization_config=quantization_config)

inputs = image_processor(image, boxes=[person_boxes], return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

pose_results = image_processor.post_process_pose_estimation(outputs, boxes=[person_boxes])
image_pose_result = pose_results[0]

ملاحظات

  • استخدم AutoProcessor لتحضير مدخلات صناديق الحدود والصور تلقائيًا.

  • ViTPose هو مُقدِّر وضعية من الأعلى إلى الأسفل. يستخدم مُكتشف كائنات للكشف عن الأفراد أولاً قبل التنبؤ بنقاط الوضعية.

  • يحتوي ViTPose++ على 6 رؤوس خبيرة مختلفة لنموذج MoE (التحقق من COCO 0، وAiC 1، وMPII 2، وAP-10K 3، وAPT-36K 4، وCOCO-WholeBody 5)، مما يدعم 6 مجموعات بيانات مختلفة. مرّر قيمة محددة تتوافق مع مجموعة البيانات إلى dataset_index للإشارة إلى الخبير الذي يجب استخدامه.

    from transformers import AutoProcessor, VitPoseForPoseEstimation
    
    image_processor = AutoProcessor.from_pretrained("usyd-community/vitpose-plus-base")
    model = VitPoseForPoseEstimation.from_pretrained("usyd-community/vitpose-plus-base", device_map="auto")
    
    inputs = image_processor(image, boxes=[person_boxes], return_tensors="pt").to(model.device)
    dataset_index = torch.tensor([0], device=device) # must be a tensor of shape (batch_size,)
    
    with torch.no_grad():
        outputs = model(**inputs, dataset_index=dataset_index)
  • OpenCV هو خيار بديل لتصور الوضعية المقدّرة.

    # pip install opencv-python
    import math
    import cv2
    
    def draw_points(image, keypoints, scores, pose_keypoint_color, keypoint_score_threshold, radius, show_keypoint_weight):
        if pose_keypoint_color is not None:
            assert len(pose_keypoint_color) == len(keypoints)
        for kid, (kpt, kpt_score) in enumerate(zip(keypoints, scores)):
            x_coord, y_coord = int(kpt[0]), int(kpt[1])
            if kpt_score > keypoint_score_threshold:
                color = tuple(int(c) for c in pose_keypoint_color[kid])
                if show_keypoint_weight:
                    cv2.circle(image, (int(x_coord), int(y_coord)), radius, color, -1)
                    transparency = max(0, min(1, kpt_score))
                    cv2.addWeighted(image, transparency, image, 1 - transparency, 0, dst=image)
                else:
                    cv2.circle(image, (int(x_coord), int(y_coord)), radius, color, -1)
    
    def draw_links(image, keypoints, scores, keypoint_edges, link_colors, keypoint_score_threshold, thickness, show_keypoint_weight, stick_width = 2):
        height, width, _ = image.shape
        if keypoint_edges is not None and link_colors is not None:
            assert len(link_colors) == len(keypoint_edges)
            for sk_id, sk in enumerate(keypoint_edges):
                x1, y1, score1 = (int(keypoints[sk[0], 0]), int(keypoints[sk[0], 1]), scores[sk[0]])
                x2, y2, score2 = (int(keypoints[sk[1], 0]), int(keypoints[sk[1], 1]), scores[sk[1]])
                if (
                    x1 > 0
                    and x1 < width
                    and y1 > 0
                    and y1 < height
                    and x2 > 0
                    and x2 < width
                    and y2 > 0
                    and y2 < height
                    and score1 > keypoint_score_threshold
                    and score2 > keypoint_score_threshold
                ):
                    color = tuple(int(c) for c in link_colors[sk_id])
                    if show_keypoint_weight:
                        X = (x1, x2)
                        Y = (y1, y2)
                        mean_x = np.mean(X)
                        mean_y = np.mean(Y)
                        length = ((Y[0] - Y[1]) ** 2 + (X[0] - X[1]) ** 2) ** 0.5
                        angle = math.degrees(math.atan2(Y[0] - Y[1], X[0] - X[1]))
                        polygon = cv2.ellipse2Poly(
                            (int(mean_x), int(mean_y)), (int(length / 2), int(stick_width)), int(angle), 0, 360, 1
                        )
                        cv2.fillConvexPoly(image, polygon, color)
                        transparency = max(0, min(1, 0.5 * (keypoints[sk[0], 2] + keypoints[sk[1], 2])))
                        cv2.addWeighted(image, transparency, image, 1 - transparency, 0, dst=image)
                    else:
                        cv2.line(image, (x1, y1), (x2, y2), color, thickness=thickness)
    
    # Note: keypoint_edges and color palette are dataset-specific
    keypoint_edges = model.config.edges
    
    palette = np.array(
        [
            [255, 128, 0],
            [255, 153, 51],
            [255, 178, 102],
            [230, 230, 0],
            [255, 153, 255],
            [153, 204, 255],
            [255, 102, 255],
            [255, 51, 255],
            [102, 178, 255],
            [51, 153, 255],
            [255, 153, 153],
            [255, 102, 102],
            [255, 51, 51],
            [153, 255, 153],
            [102, 255, 102],
            [51, 255, 51],
            [0, 255, 0],
            [0, 0, 255],
            [255, 0, 0],
            [255, 255, 255],
        ]
    )
    
    link_colors = palette[[0, 0, 0, 0, 7, 7, 7, 9, 9, 9, 9, 9, 16, 16, 16, 16, 16, 16, 16]]
    keypoint_colors = palette[[16, 16, 16, 16, 16, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0]]
    
    numpy_image = np.array(image)
    
    for pose_result in image_pose_result:
        scores = np.array(pose_result["scores"])
        keypoints = np.array(pose_result["keypoints"])
    
        # draw each point on image
        draw_points(numpy_image, keypoints, scores, keypoint_colors, keypoint_score_threshold=0.3, radius=4, show_keypoint_weight=False)
    
        # draw links
        draw_links(numpy_image, keypoints, scores, keypoint_edges, link_colors, keypoint_score_threshold=0.3, thickness=1, show_keypoint_weight=False)
    
    pose_image = Image.fromarray(numpy_image)
    pose_image

الموارد

راجع الموارد أدناه لمعرفة المزيد حول استخدام ViTPose.

  • يُبيّن هذا دفتر الملاحظات الاستدلال والتصور.
  • يُظهر هذا Space نموذج ViTPose على الصور والفيديو.

VitPoseImageProcessor

فئة transformers.VitPoseImageProcessor

< >

( **kwargs: *<class 'transformers.models.vitpose.image_processing_vitpose.VitPoseImageProcessorKwargs'> )

المعاملات

  • do_convert_rgb (bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB.
  • do_resize (bool، kwargs، اختياري) — ما إذا كان يجب تغيير حجم الصورة.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]، kwargs، القيمة الافتراضية {'height' -- 256, 'width': 192}): يصف الأبعاد القصوى للمدخلات إلى النموذج.
  • default_to_square (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت قيمة size من نوع int.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيق center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد PILImageResampling. لا يكون له أي تأثير إلا إذا تم تعيين do_resize إلى True.
  • do_rescale (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إعادة تحجيم الصورة.
  • rescale_factor (float، kwargs، اختياري، القيمة الافتراضية 0.00392156862745098) — عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان do_rescale مضبوطًا على True.
  • do_normalize (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تطبيع الصورة.
  • image_mean (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية [0.485, 0.456, 0.406]) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • image_std (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية [0.229, 0.224, 0.225]) — الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • do_pad (bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل {"height": int, "width" int} الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم pad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون do_pad=True.
  • do_center_crop (bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف.
  • data_format (Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعم ChannelDimension.FIRST فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:
    • "channels_first" أو ChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width).
    • "channels_last" أو ChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات).
    • "none" أو ChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على 'pt'، وإلا تُرجع قائمة من التينسورات.
  • disable_grouping (bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية.
  • do_affine_transform (bool، kwargs، اختياري) — ما إذا كان سيتم تطبيق تحويل أفيني على الصور المدخلة بناءً على صناديق الحدود.
  • normalize_factor (float، kwargs، اختياري، القيمة الافتراضية 200.0) — معامل مقياس العرض والارتفاع المستخدم للتطبيع عند حساب المركز والمقياس من صناديق الحدود.

ينشئ معالج صور VitPoseImageProcessor.

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]boxes: list[list[list[float]]] | numpy.ndarray**kwargs: *<class 'transformers.models.vitpose.image_processing_vitpose.VitPoseImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

المعاملات

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — الصورة التي سيتم معالجتها مسبقاً. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صوراً بقيم بكسل بين 0 و1، فاضبط do_rescale=False.
  • boxes (list[list[list[float]]] أو np.ndarray) — قائمة أو مصفوفة تحتوي على صناديق الحدود لكل صورة. يجب أن يكون كل صندوق قائمة من أربعة أرقام عشرية تمثل إحداثيات صندوق الحدود بتنسيق COCO (top_left_x, top_left_y, width, height).
  • do_convert_rgb (bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB.
  • do_resize (bool، kwargs، اختياري) — ما إذا كان يجب تغيير حجم الصورة.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — يصف الأبعاد القصوى للمدخلات إلى النموذج.
  • default_to_square (bool، kwargs، اختياري) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت القيمة عددًا صحيحًا.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيق center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد PILImageResampling. لا يكون له أي تأثير إلا إذا تم تعيين do_resize إلى True.
  • do_rescale (bool، kwargs، اختياري) — ما إذا كان يجب إعادة تحجيم الصورة.
  • rescale_factor (float، kwargs، اختياري) — معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان do_rescale مضبوطاً على True.
  • do_normalize (bool، kwargs، اختياري) — ما إذا كان سيتم تطبيع الصورة.
  • image_mean (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • image_std (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — انحراف المعيار للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • do_pad (bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل {"height": int, "width" int} الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم pad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون do_pad=True.
  • do_center_crop (bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف.
  • data_format (Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعم ChannelDimension.FIRST فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:
    • "channels_first" أو ChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width).
    • "channels_last" أو ChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات).
    • "none" أو ChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على 'pt'، وإلا تُرجع قائمة من التينسورات.
  • disable_grouping (bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية.
  • do_affine_transform (bool، kwargs، اختياري) — ما إذا كان سيتم تطبيق تحويل أفيني على الصور المدخلة بناءً على صناديق الحدود.
  • normalize_factor (float، kwargs، اختياري، القيمة الافتراضية 200.0) — معامل مقياس العرض والارتفاع المستخدم للتطبيع عند حساب المركز والمقياس من صناديق الحدود.

يعيد

~image_processing_base.BatchFeature

  • data (dict) — قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب call (مثل ‘pixel_values’).
  • tensor_type (Union[None, str, TensorType]، اختياري) — يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

post_process_pose_estimation

< >

( outputs: VitPoseEstimatorOutputboxes: list[list[list[float]]] | numpy.ndarraykernel_size: int = 11threshold: float | None = Nonetarget_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[list[Dict]]

المعاملات

  • outputs (VitPoseEstimatorOutput) — مخرجات نموذج VitPoseForPoseEstimation.
  • boxes (list[list[list[float]]] أو np.ndarray) — قائمة أو مصفوفة تحتوي على صناديق الحدود لكل صورة. يجب أن يكون كل صندوق قائمة من أربعة أرقام عشرية تمثل إحداثيات صندوق الحدود بتنسيق COCO (top_left_x, top_left_y, width, height).
  • kernel_size (int، اختياري، القيمة الافتراضية 11) — حجم نواة غاوس (K) للتعديل.
  • threshold (float، اختياري، القيمة الافتراضية هي None) — حدّ الدرجة الذي يُحتفظ به للتنبؤات الخاصة بكشف الكائنات.
  • target_sizes (torch.Tensor أو list[tuple[int, int]]، اختياري) — مصفوفة (Tensor) بأبعاد (batch_size, 2) أو قائمة من الأزواج (tuple[int, int]) تحتوي على الحجم المستهدف (height, width) لكل صورة في الدفعة. إذا لم يتم ضبطه، فسيتم تغيير حجم التنبؤات باستخدام القيمة الافتراضية.

يعيد

list[list[Dict]]

قائمة من القواميس، حيث يحتوي كل قاموس على النقاط الرئيسية والمربعات الخاصة بصورة ضمن الدفعة كما تتنبأ بها النموذج.

حوّل خرائط الحرارة إلى تنبؤات لنقاط المفاتيح ثم أعد تحويلها إلى الصورة.

VitPoseImageProcessorPil

فئة transformers.VitPoseImageProcessorPil

< >

( **kwargs: *<class 'transformers.models.vitpose.image_processing_pil_vitpose.VitPoseImageProcessorKwargs'> )

المعاملات

  • do_convert_rgb (bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB.
  • do_resize (bool، kwargs، اختياري) — ما إذا كان يجب تغيير حجم الصورة.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]، kwargs، القيمة الافتراضية {'height' -- 256, 'width': 192}): يصف الأبعاد القصوى للمدخلات إلى النموذج.
  • default_to_square (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت قيمة size من نوع int.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيق center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد PILImageResampling. لا يكون له أي تأثير إلا إذا تم تعيين do_resize إلى True.
  • do_rescale (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إعادة تحجيم الصورة.
  • rescale_factor (float، kwargs، اختياري، القيمة الافتراضية 0.00392156862745098) — عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان do_rescale مضبوطًا على True.
  • do_normalize (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تطبيع الصورة.
  • image_mean (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية [0.485, 0.456, 0.406]) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • image_std (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية [0.229, 0.224, 0.225]) — الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • do_pad (bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل {"height": int, "width" int} الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم pad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون do_pad=True.
  • do_center_crop (bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف.
  • data_format (Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعم ChannelDimension.FIRST فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:
    • "channels_first" أو ChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width).
    • "channels_last" أو ChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات).
    • "none" أو ChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على 'pt'، وإلا تُرجع قائمة من التينسورات.
  • disable_grouping (bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية.
  • do_affine_transform (bool، kwargs، اختياري) — ما إذا كان سيتم تطبيق تحويل أفيني على الصور المدخلة بناءً على صناديق الحدود.
  • normalize_factor (float، kwargs، اختياري، القيمة الافتراضية 200.0) — معامل مقياس العرض والارتفاع المستخدم للتطبيع عند حساب المركز والمقياس من صناديق الحدود.

ينشئ معالج صور VitPoseImageProcessor.

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]boxes: list[list[list[float]]] | numpy.ndarray**kwargs: *<class 'transformers.models.vitpose.image_processing_pil_vitpose.VitPoseImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

المعاملات

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — الصورة التي سيتم معالجتها مسبقاً. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صوراً بقيم بكسل بين 0 و1، فاضبط do_rescale=False.
  • boxes (list[list[list[float]]] أو np.ndarray) — قائمة أو مصفوفة تحتوي على صناديق الحدود لكل صورة. يجب أن يكون كل صندوق قائمة من أربعة أرقام عشرية تمثل إحداثيات صندوق الحدود بتنسيق COCO (top_left_x, top_left_y, width, height).
  • do_convert_rgb (bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB.
  • do_resize (bool، kwargs، اختياري) — ما إذا كان يجب تغيير حجم الصورة.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — يصف الأبعاد القصوى للمدخلات إلى النموذج.
  • default_to_square (bool، kwargs، اختياري) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت القيمة عددًا صحيحًا.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيق center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد PILImageResampling. لا يكون له أي تأثير إلا إذا تم تعيين do_resize إلى True.
  • do_rescale (bool، kwargs، اختياري) — ما إذا كان يجب إعادة تحجيم الصورة.
  • rescale_factor (float، kwargs، اختياري) — معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان do_rescale مضبوطاً على True.
  • do_normalize (bool، kwargs، اختياري) — ما إذا كان سيتم تطبيع الصورة.
  • image_mean (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • image_std (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — انحراف المعيار للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • do_pad (bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل {"height": int, "width" int} الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم pad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون do_pad=True.
  • do_center_crop (bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف.
  • data_format (Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعم ChannelDimension.FIRST فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:
    • "channels_first" أو ChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width).
    • "channels_last" أو ChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات).
    • "none" أو ChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على 'pt'، وإلا تُرجع قائمة من التينسورات.
  • disable_grouping (bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية.
  • do_affine_transform (bool، kwargs، اختياري) — ما إذا كان سيتم تطبيق تحويل أفيني على الصور المدخلة بناءً على صناديق الحدود.
  • normalize_factor (float، kwargs، اختياري، القيمة الافتراضية 200.0) — معامل مقياس العرض والارتفاع المستخدم للتطبيع عند حساب المركز والمقياس من صناديق الحدود.

يعيد

~image_processing_base.BatchFeature

  • data (dict) — قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب call (مثل ‘pixel_values’).
  • tensor_type (Union[None, str, TensorType]، اختياري) — يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

post_process_pose_estimation

< >

( outputs: VitPoseEstimatorOutputboxes: list[list[list[float]]] | numpy.ndarraykernel_size: int = 11threshold: float | None = Nonetarget_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[list[Dict]]

المعاملات

  • outputs (VitPoseEstimatorOutput) — مخرجات نموذج VitPoseForPoseEstimation.
  • boxes (list[list[list[float]]] أو np.ndarray) — قائمة أو مصفوفة تحتوي على صناديق الحدود لكل صورة. يجب أن يكون كل صندوق قائمة من أربعة أرقام عشرية تمثل إحداثيات صندوق الحدود بتنسيق COCO (top_left_x, top_left_y, width, height).
  • kernel_size (int، اختياري، القيمة الافتراضية 11) — حجم نواة غاوس (K) للتعديل.
  • threshold (float، اختياري، القيمة الافتراضية هي None) — حدّ الدرجة الذي يُحتفظ به للتنبؤات الخاصة بكشف الكائنات.
  • target_sizes (torch.Tensor أو list[tuple[int, int]]، اختياري) — مصفوفة (Tensor) بأبعاد (batch_size, 2) أو قائمة من الأزواج (tuple[int, int]) تحتوي على الحجم المستهدف (height, width) لكل صورة في الدفعة. إذا لم يتم ضبطه، فسيتم تغيير حجم التنبؤات باستخدام القيمة الافتراضية.

يعيد

list[list[Dict]]

قائمة من القواميس، حيث يحتوي كل قاموس على النقاط الرئيسية والمربعات الخاصة بصورة ضمن الدفعة كما تتنبأ بها النموذج.

حوّل خرائط الحرارة إلى تنبؤات لنقاط المفاتيح ثم أعد تحويلها إلى الصورة.

VitPoseConfig

فئة transformers.VitPoseConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02scale_factor: int = 4use_simple_decoder: bool = True )

المعاملات

  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — إعدادات نموذج الهيكل العظمي.
  • initializer_range (float، اختياري، القيمة الافتراضية 0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • scale_factor (int، اختياري، القيمة الافتراضية 4) — المعامل المستخدم لتكبير خرائط الميزات الصادرة من هيكل ViT.
  • use_simple_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام VitPoseSimpleDecoder لفك ترميز خرائط الميزات من الهيكل العظمي إلى خرائط حرارية. وإلا فسيتم استخدام VitPoseClassicDecoder.

هذه فئة الإعدادات المخزنة لإعدادات نموذج VitposeModel. تُستخدم لاستحداث نموذج Vitpose وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ usyd-community/vitpose-base-simple

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

مثال:

>>> from transformers import VitPoseConfig, VitPoseForPoseEstimation

>>> # Initializing a VitPose configuration
>>> configuration = VitPoseConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = VitPoseForPoseEstimation(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

VitPoseForPoseEstimation

فئة transformers.VitPoseForPoseEstimation

< >

( config: VitPoseConfig )

المعاملات

  • config (VitPoseConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج VitPose مع رأس لتقدير الوضعية في الأعلى.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( pixel_values: Tensordataset_index: typing.Optional[torch.Tensor] = Noneflip_pairs: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → VitPoseEstimatorOutput or tuple(torch.Tensor)

المعاملات

  • pixel_values (torch.Tensor من الشكل (batch_size, num_channels, image_size, image_size)) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسلات باستخدام VitPoseImageProcessor. راجع VitPoseImageProcessor.call() للتفاصيل (يستخدم processor_class VitPoseImageProcessor لمعالجة الصور).
  • dataset_index (torch.Tensor من الشكل (batch_size,)) — المؤشر المستخدم في كتل مزيج الخبراء (MoE) في الهيكل الأساسي. يتوافق هذا مع مؤشر مجموعة البيانات المستخدم أثناء التدريب، على سبيل المثال: في حالة وجود مؤشر واحد لمجموعة البيانات، يشير المؤشر 0 إلى مجموعة البيانات المقابلة. وفي حالة وجود عدة مجموعات بيانات، يشير المؤشر 0 إلى مجموعة البيانات أ (مثل MPII) والمؤشر 1 إلى مجموعة البيانات ب (مثل CrowdPose).

    يتوافق هذا مع فهرس مجموعة البيانات المستخدم أثناء التدريب، على سبيل المثال يشير الفهرس 0 إلى مجموعة البيانات المقابلة في حالة وجود فهرس واحد لمجموعة بيانات واحدة. أما في حالة وجود عدة مجموعات بيانات، فيشير الفهرس 0 إلى مجموعة البيانات أ (مثل MPII) والفهرس 1 إلى مجموعة البيانات ب (مثل CrowdPose).

  • flip_pairs (torch.tensor، اختياري) — ما إذا كان يجب عكس أزواج النقاط الرئيسية (على سبيل المثال، الأذن اليسرى — الأذن اليمنى).
  • labels (torch.Tensor من الشكل (batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس إما ضمن [0, ..., config.vocab_size] أو -100 (انظر input_ids docstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على -100 (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن [0, ..., config.vocab_size].

يعيد

VitPoseEstimatorOutput أو tuple(torch.Tensor)

أمر VitPoseEstimatorOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) تتألف من عناصر مختلفة اعتماداً على الإعداد (VitPoseConfig) والمدخلات.

تتجاوز طريقة VitPoseForPoseEstimation الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — لا يتم دعم الخسارة في الوقت الحالي. راجع https://github.com/ViTAE-Transformer/ViTPose/tree/main/mmpose/models/losses لمزيد من التفاصيل.

  • خرائط حرارية (torch.Tensor بأبعاد (batch_size, num_keypoints, height, width)) — خرائط حرارية كما تتنبأ بها النموذج.

  • hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل مرحلة) من الشكل (batch_size, sequence_length, hidden_size). حالات مخفية (تُسمى أيضًا خرائط الميزات) للنموذج عند إخراج كل مرحلة.

  • attentions (tuple[torch.Tensor, ...]، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

>>> from transformers import AutoImageProcessor, VitPoseForPoseEstimation
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> processor = AutoImageProcessor.from_pretrained("usyd-community/vitpose-base-simple")
>>> model = VitPoseForPoseEstimation.from_pretrained("usyd-community/vitpose-base-simple")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> boxes = [[[412.8, 157.61, 53.05, 138.01], [384.43, 172.21, 15.12, 35.74]]]
>>> inputs = processor(image, boxes=boxes, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**inputs)
>>> heatmaps = outputs.heatmaps
Update on GitHub