Transformers documentation

DepthPro

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

Model ini dipublikasikan di HF papers pada 2024-10-02 dan disumbangkan ke Hugging Face Transformers pada 2025-02-10.

DepthPro

Ikhtisar

Model DepthPro diusulkan dalam Depth Pro: Sharp Monocular Metric Depth in Less Than a Second oleh Aleksei Bochkovskii, Amaël Delaunoy, Hugo Germain, Marcel Santos, Yichao Zhou, Stephan R. Richter, Vladlen Koltun.

DepthPro adalah model dasar untuk estimasi kedalaman monokular metrik zero-shot, yang dirancang untuk menghasilkan peta kedalaman resolusi tinggi dengan ketajaman yang luar biasa dan detail yang halus. Model ini menggunakan arsitektur berbasis Vision Transformer (ViT) multi-skala, di mana gambar diturunkan sampelnya (downsampled), dibagi menjadi patch, dan diproses menggunakan encoder Dinov2 yang dibagikan. Fitur tingkat patch yang diekstrak kemudian digabungkan, dinaikkan sampelnya (upsampled), dan disempurnakan menggunakan tahap fusi mirip DPT, sehingga memungkinkan estimasi kedalaman yang presisi.

Abstrak dari makalah tersebut adalah sebagai berikut:

Kami memperkenalkan model dasar untuk estimasi kedalaman monokular metrik zero-shot. Model kami, Depth Pro, mensintesis peta kedalaman resolusi tinggi dengan ketajaman yang tak tertandingi dan detail frekuensi tinggi. Prediksi bersifat metrik, dengan skala absolut, tanpa bergantung pada ketersediaan metadata seperti intrinsik kamera. Dan model ini cepat, menghasilkan peta kedalaman 2,25 megapiksel dalam 0,3 detik pada GPU standar. Karakteristik ini dimungkinkan oleh sejumlah kontribusi teknis, termasuk vision transformer multi-skala yang efisien untuk prediksi padat, protokol pelatihan yang menggabungkan dataset nyata dan sintetis untuk mencapai akurasi metrik tinggi sekaligus pelacakan batas yang halus, metrik evaluasi khusus untuk akurasi batas pada peta kedalaman yang diestimasi, dan estimasi panjang fokus state-of-the-art dari satu gambar. Eksperimen ekstensif menganalisis pilihan desain tertentu dan menunjukkan bahwa Depth Pro melampaui pekerjaan sebelumnya di berbagai dimensi.

drawing DepthPro Outputs. Taken from the official code.

Model ini disumbangkan oleh geetu040. Kode aslinya dapat ditemukan di sini.

Tips Penggunaan

Model DepthPro memproses gambar input dengan terlebih dahulu melakukan downsampling pada beberapa skala dan membagi setiap versi yang telah diskalakan menjadi patch. Patch-patch ini kemudian dikodekan menggunakan patch encoder Dinov2 berbasis Vision Transformer (ViT) yang dibagikan, sementara gambar utuh diproses oleh image encoder yang terpisah. Fitur patch yang diekstrak digabungkan menjadi feature maps, di-upsample, dan difusi menggunakan decoder mirip DPT untuk menghasilkan estimasi kedalaman akhir. Jika diaktifkan, encoder Field of View (FOV) tambahan akan memproses gambar untuk memperkirakan field of view kamera, yang membantu meningkatkan akurasi kedalaman.

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"))

Arsitektur dan Konfigurasi

drawing DepthPro architecture. Taken from the original paper.

Model DepthProForDepthEstimation menggunakan DepthProEncoder untuk mengodekan gambar input dan FeatureFusionStage untuk menggabungkan fitur output dari encoder.

DepthProEncoder juga menggunakan dua encoder:

  • patch_encoder
    • Gambar input diskala dengan beberapa rasio, seperti yang ditentukan dalam konfigurasi scaled_images_ratios.
    • Setiap gambar yang diskala dipecah menjadi patch yang lebih kecil berukuran patch_size dengan area tumpang tindih yang ditentukan oleh scaled_images_overlap_ratios.
    • Patch-patch ini diproses oleh patch_encoder
  • image_encoder
    • Gambar input juga diskala ulang ke patch_size dan diproses oleh image_encoder

