# CHMv2

## نظرة عامة

قُدِّم نموذج خرائط ارتفاع الغطاء النباتي v2 (CHMv2) في [CHMv2: Improvements in Global Canopy Height Mapping using DINOv3](https://huggingface.co/papers/2603.06382). وببناء على [خرائط ارتفاع الغطاء النباتي عالية الدقة الأصلية](https://sustainability.atmeta.com/blog/2024/04/22/using-artificial-intelligence-to-map-the-earths-forests/) التي أُطلقت في عام 2024، يقدّم CHMv2 تحسينات كبيرة في الدقة والتفصيل والاتساق العالمي من خلال الاستفادة من DINOv3، وهو نموذج الرؤية ذاتي الإشراف من Meta.

يمكنك العثور على مزيد من المعلومات [هنا](http://ai.meta.com/blog/world-resources-institute-dino-canopy-height-maps-v2)، والكود الأصلي [هنا](https://github.com/facebookresearch/dinov3).

المستخلص من الورقة البحثية هو كالتالي:

*تُعدّ معلومات دقيقة عن ارتفاع تاج الأشجار ضرورية لقياس كربون الغابات، ومراقبة عمليات الترميم والتدهور، وتقييم بنية الموائل، ومع ذلك فإن القياسات عالية الدقة من المسح الليزري الجوي (ALS) لا تزال متاحة بشكل غير متساوٍ على مستوى العالم. هنا نعرض CHMv2، وهو خريطة عالمية لارتفاع تاج الأشجار بدقة المتر، مشتقة من صور الأقمار الصناعية البصرية عالية الدقة باستخدام نموذج لتقدير العمق مبني على DINOv3 ومدرب مقابل نماذج ارتفاع تاج الأشجار من ALS. مقارنةً بالمنتجات الحالية، يحسّن CHMv2 الدقة بشكل كبير، ويقلل الانحياز في الغابات الطويلة، ويحافظ بشكل أفضل على البنية الدقيقة مثل حواف التاج والفجوات. يتم تمكين هذه المكاسب من خلال توسع كبير في بيانات التدريب المتنوعة جغرافياً، والتدقيق والتسجيل الآلي للبيانات، وصياغة دالة خسارة واستراتيجية أخذ عينات من البيانات مصممة خصيصاً لتوزيعات ارتفاع تاج الأشجار. نتحقق من CHMv2 مقابل مجموعات اختبار مستقلة من ALS ومقابل عشرات الملايين من ملاحظات GEDI وICESat-2، مما يثبت أداءً متسقاً عبر النظم البيئية الرئيسية للغابات.*

## أمثلة على الاستخدام

شغّل الاستدلال على صورة باستخدام الكود التالي:

```python
import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForDepthEstimation

processor = AutoImageProcessor.from_pretrained("facebook/dinov3-vitl16-chmv2-dpt-head")
model = AutoModelForDepthEstimation.from_pretrained("facebook/dinov3-vitl16-chmv2-dpt-head", device_map="auto")

image = Image.open("image.tif")
inputs = processor(images=image, return_tensors="pt").to(model.device)

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

depth = processor.post_process_depth_estimation(
    outputs, target_sizes=[(image.height, image.width)]
)[0]["predicted_depth"]
```

## CHMv2Config[[transformers.CHMv2Config]]

#### transformers.CHMv2Config[[transformers.CHMv2Config]]

```python
transformers.CHMv2Config(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, patch_size: int = 16, initializer_range: float = 0.02, reassemble_factors: list[float | int] | None = None, post_process_channels: list[int] | None = None, fusion_hidden_size: int = 256, head_hidden_size: int = 128, number_output_channels: int = 256, readout_type: str = 'project', min_depth: float = 0.001, max_depth: float = 96.0, bins_strategy: typing.Literal['linear', 'log', 'chmv2_mixlog'] = 'chmv2_mixlog', norm_strategy: typing.Literal['linear', 'softmax', 'sigmoid', 'chmv2_mixlog'] = 'chmv2_mixlog')
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/chmv2/configuration_chmv2.py#L32)

**المعاملات:**

backbone_config (`Union[dict, "PreTrainedConfig"]`، *اختياري*) : إعدادات نموذج الهيكل الأساسي. حاليًا، يتم دعم DINOv3ViTConfig فقط.

patch_size (`int`، *اختياري*، القيمة الافتراضية 16) : حجم الباتش (patch size) المستخدم بواسطة محول الرؤية الأساسي (backbone vision transformer).

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

reassemble_factors (`list[float]`، *اختياري*، القيمة الافتراضية `[4, 2, 1, 0.5]`) : عوامل التوسيع/التصغير لطبقات إعادة التجميع.

post_process_channels (`list[int]`، *اختياري*، القيمة الافتراضية `[128, 256, 512, 1024]`) : أحجام قنوات الإخراج لمرحلة إعادة التجميع لكل مستوى من مستويات الميزات في الهيكل الأساسي.

fusion_hidden_size (`int`، *اختياري*، القيمة الافتراضية 256) : عدد القنوات قبل الدمج.

head_hidden_size (`int`، *اختياري*، القيمة الافتراضية 128) : عدد القنوات في الطبقة المخفية لرأس تقدير العمق.

number_output_channels (`int`، *اختياري*، القيمة الافتراضية 256) : عدد قنوات الإخراج لرأس CHMv2 (عدد مستويات العمق).

readout_type (`str`، *اختياري*، الافتراضي `"project"`) : نوع عملية القراءة لرمز CLS. أحد `["ignore", "add", "project"]`.

min_depth (`float`، *اختياري*، القيمة الافتراضية 0.001) : القيمة الدنيا للعمق لحساب تجميع قيم العمق.

max_depth (`float`، *اختياري*، القيمة الافتراضية 96.0) : القيمة القصوى للعمق لحساب تجميع قيم العمق.

bins_strategy (`str`، *اختياري*، القيمة الافتراضية `"chmv2_mixlog"`) : الاستراتيجية الخاصة بتوزيع دلاء العمق. أحد `["linear", "log", "chmv2_mixlog"]`.

norm_strategy (`str`، *اختياري*، القيمة الافتراضية `"chmv2_mixlog"`) : استراتيجية التطبيع للتنبؤ بالعمق. أحد `["linear", "softmax", "sigmoid", "chmv2_mixlog"]`.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Chmv2Model. تُستخدم لاستحداث نموذج Chmv2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [facebook/dinov3-vitl16-chmv2-dpt-head](https://huggingface.co/facebook/dinov3-vitl16-chmv2-dpt-head)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

```python
>>> from transformers import CHMv2Config, CHMv2ForDepthEstimation

>>> configuration = CHMv2Config()
>>> model = CHMv2ForDepthEstimation(configuration)
>>> configuration = model.config
```

## CHMv2ImageProcessor[[transformers.CHMv2ImageProcessor]]

#### transformers.CHMv2ImageProcessor[[transformers.CHMv2ImageProcessor]]

```python
transformers.CHMv2ImageProcessor(**kwargs: *<class 'transformers.models.chmv2.image_processing_chmv2.CHMv2ImageProcessorKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/chmv2/image_processing_chmv2.py#L99)

**المعاملات:**

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية هي `{'height' : 384, 'width': 384}`): يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم من نوع عدد صحيح.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية `None`) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `3`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `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.42, 0.411, 0.296]`) : متوسط الصورة المستخدم للتطبيع. لا يؤثر إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*، القيمة الافتراضية `[0.213, 0.156, 0.143]`) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم إضافة حشوة إلى الصورة. تتم الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

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*، *اختياري*، القيمة الافتراضية `None`) : ما إذا كان يجب قص الصورة من المنتصف.

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`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

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*، *اختياري*) : عدد رموز الصور التي سيتم استخدامها لكل صورة في المدخلات. أُضيفت لضمان التوافق مع الإصدارات السابقة، لكن ينبغي ضبطها كخاصية للمعالج في النماذج المستقبلية.

ensure_multiple_of (`int`، *kwargs*، *اختياري*، القيمة الافتراضية 1) : إذا كان `do_resize` هو `True`، يتم تغيير حجم الصورة إلى حجم يكون مضاعفاً لهذه القيمة. يمكن تجاوز ذلك بواسطة `ensure_multiple_of` في `preprocess`.

size_divisor (`int`، *kwargs*، القيمة الافتراضية `16`) : الحجم الذي يضمن إمكانية قسمة كل من الارتفاع والعرض عليه.

keep_aspect_ratio (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `True`، يتم تغيير حجم الصورة إلى أكبر حجم ممكن مع الحفاظ على نسبة الأبعاد. يمكن تجاوز ذلك باستخدام `keep_aspect_ratio` في `preprocess`.

do_reduce_labels (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `self.do_reduce_labels`) : ما إذا كان سيتم تقليل جميع قيم التسميات في خرائط التقسيم بمقدار 1. يُستخدم عادةً لمجموعات البيانات التي يُستخدم فيها 0 للخلفية، والخلفية نفسها غير مشمولة في جميع فئات مجموعة البيانات (مثل ADE20k). سيتم استبدال تسمية الخلفية بـ 255.

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

#### preprocess[[transformers.CHMv2ImageProcessor.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, **kwargs: *<class 'transformers.models.chmv2.image_processing_chmv2.CHMv2ImageProcessorKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/chmv2/image_processing_chmv2.py#L125)

**المعاملات:**

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`.

