Transformers documentation
EoMT
Model ini dipublikasikan di HF papers pada 2025-03-24 dan disumbangkan ke Hugging Face Transformers pada 2025-06-27.
EoMT
Ikhtisar
Model The Encoder-only Mask Transformer (EoMT) diperkenalkan dalam CVPR 2025 Highlight Paper Your ViT is Secretly an Image Segmentation Model oleh Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman, dan Daan de Geus. EoMT mengungkapkan bahwa Vision Transformers dapat melakukan segmentasi gambar secara efisien tanpa komponen khusus tugas.
Abstrak dari makalah tersebut adalah sebagai berikut:
Vision Transformers (ViTs) telah menunjukkan kinerja dan skalabilitas yang luar biasa di berbagai tugas computer vision. Untuk menerapkan ViTs berskala tunggal pada segmentasi gambar, metode yang ada mengadopsi adapter konvolusional untuk menghasilkan fitur multi-skala, pixel decoder untuk menggabungkan fitur-fitur tersebut, dan Transformer decoder yang menggunakan fitur gabungan untuk membuat prediksi. Dalam makalah ini, kami menunjukkan bahwa bias induktif yang diperkenalkan oleh komponen khusus tugas ini justru dapat dipelajari oleh ViT itu sendiri, asalkan modelnya cukup besar dan pre-training-nya cukup luas. Berdasarkan temuan ini, kami memperkenalkan Encoder-only Mask Transformer (EoMT), yang memanfaatkan ulang arsitektur ViT polos untuk melakukan segmentasi gambar. Dengan model berskala besar dan pre-training, EoMT memperoleh akurasi segmentasi yang serupa dengan model state-of-the-art yang menggunakan komponen khusus tugas. Pada saat yang sama, EoMT jauh lebih cepat daripada metode-metode tersebut berkat kesederhanaan arsitekturnya, misalnya hingga 4x lebih cepat dengan ViT-L. Di berbagai ukuran model, EoMT menunjukkan keseimbangan optimal antara akurasi segmentasi dan kecepatan prediksi, yang menunjukkan bahwa sumber daya komputasi lebih baik digunakan untuk menskalakan ViT itu sendiri daripada menambah kompleksitas arsitektur.
Model ini disumbangkan oleh Yaswanth Gali. Kode aslinya dapat ditemukan di sini.
Info Arsitektur
Model EoMT menggunakan Vision Transformer yang telah dilatih sebelumnya dengan DINOv2 dan dilengkapi register tokens sebagai backbonenya. EoMT menyederhanakan pipeline segmentasi dengan hanya mengandalkan encoder, sehingga menghilangkan kebutuhan akan decoder khusus tugas yang umum digunakan dalam pendekatan sebelumnya.
Secara arsitektural, EoMT memperkenalkan seperangkat kecil learned queries dan modul prediksi mask yang ringan (mask prediction module). Query-query ini disuntikkan ke dalam blok encoder terakhir, memungkinkan joint attention antara patch gambar dan query objek. Selama pelatihan, masked attention diterapkan untuk membatasi setiap query agar berfokus pada region yang bersesuaian—efektif meniru cross-attention. Batasan ini secara bertahap dihilangkan melalui mask annealing strategy, sehingga memungkinkan efficient, decoder-free inference tanpa mengorbankan kinerja segmentasi.