Kedua encoder ini dapat dikonfigurasi melalui patch_model_config dan image_model_config masing-masing, di mana keduanya secara default merupakan Dinov2Model yang terpisah.

Output dari kedua encoder (last_hidden_state) dan keadaan antara yang dipilih (hidden_states) dari patch_encoder digabungkan oleh FeatureFusionStage berbasis DPT untuk estimasi kedalaman.

Prediksi Bidang Pandang (FOV)

Jaringan ini dilengkapi dengan kepala estimasi panjang fokus. Kepala konvolusional kecil menerima fitur beku dari jaringan estimasi kedalaman dan fitur spesifik tugas dari encoder gambar ViT yang terpisah untuk memprediksi bidang pandang sudut horizontal.

Parameter use_fov_model dalam DepthProConfig mengontrol apakah prediksi FOV diaktifkan. Secara default, nilainya disetel ke False untuk menghemat memori dan komputasi. Saat diaktifkan, FOV encoder diinstansiasi berdasarkan parameter fov_model_config, yang secara default berupa Dinov2Model. Parameter use_fov_model juga dapat diteruskan saat menginisialisasi model DepthProForDepthEstimation.

Model pretrained pada checkpoint apple/DepthPro-hf menggunakan FOV encoder. Untuk menggunakan model pretrained tanpa FOV encoder, atur use_fov_model=False saat memuat model, yang menghemat komputasi.

from transformers import DepthProForDepthEstimation


model = DepthProForDepthEstimation.from_pretrained("apple/DepthPro-hf", use_fov_model=False, device_map="auto")

Untuk membuat model baru dengan encoder FOV, atur use_fov_model=True di config.

from transformers import DepthProConfig, DepthProForDepthEstimation


config = DepthProConfig(use_fov_model=True)
model = DepthProForDepthEstimation(config)

Atau setel use_fov_model=True saat menginisialisasi model, yang akan menimpa nilai dalam config.

from transformers import DepthProConfig, DepthProForDepthEstimation


config = DepthProConfig()
model = DepthProForDepthEstimation(config, use_fov_model=True)

Menggunakan Scaled Dot Product Attention (SDPA)

PyTorch menyertakan operator scaled dot-product attention (SDPA) native sebagai bagian dari torch.nn.functional. Fungsi ini mencakup beberapa implementasi yang dapat diterapkan tergantung pada input dan perangkat keras yang digunakan. Lihat dokumentasi resmi atau halaman GPU Inference untuk informasi lebih lanjut.

SDPA digunakan secara default untuk torch>=2.1.1 ketika implementasi tersedia, tetapi Anda juga dapat mengatur attn_implementation="sdpa" di from_pretrained() untuk secara eksplisit meminta penggunaan SDPA.

from transformers import DepthProForDepthEstimation


model = DepthProForDepthEstimation.from_pretrained("apple/DepthPro-hf", attn_implementation="sdpa", device_map="auto")

Untuk percepatan terbaik, kami merekomendasikan memuat model dalam presisi setengah (misalnya torch.float16 atau torch.bfloat16).

Pada benchmark lokal (A100-40GB, PyTorch 2.3.0, OS Ubuntu 22.04) dengan float32 dan model google/vit-base-patch16-224, kami melihat peningkatan kecepatan berikut selama inferensi.

Ukuran batchRata-rata waktu inferensi (ms), mode eagerRata-rata waktu inferensi (ms), model sdpaPercepatan, Sdpa / Eager (x)
1761.17
2861.33
4861.33
8861.33

Sumber daya

Daftar sumber resmi Hugging Face dan komunitas (ditandai dengan 🌎) untuk membantu Anda memulai dengan DepthPro:

Jika Anda tertarik untuk mengirimkan sumber daya agar disertakan di sini, silakan buka Pull Request dan kami akan meninjaunya! Sumber daya tersebut sebaiknya mendemonstrasikan sesuatu yang baru, bukan menduplikasi sumber daya yang sudah ada.

DepthProConfig

kelas transformers.DepthProConfig

< >

( 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 )

