# CHMv2

## Genel Bakış

Canopy Height Maps v2 (CHMv2) modeli, [CHMv2: Improvements in Global Canopy Height Mapping using DINOv3](https://huggingface.co/papers/2603.06382) makalesinde önerilmiştir. 2024'te yayımlanan [orijinal yüksek çözünürlüklü tepe yüksekliği haritalarımız](https://sustainability.atmeta.com/blog/2024/04/22/using-artificial-intelligence-to-map-the-earths-forests/) üzerine inşa edilen CHMv2, Meta'nın kendiliğinden denetimli görme modeli olan DINOv3'ten yararlanarak doğruluk, detay ve küresel tutarlılık açısından önemli iyileştirmeler sunmaktadır.

Daha fazla bilgiyi [burada](http://ai.meta.com/blog/world-resources-institute-dino-canopy-height-maps-v2), orijinal kodu ise [burada](https://github.com/facebookresearch/dinov3) bulabilirsiniz.

Makalenin özeti aşağıdaki gibidir:

*Doğru tepe yüksekliği bilgisi, orman karbonunun nicelendirilmesi, restorasyon ve bozulmanın izlenmesi ve habitat yapısının değerlendirilmesi için hayati önem taşır; ancak havadan lazer tarama (ALS) ile elde edilen yüksek sadakatli ölçümler dünya genelinde eşit olmayan bir şekilde mevcuttur. Burada, DINOv3 üzerine inşa edilen ve ALS tepe yüksekliği modellerine karşı eğitilen bir derinlik tahmini modeli kullanılarak yüksek çözünürlüklü optik uydu görüntülerinden türetilen, küresel, metre çözünürlüklü bir tepe yüksekliği haritası olan CHMv2'yi sunuyoruz. Mevcut ürünlerle karşılaştırıldığında CHMv2, doğruluğu önemli ölçüde artırır, yüksek ormanlardaki yanlılığı azaltır ve tepe kenarları ile açıklıklar gibi ince ölçekli yapıları daha iyi korur. Bu kazanımlar, coğrafi olarak çeşitli eğitim verilerinin büyük ölçüde genişletilmesi, otomatik veri kürasyonu ve kaydı ile tepe yüksekliği dağılımlarına uyarlanmış bir kayıp formülasyonu ve veri örneklemleme stratejisi sayesinde mümkün olmaktadır. CHMv2'yi bağımsız ALS test setleri ve on milyonlarca GEDI ve ICESat-2 gözlemiyle doğrulayarak, ana orman biyomları arasında tutarlı bir performans gösterdik.*

## Kullanım örnekleri

Aşağıdaki kodla bir görüntü üzerinde çıkarım yapın:

```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')
```

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/chmv2/configuration_chmv2.py#L32)

**Parametreler:**

backbone_config (`Union[dict, "PreTrainedConfig"]`, *isteğe bağlı*) : Omurga modelinin yapılandırması. Şu anda yalnızca DINOv3ViTConfig desteklenmektedir.

patch_size (`int`, *isteğe bağlı*, varsayılan 16) : Omurga görme dönüştürücüsünün kullandığı yama boyutu.

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

reassemble_factors (`list[float]`, *isteğe bağlı*, varsayılan `[4, 2, 1, 0.5]`) : Yeniden birleştirme katmanlarının yukarı/aşağı örneklemeye faktörleri.

post_process_channels (`list[int]`, *isteğe bağlı*, varsayılan `[128, 256, 512, 1024]`) : Her omurga özellik seviyesi için yeniden birleştirme aşamasının çıktı kanal boyutları.

fusion_hidden_size (`int`, *isteğe bağlı*, varsayılan 256) : Füzyondan önceki kanal sayısı.

head_hidden_size (`int`, *isteğe bağlı*, varsayılan 128) : Derinlik tahmini başlığının gizli katmanındaki kanal sayısı.

number_output_channels (`int`, *isteğe bağlı*, varsayılan 256) : CHMv2 başlığı için çıktı kanalı sayısı (derinlik bini sayısı).

readout_type (`str`, *isteğe bağlı*, varsayılan `"project"`) : CLS token için okuma (readout) işlemi türü. `["ignore", "add", "project"]` değerlerinden biri.

min_depth (`float`, *opsiyonel*, varsayılan 0.001) : Derinlik kutusu hesabı için minimum derinlik değeri.

max_depth (`float`, *opsiyonel*, varsayılan 96.0) : Derinlik kutusu (bin) hesabı için maksimum derinlik değeri.

bins_strategy (`str`, *isteğe bağlı*, varsayılan `"chmv2_mixlog"`) : Derinlik bini dağılımı için strateji. `["linear", "log", "chmv2_mixlog"]` değerlerinden biri.

norm_strategy (`str`, *isteğe bağlı*, varsayılan `"chmv2_mixlog"`) : Derinlik tahmini için normalizasyon stratejisi. `["linear", "softmax", "sigmoid", "chmv2_mixlog"]` değerlerinden biri.

Bu, bir Chmv2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Chmv2 modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, [facebook/dinov3-vitl16-chmv2-dpt-head](https://huggingface.co/facebook/dinov3-vitl16-chmv2-dpt-head) modelinin yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/v5.23.0/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/v5.23.0/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

```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'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/chmv2/image_processing_chmv2.py#L99)

**Parametreler:**

do_convert_rgb (`bool`, *kwargs*, *isteğe bağlı*) : Görselin RGB'ye dönüştürülüp dönüştürülmeyeceği.

do_resize (`bool`, *kwargs*, *opsiyonel*, varsayılan `False`) : Görselin yeniden boyutlandırılıp boyutlandırılmayacağı.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*, varsayılan `{'height' : 384, 'width': 384}`): Modelin kabul ettiği maksimum giriş boyutlarını açıklar.

default_to_square (`bool`, *kwargs*, *opsiyonel*, varsayılan `True`) : Boyut bir int ise, yeniden boyutlandırma sırasında varsayılan olarak kare bir görüntü kullanılıp kullanılmayacağını belirtir.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*, varsayılan `None`) : `center_crop` uygulandıktan sonra çıktı görüntüsünün boyutu.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`, *kwargs*, varsayılan `3`) : Görsel yeniden boyutlandırılıyorsa kullanılacak yeniden örnekleme filtresi. Bu, `PILImageResampling` enum değerlerinden biri olabilir. Yalnızca `do_resize` `True` olarak ayarlanırsa etkilidir.

do_rescale (`bool`, *kwargs*, *opsiyonel*, varsayılan `True`) : Görselin yeniden ölçeklendirilip ölçeklendirilmeyeceğini belirtir.

rescale_factor (`float`, *kwargs*, *opsiyonel*, varsayılan `0.00392156862745098`) : `do_rescale` `True` olarak ayarlandığında görüntüyü yeniden ölçeklemek için kullanılan yeniden ölçekleme faktörü.

do_normalize (`bool`, *kwargs*, *opsiyonel*, varsayılan `True`) : Görselin normalize edilip edilmeyeceğini belirtir.

image_mean (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *opsiyonel*, varsayılan `[0.42, 0.411, 0.296]`) : Normalizasyon için kullanılacak görüntü ortalaması. Yalnızca `do_normalize` `True` olarak ayarlanırsa etkilidir.

image_std (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *opsiyonel*, varsayılan `[0.213, 0.156, 0.143]`) : Normalizasyon için kullanılacak görüntü standart sapması. Yalnızca `do_normalize` `True` olarak ayarlanırsa etkilidir.

do_pad (`bool`, *kwargs*, *opsiyonel*, varsayılan `True`) : Görselin dolgu (padding) uygulanıp uygulanmayacağını belirtir. Dolgu, ya batch içindeki en büyük boyuta ya da görsel başına sabit bir kare boyuta yapılır. Kesin dolgu stratejisi modele bağlıdır.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : Görsellerin doldurulacağı boyut, `{"height": int, "width" int}` biçiminde. Ön işleme için sağlanan herhangi bir görsel boyutundan büyük olmalıdır. `pad_size` sağlanmazsa, görseller partideki en büyük yüksekliğe ve genişliğe doldurulur. Yalnızca `do_pad=True.` olduğunda uygulanır.

do_center_crop (`bool`, *kwargs*, *opsiyonel*, varsayılan `None`) : Görselin merkezden kırpılıp kırpılmayacağını belirtir.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *isteğe bağlı*) : Yalnızca `ChannelDimension.FIRST` desteklenir. Yavaş işleyicilerle uyumluluk için eklendi.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *isteğe bağlı*) : Girdi görüntüsünün kanal boyutu biçimi. Ayarlanmazsa, kanal boyutu biçimi girdi görüntüsünden çıkarılır. Aşağıdakilerden biri olabilir: - `"channels_first"` veya `ChannelDimension.FIRST`: (num_channels, height, width) biçiminde görüntü. - `"channels_last"` veya `ChannelDimension.LAST`: (height, width, num_channels) biçiminde görüntü. - `"none"` veya `ChannelDimension.NONE`: (height, width) biçiminde görüntü.

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : Videoların işleneceği cihaz. Ayarlanmamışsa, cihaz girdi videolarından çıkarılır.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : `'pt'` olarak ayarlanırsa yığılmış tensörleri, aksi halde tensör listesi döndürür.