Model ini mendukung segmentasi semantik, instance, dan panoptik menggunakan arsitektur terpadu dan pascapemrosesan yang spesifik untuk tugas.
Contoh Penggunaan
Gunakan implementasi EoMT dari Hugging Face untuk inferensi dengan model terlatih.
Segmentasi Semantik
Model EoMT melakukan segmentasi semantik menggunakan inferensi jendela geser. Gambar input di-resize sehingga sisi yang lebih pendek sesuai dengan ukuran input target, kemudian dipecah menjadi potongan-potongan yang tumpang tindih. Setiap potongan kemudian diproses melalui model. Setelah inferensi, logit prediksi dari setiap potongan disatukan kembali dan di-rescale ke ukuran gambar asli untuk mendapatkan mask segmentasi akhir.
Catatan:
Jika Anda ingin menggunakan ukuran target kustom untuk semantic segmentation, tentukan dalam format berikut:
{"shortest_edge": 512}
Perhatikan bahwalongest_edgetidak disediakan di sini — ini disengaja. Untuk semantic segmentation, gambar biasanya diskala sehingga sisi terpendek lebih besar atau sama dengan ukuran target sehingga longest_edge tidak diperlukan.
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, EomtForUniversalSegmentation
model_id = "tue-mps/ade20k_semantic_eomt_large_512"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.from_pretrained(model_id, device_map="auto")
image = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)
inputs = processor(
images=image,
return_tensors="pt",
)
with torch.inference_mode():
outputs = model(**inputs)
# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]
# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_semantic_segmentation(
outputs,
target_sizes=target_sizes,
)
# Visualize the segmentation mask
plt.imshow(preds[0])
plt.axis("off")
plt.title("Semantic Segmentation")
plt.show()Segmentasi Instans
Model EoMT melakukan segmentasi instance menggunakan inferensi dengan padding. Gambar input di-resize sehingga sisi yang lebih panjang sesuai dengan ukuran input target, dan sisi yang lebih pendek di-pad dengan nol untuk membentuk persegi. Mask dan logits kelas yang dihasilkan digabungkan melalui pascaproses (diadaptasi dari Mask2Former) untuk menghasilkan peta segmentasi instance yang terpadu, bersama dengan metadata segmen seperti id segmen, label kelas, dan skor kepercayaan.
Catatan:
Untuk menggunakan ukuran target kustom, tentukan ukuran sebagai kamus dalam format berikut:
{"shortest_edge": 512, "longest_edge": 512}
Untuk segmentasi instance dan panoptic, gambar input akan diskala dan diberi padding ke ukuran target ini.
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, EomtForUniversalSegmentation
model_id = "tue-mps/coco_instance_eomt_large_640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.from_pretrained(model_id, device_map="auto")
image = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)
inputs = processor(
images=image,
return_tensors="pt",
)
with torch.inference_mode():
outputs = model(**inputs)
# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]
# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_instance_segmentation(
outputs,
target_sizes=target_sizes,
)
# Visualize the segmentation mask
plt.imshow(preds[0]["segmentation"])
plt.axis("off")
plt.title("Instance Segmentation")
plt.show()Segmentasi Panoptik
Model EoMT melakukan segmentasi panoptik menggunakan strategi inferensi bantalan yang sama seperti pada segmentasi instance. Setelah pembantalan dan normalisasi, model memprediksi kelas thing (instance) dan stuff (wilayah amorf). Mask dan logit kelas yang dihasilkan digabungkan melalui pascaproses (diadaptasi dari Mask2Former) untuk menghasilkan peta segmentasi panoptik yang terpadu, bersama dengan metadata segmen seperti id segmen, label kelas, dan skor kepercayaan.
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, EomtForUniversalSegmentation
model_id = "tue-mps/coco_panoptic_eomt_large_640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.from_pretrained(model_id, device_map="auto")
image = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)
inputs = processor(
images=image,
return_tensors="pt",
)
with torch.inference_mode():
outputs = model(**inputs)
# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]
# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_panoptic_segmentation(
outputs,
target_sizes=target_sizes,
)
# Visualize the panoptic segmentation mask
plt.imshow(preds[0]["segmentation"])
plt.axis("off")
plt.title("Panoptic Segmentation")
plt.show()EomtImageProcessor
kelas transformers.EomtImageProcessor
< source >( **kwargs: *<class 'transformers.models.eomt.image_processing_eomt.EomtImageProcessorKwargs'> )
Parameter
- do_convert_rgb (
bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB. - do_resize (
bool, kwargs, opsional, defaultTrue) — Apakah akan mengubah ukuran gambar. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, defaultnya{'shortest_edge' -- 640, 'longest_edge': 640}): Menggambarkan dimensi input maksimum ke model. - default_to_square (
bool, kwargs, opsional, defaultnyaFalse) — 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 menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, defaultnya2) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini bisa berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional, defaultTrue) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional, default0.00392156862745098) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - do_normalize (
bool, kwargs, opsional, defaultTrue) — Apakah akan menormalisasi gambar. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya[0.485, 0.456, 0.406]) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya[0.229, 0.224, 0.225]) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - do_pad (
bool, kwargs, opsional, defaultFalse) — 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. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang 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"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.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. - do_split_image (
bool, kwargs, opsional, defaultnyaself.do_split_image) — Apakah akan membagi gambar input menjadi patch yang tumpang tindih untuk segmentasi semantik. Jika diset keTrue, gambar input akan dibagi menjadi patch berukuransize["shortest_edge"]dengan tumpang tindih antar patch. Sebaliknya, gambar input akan di-pad hingga ukuran target. - ignore_index (
int, kwargs, opsional, defaultnyaself.ignore_index) — Label yang akan ditugaskan ke piksel latar belakang pada peta segmentasi. Jika disediakan, piksel peta segmentasi yang ditandai dengan 0 (latar belakang) akan diganti denganignore_index.
Membangun pemroses gambar EomtImageProcessor.
praproses
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]segmentation_maps: list[torch.Tensor] | None = Noneinstance_id_to_semantic_id: dict[int, int] | None = None**kwargs: *<class 'transformers.models.eomt.image_processing_eomt.EomtImageProcessorKwargs'> ) → ~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, aturdo_rescale=False. - segmentation_maps (
ImageInput, opsional) — Peta segmentasi yang akan dipreprocess untuk gambar yang sesuai. - instance_id_to_semantic_id (
list[dict[int, int]]ataudict[int, int], opsional) — Pemetaan antara id instance objek dan id kelas. - 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 menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini dapat berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - 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 jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - 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. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang 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"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.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. - do_split_image (
bool, kwargs, opsional, defaultnyaself.do_split_image) — Apakah akan membagi gambar input menjadi patch yang tumpang tindih untuk segmentasi semantik. Jika diset keTrue, gambar input akan dibagi menjadi patch berukuransize["shortest_edge"]dengan tumpang tindih antar patch. Sebaliknya, gambar input akan di-pad hingga ukuran target. - ignore_index (
int, kwargs, opsional, defaultnyaself.ignore_index) — Label yang akan ditugaskan ke piksel latar belakang pada peta segmentasi. Jika disediakan, piksel peta segmentasi yang ditandai dengan 0 (latar belakang) akan diganti denganignore_index.
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.
post_process_semantic_segmentation
< source >( outputstarget_sizes: listsize: dict[str, int] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Parameter
- outputs (EomtForUniversalSegmentation) — Output mentah dari model.
- target_sizes (
list[tuple[int, int]]) — Daftar tuple (tuple[int, int]) yang berisi ukuran target (tinggi, lebar) dari setiap gambar dalam batch. - size (
dict[str, int], opsional) — Ukuran di mana masker antara diinterpolasi. Bawaan adalahself.size. - return_segmentation_scores (
bool, opsional, defaultFalse) — Apakah akan mengembalikan skor segmentasi bersama peta segmentasi. KetikaTrue, setiap elemen dari daftar yang dikembalikan adalahSemanticSegmentationPostProcessorOutputdengan fieldsegmentation(ID kelas, bentuk(height, width)) dansegmentation_scores(bentuk(num_classes, height, width)).
Mengembalikan
list[torch.Tensor] atau list[SemanticSegmentationPostProcessorOutput]
Ketika
return_segmentation_scores=False (default), sebuah daftar dengan panjang batch_size di mana setiap item adalah
peta segmentasi dengan bentuk (height, width) berisi ID kelas. Ketika return_segmentation_scores=True,
sebuah daftar SemanticSegmentationPostProcessorOutput dengan field segmentation (ID kelas, bentuk
(height, width)) dan segmentation_scores (bentuk (num_classes, height, width)). Dalam kedua kasus,
(height, width) sesuai dengan ukuran target.
Mengonversi output dari EomtForUniversalSegmentation menjadi peta segmentasi semantik.
post_process_instance_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8size: dict[str, int] | None = None )
Memproses ulang keluaran model menjadi Prediksi Segmentasi Instans.
post_process_panoptic_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8stuff_classes: list[int] | None = Nonesize: dict[str, int] | None = None )
Memproses ulang keluaran model menjadi prediksi segmentasi panoptik akhir.
EomtImageProcessorPil
kelas transformers.EomtImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.eomt.image_processing_pil_eomt.EomtImageProcessorKwargs'> )
Parameter
- do_convert_rgb (
bool, kwargs, opsional) — Apakah akan mengonversi gambar ke RGB. - do_resize (
bool, kwargs, opsional, defaultTrue) — Apakah akan mengubah ukuran gambar. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, defaultnya{'shortest_edge' -- 640, 'longest_edge': 640}): Menggambarkan dimensi input maksimum ke model. - default_to_square (
bool, kwargs, opsional, defaultnyaFalse) — 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 menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, defaultnya2) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini bisa berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional, defaultTrue) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional, default0.00392156862745098) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - do_normalize (
bool, kwargs, opsional, defaultTrue) — Apakah akan menormalisasi gambar. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya[0.485, 0.456, 0.406]) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya[0.229, 0.224, 0.225]) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - do_pad (
bool, kwargs, opsional, defaultFalse) — 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. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang 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"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.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. - do_split_image (
bool, kwargs, opsional, defaultnyaself.do_split_image) — Apakah akan membagi gambar input menjadi patch yang tumpang tindih untuk segmentasi semantik. Jika diset keTrue, gambar input akan dibagi menjadi patch berukuransize["shortest_edge"]dengan tumpang tindih antar patch. Sebaliknya, gambar input akan di-pad hingga ukuran target. - ignore_index (
int, kwargs, opsional, defaultnyaself.ignore_index) — Label yang akan ditugaskan ke piksel latar belakang pada peta segmentasi. Jika disediakan, piksel peta segmentasi yang ditandai dengan 0 (latar belakang) akan diganti denganignore_index.
Membangun pemroses gambar EomtImageProcessor.
praproses
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]segmentation_maps: list[torch.Tensor] | None = Noneinstance_id_to_semantic_id: dict[int, int] | None = None**kwargs: *<class 'transformers.models.eomt.image_processing_pil_eomt.EomtImageProcessorKwargs'> ) → ~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, aturdo_rescale=False. - segmentation_maps (
ImageInput, opsional) — Peta segmentasi yang akan dipreprocess untuk gambar yang sesuai. - instance_id_to_semantic_id (
list[dict[int, int]]ataudict[int, int], opsional) — Pemetaan antara id instance objek dan id kelas. - 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 menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini dapat berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - 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 jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - 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. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang 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"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.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. - do_split_image (
bool, kwargs, opsional, defaultnyaself.do_split_image) — Apakah akan membagi gambar input menjadi patch yang tumpang tindih untuk segmentasi semantik. Jika diset keTrue, gambar input akan dibagi menjadi patch berukuransize["shortest_edge"]dengan tumpang tindih antar patch. Sebaliknya, gambar input akan di-pad hingga ukuran target. - ignore_index (
int, kwargs, opsional, defaultnyaself.ignore_index) — Label yang akan ditugaskan ke piksel latar belakang pada peta segmentasi. Jika disediakan, piksel peta segmentasi yang ditandai dengan 0 (latar belakang) akan diganti denganignore_index.
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.
post_process_semantic_segmentation
< source >( outputstarget_sizes: listsize: dict[str, int] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Parameter
- outputs (EomtForUniversalSegmentation) — Output mentah dari model.
- target_sizes (
list[tuple[int, int]]) — Daftar tuple (tuple[int, int]) yang berisi ukuran target (tinggi, lebar) dari setiap gambar dalam batch. - size (
dict[str, int], opsional) — Ukuran di mana masker antara diinterpolasi. Bawaan adalahself.size. - return_segmentation_scores (
bool, opsional, defaultFalse) — Apakah akan mengembalikan skor segmentasi bersama peta segmentasi. KetikaTrue, setiap elemen dari daftar yang dikembalikan adalahSemanticSegmentationPostProcessorOutputdengan fieldsegmentation(ID kelas, bentuk(height, width)) dansegmentation_scores(bentuk(num_classes, height, width)).
Mengembalikan
list[torch.Tensor] atau list[SemanticSegmentationPostProcessorOutput]
Ketika
return_segmentation_scores=False (default), sebuah daftar dengan panjang batch_size di mana setiap item adalah
peta segmentasi dengan bentuk (height, width) berisi ID kelas. Ketika return_segmentation_scores=True,
sebuah daftar SemanticSegmentationPostProcessorOutput dengan field segmentation (ID kelas, bentuk
(height, width)) dan segmentation_scores (bentuk (num_classes, height, width)). Dalam kedua kasus,
(height, width) sesuai dengan ukuran target.
Mengonversi output dari EomtForUniversalSegmentation menjadi peta segmentasi semantik.
post_process_instance_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8size: dict[str, int] | None = None )
Memproses ulang keluaran model menjadi Prediksi Segmentasi Instans.
post_process_panoptic_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8stuff_classes: list[int] | None = Nonesize: dict[str, int] | None = None )
Memproses ulang keluaran model menjadi prediksi segmentasi panoptik akhir.
EomtConfig
kelas transformers.EomtConfig
< 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 = Nonehidden_size: int = 1024num_hidden_layers: int = 24num_attention_heads: int = 16hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, int] = 640patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3mlp_ratio: int = 4layerscale_value: float = 1.0drop_path_rate: float | int = 0.0num_upscale_blocks: int = 2attention_dropout: float | int = 0.0use_swiglu_ffn: bool = Falsenum_blocks: int = 4no_object_weight: float = 0.1class_weight: float = 2.0mask_weight: float = 5.0dice_weight: float = 5.0train_num_points: int = 12544oversample_ratio: float = 3.0importance_sample_ratio: float = 0.75num_queries: int = 200num_register_tokens: int = 4 )
Parameter
- hidden_size (
int, opsional, default1024) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default24) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default16) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - hidden_act (
str, opsional, defaultnyagelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - hidden_dropout_prob (
Union[float, int], opsional, default0.0) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - layer_norm_eps (
float, opsional, defaultnya1e-06) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - image_size (
Union[int, list[int], tuple[int, int]], opsional, defaultnya640) — Ukuran (resolusi) setiap gambar. - patch_size (
Union[int, list[int], tuple[int, int]], opsional, defaultnya16) — Ukuran (resolusi) dari setiap patch. - num_channels (
int, opsional, defaultnya3) — Jumlah saluran input. - mlp_ratio (
int, opsional, default4) — Rasio dimensi tersembunyi MLP terhadap dimensi embedding. - layerscale_value (
float, opsional, default 1.0) — Nilai awal untuk parameter LayerScale. - drop_path_rate (
Union[float, int], opsional, defaultnya0.0) — Tingkat drop path untuk fusi patch. - num_upscale_blocks (
int, opsional, default 2) — Jumlah blok upsampling yang digunakan dalam decoder atau head segmentasi. - attention_dropout (
Union[float, int], opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - use_swiglu_ffn (
bool, opsional, defaultnyaFalse) — Apakah akan menggunakan jaringan saraf feedforward SwiGLU. - num_blocks (
int, opsional, default 4) — Jumlah blok fitur atau tahap dalam arsitektur. - no_object_weight (
float, opsional, default 0.1) — Bobot loss untuk kelas ‘no object’ dalam segmentasi panoptik/instans. - class_weight (
float, opsional, default 2.0) — Bobot loss untuk target klasifikasi. - mask_weight (
float, opsional, default 5.0) — Bobot loss untuk prediksi mask. - dice_weight (
float, opsional, default5.0) — Bobot relatif dari dice loss dalam loss segmentasi panoptik. - train_num_points (
int, opsional, default 12544) — Jumlah titik yang diambil untuk menghitung mask loss selama pelatihan. - oversample_ratio (
float, opsional, default 3.0) — Rasio oversampling yang digunakan dalam pengambilan sampel titik untuk pelatihan mask. - importance_sample_ratio (
float, opsional, default 0.75) — Rasio titik yang akan disampel berdasarkan kepentingan selama pelatihan. - num_queries (
int, opsional, default 200) — Jumlah kueri objek dalam Transformer. - num_register_tokens (
int, opsional, default 4) — Jumlah token register yang dapat dipelajari dan ditambahkan ke input transformer.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari EomtModel. Kelas ini digunakan untuk membuat instans model Eomt berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari tue-mps/coco_panoptic_eomt_large_640
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
EomtForUniversalSegmentation
kelas transformers.EomtForUniversalSegmentation
< source >( config: EomtConfig )
Parameter
- config (EomtConfig) — 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 EoMT dengan head di bagian atas untuk segmentasi instance/semantic/panoptic.
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
< source >( pixel_values: Tensormask_labels: list[torch.Tensor] | None = Noneclass_labels: list[torch.Tensor] | None = Nonepatch_offsets: list[torch.Tensor] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EomtForUniversalSegmentationOutput or tuple(torch.Tensor)
Parameter
- pixel_values (
torch.Tensordengan bentuk(batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan EomtImageProcessor. Lihat EomtImageProcessor.call() untuk detailnya (processor_classmenggunakan EomtImageProcessor untuk memproses gambar). - mask_labels (
list[torch.Tensor], opsional) — daftar label mask dengan bentuk(num_labels, height, width)untuk diberikan ke model - class_labels (
list[torch.LongTensor], opsional) — daftar label kelas target dengan bentuk(num_labels, height, width)untuk diberikan ke model. Label ini mengidentifikasi label darimask_labels, misalnya label darimask_labels[i][j]jikaclass_labels[i][j]. - patch_offsets (
list[torch.Tensor], opsional) — daftar tuple yang menunjukkan indeks gambar serta posisi awal dan akhir patch untuk segmentasi semantik.
Mengembalikan
EomtForUniversalSegmentationOutput atau tuple(torch.Tensor)
EomtForUniversalSegmentationOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (EomtConfig) dan input.
Metode forward dari EomtForUniversalSegmentation menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
- loss (
torch.Tensor, opsional) — Loss yang dihitung, dikembalikan saat label ada. - class_queries_logits (
torch.Tensor, opsional) — Tensor dengan bentuk(batch_size, num_queries, num_labels + 1)yang mewakili kelas yang diusulkan untuk setiap query. Perhatikan bahwa+ 1diperlukan karena kami mengintegrasikan kelas null. - masks_queries_logits (
torch.Tensor, opsional) — Tensor dengan bentuk(batch_size, num_queries, height, width)yang merepresentasikan mask yang diusulkan untuk setiap query. - last_hidden_state (
torch.Tensordengan bentuk(batch_size, num_channels, height, width)) — State tersembunyi terakhir (peta fitur akhir) dari lapisan terakhir. - hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output embeddings + satu untuk output setiap tahap) dengan bentuk(batch_size, sequence_length, hidden_size). Hidden-states dari semua lapisan model. - attentions (
tuple(tuple(torch.Tensor)), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple darituple(torch.Tensor)(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length). Bobot Self dan Cross Attentions dari decoder transformer. - patch_offsets (
list[torch.Tensor], opsional) — daftar tuple yang menunjukkan indeks gambar serta posisi awal dan akhir patch untuk segmentasi semantik.