segmentation_maps (`ImageInput`، *اختياري*) : خرائط التقسيم المراد معالجتها مسبقًا.

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*) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `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`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

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*، *اختياري*) : عدد رموز الصور التي سيتم استخدامها لكل صورة في المدخلات. أُضيفت لضمان التوافق مع الإصدارات السابقة، لكن ينبغي ضبطها كخاصية للمعالج في النماذج المستقبلية.

ensure_multiple_of (`int`، *kwargs*، *اختياري*، القيمة الافتراضية 1) : إذا كان `do_resize` هو `True`، يتم تغيير حجم الصورة إلى حجم يكون مضاعفاً لهذه القيمة. يمكن تجاوز ذلك بواسطة `ensure_multiple_of` في `preprocess`.

size_divisor (`int`، *kwargs*) : الحجم الذي يضمن إمكانية قسمة كل من الارتفاع والعرض عليه.

keep_aspect_ratio (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : إذا كانت `True`، يتم تغيير حجم الصورة إلى أكبر حجم ممكن مع الحفاظ على نسبة الأبعاد. يمكن تجاوز ذلك باستخدام `keep_aspect_ratio` في `preprocess`.

do_reduce_labels (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `self.do_reduce_labels`) : ما إذا كان سيتم تقليل جميع قيم التسميات في خرائط التقسيم بمقدار 1. يُستخدم عادةً لمجموعات البيانات التي يُستخدم فيها 0 للخلفية، والخلفية نفسها غير مشمولة في جميع فئات مجموعة البيانات (مثل ADE20k). سيتم استبدال تسمية الخلفية بـ 255.

**يعيد:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب __call__ ('pixel_values'، وما إلى ذلك).
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

#### post_process_depth_estimation[[transformers.CHMv2ImageProcessor.post_process_depth_estimation]]

```python
post_process_depth_estimation(outputs: DepthEstimatorOutput, target_sizes: transformers.utils.generic.TensorType | list[tuple[int, int]] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/chmv2/image_processing_chmv2.py#L385)

**المعاملات:**

outputs (`DepthEstimatorOutput`) : المخرجات الخام للنموذج.

target_sizes (`TensorType` أو `List[Tuple[int, int]]`، *اختياري*) : متجه (Tensor) من الشكل `(batch_size, 2)` أو قائمة من الأزواج (`Tuple[int, int]`) تحتوي على الحجم المستهدف (الارتفاع، العرض) لكل صورة في الدفعة. إذا تُركت القيمة None، فلن يتم تغيير حجم التنبؤات.

**يعيد:** `List[Dict[str, TensorType]]`

قائمة من القواميس (dictionaries) من الموترات (tensors) تمثل تنبؤات العمق المعالجة.

يحوّل المخرجات الخام لـ`DepthEstimatorOutput` إلى تنبؤات عمق نهائية وصور عمق بصيغة PIL. يدعم PyTorch فقط.

## CHMv2ForDepthEstimation[[transformers.CHMv2ForDepthEstimation]]

#### transformers.CHMv2ForDepthEstimation[[transformers.CHMv2ForDepthEstimation]]

```python
transformers.CHMv2ForDepthEstimation(config: CHMv2Config)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/chmv2/modeling_chmv2.py#L384)

**المعاملات:**

config ([CHMv2Config](/docs/transformers/main/ar/model_doc/chmv2#transformers.CHMv2Config)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج CHMv2 مع رأس لتقدير العمق في الأعلى (يتكون من طبقات تلافيفية) على سبيل المثال لتقدير ارتفاع الغطاء النباتي.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.CHMv2ForDepthEstimation.forward]]

```python
forward(pixel_values: Tensor, labels: typing.Optional[torch.LongTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/chmv2/modeling_chmv2.py#L397)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [CHMv2ImageProcessor](/docs/transformers/main/ar/model_doc/chmv2#transformers.CHMv2ImageProcessor). راجع [CHMv2ImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [CHMv2ImageProcessor](/docs/transformers/main/ar/model_doc/chmv2#transformers.CHMv2ImageProcessor) لمعالجة الصور).

labels (`torch.LongTensor` من الشكل `(batch_size, height, width)`، *اختياري*) : خرائط تقدير العمق الصحيحة (Ground truth) لحساب الخسارة.

**يعيد:** [DepthEstimatorOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.DepthEstimatorOutput) أو `tuple(torch.Tensor)`

[DepthEstimatorOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.DepthEstimatorOutput) أو مجموعة (tuple) من `torch.Tensor` (في حال تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([CHMv2Config](/docs/transformers/main/ar/model_doc/chmv2#transformers.CHMv2Config)) والمدخلات.

تتجاوز طريقة [CHMv2ForDepthEstimation](/docs/transformers/main/ar/model_doc/chmv2#transformers.CHMv2ForDepthEstimation) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

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

- **loss** (`torch.Tensor` من الشكل `(1,)`, *اختياري*، يُعاد عند تقديم `labels`) -- خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).
- **predicted_depth** (`torch.Tensor` من الشكل `(batch_size, height, width)`) -- العمق المتوقع لكل بكسل.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات الطبقات المضمنة إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, num_channels, height, width)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة (Tuple) من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, patch_size, sequence_length)`.

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

مثال:

```python
>>> from transformers import AutoImageProcessor, CHMv2ForDepthEstimation
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
    >>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read())).convert("RGB")

>>> processor = AutoImageProcessor.from_pretrained("facebook/dinov3-vitl16-chmv2-dpt-head")
>>> model = CHMv2ForDepthEstimation.from_pretrained("facebook/dinov3-vitl16-chmv2-dpt-head")

>>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
>>> model.to(device)

>>> # prepare image for the model
>>> inputs = processor(images=image, return_tensors="pt").to(device)

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

>>> # interpolate to original size
>>> post_processed_output = processor.post_process_depth_estimation(
...     outputs, [(image.height, image.width)],
... )
>>> predicted_depth = post_processed_output[0]["predicted_depth"]
```