disable_grouping (`bool`, *kwargs*, *opsiyonel*) : Görsellerin boyuta göre gruplandırılmasını devre dışı bırakarak bunların toplu olarak değil, tek tek işlenmesini sağlar. None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, buradaki ayrıntılı açıklamalara dayalı ampirik gözlemlere dayanmaktadır: https://github.com/huggingface/transformers/pull/38157

image_seq_length (`int`, *kwargs*, *isteğe bağlı*) : Girdideki her görüntü için kullanılacak görüntü jetonlarının sayısı. Geriye dönük uyumluluk için eklendi ancak bu, gelecekteki modellerde bir işlemci özniteliği olarak ayarlanmalıdır.

ensure_multiple_of (`int`, *kwargs*, *opsiyonel*, varsayılan 1) : `do_resize` `True` ise, görüntü bu değerin katı olan bir boyuta yeniden boyutlandırılır. `preprocess` içindeki `ensure_multiple_of` ile geçersiz kılınabilir.

size_divisor (`int`, *kwargs*, varsayılan `16`) : Yükseklik ve genişliğin bu sayıya bölünebilir olmasını sağlamak için kullanılan boyut.

keep_aspect_ratio (`bool`, *kwargs*, *opsiyonel*, varsayılan `False`) : `True` ise, görüntü, en-boy oranının korunması koşuluyla en büyük olası boyuta yeniden boyutlandırılır. `preprocess` içindeki `keep_aspect_ratio` ile geçersiz kılınabilir.

