Transformers documentation
SegGPT
Mô hình này được công bố trên HF papers vào ngày 06-04-2023 và được đóng góp cho Hugging Face Transformers vào ngày 26-02-2024.
SegGPT
Tổng quan
Mô hình SegGPT được đề xuất trong SegGPT: Segmenting Everything In Context của Xinlong Wang, Xiaosong Zhang, Yue Cao, Wen Wang, Chunhua Shen, Tiejun Huang. SegGPT sử dụng một Transformer chỉ có decoder, có thể tạo ra một mặt nạ phân đoạn (segmentation mask) khi được cung cấp một ảnh đầu vào, một ảnh prompt và mặt nạ prompt tương ứng. Mô hình đạt được kết quả one-shot đáng kể với 56.1 mIoU trên COCO-20 và 85.6 mIoU trên FSS-1000.
Tóm tắt từ bài báo như sau:
Chúng tôi giới thiệu SegGPT, một mô hình tổng quát để phân đoạn mọi thứ trong ngữ cảnh. Chúng tôi thống nhất các tác vụ phân đoạn khác nhau thành một khung học trong ngữ cảnh tổng quát, có khả năng tiếp nhận các loại dữ liệu phân đoạn khác nhau bằng cách chuyển đổi chúng thành cùng một định dạng hình ảnh. Việc huấn luyện SegGPT được xây dựng như một bài toán tô màu trong ngữ cảnh, với ánh xạ màu ngẫu nhiên cho mỗi mẫu dữ liệu. Mục tiêu là hoàn thành các tác vụ đa dạng dựa trên ngữ cảnh, thay vì phụ thuộc vào các màu cụ thể. Sau khi huấn luyện, SegGPT có thể thực hiện các tác vụ phân đoạn tùy ý trên hình ảnh hoặc video thông qua suy luận trong ngữ cảnh, chẳng hạn như phân đoạn instance của đối tượng, stuff, phần, đường viền và văn bản. SegGPT được đánh giá trên một phạm vi rộng các tác vụ, bao gồm phân đoạn ngữ nghĩa few-shot, phân đoạn đối tượng video, phân đoạn ngữ nghĩa và phân đoạn toàn cảnh. Kết quả của chúng tôi cho thấy khả năng mạnh mẽ trong việc phân đoạn trong miền và ngoài
Mẹo:
- Bạn có thể sử dụng SegGptImageProcessor để chuẩn bị đầu vào hình ảnh, prompt và mask cho mô hình.
- Bạn có thể sử dụng bản đồ phân đoạn hoặc ảnh RGB làm mặt nạ prompt. Nếu sử dụng phương án sau, hãy đảm bảo đặt
do_convert_rgb=Falsetrong phương thứcpreprocess. - Rất nên truyền
num_labelskhi sử dụngsegmentation_maps(không tính nền) trong tiền xử lý và hậu xử lý với SegGptImageProcessor cho trường hợp sử dụng của bạn. - Khi thực hiện suy luận với SegGptForImageSegmentation, nếu
batch_sizecủa bạn lớn hơn 1, bạn có thể sử dụng feature ensemble giữa các ảnh của mình bằng cách truyềnfeature_ensemble=Truevào phương thức forward.
Dưới đây là cách sử dụng mô hình cho phân đoạn ngữ nghĩa một lần (one-shot semantic segmentation):
import torch
from datasets import load_dataset
from transformers import SegGptForImageSegmentation, SegGptImageProcessor
checkpoint = "BAAI/seggpt-vit-large"
image_processor = SegGptImageProcessor.from_pretrained(checkpoint)
model = SegGptForImageSegmentation.from_pretrained(checkpoint, device_map="auto")
dataset_id = "EduardoPacheco/FoodSeg103"
ds = load_dataset(dataset_id, split="train")
# Number of labels in FoodSeg103 (not including background)
num_labels = 103
image_input = ds[4]["image"]
ground_truth = ds[4]["label"]
image_prompt = ds[29]["image"]
mask_prompt = ds[29]["label"]
inputs = image_processor(
images=image_input,
prompt_images=image_prompt,
segmentation_maps=mask_prompt,
num_labels=num_labels,
return_tensors="pt"
)
with torch.no_grad():
outputs = model(**inputs)
target_sizes = [image_input.size[::-1]]
mask = image_processor.post_process_semantic_segmentation(outputs, target_sizes, num_labels=num_labels)[0]Mô hình này được đóng góp bởi EduardoPacheco. Mã nguồn gốc có thể được tìm thấy tại đây.
SegGptConfig
lớp transformers.SegGptConfig
< 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, ...] = (896, 448)patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3qkv_bias: bool = Truemlp_dim: int | None = Nonedrop_path_rate: float | int = 0.1pretrain_image_size: int | list[int] | tuple[int, int] = 224decoder_hidden_size: int = 64use_relative_position_embeddings: bool = Truemerge_index: int = 2intermediate_hidden_state_indices: list[int] | tuple[int, ...] = (5, 11, 17, 23)beta: float = 0.01 )
Tham số
- hidden_size (
int, tùy chọn, mặc định là1024) — Kích thước của các biểu diễn ẩn. - num_hidden_layers (
int, tùy chọn, mặc định là24) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là16) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer. - hidden_act (
str, tùy chọn, mặc định làgelu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - hidden_dropout_prob (
Union[float, int], tùy chọn, mặc định là0.0) — Xác suất dropout cho tất cả các lớp fully connected trong embeddings, encoder và pooler. - initializer_range (
float, tùy chọn, mặc định là0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số. - layer_norm_eps (
float, tùy chọn, mặc định là1e-06) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization). - image_size (
Union[int, list[int], tuple[int, ...]], tuỳ chọn, mặc định là(896, 448)) — Kích thước (độ phân giải) của mỗi hình ảnh. - patch_size (
Union[int, list[int], tuple[int, int]], tùy chọn, mặc định là16) — Kích thước (độ phân giải) của mỗi patch. - num_channels (
int, tùy chọn, mặc định là3) — Số lượng kênh đầu vào. - qkv_bias (
bool, tùy chọn, mặc định làTrue) — Có thêm bias cho queries, keys và values hay không. - mlp_dim (
int, tùy chọn) — Kích thước của lớp MLP trong bộ mã hóa Transformer. Nếu không được đặt, mặc định làhidden_size* 4. - drop_path_rate (
Union[float, int], tùy chọn, mặc định là0.1) — Tỷ lệ drop path cho việc hợp nhất patch. - pretrain_image_size (
int, tùy chọn, mặc định là 224) — Kích thước được huấn luyện trước của các nhúng vị trí tuyệt đối. - decoder_hidden_size (
int, tùy chọn, mặc định là64) — Kích thước của các biểu diễn ẩn. - use_relative_position_embeddings (
bool, tùy chọn, mặc định làTrue) — Có sử dụng nhúng vị trí tương đối trong các lớp chú ý hay không. - merge_index (
int, tùy chọn, mặc định là 2) — Chỉ số của lớp encoder để gộp các embedding. - intermediate_hidden_state_indices (
list[int], tùy chọn, mặc định là[5, 11, 17, 23]) — Các chỉ số của các lớp encoder mà chúng ta lưu trữ dưới dạng đặc trưng cho decoder. - beta (
float, tùy chọn, mặc định là 0.01) — Hệ số điều hòa cho SegGptLoss (mất smooth-l1).
Đây là lớp cấu hình để lưu trữ cấu hình của một SegGptModel. Nó được sử dụng để khởi tạo một mô hình Seggpt theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của BAAI/seggpt-vit-large
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> from transformers import SegGptConfig, SegGptModel
>>> # Initializing a SegGPT seggpt-vit-large style configuration
>>> configuration = SegGptConfig()
>>> # Initializing a model (with random weights) from the seggpt-vit-large style configuration
>>> model = SegGptModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configSegGptImageProcessor
lớp transformers.SegGptImageProcessor
< source >( **kwargs: *<class 'transformers.models.seggpt.image_processing_seggpt.SegGptImageProcessorKwargs'> )
Tham số
- do_convert_rgb (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có chuyển đổi ảnh sang RGB hay không. - do_resize (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có nên thay đổi kích thước ảnh hay không. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, mặc định là{'height' -- 448, 'width': 448}): Mô tả kích thước đầu vào tối đa cho mô hình. - default_to_square (
bool, kwargs, tùy chọn, mặc định làTrue) — Có nên mặc định dùng ảnh vuông khi thay đổi kích thước không, nếu size là một số nguyên. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước của ảnh đầu ra sau khi áp dụngcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, mặc định là3) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. Giá trị này có thể là một trong các hằng số liệt kê (enum) củaPILImageResampling. Chỉ có hiệu lực khido_resizeđược đặt thànhTrue. - do_rescale (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có nên điều chỉnh lại tỷ lệ ảnh hay không. - rescale_factor (
float, kwargs, optional, mặc định là0.00392156862745098) — Hệ số rescale để rescale ảnh nếudo_rescaleđược đặt thànhTrue. - do_normalize (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có nên chuẩn hóa hình ảnh hay không. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional, mặc định là[0.485, 0.456, 0.406]) — Giá trị trung bình của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional, mặc định là[0.229, 0.224, 0.225]) — Độ lệch chuẩn của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - do_pad (
bool, kwargs, optional) — Có nên chèn padding cho ảnh hay không. Padding được thực hiện đến kích thước lớn nhất trong batch hoặc đến một kích thước vuông cố định cho mỗi ảnh. Chiến lược padding cụ thể phụ thuộc vào model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước ở dạng{"height": int, "width" int}để đệm cho các hình ảnh. Phải lớn hơn kích thước bất kỳ hình ảnh nào được cung cấp để tiền xử lý. Nếu không cung cấppad_size, các hình ảnh sẽ được đệm đến chiều cao và chiều rộng lớn nhất trong lô. Chỉ được áp dụng khido_pad=True. - do_center_crop (
bool, kwargs, optional) — Có nên cắt ảnh ở vị trí trung tâm hay không. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Chỉ hỗ trợChannelDimension.FIRST. Được thêm vào để tương thích với các bộ xử lý chậm. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:"channels_first"hoặcChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width)."channels_last"hoặcChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels)."none"hoặcChannelDimension.NONE: ảnh ở định dạng (chiều cao, chiều rộng).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Thiết bị để xử lý các video. Nếu không được đặt, thiết bị sẽ được suy ra từ các video đầu vào. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Trả về các tensor được xếp chồng nếu được đặt thành'pt', ngược lại trả về một danh sách các tensor. - disable_grouping (
bool, kwargs, tuỳ chọn) — Có nên vô hiệu hóa việc nhóm các hình ảnh theo kích thước để xử lý chúng riêng lẻ thay vì theo lô hay không. Nếu là None, giá trị sẽ được đặt thành True nếu các hình ảnh nằm trên CPU, và False trong các trường hợp khác. Lựa chọn này dựa trên các quan sát thực nghiệm, như được mô tả chi tiết tại đây: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Số lượng token hình ảnh sẽ được sử dụng cho mỗi hình ảnh trong đầu vào. Được thêm vào để đảm bảo tương thích ngược, nhưng trong các mô hình tương lai, giá trị này nên được đặt như một thuộc tính của bộ xử lý. - num_labels (
int, kwargs, optional) — Số lượng lớp trong tác vụ phân đoạn (không bao gồm nền). Nếu được chỉ định, một bảng màu sẽ được xây dựng, giả định rằng class_idx 0 là nền, để ánh xạ prompt mask từ bản đồ phân đoạn thông thường sang ảnh RGB 3 kênh. Nếu không chỉ định tham số này, prompt mask sẽ được nhân bản trên chiều kênh khido_convert_rgblàTrue.
Tạo một trình xử lý ảnh SegGptImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_masks: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.seggpt.image_processing_seggpt.SegGptImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Tham số
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], tuỳ chọn) — Hình ảnh cần tiền xử lý. Kỳ vọng một hình ảnh đơn lẻ hoặc một lô hình ảnh có giá trị pixel từ 0 đến 255. Nếu truyền vào các hình ảnh có giá trị pixel từ 0 đến 1, hãy đặtdo_rescale=False. - prompt_images (
ImageInput, tùy chọn) — Ảnh prompt để tiền xử lý. Kỳ vọng một ảnh hoặc một lô ảnh có giá trị pixel từ 0 đến 255. - prompt_masks (
ImageInput, tùy chọn) — Mặt nạ prompt để tiền xử lý. Có thể ở định dạng bản đồ phân đoạn (không có kênh) hoặc ảnh RGB. Nếu ở định dạng ảnh RGB,do_convert_rgbnên được đặt thànhFalse. Nếu ở định dạng bản đồ phân đoạn, việc chỉ địnhnum_labelsđược khuyến nghị để xây dựng bảng màu ánh xạ mặt nạ prompt từ một kênh sang RGB 3 kênh. Nếunum_labelskhông được chỉ định, mặt nạ prompt sẽ được nhân bản trên chiều kênh. - do_convert_rgb (
bool, kwargs, optional) — Có nên chuyển đổi ảnh sang RGB hay không. - do_resize (
bool, kwargs, optional) — Có nên thay đổi kích thước ảnh hay không. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Mô tả các kích thước đầu vào tối đa của mô hình. - default_to_square (
bool, kwargs, tuỳ chọn) — Có mặc định thành ảnh vuông khi thay đổi kích thước hay không, nếu size là một số nguyên. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước của ảnh đầu ra sau khi áp dụngcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. Giá trị này có thể là một trong các hằng số liệt kê (enum) củaPILImageResampling. Chỉ có hiệu lực khido_resizeđược đặt thànhTrue. - do_rescale (
bool, kwargs, optional) — Có nên điều chỉnh lại tỷ lệ ảnh hay không. - rescale_factor (
float, kwargs, optional) — Hệ số rescale để rescale ảnh nếudo_rescaleđược đặt thànhTrue. - do_normalize (
bool, kwargs, optional) — Có nên chuẩn hóa ảnh hay không. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Giá trị trung bình của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Độ lệch chuẩn của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - do_pad (
bool, kwargs, optional) — Có nên chèn padding cho ảnh hay không. Padding được thực hiện đến kích thước lớn nhất trong batch hoặc đến một kích thước vuông cố định cho mỗi ảnh. Chiến lược padding cụ thể phụ thuộc vào model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước ở dạng{"height": int, "width" int}để đệm cho các hình ảnh. Phải lớn hơn kích thước bất kỳ hình ảnh nào được cung cấp để tiền xử lý. Nếu không cung cấppad_size, các hình ảnh sẽ được đệm đến chiều cao và chiều rộng lớn nhất trong lô. Chỉ được áp dụng khido_pad=True. - do_center_crop (
bool, kwargs, optional) — Có nên cắt ảnh ở vị trí trung tâm hay không. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Chỉ hỗ trợChannelDimension.FIRST. Được thêm vào để tương thích với các bộ xử lý chậm. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:"channels_first"hoặcChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width)."channels_last"hoặcChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels)."none"hoặcChannelDimension.NONE: ảnh ở định dạng (chiều cao, chiều rộng).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Thiết bị để xử lý các video. Nếu không được đặt, thiết bị sẽ được suy ra từ các video đầu vào. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Trả về các tensor được xếp chồng nếu được đặt thành'pt', ngược lại trả về một danh sách các tensor. - disable_grouping (
bool, kwargs, tuỳ chọn) — Có nên vô hiệu hóa việc nhóm các hình ảnh theo kích thước để xử lý chúng riêng lẻ thay vì theo lô hay không. Nếu là None, giá trị sẽ được đặt thành True nếu các hình ảnh nằm trên CPU, và False trong các trường hợp khác. Lựa chọn này dựa trên các quan sát thực nghiệm, như được mô tả chi tiết tại đây: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Số lượng token hình ảnh sẽ được sử dụng cho mỗi hình ảnh trong đầu vào. Được thêm vào để đảm bảo tương thích ngược, nhưng trong các mô hình tương lai, giá trị này nên được đặt như một thuộc tính của bộ xử lý. - num_labels (
int, kwargs, optional) — Số lượng lớp trong tác vụ phân đoạn (không bao gồm nền). Nếu được chỉ định, một bảng màu sẽ được xây dựng, giả định rằng class_idx 0 là nền, để ánh xạ prompt mask từ bản đồ phân đoạn thông thường sang ảnh RGB 3 kênh. Nếu không chỉ định tham số này, prompt mask sẽ được nhân bản trên chiều kênh khido_convert_rgblàTrue.
Trả về
~image_processing_base.BatchFeature
- data (
dict) — Từ điển chứa các danh sách/mảng/tensor được trả về bởi phương thức call (‘pixel_values’, v.v.). - tensor_type (
Union[None, str, TensorType], tùy chọn) — Bạn có thể cung cấp một tensor_type tại đây để chuyển đổi các danh sách số nguyên trong Tensor PyTorch/Numpy khi khởi tạo.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonenum_labels: int | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Tham số
- outputs (
SegGptImageSegmentationOutput) — Đầu ra thô của mô hình. - target_sizes (
list[tuple[int, int]], tùy chọn) — Danh sách có độ dàibatch_size, trong đó mỗi phần tử tương ứng với kích thước cuối cùng yêu cầu(height, width)của mỗi dự đoán. Nếu để làNone, các dự đoán sẽ không được thay đổi kích thước. - num_labels (
int, tùy chọn) — Số lượng lớp trong tác vụ phân đoạn (không bao gồm nền). Nếu được chỉ định, một bảng màu sẽ được xây dựng để ánh xạ các mặt nạ dự đoán từ giá trị RGB trở lại chỉ số lớp. Phải khớp với giá trị được sử dụng trong quá trình tiền xử lý. - return_segmentation_scores (
bool, tùy chọn, mặc định làFalse) — Có nên trả về điểm phân đoạn (segmentation scores) cùng với bản đồ phân đoạn hay không. KhiTrue, mỗi phần tử của danh sách được trả về là mộtSemanticSegmentationPostProcessorOutputvới các trườngsegmentation(các ID lớp, hình dạng(height, width)) vàsegmentation_scores(hình dạng(num_labels+1, height, width)của khoảng cách L2 bình phương âm đến mỗi màu trong bảng màu, hoặcNonekhinum_labelskhông được cung cấp).
Trả về
list[torch.Tensor] hoặc list[SemanticSegmentationPostProcessorOutput]
Khi
return_segmentation_scores=False (mặc định), kết quả là một danh sách có độ dài batch_size, trong đó mỗi phần tử là một
bản đồ phân đoạn có hình dạng (height, width) chứa các ID lớp. Khi return_segmentation_scores=True,
kết quả là một danh sách các SemanticSegmentationPostProcessorOutput với các trường segmentation (ID lớp, hình dạng
(height, width)) và segmentation_scores (hình dạng (num_labels+1, height, width)). Trong cả hai trường hợp,
(height, width) tương ứng với kích thước đích (nếu target_sizes được chỉ định).
Chuyển đổi đầu ra của SegGptImageSegmentationOutput thành các bản đồ phân đoạn. Chỉ hỗ trợ PyTorch.
SegGptImageProcessorPil
lớp transformers.SegGptImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.seggpt.image_processing_pil_seggpt.SegGptImageProcessorKwargs'> )
Tham số
- do_convert_rgb (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có chuyển đổi ảnh sang RGB hay không. - do_resize (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có nên thay đổi kích thước ảnh hay không. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, mặc định là{'height' -- 448, 'width': 448}): Mô tả kích thước đầu vào tối đa cho mô hình. - default_to_square (
bool, kwargs, tùy chọn, mặc định làTrue) — Có nên mặc định dùng ảnh vuông khi thay đổi kích thước không, nếu size là một số nguyên. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước của ảnh đầu ra sau khi áp dụngcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, mặc định là3) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. Giá trị này có thể là một trong các hằng số liệt kê (enum) củaPILImageResampling. Chỉ có hiệu lực khido_resizeđược đặt thànhTrue. - do_rescale (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có nên điều chỉnh lại tỷ lệ ảnh hay không. - rescale_factor (
float, kwargs, optional, mặc định là0.00392156862745098) — Hệ số rescale để rescale ảnh nếudo_rescaleđược đặt thànhTrue. - do_normalize (
bool, kwargs, tuỳ chọn, mặc định làTrue) — Có nên chuẩn hóa hình ảnh hay không. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional, mặc định là[0.485, 0.456, 0.406]) — Giá trị trung bình của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional, mặc định là[0.229, 0.224, 0.225]) — Độ lệch chuẩn của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - do_pad (
bool, kwargs, optional) — Có nên chèn padding cho ảnh hay không. Padding được thực hiện đến kích thước lớn nhất trong batch hoặc đến một kích thước vuông cố định cho mỗi ảnh. Chiến lược padding cụ thể phụ thuộc vào model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước ở dạng{"height": int, "width" int}để đệm cho các hình ảnh. Phải lớn hơn kích thước bất kỳ hình ảnh nào được cung cấp để tiền xử lý. Nếu không cung cấppad_size, các hình ảnh sẽ được đệm đến chiều cao và chiều rộng lớn nhất trong lô. Chỉ được áp dụng khido_pad=True. - do_center_crop (
bool, kwargs, optional) — Có nên cắt ảnh ở vị trí trung tâm hay không. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Chỉ hỗ trợChannelDimension.FIRST. Được thêm vào để tương thích với các bộ xử lý chậm. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:"channels_first"hoặcChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width)."channels_last"hoặcChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels)."none"hoặcChannelDimension.NONE: ảnh ở định dạng (chiều cao, chiều rộng).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Thiết bị để xử lý các video. Nếu không được đặt, thiết bị sẽ được suy ra từ các video đầu vào. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Trả về các tensor được xếp chồng nếu được đặt thành'pt', ngược lại trả về một danh sách các tensor. - disable_grouping (
bool, kwargs, tuỳ chọn) — Có nên vô hiệu hóa việc nhóm các hình ảnh theo kích thước để xử lý chúng riêng lẻ thay vì theo lô hay không. Nếu là None, giá trị sẽ được đặt thành True nếu các hình ảnh nằm trên CPU, và False trong các trường hợp khác. Lựa chọn này dựa trên các quan sát thực nghiệm, như được mô tả chi tiết tại đây: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Số lượng token hình ảnh sẽ được sử dụng cho mỗi hình ảnh trong đầu vào. Được thêm vào để đảm bảo tương thích ngược, nhưng trong các mô hình tương lai, giá trị này nên được đặt như một thuộc tính của bộ xử lý. - num_labels (
int, kwargs, optional) — Số lượng lớp trong tác vụ phân đoạn (không bao gồm nền). Nếu được chỉ định, một bảng màu sẽ được xây dựng, giả định rằng class_idx 0 là nền, để ánh xạ prompt mask từ bản đồ phân đoạn thông thường sang ảnh RGB 3 kênh. Nếu không chỉ định tham số này, prompt mask sẽ được nhân bản trên chiều kênh khido_convert_rgblàTrue.
Tạo một trình xử lý ảnh SegGptImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneprompt_masks: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.seggpt.image_processing_pil_seggpt.SegGptImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Tham số
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], tuỳ chọn) — Hình ảnh cần tiền xử lý. Kỳ vọng một hình ảnh đơn lẻ hoặc một lô hình ảnh có giá trị pixel từ 0 đến 255. Nếu truyền vào các hình ảnh có giá trị pixel từ 0 đến 1, hãy đặtdo_rescale=False. - prompt_images (
ImageInput, tùy chọn) — Ảnh prompt để tiền xử lý. Kỳ vọng một ảnh hoặc một lô ảnh có giá trị pixel từ 0 đến 255. - prompt_masks (
ImageInput, tùy chọn) — Mặt nạ prompt để tiền xử lý. Có thể ở định dạng bản đồ phân đoạn (không có kênh) hoặc ảnh RGB. Nếu ở định dạng ảnh RGB,do_convert_rgbnên được đặt thànhFalse. Nếu ở định dạng bản đồ phân đoạn, việc chỉ địnhnum_labelsđược khuyến nghị để xây dựng bảng màu ánh xạ mặt nạ prompt từ một kênh sang RGB 3 kênh. Nếunum_labelskhông được chỉ định, mặt nạ prompt sẽ được nhân bản trên chiều kênh. - do_convert_rgb (
bool, kwargs, optional) — Có nên chuyển đổi ảnh sang RGB hay không. - do_resize (
bool, kwargs, optional) — Có nên thay đổi kích thước ảnh hay không. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Mô tả các kích thước đầu vào tối đa của mô hình. - default_to_square (
bool, kwargs, tuỳ chọn) — Có mặc định thành ảnh vuông khi thay đổi kích thước hay không, nếu size là một số nguyên. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước của ảnh đầu ra sau khi áp dụngcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Bộ lọc lấy mẫu lại (resampling filter) được sử dụng khi thay đổi kích thước ảnh. Giá trị này có thể là một trong các hằng số liệt kê (enum) củaPILImageResampling. Chỉ có hiệu lực khido_resizeđược đặt thànhTrue. - do_rescale (
bool, kwargs, optional) — Có nên điều chỉnh lại tỷ lệ ảnh hay không. - rescale_factor (
float, kwargs, optional) — Hệ số rescale để rescale ảnh nếudo_rescaleđược đặt thànhTrue. - do_normalize (
bool, kwargs, optional) — Có nên chuẩn hóa ảnh hay không. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Giá trị trung bình của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Độ lệch chuẩn của ảnh để sử dụng cho việc chuẩn hóa. Chỉ có hiệu lực nếudo_normalizeđược đặt thànhTrue. - do_pad (
bool, kwargs, optional) — Có nên chèn padding cho ảnh hay không. Padding được thực hiện đến kích thước lớn nhất trong batch hoặc đến một kích thước vuông cố định cho mỗi ảnh. Chiến lược padding cụ thể phụ thuộc vào model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Kích thước ở dạng{"height": int, "width" int}để đệm cho các hình ảnh. Phải lớn hơn kích thước bất kỳ hình ảnh nào được cung cấp để tiền xử lý. Nếu không cung cấppad_size, các hình ảnh sẽ được đệm đến chiều cao và chiều rộng lớn nhất trong lô. Chỉ được áp dụng khido_pad=True. - do_center_crop (
bool, kwargs, optional) — Có nên cắt ảnh ở vị trí trung tâm hay không. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Chỉ hỗ trợChannelDimension.FIRST. Được thêm vào để tương thích với các bộ xử lý chậm. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, tùy chọn) — Định dạng chiều kênh cho ảnh đầu vào. Nếu không được đặt, định dạng chiều kênh sẽ được suy ra từ ảnh đầu vào. Có thể là một trong các giá trị:"channels_first"hoặcChannelDimension.FIRST: ảnh ở định dạng (num_channels, height, width)."channels_last"hoặcChannelDimension.LAST: ảnh ở định dạng (height, width, num_channels)."none"hoặcChannelDimension.NONE: ảnh ở định dạng (chiều cao, chiều rộng).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Thiết bị để xử lý các video. Nếu không được đặt, thiết bị sẽ được suy ra từ các video đầu vào. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Trả về các tensor được xếp chồng nếu được đặt thành'pt', ngược lại trả về một danh sách các tensor. - disable_grouping (
bool, kwargs, tuỳ chọn) — Có nên vô hiệu hóa việc nhóm các hình ảnh theo kích thước để xử lý chúng riêng lẻ thay vì theo lô hay không. Nếu là None, giá trị sẽ được đặt thành True nếu các hình ảnh nằm trên CPU, và False trong các trường hợp khác. Lựa chọn này dựa trên các quan sát thực nghiệm, như được mô tả chi tiết tại đây: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Số lượng token hình ảnh sẽ được sử dụng cho mỗi hình ảnh trong đầu vào. Được thêm vào để đảm bảo tương thích ngược, nhưng trong các mô hình tương lai, giá trị này nên được đặt như một thuộc tính của bộ xử lý. - num_labels (
int, kwargs, optional) — Số lượng lớp trong tác vụ phân đoạn (không bao gồm nền). Nếu được chỉ định, một bảng màu sẽ được xây dựng, giả định rằng class_idx 0 là nền, để ánh xạ prompt mask từ bản đồ phân đoạn thông thường sang ảnh RGB 3 kênh. Nếu không chỉ định tham số này, prompt mask sẽ được nhân bản trên chiều kênh khido_convert_rgblàTrue.
Trả về
~image_processing_base.BatchFeature
- data (
dict) — Từ điển chứa các danh sách/mảng/tensor được trả về bởi phương thức call (‘pixel_values’, v.v.). - tensor_type (
Union[None, str, TensorType], tùy chọn) — Bạn có thể cung cấp một tensor_type tại đây để chuyển đổi các danh sách số nguyên trong Tensor PyTorch/Numpy khi khởi tạo.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonenum_labels: int | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Tham số
- outputs (
SegGptImageSegmentationOutput) — Đầu ra thô của mô hình. - target_sizes (
list[tuple[int, int]], tùy chọn) — Danh sách có độ dàibatch_size, trong đó mỗi phần tử tương ứng với kích thước cuối cùng yêu cầu(height, width)của mỗi dự đoán. Nếu để làNone, các dự đoán sẽ không được thay đổi kích thước. - num_labels (
int, tùy chọn) — Số lượng lớp trong tác vụ phân đoạn (không bao gồm nền). Nếu được chỉ định, một bảng màu sẽ được xây dựng để ánh xạ các mặt nạ dự đoán từ giá trị RGB trở lại chỉ số lớp. Phải khớp với giá trị được sử dụng trong quá trình tiền xử lý. - return_segmentation_scores (
bool, tùy chọn, mặc định làFalse) — Có nên trả về điểm phân đoạn (segmentation scores) cùng với bản đồ phân đoạn hay không. KhiTrue, mỗi phần tử của danh sách được trả về là mộtSemanticSegmentationPostProcessorOutputvới các trườngsegmentation(các ID lớp, hình dạng(height, width)) vàsegmentation_scores(hình dạng(num_labels+1, height, width)của khoảng cách L2 bình phương âm đến mỗi màu trong bảng màu, hoặcNonekhinum_labelskhông được cung cấp).
Trả về
list[torch.Tensor] hoặc list[SemanticSegmentationPostProcessorOutput]
Khi
return_segmentation_scores=False (mặc định), kết quả là một danh sách có độ dài batch_size, trong đó mỗi phần tử là một
bản đồ phân đoạn có hình dạng (height, width) chứa các ID lớp. Khi return_segmentation_scores=True,
kết quả là một danh sách các SemanticSegmentationPostProcessorOutput với các trường segmentation (ID lớp, hình dạng
(height, width)) và segmentation_scores (hình dạng (num_labels+1, height, width)). Trong cả hai trường hợp,
(height, width) tương ứng với kích thước đích (nếu target_sizes được chỉ định).
Chuyển đổi đầu ra của SegGptImageSegmentationOutput thành các bản đồ phân đoạn. Chỉ hỗ trợ PyTorch.
SegGptModel
lớp transformers.SegGptModel
< source >( config: SegGptConfig )
Tham số
- config (SegGptConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình Seggpt cơ bản, xuất ra các hidden-states thô mà không có bất kỳ head cụ thể nào ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( pixel_values: Tensorprompt_pixel_values: Tensorprompt_masks: Tensorbool_masked_pos: typing.Optional[torch.BoolTensor] = Nonefeature_ensemble: bool | None = Noneembedding_type: str | None = Nonelabels: typing.Optional[torch.FloatTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SegGptEncoderOutput or tuple(torch.FloatTensor)
Tham số
- pixel_values (
torch.Tensorcó hình dạng(batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng SegGptImageProcessor. Xem SegGptImageProcessor.call() để biết chi tiết (processor_classsử dụng SegGptImageProcessor để xử lý hình ảnh). - prompt_pixel_values (
torch.FloatTensorcó hình dạng(batch_size, num_channels, height, width)) — Giá trị pixel của prompt. Có thể lấy giá trị pixel của prompt bằng cách sử dụng AutoImageProcessor. Xem SegGptImageProcessor.call() để biết thêm chi tiết. - prompt_masks (
torch.FloatTensorcó shape(batch_size, num_channels, height, width)) — Mặt nạ prompt. Mặt nạ prompt có thể được lấy bằng cách sử dụng AutoImageProcessor. Xem SegGptImageProcessor.call() để biết chi tiết. - bool_masked_pos (
torch.BoolTensorcó shape(batch_size, num_patches), tuỳ chọn) — Các vị trí bị mask dạng Boolean. Chỉ ra những patch nào bị mask (1) và những patch nào không bị mask (0). - feature_ensemble (
bool, optional) — Boolean indicating whether to use feature ensemble or not. IfTrue, the model will use feature ensemble if we have at least two prompts. IfFalse, the model will not use feature ensemble. This argument should be considered when doing few-shot inference on an input image i.e. more than one prompt for the same image. - embedding_type (
str, tùy chọn) — Loại embedding. Chỉ ra xem prompt là embedding ngữ nghĩa hay embedding instance. Có thể là instance hoặc semantic. - labels (
torch.FloatTensorcó shape(batch_size, num_channels, height, width),optional) — Mặt nạ đúng (ground truth mask) cho các ảnh đầu vào. - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.
Trả về
SegGptEncoderOutput hoặc tuple(torch.FloatTensor)
Một SegGptEncoderOutput hoặc một tuple của
torch.FloatTensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (SegGptConfig) và đầu vào.
Phương thức forward của SegGptModel ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
- last_hidden_state (
torch.FloatTensorcó hình dạng(batch_size, patch_height, patch_width, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình. - hidden_states (
tuple[torch.FloatTensor],optional, được trả về khiconfig.output_hidden_states=True) — Tuple củatorch.FloatTensor(một cho đầu ra của embeddings + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, patch_height, patch_width, hidden_size). - attentions (
tuple[torch.FloatTensor],optional, được trả về khiconfig.output_attentions=True) — Bộ tuple của torch.FloatTensor (một cho mỗi lớp) có hình dạng(batch_size, num_heads, seq_len, seq_len). - intermediate_hidden_states (
tuple[torch.FloatTensor], tùy chọn, được trả về khiconfig.intermediate_hidden_state_indicesđược đặt) — Tuple của cáctorch.FloatTensorcó hình dạng(batch_size, patch_height, patch_width, hidden_size). Mỗi phần tử trong Tuple tương ứng với đầu ra của lớp được chỉ định trongconfig.intermediate_hidden_state_indices. Ngoài ra, mỗi đặc trưng đều đi qua một LayerNorm.
Ví dụ:
>>> from transformers import SegGptImageProcessor, SegGptModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> image_input_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_2.jpg"
>>> image_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1.jpg"
>>> mask_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1_target.png"
>>> with httpx.stream("GET", image_input_url) as response:
... image_input = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", image_prompt_url) as response:
... image_prompt = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", mask_prompt_url) as response:
... mask_prompt = Image.open(BytesIO(response.read())).convert("L")
>>> checkpoint = "BAAI/seggpt-vit-large"
>>> model = SegGptModel.from_pretrained(checkpoint)
>>> image_processor = SegGptImageProcessor.from_pretrained(checkpoint)
>>> inputs = image_processor(images=image_input, prompt_images=image_prompt, prompt_masks=mask_prompt, return_tensors="pt")
>>> outputs = model(**inputs)
>>> list(outputs.last_hidden_state.shape)
[1, 56, 28, 1024]SegGptForImageSegmentation
lớp transformers.SegGptForImageSegmentation
< source >( config: SegGptConfig )
Tham số
- config (SegGptConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số mô hình.
Mô hình SegGpt với một bộ giải mã phía trên cho phân đoạn ảnh một lần.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( pixel_values: Tensorprompt_pixel_values: Tensorprompt_masks: Tensorbool_masked_pos: typing.Optional[torch.BoolTensor] = Nonefeature_ensemble: bool | None = Noneembedding_type: str | None = Nonelabels: typing.Optional[torch.FloatTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SegGptImageSegmentationOutput or tuple(torch.FloatTensor)
Tham số
- pixel_values (
torch.Tensorcó hình dạng(batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng SegGptImageProcessor. Xem SegGptImageProcessor.call() để biết chi tiết (processor_classsử dụng SegGptImageProcessor để xử lý hình ảnh). - prompt_pixel_values (
torch.FloatTensorcó hình dạng(batch_size, num_channels, height, width)) — Giá trị pixel của prompt. Có thể lấy giá trị pixel của prompt bằng cách sử dụng AutoImageProcessor. Xem SegGptImageProcessor.call() để biết thêm chi tiết. - prompt_masks (
torch.FloatTensorcó shape(batch_size, num_channels, height, width)) — Mặt nạ prompt. Mặt nạ prompt có thể được lấy bằng cách sử dụng AutoImageProcessor. Xem SegGptImageProcessor.call() để biết chi tiết. - bool_masked_pos (
torch.BoolTensorcó shape(batch_size, num_patches), tuỳ chọn) — Các vị trí bị mask dạng Boolean. Chỉ ra những patch nào bị mask (1) và những patch nào không bị mask (0). - feature_ensemble (
bool, optional) — Boolean indicating whether to use feature ensemble or not. IfTrue, the model will use feature ensemble if we have at least two prompts. IfFalse, the model will not use feature ensemble. This argument should be considered when doing few-shot inference on an input image i.e. more than one prompt for the same image. - embedding_type (
str, tùy chọn) — Loại embedding. Chỉ ra xem prompt là embedding ngữ nghĩa hay embedding instance. Có thể là instance hoặc semantic. - labels (
torch.FloatTensorcó shape(batch_size, num_channels, height, width),optional) — Mặt nạ đúng (ground truth mask) cho các ảnh đầu vào. - output_attentions (
bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xemattentionstrong phần tensor được trả về để biết thêm chi tiết. - output_hidden_states (
bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xemhidden_statestrong phần tensor trả về để biết thêm chi tiết. - return_dict (
bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.
Trả về
SegGptImageSegmentationOutput hoặc tuple(torch.FloatTensor)
Một SegGptImageSegmentationOutput hoặc một tuple của
torch.FloatTensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (SegGptConfig) và đầu vào.
Phương thức forward của SegGptForImageSegmentation ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
- loss (
torch.FloatTensor, tùy chọn, được trả về khilabelsđược cung cấp) — Giá trị loss. - pred_masks (
torch.FloatTensorcó hình dạng(batch_size, num_channels, height, width)) — Các mặt nạ dự đoán. - hidden_states (
tuple[torch.FloatTensor],optional, được trả về khiconfig.output_hidden_states=True) — Tuple củatorch.FloatTensor(một cho đầu ra của embeddings + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, patch_height, patch_width, hidden_size). - attentions (
tuple[torch.FloatTensor],optional, được trả về khiconfig.output_attentions=True) — Tuple củatorch.FloatTensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, seq_len, seq_len).
Ví dụ:
>>> from transformers import SegGptImageProcessor, SegGptForImageSegmentation
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> image_input_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_2.jpg"
>>> image_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1.jpg"
>>> mask_prompt_url = "https://raw.githubusercontent.com/baaivision/Painter/main/SegGPT/SegGPT_inference/examples/hmbb_1_target.png"
>>> with httpx.stream("GET", image_input_url) as response:
... image_input = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", image_prompt_url) as response:
... image_prompt = Image.open(BytesIO(response.read()))
>>> with httpx.stream("GET", mask_prompt_url) as response:
... mask_prompt = Image.open(BytesIO(response.read())).convert("L")
>>> checkpoint = "BAAI/seggpt-vit-large"
>>> model = SegGptForImageSegmentation.from_pretrained(checkpoint)
>>> image_processor = SegGptImageProcessor.from_pretrained(checkpoint)
>>> inputs = image_processor(images=image_input, prompt_images=image_prompt, prompt_masks=mask_prompt, return_tensors="pt")
>>> outputs = model(**inputs)
>>> result = image_processor.post_process_semantic_segmentation(outputs, target_sizes=[(image_input.height, image_input.width)])[0]
>>> print(list(result.shape))
[170, 297]