Parameter

  • fusion_hidden_size (int, opsional, defaultnya 256) — Jumlah channel sebelum fusi.
  • patch_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 384) — Ukuran (resolusi) dari setiap patch.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • intermediate_hook_ids (list[int], opsional, default [11, 5]) — Indeks dari hidden state perantara dari patch encoder yang akan digunakan untuk fusi.
  • intermediate_feature_dims (list[int], opsional, default [256, 256]) — Dimensi hidden state selama upsampling untuk setiap intermediate hidden state di intermediate_hook_ids.
  • scaled_images_ratios (list[float], opsional, defaultnya [0.25, 0.5, 1]) — Rasio gambar yang diskalakan untuk digunakan oleh patch encoder.
  • scaled_images_overlap_ratios (list[float], opsional, default [0.0, 0.5, 0.25]) — Rasio overlap antar patch untuk setiap gambar berskala dalam scaled_images_ratios.
  • scaled_images_feature_dims (list[int], opsional, default [1024, 1024, 512]) — Dimensi hidden state selama upsampling untuk setiap scaled image dalam scaled_images_ratios.
  • merge_padding_value (int, opsional, defaultnya 3) — Saat menggabungkan patch yang lebih kecil kembali ke ukuran gambar, bagian tumpang tindih dengan ukuran ini akan dihapus.
  • use_batch_norm_in_fusion_residual (bool, opsional, default False) — Apakah akan menggunakan batch normalization pada unit residual pre-activate dari blok fusion.
  • use_bias_in_fusion_residual (bool, opsional, defaultnya True) — Apakah akan menggunakan bias pada unit residual pre-activate dari blok fusion.
  • use_fov_model (bool, opsional, defaultnya False) — Apakah akan menggunakan DepthProFovModel untuk menghasilkan field of view.
  • num_fov_head_layers (int, opsional, default 2) — Jumlah lapisan konvolusi di bagian kepala DepthProFovModel.
  • image_model_config (Union[dict[str, Any], PreTrainedConfig], opsional) — Konfigurasi model encoder gambar, yang dimuat menggunakan API AutoModel. Secara default, model Dinov2 digunakan sebagai backbone.
  • patch_model_config (Union[dict[str, Any], PreTrainedConfig], opsional) — Konfigurasi model patch encoder, yang dimuat menggunakan API AutoModel. Secara default, model Dinov2 digunakan sebagai backbone.
  • fov_model_config (Union[dict[str, Any], PreTrainedConfig], opsional) — Konfigurasi model encoder fov, yang dimuat menggunakan API AutoModel. Secara default, model Dinov2 digunakan sebagai backbone.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi DepthProModel. Kelas ini digunakan untuk membuat instans model Depth Pro sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi apple/DepthPro

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

Contoh:

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

DepthProImageProcessor

kelas transformers.DepthProImageProcessor

< >

( **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )

Parameter

  • do_convert_rgb (bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB.
  • do_resize (bool, kwargs, opsional, default True) — Apakah akan mengubah ukuran gambar.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, defaultnya {'height' -- 1536, 'width': 1536}): Menggambarkan dimensi input maksimum ke model.
  • default_to_square (bool, kwargs, opsional, defaultnya True) — Apakah akan menggunakan gambar persegi sebagai default saat melakukan resize, jika size berupa int.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran gambar keluaran setelah menerapkan center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, defaultnya 2) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini bisa berupa salah satu enum PILImageResampling. Hanya berpengaruh jika do_resize diatur ke True.
  • do_rescale (bool, kwargs, opsional, default True) — Apakah akan melakukan penskalaan ulang pada gambar.
  • rescale_factor (float, kwargs, opsional, default 0.00392156862745098) — Faktor rescale untuk menskalakan ulang gambar jika do_rescale diatur ke True.
  • do_normalize (bool, kwargs, opsional, default True) — Apakah akan menormalisasi gambar.
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya [0.5, 0.5, 0.5]) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jika do_normalize diatur ke True.
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya [0.5, 0.5, 0.5]) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jika do_normalize diatur ke True.
  • do_pad (bool, kwargs, opsional) — Apakah akan melakukan padding pada gambar. Padding dilakukan ke ukuran terbesar dalam batch atau ke ukuran persegi tetap per gambar. Strategi padding yang tepat bergantung pada model.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran dalam {"height": int, "width" int} untuk melakukan padding pada gambar. Harus lebih besar dari ukuran gambar mana pun yang disediakan untuk pra-pemrosesan. Jika pad_size tidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketika do_pad=True.
  • do_center_crop (bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar.
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Hanya ChannelDimension.FIRST yang didukung. Ditambahkan untuk kompatibilitas dengan prosesor lambat.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Format dimensi channel untuk gambar input. Jika tidak diset, format dimensi channel akan disimpulkan dari gambar input. Bisa berupa salah satu dari:
    • "channels_first" atau ChannelDimension.FIRST: gambar dalam format (num_channels, height, width).
    • "channels_last" atau ChannelDimension.LAST: gambar dalam format (height, width, num_channels).
    • "none" atau ChannelDimension.NONE: gambar dalam format (height, width).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — Perangkat untuk memproses video. Jika tidak disetel, perangkat akan disimpulkan dari video input.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Mengembalikan tensor bertumpuk jika diset ke 'pt', selain itu mengembalikan daftar tensor.
  • disable_grouping (bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang. Mengembalikan tensor bertumpuk jika diatur ke 'pt', selain itu mengembalikan daftar tensor.
  • disable_grouping (bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang.
  • Returns tensor bertumpuk jika disetel ke 'pt', selain itu mengembalikan daftar tensor. —

Membangun pemroses gambar DepthPro.

disable_grouping (bool, kwargs, opsional): Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada observasi empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157 image_seq_length (int, kwargs, opsional): Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang.

praproses

< >

( 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

Parameter

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Gambar yang akan dipreprocess. Mengharapkan satu gambar atau batch gambar dengan nilai piksel berkisar dari 0 hingga 255. Jika mengirimkan gambar dengan nilai piksel antara 0 dan 1, atur do_rescale=False.
  • image_like_kwargs (dict[str, Any], opsional) — Flag pengembang untuk input tambahan yang mirip gambar yang juga akan dipreprocess. Gunakan ini hanya jika melewati input sebagai kwarg tidak berhasil. Misalnya, preprocess(images, masks=masks) adalah opsi yang lebih disukai, tetapi menyebabkan masalah prioritas argumen untuk beberapa model. Dalam kasus tersebut, preprocess(images, image_like_inputs={"masks": masks}) dapat digunakan sebagai gantinya.
  • do_convert_rgb (bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB.
  • do_resize (bool, kwargs, opsional) — Apakah akan mengubah ukuran gambar.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Menggambarkan dimensi input maksimum untuk model.
  • default_to_square (bool, kwargs, opsional) — Apakah akan menggunakan gambar persegi sebagai default saat mengubah ukuran, jika size berupa int.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran gambar keluaran setelah menerapkan center_crop.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini dapat berupa salah satu enum PILImageResampling. Hanya berpengaruh jika do_resize diatur ke True.
  • do_rescale (bool, kwargs, opsional) — Apakah akan melakukan penskalaan ulang pada gambar.
  • rescale_factor (float, kwargs, opsional) — Faktor rescale untuk menskalakan ulang gambar jika do_rescale diatur ke True.
  • do_normalize (bool, kwargs, opsional) — Apakah akan menormalisasi gambar.
  • image_mean (Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jika do_normalize diatur ke True.
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jika do_normalize diatur ke True.
  • do_pad (bool, kwargs, opsional) — Apakah akan melakukan padding pada gambar. Padding dilakukan ke ukuran terbesar dalam batch atau ke ukuran persegi tetap per gambar. Strategi padding yang tepat bergantung pada model.
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran dalam {"height": int, "width" int} untuk melakukan padding pada gambar. Harus lebih besar dari ukuran gambar mana pun yang disediakan untuk pra-pemrosesan. Jika pad_size tidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketika do_pad=True.
  • do_center_crop (bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar.
  • data_format (Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Hanya ChannelDimension.FIRST yang didukung. Ditambahkan untuk kompatibilitas dengan prosesor lambat.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Format dimensi channel untuk gambar input. Jika tidak diset, format dimensi channel akan disimpulkan dari gambar input. Bisa berupa salah satu dari:
    • "channels_first" atau ChannelDimension.FIRST: gambar dalam format (num_channels, height, width).
    • "channels_last" atau ChannelDimension.LAST: gambar dalam format (height, width, num_channels).
    • "none" atau ChannelDimension.NONE: gambar dalam format (height, width).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — Perangkat untuk memproses video. Jika tidak disetel, perangkat akan disimpulkan dari video input.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Mengembalikan tensor bertumpuk jika diset ke 'pt', selain itu mengembalikan daftar tensor.
  • disable_grouping (bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157
  • image_seq_length (int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang.

Mengembalikan

~image_processing_base.BatchFeature

  • data (dict) — Kamus berisi daftar/array/tensor yang dikembalikan oleh metode call (‘pixel_values’, dll.).
  • tensor_type (Union[None, str, TensorType], opsional) — Anda dapat memberikan tensor_type di sini untuk mengonversi daftar bilangan bulat menjadi Tensor PyTorch/Numpy saat inisialisasi.

Praproses sebuah gambar atau kumpulan gambar.

post_process_depth_estimation

< >

( outputs: DepthProDepthEstimatorOutputtarget_sizes: transformers.utils.generic.TensorType | list[tuple[int, int]] | None = None )

Memproses ulang prediksi kedalaman mentah dari model.

DepthProModel

kelas transformers.DepthProModel

< >

( config: DepthProConfig )

Parameter

  • config (DepthProConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Model Depth Pro polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( pixel_values: FloatTensoroutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DepthProOutput or tuple(torch.FloatTensor)

Parameter

  • pixel_values (torch.FloatTensor dengan bentuk (batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan DepthProImageProcessor. Lihat DepthProImageProcessor.call() untuk detailnya (processor_class menggunakan DepthProImageProcessor untuk memproses gambar).
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

DepthProOutput atau tuple(torch.FloatTensor)

DepthProOutput atau tuple dari torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (DepthProConfig) dan input.

Metode forward dari DepthProModel menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, n_patches_per_batch, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.

  • features (Union[torch.FloatTensor, List[torch.FloatTensor]], opsional) — Fitur dari encoder. Bisa berupa satu fitur atau daftar fitur.

  • hidden_states (tuple[torch.FloatTensor, ...], opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.FloatTensor, ...], opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

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

kelas transformers.DepthProForDepthEstimation

< >

( config: DepthProConfiguse_fov_model = None )

Parameter

  • config (DepthProConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
  • use_fov_model (bool, opsional) — Apakah akan menggunakan model field of view.

Model DepthPro dengan kepala estimasi kedalaman di bagian atas (terdiri dari 3 lapisan konvolusional).

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( pixel_values: FloatTensorlabels: typing.Optional[torch.LongTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DepthProDepthEstimatorOutput or tuple(torch.FloatTensor)

Parameter

  • pixel_values (torch.FloatTensor dengan bentuk (batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan DepthProImageProcessor. Lihat DepthProImageProcessor.call() untuk detailnya (processor_class menggunakan DepthProImageProcessor untuk memproses gambar).
  • labels (torch.LongTensor dengan bentuk (batch_size, height, width), opsional) — Peta estimasi kedalaman ground truth untuk menghitung loss.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

DepthProDepthEstimatorOutput atau tuple(torch.FloatTensor)

DepthProDepthEstimatorOutput atau tuple dari torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (DepthProConfig) dan input.

Metode forward dari DepthProForDepthEstimation menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.FloatTensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss klasifikasi (atau regresi jika config.num_labels==1).

  • predicted_depth (torch.FloatTensor dengan bentuk (batch_size, height, width), opsional) — Kedalaman yang diprediksi untuk setiap piksel.

  • field_of_view (torch.FloatTensor of shape (batch_size,), optional, returned when use_fov_model is provided) — Field of View Scaler.

  • hidden_states (tuple[torch.FloatTensor, ...], opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.FloatTensor, ...], opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

>>> 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"))
Update on GitHub