do_reduce_labels (`bool`, *kwargs*, *opsiyonel*, varsayılan `self.do_reduce_labels`) : Segmentasyon haritalarındaki tüm etiket değerlerinin 1 azaltılacak mı. Genellikle 0'ın arka plan için kullanıldığı ve arka planın bir veri setindeki tüm sınıflara dahil olmadığı veri setlerinde (ör. ADE20k) kullanılır. Arka plan etiketi 255 ile değiştirilecektir.

CHMv2ImageProcessor görüntü işleyicisi oluşturur.

#### 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'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/chmv2/image_processing_chmv2.py#L125)

**Parametreler:**

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`) : Ön işlenecek görüntü. Piksel değerleri 0 ile 255 arasında değişen tek bir görüntü veya görüntü grubu beklenir. Piksel değerleri 0 ile 1 arasında olan görüntüler geçiriliyorsa `do_rescale=False` olarak ayarlayın.

segmentation_maps (`ImageInput`, *isteğe bağlı*) : Ön işleme tabi tutulacak segmentasyon haritaları.

do_convert_rgb (`bool`, *kwargs*, *isteğe bağlı*) : Görselin RGB'ye dönüştürülüp dönüştürülmeyeceği.

do_resize (`bool`, *kwargs*, *isteğe bağlı*) : Görselin yeniden boyutlandırılıp boyutlandırılmayacağı.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : Modelin kabul ettiği maksimum giriş boyutlarını açıklar.

default_to_square (`bool`, *kwargs*, *opsiyonel*) : Boyut bir int ise, yeniden boyutlandırma sırasında varsayılan olarak kare bir görsel kullanılıp kullanılmayacağı.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : `center_crop` uygulandıktan sonra çıktı görüntüsünün boyutu.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`, *kwargs*) : Görsel yeniden boyutlandırılıyorsa kullanılacak yeniden örnekleme filtresi. Bu, `PILImageResampling` enum değerlerinden biri olabilir. Yalnızca `do_resize` `True` olarak ayarlanırsa etkilidir.

