Transformers documentation
DepthPro
Bu model, 2024-10-02 tarihinde HF papers'ta yayımlandı ve 2025-02-10 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
DepthPro
Genel Bakış
DepthPro modeli, Aleksei Bochkovskii, Amaël Delaunoy, Hugo Germain, Marcel Santos, Yichao Zhou, Stephan R. Richter ve Vladlen Koltun tarafından Depth Pro: Sharp Monocular Metric Depth in Less Than a Second makalesinde önerilmiştir.
DepthPro, sıfır atış metrik monoküler derinlik tahmini için bir temel modeldir; olağanüstü keskinlik ve ince detaylarla yüksek çözünürlüklü derinlik haritaları üretmek üzere tasarlanmıştır. Çok ölçekli, Vision Transformer (ViT) tabanlı bir mimari kullanır; bu mimaride görüntüler indirgenir, yamalar (patch) halinde bölünür ve paylaşılan bir Dinov2 kodlayıcı ile işlenir. Çıkarılan yama düzeyindeki özellikler birleştirilir, büyütülür ve DPT benzeri bir füzyon aşamasında rafine edilerek hassas derinlik tahmini sağlanır.
Makalenin özeti aşağıdaki gibidir:
Sıfır atış metrik monoküler derinlik tahmini için bir temel model sunuyoruz. Modelimiz Depth Pro, eşsiz keskinlik ve yüksek frekanslı detaylarla yüksek çözünürlüklü derinlik haritaları sentezler. Tahminler, kamera içsel parametreleri gibi meta verilerin kullanılabilirliğine dayanmadan, mutlak ölçekle metrik niteliktedir. Ayrıca model hızlıdır ve standart bir GPU üzerinde 0,3 saniyede 2,25 megapiksellik bir derinlik haritası üretir. Bu özellikler, yoğun tahmin için verimli çok ölçekli bir görme dönüştürücüsü, yüksek metrik doğruluğu ince sınır izlemeyle birleştirmek üzere gerçek ve sentetik veri kümelerini kullanan bir eğitim protokolü, tahmin edilen derinlik haritalarındaki sınır doğruluğu için özel değerlendirme metrikleri ve tek bir görüntüden en son odak uzaklığı tahmini dahil olmak üzere çeşitli teknik katkılarla mümkün kılınmaktadır. Kapsamlı deneyler, belirli tasarım seçimlerini analiz eder ve Depth Pro'nun önceki çalışmalardan birden fazla boyutta daha iyi performans gösterdiğini kanıtlar.
DepthPro Outputs. Taken from the official code. Bu model geetu040 tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kullanım İpuçları
DepthPro modeli, girdi görüntüsünü önce birden fazla ölçekte küçültüp her ölçeklenmiş sürümünü yamalar (patch) halinde bölerek işler. Bu yamalar, paylaşılan bir Vision Transformer (ViT) tabanlı Dinov2 yama kodlayıcısı kullanılarak kodlanırken, tam görüntü ayrı bir görüntü kodlayıcısı tarafından işlenir. Çıkarılan yama özellikleri, özellik haritalarına birleştirilir, büyütülür ve nihai derinlik tahminini üretmek için DPT benzeri bir çözücü (decoder) kullanılarak birleştirilir. Etkinleştirilirse, ek bir Görüş Alanı (FOV) kodlayıcısı, derinlik doğruluğuna yardımcı olmak amacıyla kameranın görüş alanını tahmin etmek için görüntüyü işler.
import requests
import torch
from PIL import Image
from transformers import DepthProForDepthEstimation, DepthProImageProcessor
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
image_processor = DepthProImageProcessor.from_pretrained("apple/DepthPro-hf")
model = DepthProForDepthEstimation.from_pretrained("apple/DepthPro-hf", device_map="auto")
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
post_processed_output = image_processor.post_process_depth_estimation(
outputs, target_sizes=[(image.height, image.width)],
)
field_of_view = post_processed_output[0]["field_of_view"]
focal_length = post_processed_output[0]["focal_length"]
depth = post_processed_output[0]["predicted_depth"]
depth = (depth - depth.min()) / depth.max()
depth = depth * 255.
depth = depth.detach().cpu().numpy()
depth = Image.fromarray(depth.astype("uint8"))Mimari ve Yapılandırma
DepthPro architecture. Taken from the original paper. DepthProForDepthEstimation modeli, girdi görüntüsünü kodlamak için DepthProEncoder ve kodlayıcının çıktı özelliklerini birleştirmek için FeatureFusionStage kullanır.
DepthProEncoder ayrıca iki kodlayıcı kullanır:
patch_encoder- Girdi görüntüsü,
scaled_images_ratiosyapılandırmasında belirtildiği üzere birden fazla oranla ölçeklendirilir. - Her ölçeklendirilmiş görüntü,
scaled_images_overlap_ratiostarafından belirlenen örtüşen alanlara sahip,patch_sizeboyutunda daha küçük patch'lere bölünür. - Bu yamalar
patch_encodertarafından işlenir
- Girdi görüntüsü,
image_encoder- Girdi görüntüsü de
patch_sizeboyutuna yeniden ölçeklenir veimage_encodertarafından işlenir.
- Girdi görüntüsü de
Her iki kodlayıcı da sırasıyla patch_model_config ve image_model_config ile yapılandırılabilir; her ikisi de varsayılan olarak ayrı Dinov2Model örneğidir.
Her iki kodlayıcının (last_hidden_state) ve patch_encoder'den seçilen ara durumların (hidden_states) çıktıları, derinlik tahmini için DPT-tabanlı bir FeatureFusionStage ile birleştirilir.
Görüş Alanı (FOV) Tahmini
Ağ, bir odak uzaklığı tahmin başlığı ile tamamlanır. Küçük bir konvolüsyon başlığı, derinlik tahmin ağından dondurulmuş özellikleri ve ayrı bir ViT görüntü kodlayıcısından görev-özel özellikleri alarak yatay açısal görüş alanını tahmin eder.
DepthProConfig içindeki use_fov_model parametresi, FOV tahmininin etkin olup olmadığını kontrol eder. Varsayılan olarak, bellek ve hesaplama tasarrufu sağlamak için False olarak ayarlanır. Etkinleştirildiğinde, FOV kodlayıcısı, varsayılan olarak Dinov2Model olan fov_model_config parametresine göre örneklenir. use_fov_model parametresi, DepthProForDepthEstimation modeli başlatılırken de geçirilebilir.
Kontrol noktası apple/DepthPro-hf içindeki önceden eğitilmiş model, FOV kodlayıcıyı kullanır. FOV kodlayıcı olmadan önceden eğitilmiş modeli kullanmak için, modeli yüklerken use_fov_model=False parametresini ayarlayın; bu işlem hesaplama maliyetini azaltır.
from transformers import DepthProForDepthEstimation
model = DepthProForDepthEstimation.from_pretrained("apple/DepthPro-hf", use_fov_model=False, device_map="auto")FOV kodlayıcı ile yeni bir model oluşturmak için yapılandırmada use_fov_model=True değerini ayarlayın.
from transformers import DepthProConfig, DepthProForDepthEstimation
config = DepthProConfig(use_fov_model=True)
model = DepthProForDepthEstimation(config)Veya modeli başlatırken use_fov_model=True değerini ayarlayın; bu, config içindeki değeri geçersiz kılar.
from transformers import DepthProConfig, DepthProForDepthEstimation
config = DepthProConfig()
model = DepthProForDepthEstimation(config, use_fov_model=True)Ölçekli Nokta Çarpımı Dikkat (SDPA) Kullanımı
PyTorch, torch.nn.functional parçası olarak yerel ölçekli nokta çarpımı dikkati (SDPA) operatörünü içerir. Bu fonksiyon, girdilere ve kullanılan donanıma bağlı olarak uygulanabilecek çeşitli uygulamaları kapsar. Daha fazla bilgi için resmi dokümantasyonu veya GPU Inference sayfasına bakın.
torch>=2.1.1 için bir uygulama mevcut olduğunda varsayılan olarak SDPA kullanılır, ancak SDPA'nın kullanılmasını açıkça istemek için from_pretrained() içinde attn_implementation="sdpa" ayarlayabilirsiniz.
from transformers import DepthProForDepthEstimation
model = DepthProForDepthEstimation.from_pretrained("apple/DepthPro-hf", attn_implementation="sdpa", device_map="auto")En iyi hızlanmalar için, modelin yarım hassasiyette (ör. torch.float16 veya torch.bfloat16) yüklenmesini öneririz.
Yerel bir benchmark'ta (A100-40GB, PyTorch 2.3.0, OS Ubuntu 22.04) float32 ve google/vit-base-patch16-224 modeliyle, çıkarım sırasında aşağıdaki hızlanmaları gözlemledik.
| Toplu işlem boyutu | Ortalama çıkarım süresi (ms), aceleci mod | Ortalama çıkarım süresi (ms), sdpa modeli | Hızlandırma, Sdpa / Eager (x) |
|---|---|---|---|
| 1 | 7 | 6 | 1.17 |
| 2 | 8 | 6 | 1.33 |
| 4 | 8 | 6 | 1.33 |
| 8 | 8 | 6 | 1.33 |
Kaynaklar
DepthPro ile başlamanıza yardımcı olmak için resmi Hugging Face ve topluluk (🌎 ile belirtilen) kaynaklarının listesi:
- Araştırma Makalesi: Depth Pro: Sharp Monocular Metric Depth in Less Than a Second
- Resmî Uygulama: apple/ml-depth-pro
- DepthPro Çıkarım Defter Notu: DepthPro Çıkarımı
- Super Resolution ve Görüntü Segmentasyonu için DepthPro
- Medium'daki blogu okuyun: Depth Pro: Beyond Depth
- Github'daki kod: geetu040/depthpro-beyond-depth
Buraya bir kaynak eklemek isterseniz, bir Pull Request açmaktan çekinmeyin; inceleyeceğiz! Kaynağın, mevcut bir kaynağı tekrarlamak yerine ideal olarak yeni bir şeyi göstermesi beklenir.
DepthProConfig
sınıf transformers.DepthProConfig
< source >( 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 = Nonefusion_hidden_size: int = 256patch_size: int | list[int] | tuple[int, int] = 384initializer_range: float = 0.02intermediate_hook_ids: list[int] | tuple[int, ...] = (11, 5)intermediate_feature_dims: list[int] | tuple[int, ...] = (256, 256)scaled_images_ratios: list[int | float] | tuple[int | float, ...] = (0.25, 0.5, 1)scaled_images_overlap_ratios: list[float] | tuple[float, ...] = (0.0, 0.5, 0.25)scaled_images_feature_dims: list[int] | tuple[int, ...] = (1024, 1024, 512)merge_padding_value: int = 3use_batch_norm_in_fusion_residual: bool = Falseuse_bias_in_fusion_residual: bool = Trueuse_fov_model: bool = Falsenum_fov_head_layers: int = 2image_model_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonepatch_model_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonefov_model_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )
Parametreler
- fusion_hidden_size (
int, isteğe bağlı, varsayılan 256) — Füzyondan önceki kanal sayısı. - patch_size (
Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan384) — Her yamanın boyutu (çözünürlüğü). - initializer_range (
float, isteğe bağlı, varsayılan0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması. - intermediate_hook_ids (
list[int], isteğe bağlı, varsayılan[11, 5]) — Füzyon için kullanılacak yama kodlayıcısından ara gizli durumların indeksleri. - intermediate_feature_dims (
list[int], isteğe bağlı, varsayılan[256, 256]) —intermediate_hook_idsiçindeki her ara gizli durum için örnekleme artırma sırasında gizli durum boyutları. - scaled_images_ratios (
list[float], isteğe bağlı, varsayılan[0.25, 0.5, 1]) — Patch kodlayıcısının kullanacağı ölçeklendirilmiş görüntü oranları. - scaled_images_overlap_ratios (
list[float], isteğe bağlı, varsayılan[0.0, 0.5, 0.25]) —scaled_images_ratiosiçindeki her ölçeklendirilmiş görüntü için yamalar arasındaki örtüşme oranları. - scaled_images_feature_dims (
list[int], isteğe bağlı, varsayılan[1024, 1024, 512]) —scaled_images_ratiosiçindeki her ölçeklendirilmiş görüntü için yukarı örneklemeye (upsampling) ait gizli durum boyutları. - merge_padding_value (
int, isteğe bağlı, varsayılan 3) — Daha küçük yamaların (patch) görüntü boyutuna geri birleştirilmesi sırasında, bu boyuttaki üst üste binen bölümler kaldırılır. - use_batch_norm_in_fusion_residual (
bool, isteğe bağlı, varsayılanFalse) — Füzyon bloklarındaki pre-activate residual birimlerinde batch normalization kullanılıp kullanılmayacağı. - use_bias_in_fusion_residual (
bool, isteğe bağlı, varsayılanTrue) — Füzyon bloklarındaki ön-aktivasyonlu artımsal birimlerde sapma (bias) kullanılıp kullanılmayacağı. - use_fov_model (
bool, isteğe bağlı, varsayılanFalse) — Görüş alanını üretmek içinDepthProFovModel'in kullanılıp kullanılmayacağı. - num_fov_head_layers (
int, isteğe bağlı, varsayılan 2) —DepthProFovModelbaşlığındaki konvolüsyon katmanlarının sayısı. - image_model_config (
Union[dict[str, Any], PreTrainedConfig], isteğe bağlı) — AutoModel API'si kullanılarak yüklenen görüntü kodlayıcı modelinin yapılandırması. Varsayılan olarak, Dinov2 modeli omurga olarak kullanılır. - patch_model_config (
Union[dict[str, Any], PreTrainedConfig], isteğe bağlı) — AutoModel API'si kullanılarak yüklenen yama kodlayıcı modelinin yapılandırması. Varsayılan olarak, Dinov2 modeli omurga olarak kullanılır. - fov_model_config (
Union[dict[str, Any], PreTrainedConfig], isteğe bağlı) — AutoModel API'si kullanılarak yüklenen fov kodlayıcı modelinin yapılandırması. Varsayılan olarak, Dinov2 modeli omurga olarak kullanılır.
Bu, bir DepthProModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Depth Pro modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneklendiğinde, apple/DepthPro ile benzer bir yapılandırma elde edilir.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnek:
>>> from transformers import DepthProConfig, DepthProModel
>>> # Initializing a DepthPro apple/DepthPro style configuration
>>> configuration = DepthProConfig()
>>> # Initializing a model (with random weights) from the apple/DepthPro style configuration
>>> model = DepthProModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configDepthProImageProcessor
sınıf transformers.DepthProImageProcessor
< source >( **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )
Parametreler
- do_convert_rgb (
bool, kwargs, opsiyonel) — Görselin RGB'ye dönüştürülüp dönüştürülmemesi. - do_resize (
bool, kwargs, isteğe bağlı, varsayılanTrue) — 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' -- 1536, 'width': 1536}): Modelin kabul ettiği maksimum giriş boyutlarını açıklar. - default_to_square (
bool, kwargs, isteğe bağlı, varsayılanTrue) — size bir int ise, yeniden boyutlandırma sırasında varsayılan olarak kare bir görüntü kullanılıp kullanılmayacağı. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_cropuygulandıktan sonra çıktı görüntüsünün boyutu. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, varsayılan2) — Görsel yeniden boyutlandırılıyorsa kullanılacak yeniden örnekleme filtresi. Bu,PILImageResamplingenum değerlerinden biri olabilir. Yalnızcado_resizeTrueolarak ayarlanırsa etkilidir. - do_rescale (
bool, kwargs, isteğe bağlı, varsayılanTrue) — Görselin yeniden ölçeklendirilip ölçeklendirilmeyeceği. - rescale_factor (
float, kwargs, opsiyonel, varsayılan0.00392156862745098) —do_rescaleTrueolarak ayarlandığında görüntüyü yeniden ölçeklemek için kullanılan yeniden ölçekleme faktörü. - do_normalize (
bool, kwargs, opsiyonel, varsayılanTrue) — Görselin normalize edilip edilmeyeceği. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel, varsayılan[0.5, 0.5, 0.5]) — Normalizasyon için kullanılacak görüntü ortalaması. Yalnızcado_normalizeTrueolarak ayarlanırsa etkilidir. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel, varsayılan[0.5, 0.5, 0.5]) — Normalizasyon için kullanılacak görüntü standart sapması. Yalnızcado_normalizeTrueolarak ayarlanırsa etkilidir. - do_pad (
bool, kwargs, opsiyonel) — Görselin dolgu (padding) uygulanıp uygulanmayacağı. Dolgu, partideki en büyük boyuta veya görsel başına sabit kare bir 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_sizesağlanmazsa, görseller batch içindeki en büyük yüksekliğe ve genişliğe doldurulur. Yalnızcado_pad=True.olduğunda uygulanır. - do_center_crop (
bool, kwargs, opsiyonel) — Görselin ortadan kırpılıp kırpılmayacağı. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — YalnızcaChannelDimension.FIRSTdesteklenir. 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ü için 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"veyaChannelDimension.FIRST: (num_channels, height, width) biçiminde görüntü."channels_last"veyaChannelDimension.LAST: (yükseklik, genişlik, kanal sayısı) biçiminde görüntü."none"veyaChannelDimension.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örler döndürür, aksi takdirde tensör listesi döndürür. - disable_grouping (
bool, kwargs, opsiyonel) — Görsellerin boyuta göre gruplandırılmasını devre dışı bırakıp onları toplu olarak değil, bireysel olarak işlenmesini belirtir. None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, burada ayrıntılandırıldığı üzere 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ü jetonu sayısı. Geriye dönük uyumluluk için eklendi ancak gelecekteki modellerde bu, bir işlemci özniteliği olarak ayarlanmalıdır.'pt'olarak ayarlanırsa yığılmış tensörler döndürür, aksi takdirde tensör listesi döndürür. - disable_grouping (
bool, kwargs, opsiyonel) — Görsellerin boyuta göre gruplandırılmasını devre dışı bırakıp onları toplu olarak değil, bireysel olarak işlenmesini belirtir. None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, burada ayrıntılandırıldığı üzere 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 gelecekteki modellerde bu, bir işlemci özniteliği olarak ayarlanmalıdır. - Returns
'pt'olarak ayarlanırsa yığılmış tensörleri, aksi takdirde tensör listesini döndürür. —
Bir DepthPro görüntü işleyicisi oluşturur.
disable_grouping (bool, kwargs, opsiyonel):
Görsellerin boyuta göre gruplandırılmasını devre dışı bırakıp onları toplu olarak değil, bireysel olarak işlenmesini belirtir.
None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, burada ayrıntılı olarak belirtildiği gibi ampirik gözlemlere dayanmaktadır: https://github.com/huggingface/transformers/pull/38157 image_seq_length (int, kwargs, opsiyonel):
Girdideki her görsel için kullanılacak görsel jeton sayısı.
Geriye dönük uyumluluk için eklendi ancak gelecekteki modellerde bu, bir işlemci özniteliği olarak ayarlanmalıdır.
ön işleme
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]*argsimage_like_kwargs: dict[str, typing.Any] | None = None**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> ) → ~image_processing_base.BatchFeature
Parametreler
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Ön işleme uygulanacak 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çiriliyorsado_rescale=Falseolarak ayarlayın. - image_like_kwargs (
dict[str, Any], isteğe bağlı) — Ayrıca ön işleme yapılacak ek görüntü benzeri girdiler için geliştirici bayrağı. Girdileri kwarg olarak geçirmek işe yaramadığında yalnızca bu bayrağı kullanın. Örneğin,preprocess(images, masks=masks)tercih edilen seçenektir ancak bazı modellerde argüman öncelik sorunlarına yol açar. Bu durumlarda bunun yerinepreprocess(images, image_like_inputs={"masks": masks})kullanılabilir. - do_convert_rgb (
bool, kwargs, opsiyonel) — Görselin RGB'ye dönüştürülüp dönüştürülmemesi. - do_resize (
bool, kwargs, opsiyonel) — 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örüntüye geçilip geçilmeyeceği. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_cropuygulandı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,PILImageResamplingenum değerlerinden biri olabilir. Yalnızcado_resizeTrueolarak ayarlanırsa etkilidir. - do_rescale (
bool, kwargs, opsiyonel) — Görselin yeniden ölçeklendirilip ölçeklendirilmeyeceği. - rescale_factor (
float, kwargs, opsiyonel) —do_rescaleTrueolarak ayarlanırsa görüntüyü yeniden ölçeklemek için kullanılan yeniden ölçekleme faktörü. - do_normalize (
bool, kwargs, opsiyonel) — Görselin normalize edilip edilmeyeceği. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel) — Normalizasyon için kullanılacak görüntü ortalaması. Yalnızcado_normalizeTrueolarak ayarlanırsa etkilidir. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsiyonel) — Normalizasyon için kullanılacak görüntü standart sapması. Yalnızcado_normalizeTrueolarak ayarlanmışsa etkilidir. - do_pad (
bool, kwargs, opsiyonel) — Görselin dolgu (padding) uygulanıp uygulanmayacağı. Dolgu, partideki en büyük boyuta veya görsel başına sabit kare bir 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_sizesağlanmazsa, görseller batch içindeki en büyük yüksekliğe ve genişliğe doldurulur. Yalnızcado_pad=True.olduğunda uygulanır. - do_center_crop (
bool, kwargs, opsiyonel) — Görselin ortadan kırpılıp kırpılmayacağı. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, isteğe bağlı) — YalnızcaChannelDimension.FIRSTdesteklenir. 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ü için 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"veyaChannelDimension.FIRST: (num_channels, height, width) biçiminde görüntü."channels_last"veyaChannelDimension.LAST: (yükseklik, genişlik, kanal sayısı) biçiminde görüntü."none"veyaChannelDimension.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örler döndürür, aksi takdirde tensör listesi döndürür. - disable_grouping (
bool, kwargs, opsiyonel) — Görsellerin boyuta göre gruplandırılmasını devre dışı bırakıp onları toplu olarak değil, bireysel olarak işlenmesini belirtir. None ise, görseller CPU üzerindeyse True, aksi halde False olarak ayarlanır. Bu seçim, burada ayrıntılandırıldığı üzere 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 gelecekteki modellerde bu, bir işlemci özniteliği olarak ayarlanmalıdır.
Dönüş değeri
~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.
Bir görüntüyü veya bir görüntü grubunu ön işleme tabi tutun.
post_process_depth_estimation
< source >( outputs: DepthProDepthEstimatorOutputtarget_sizes: transformers.utils.generic.TensorType | list[tuple[int, int]] | None = None )
Modelden gelen ham derinlik tahminlerini son işlemeye tabi tutar.
DepthProModel
sınıf transformers.DepthProModel
< source >( config: DepthProConfig )
Parametreler
- config (DepthProConfig) — 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() yöntemine bakın.
Üzerinde herhangi bir özel head olmadan ham hidden-states üreten çıplak Depth Pro Model.
Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch 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
< source >( pixel_values: Tensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DepthProOutput or tuple(torch.Tensor)
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 DepthProImageProcessor kullanılarak elde edilebilir. Ayrıntılar için DepthProImageProcessor.call() bölümüne bakın (processor_class, görüntü işleme için DepthProImageProcessor kullanır). - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
DepthProOutput veya tuple(torch.Tensor)
DepthProOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (DepthProConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
DepthProModel 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ü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
last_hidden_state (
torch.Tensor, şekli(batch_size, n_patches_per_batch, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.features (
Union[torch.Tensor, List[torch.Tensor]], isteğe bağlı) — Kodlayıcılardan gelen özellikler. Tek bir özellik veya özellik listesi olabilir.hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Örnekler:
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, DepthProModel
>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> checkpoint = "apple/DepthPro-hf"
>>> processor = AutoProcessor.from_pretrained(checkpoint)
>>> model = DepthProModel.from_pretrained(checkpoint)
>>> # prepare image for the model
>>> inputs = processor(images=image, return_tensors="pt")
>>> with torch.no_grad():
... output = model(**inputs)
>>> output.last_hidden_state.shape
torch.Size([1, 35, 577, 1024])DepthProForDepthEstimation
sınıf transformers.DepthProForDepthEstimation
< source >( config: DepthProConfiguse_fov_model = None )
Parametreler
- config (DepthProConfig) — 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() yöntemine bakın.
- use_fov_model (
bool, isteğe bağlı) — Görüş alanı modelinin kullanılıp kullanılmayacağı.
Üstünde derinlik tahmini kafası (3 konvolüsyonel katmandan oluşan) bulunan DepthPro Modeli.
Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch 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
< source >( pixel_values: Tensorlabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DepthProDepthEstimatorOutput or tuple(torch.Tensor)
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 DepthProImageProcessor kullanılarak elde edilebilir. Ayrıntılar için DepthProImageProcessor.call() bölümüne bakın (processor_class, görüntü işleme için DepthProImageProcessor kullanır). - labels (
torch.LongTensor, şekli(batch_size, height, width), isteğe bağlı) — Kayıp (loss) hesaplamak için kullanılan doğru derinlik tahmin haritaları. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
DepthProDepthEstimatorOutput veya tuple(torch.Tensor)
DepthProDepthEstimatorOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (DepthProConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
DepthProForDepthEstimation 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ü önceki, ö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ı,labelssağ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), isteğe bağlı) — Her piksel için tahmin edilen derinlik.field_of_view (
torch.Tensor, şekli(batch_size,), isteğe bağlı,use_fov_modelsağlandığında döndürülür) — Görüş Alanı Ölçekleyicisi.hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —(batch_size, num_heads, sequence_length, sequence_length)biçiminde, her katman için bir adet içerentorch.Tensordemeti.Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
Örnekler:
>>> from transformers import AutoImageProcessor, DepthProForDepthEstimation
>>> 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()))
>>> checkpoint = "apple/DepthPro-hf"
>>> processor = AutoImageProcessor.from_pretrained(checkpoint)
>>> model = DepthProForDepthEstimation.from_pretrained(checkpoint)
>>> 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, target_sizes=[(image.height, image.width)],
... )
>>> # get the field of view (fov) predictions
>>> field_of_view = post_processed_output[0]["field_of_view"]
>>> focal_length = post_processed_output[0]["focal_length"]
>>> # visualize the prediction
>>> predicted_depth = post_processed_output[0]["predicted_depth"]
>>> depth = predicted_depth * 255 / predicted_depth.max()
>>> depth = depth.detach().cpu().numpy()
>>> depth = Image.fromarray(depth.astype("uint8"))