do_rescale (`bool`, *kwargs*, *opsiyonel*) : Görselin yeniden ölçeklendirilip ölçeklendirilmeyeceğini belirtir.

rescale_factor (`float`, *kwargs*, *opsiyonel*) : `do_rescale` `True` olarak ayarlanırsa görüntüyü yeniden ölçeklemek için yeniden ölçekleme çarpanı.

do_normalize (`bool`, *kwargs*, *isteğe bağlı*) : Görüntünün normalize edilip edilmeyeceğini belirtir.

image_mean (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *opsiyonel*) : Normalizasyon için kullanılacak görüntü ortalaması. Yalnızca `do_normalize` `True` olarak ayarlanırsa etkilidir.

image_std (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *opsiyonel*) : Normalizasyon için kullanılacak görüntü standart sapması. Yalnızca `do_normalize` `True` olarak ayarlanırsa etkilidir.

do_pad (`bool`, *kwargs*, *isteğe bağlı*) : Görselin dolgu (padding) uygulanıp uygulanmayacağını belirtir. Dolgu, ya batch içindeki en büyük boyuta ya da görsel başına sabit bir kare boyuta yapılır. Kesin dolgu stratejisi modele bağlıdır.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : Görsellerin doldurulacağı boyut, `{"height": int, "width" int}` biçiminde. Ön işleme için sağlanan herhangi bir görsel boyutundan büyük olmalıdır. `pad_size` sağlanmazsa, görseller partideki en büyük yüksekliğe ve genişliğe doldurulur. Yalnızca `do_pad=True.` olduğunda uygulanır.

do_center_crop (`bool`, *kwargs*, *opsiyonel*) : Görselin merkezden kırpılıp kırpılmayacağını belirtir.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *isteğe bağlı*) : Yalnızca `ChannelDimension.FIRST` desteklenir. Yavaş işleyicilerle uyumluluk için eklendi.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *isteğe bağlı*) : Girdi görüntüsünün kanal boyutu biçimi. Ayarlanmazsa, kanal boyutu biçimi girdi görüntüsünden çıkarılır. Aşağıdakilerden biri olabilir: - `"channels_first"` veya `ChannelDimension.FIRST`: (num_channels, height, width) biçiminde görüntü. - `"channels_last"` veya `ChannelDimension.LAST`: (height, width, num_channels) biçiminde görüntü. - `"none"` veya `ChannelDimension.NONE`: (height, width) biçiminde görüntü.

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : Videoların işleneceği cihaz. Ayarlanmamışsa, cihaz girdi videolarından çıkarılır.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : `'pt'` olarak ayarlanırsa yığılmış tensörleri, aksi halde tensör listesi döndürür.

disable_grouping (`bool`, *kwargs*, *opsiyonel*) : Görsellerin boyuta göre gruplandırılmasını devre dışı bırakarak bunların toplu olarak değil, tek tek işlenmesini sağlar. None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, buradaki ayrıntılı açıklamalara dayalı ampirik gözlemlere dayanmaktadır: https://github.com/huggingface/transformers/pull/38157

image_seq_length (`int`, *kwargs*, *isteğe bağlı*) : Girdideki her görüntü için kullanılacak görüntü jetonlarının sayısı. Geriye dönük uyumluluk için eklendi ancak bu, gelecekteki modellerde bir işlemci özniteliği olarak ayarlanmalıdır.

ensure_multiple_of (`int`, *kwargs*, *opsiyonel*, varsayılan 1) : `do_resize` `True` ise, görüntü bu değerin katı olan bir boyuta yeniden boyutlandırılır. `preprocess` içindeki `ensure_multiple_of` ile geçersiz kılınabilir.

size_divisor (`int`, *kwargs*) : Yükseklik ve genişliğin bölünebilir olmasını sağlamak için kullanılan boyut.

keep_aspect_ratio (`bool`, *kwargs*, *opsiyonel*, varsayılan `False`) : `True` ise, görüntü, en-boy oranının korunması koşuluyla en büyük olası boyuta yeniden boyutlandırılır. `preprocess` içindeki `keep_aspect_ratio` ile geçersiz kılınabilir.

do_reduce_labels (`bool`, *kwargs*, *opsiyonel*, varsayılan `self.do_reduce_labels`) : Segmentasyon haritalarındaki tüm etiket değerlerinin 1 azaltılacak mı. Genellikle 0'ın arka plan için kullanıldığı ve arka planın bir veri setindeki tüm sınıflara dahil olmadığı veri setlerinde (ör. ADE20k) kullanılır. Arka plan etiketi 255 ile değiştirilecektir.

**Dönüş:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- __call__ yönteminin döndürdüğü listeler/diziler/tensörler sözlüğü ('pixel_values' vb.).
- **tensor_type** (`Union[None, str, TensorType]`, *isteğe bağlı*) -- Başlatma sırasında PyTorch/Numpy Tensörlerindeki tamsayı listelerini dönüştürmek için burada bir tensor_type verebilirsiniz.

#### 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)
```

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/chmv2/image_processing_chmv2.py#L385)

**Parametreler:**

outputs (`DepthEstimatorOutput`) : Modelin ham çıktıları.

target_sizes (`TensorType` veya `List[Tuple[int, int]]`, *isteğe bağlı*) : Şekli `(batch_size, 2)` olan bir tensör veya batch'teki her bir görüntünün hedef boyutunu (yükseklik, genişlik) içeren tuple'ların (`Tuple[int, int]`) listesi. None olarak bırakılırsa, tahminler yeniden boyutlandırılmaz.

**Dönüş:** `List[Dict[str, TensorType]]`

İşlenmiş derinlik tahminlerini temsil eden tensör sözlüklerinden oluşan bir liste.

`DepthEstimatorOutput`'ün ham çıktısını nihai derinlik tahminlerine ve derinlik PIL görüntülerine dönüştürür. Yalnızca PyTorch desteklenir.

## CHMv2ForDepthEstimation[[transformers.CHMv2ForDepthEstimation]]

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

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

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/chmv2/modeling_chmv2.py#L384)

**Parametreler:**

config ([CHMv2Config](/docs/transformers/v5.23.0/tr/model_doc/chmv2#transformers.CHMv2Config)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/v5.23.0/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Üstünde derinlik tahmini kafası (konvolüsyonel katmanlardan oluşan) bulunan CHMv2 Modeli, örneğin tepe yüksekliği tahmini için.

Bu model [PreTrainedModel](/docs/transformers/v5.23.0/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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

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

[Kaynak](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/chmv2/modeling_chmv2.py#L397)

**Parametreler:**

pixel_values (`torch.Tensor`, şekli `(batch_size, num_channels, image_size, image_size)`) : Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri [CHMv2ImageProcessor](/docs/transformers/v5.23.0/tr/model_doc/chmv2#transformers.CHMv2ImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [CHMv2ImageProcessor.__call__()](/docs/transformers/v5.23.0/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)'a bakın (`processor_class`, görüntüleri işlemek için [CHMv2ImageProcessor](/docs/transformers/v5.23.0/tr/model_doc/chmv2#transformers.CHMv2ImageProcessor) kullanır).

labels (`torch.LongTensor`, şekli `(batch_size, height, width)`, *isteğe bağlı*) : Kayıp (loss) hesaplamak için kullanılan gerçek derinlik tahmin haritaları.

**Dönüş:** [DepthEstimatorOutput](/docs/transformers/v5.23.0/tr/main_classes/output#transformers.modeling_outputs.DepthEstimatorOutput) veya `tuple(torch.Tensor)`

[DepthEstimatorOutput](/docs/transformers/v5.23.0/tr/main_classes/output#transformers.modeling_outputs.DepthEstimatorOutput) veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırmaya ([CHMv2Config](/docs/transformers/v5.23.0/tr/model_doc/chmv2#transformers.CHMv2Config)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[CHMv2ForDepthEstimation](/docs/transformers/v5.23.0/tr/model_doc/chmv2#transformers.CHMv2ForDepthEstimation) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `labels` sağlandığında döndürülür) -- Sınıflandırma (config.num_labels==1 ise regresyon) kaybı.
- **predicted_depth** (`torch.Tensor`, şekli `(batch_size, height, width)`) -- Her piksel için tahmin edilen derinlik.
- **hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren ve `(batch_size, num_channels, height, width)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, patch_size, sequence_length)`.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

```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"]
```

