Transformers文档

SegGPT

Hugging Face's logo
加入Hugging Face社区

并访问增强文档体验

开始使用

SegGPT

概述

SegGPT模型由Wang Xinlong、Zhang Xiaosong、Cao Yue、Wang Wen、Shen Chunhua、Huang Tiejun在《SegGPT: Segmenting Everything In Context》中提出。[链接](https://arxiv.org/abs/2304.03284)。SegGPT使用一个仅解密的Transformer,可以从输入图像、提示图像及其对应的提示掩码生成分割掩码。该模型在COCO-20上达到了56.1 mIoU的显著单次结果,在FSS-1000上达到了85.6 mIoU。

该论文的摘要如下:

我们提出了一种名为SegGPT的通用模型,用于在上下文中对所有内容进行分割。我们将各种分割任务统一到一个通用情境学习框架中,通过将它们转换为相同的图像格式来容纳不同类型的分割数据。SegGPT的训练被表述为一个情境着色问题,每个数据样本都有一个随机的颜色映射。目标是完成多样化的任务,而不是依赖于特定的颜色。在训练后,SegGPT可以通过情境推理在图像或视频中执行任意分割任务,例如物体实例、事物、部分、轮廓和文本。SegGPT在各种任务上进行了评估,包括少量样本语义分割、视频物体分割、语义分割和全景分割。我们的结果在分割领域内和领域外都显示出了强大的能力。

提示

  • 可以使用SegGptImageProcessor来准备图像输入、提示和掩模到模型中。
  • 可以使用分割映射或RGB图像作为提示掩模。如果使用后者,请确保在方法中将do_convert_rgb=False
  • 在使用SegGptImageProcessor进行预处理和后处理时,如果使用segmentation_maps(不考虑背景),非常建议传递num_labels
  • 当使用SegGptForImageSegmentation进行推理时,如果您的batch_size大于1,您可以通过在前进方法中传递feature_ensemble=True跨图像使用特征集成。

以下是使用模型进行一次语义分割的说明:

import torch
from datasets import load_dataset
from transformers import SegGptImageProcessor, SegGptForImageSegmentation

checkpoint = "BAAI/seggpt-vit-large"
image_processor = SegGptImageProcessor.from_pretrained(checkpoint)
model = SegGptForImageSegmentation.from_pretrained(checkpoint)

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]

此模型由EduardoPacheco提供。原始代码可以在此处找到。

SegGptConfig

transformers.SegGptConfig

< >

( hidden_size = 1024 num_hidden_layers = 24 num_attention_heads = 16 hidden_act = 'gelu' hidden_dropout_prob = 0.0 initializer_range = 0.02 layer_norm_eps = 1e-06 image_size = [896, 448] patch_size = 16 num_channels = 3 qkv_bias = True mlp_dim = None drop_path_rate = 0.1 pretrain_image_size = 224 decoder_hidden_size = 64 use_relative_position_embeddings = True merge_index = 2 intermediate_hidden_state_indices = [5, 11, 17, 23] beta = 0.01 **kwargs )

参数

  • hidden_size (int, 可选,默认值 1024) — 编码器层和池化层特征维数。
  • num_hidden_layers (int, 可选,默认为24) — Transformer编码器中的隐藏层数量。
  • num_attention_heads (int, 可选,默认为16) — Transformer编码器中每个注意层注意头数量。
  • hidden_act (strfunction可选,默认为"gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,支持"gelu""relu""selu""gelu_new"
  • hidden_dropout_prob (float, 可选, 默认为 0.0) — 所有嵌入、编码器和池化层中所有全连接层的 dropout 概率。
  • initializer_range (float, 可选, 默认为 0.02) — 所有权重矩阵初始化时使用的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-06) — 层归一化层使用的 epsilon。
  • image_size ([int], 可选, 默认为 [896, 448]) — 每张图像的大小(分辨率)。
  • patch_size (int, 可选, 默认为 16) — 每个补丁的大小(分辨率)。
  • num_channels (int, 可选, 默认为 3) — 输入通道的数量。
  • qkv_bias (bool, 可选, 默认为 True) — 是否向查询、键和值中添加偏置。
  • mlp_dim (int, 可选) — Transformer 编码器中 MLP 层的维度。如果未设置,默认为 hidden_size * 4。
  • drop_path_ratefloat可选,默认为0.1)— 丢弃路径层的丢弃率。
  • pretrain_image_sizeint可选,默认为224)— 绝对位置嵌入的预训练大小。
  • decoder_hidden_sizeint可选,默认为64)— 解码器的隐藏层大小。
  • use_relative_position_embeddings (bool, 可选,默认为 True) — 是否在注意力层中使用相对位置嵌入。
  • merge_index (int, 可选,默认为 2) — 合并嵌入的编码器层索引。
  • intermediate_hidden_state_indices (List[int], 可选,默认为 [5, 11, 17, 23]) — 存储为解码器特征的编码器层索引。
  • beta (float, 可选,默认为 0.01) — SegGptLoss(平滑一阶损失)的正则化系数。

这是一个配置类,用于存储 SegGptModel 的配置。它根据指定的参数实例化 SegGPT 模型,定义模型架构。使用默认配置实例化配置类将生成与 SegGPT 的 BAAI/seggpt-vit-large 架构相似的配置。

配置对象继承自 PretrainedConfig 并可用于控制模型输出。更多信息请参阅 PretrainedConfig 文档。

示例

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

SegGptImageProcessor

class transformers.SegGptImageProcessor

< >

( do_resize: bool = True size: Optional = None resample: Resampling = <Resampling.BICUBIC: 3> do_rescale: bool = True rescale_factor: Union = 0.00392156862745098 do_normalize: bool = True image_mean: Union = None image_std: Union = None do_convert_rgb: bool = True **kwargs )

参数

  • do_resize (布尔值,可选,默认为 True) — 是否将图像的(高度,宽度)尺寸调整为指定的(size["height"], size["width"])。可以由 preprocess 方法中的 do_resize 参数重写。
  • size (字典,可选,默认为 {"height" -- 448, "width": 448}): 调整大小后的输出图像尺寸。可以由 preprocess 方法中的 size 参数重写。
  • resamplePILImageResampling,可选,默认为 Resampling.BICUBIC) — 在调整图像大小时使用的重采样过滤器。可以由 preprocess 方法中的 resample 参数重写。
  • do_rescalebool可选,默认为True)——是否通过指定的比例rescale_factor重置图像。可由preprocess方法中的do_rescale参数覆盖。
  • rescale_factorintfloat可选,默认为1/255)——当重置图像时使用的比例。可由preprocess方法中的rescale_factor参数覆盖。
  • do_normalizebool可选,默认为True)——是否归一化图像。可由preprocess方法中的do_normalize参数覆盖。
  • image_mean (floatList[float]可选,默认为 IMAGENET_DEFAULT_MEAN) — 如果对图像进行归一化,则使用的平均值。这是一个与图像通道数相同的长度为浮点数或浮点数列表。可以被 preprocess 方法中的 image_mean 参数覆盖。
  • image_std (floatList[float]可选,默认为 IMAGENET_DEFAULT_STD) — 如果对图像进行归一化,则使用标准差。这是一个与图像通道数相同的长度为浮点数或浮点数列表。可以被 preprocess 方法中的 image_std 参数覆盖。
  • do_convert_rgb (bool可选,默认为 True) — 是否将提示掩码转换为 RGB 格式。可以被 preprocess 方法中的 do_convert_rgb 参数覆盖。

构建 SegGpt 图像处理器。

preprocess

< >

( images: 联合 = None prompt_images: 联合 = None prompt_masks: 联合 = None do_resize: 可选 = None size: 字典 = None resample: 采样 = None do_rescale: 可选 = None rescale_factor: 可选 = None do_normalize: 可选 = None image_mean: 联合 = None image_std: 联合 = None do_convert_rgb: 可选 = None num_labels: 可选 = None return_tensors: 联合 = None data_format: 联合 = <ChannelDimension.FIRST: 'channels_first'> input_data_format: 联合 = None **kwargs )

参数

  • images (ImageInput) —— 预处理图像。期望单张或多张图像,像素值介于0到255之间。如果传递像素值介于0到1之间的图像,设置do_rescale=False
  • prompt_images (ImageInput) —— 预处理提示图像。期望单张或多张图像,像素值介于0到255之间。如果传递像素值介于0到1之间的图像,设置do_rescale=False
  • prompt_masks (ImageInput) —— 从提示图像中预处理提示掩码,在预处理输出中指定提示掩码值。可以是以分割图(无通道)或RGB图像的格式。如果是RGB图像格式,应将do_convert_rgb设置为False。如果是分割图格式,建议指定num_labels以构建调色板,将单通道提示掩码映射到3通道RGB。如果未指定num_labels,则提示掩码将在通道维度上重复。
  • do_resize (bool, 可选,默认为 self.do_resize) — 是否调整图像大小。
  • size (Dict[str, int], 可选,默认为 self.size) — 指定调整大小后输出图像大小的字典,格式为 {"height": h, "width": w}
  • resample (PILImageResampling 过滤器,可选,默认为 self.resample) — 如果调整图像大小则使用的 PILImageResampling 过滤器,例如 PILImageResampling.BICUBIC。仅在 do_resize 设置为 True 时有效。不会应用于提示掩码,因为它使用最近邻方法进行缩放。
  • do_rescale (bool, 可选,默认为 self.do_rescale) — 是否对图像值进行缩放,范围在 [0 - 1] 之间。
  • rescale_factor (float, 可选,默认为self.rescale_factor) — 如果do_rescale设置为True,则重新缩放图像的缩放因子。
  • do_normalize (bool, 可选,默认为self.do_normalize) — 是否规范化图像。
  • image_mean (floatList[float], 可选,默认为self.image_mean) — 如果do_normalize设置为True,则使用的图像均值。
  • image_std (floatList[float], 可选,默认为self.image_std) — 如果do_normalize设置为True,则使用的图像标准差。
  • do_convert_rgb (bool, 可选, 默认 self.do_convert_rgb) — 是否将提示蒙版转换为RGB格式。如果指定了 num_labels,将构建一个调色板,将提示蒙版从单通道映射到3通道RGB。如果没有设置,提示蒙版将在通道维度上重复。如果提示蒙版已经是RGB格式,则必须设置为 False。num_labels — (int, 可选):分割任务中的类别数(不包括背景)。如果指定,将构建调色板,假设 class_idx 0 是背景,将提示蒙版从无通道的纯分割映射到3通道RGB。不指定此参数将导致提示蒙版以原样传递(如果 do_convert_rgb 为 false)或在通道维度上重复。
  • return_tensors (strTensorType, 可选) — 要返回的 Tensor 类型。可以是以下之一:
    • 未设置:返回一个 np.ndarray 列表。
    • TensorType.TENSORFLOW'tf':返回类型为 tf.Tensor 的批次。
    • TensorType.PYTORCH'pt':返回类型为 torch.Tensor 的批次。
    • TensorType.NUMPY'np':返回类型为 np.ndarray 的批次。
    • TensorType.JAX'jax':返回类型为 jax.numpy.ndarray 的批次。
  • data_format (ChannelDimensionstr可选,默认为 ChannelDimension.FIRST) — 输出图像的通道维度格式。可以取以下值之一:
    • "channels_first"ChannelDimension.FIRST:图像格式为 (num_channels, height, width)。
    • "channels_last"ChannelDimension.LAST:图像格式为 (height, width, num_channels)。
    • 未设置:使用输入图像的通道维度格式。
  • input_data_format (ChannelDimensionstr可选) — 输入图像的通道维度格式。如果未设置,将根据输入图像推断通道维度格式。可以取以下值之一:
    • "channels_first"ChannelDimension.FIRST:图像格式为 (num_channels, height, width)。
    • "channels_last"ChannelDimension.LAST:图像格式为 (height, width, num_channels)。
    • "none"ChannelDimension.NONE:图像格式为 (height, width)。

预处理图像或图像批处理。

post_process_semantic_segmentation

< >

( outputs target_sizes: 可选 = None num_labels: 可选 = None ) semantic_segmentation

参数

  • outputs (SegGptImageSegmentationOutput) — 模型的原始输出。
  • target_sizes (列表[int, int], 可选) — 长度为 (batch_size) 的列表,其中每个列表项 (元组[int, int]) 对应于每个预测的所需最终大小(高度,宽度)。如果设置为 None,则不会进行缩放。
  • num_labels (int, 可选) — 目标任务中类别的数量(排除背景)。如果指定,将构建一个调色板,假设类 idx 0 是背景,用于将预测掩模从 RGB 值映射到类索引。此值应与预处理输入时使用的值相同。

返回值:

semantic_segmentation

List[torch.Tensor] 长度为 batch_size,其中每个元素是与 target_sizes 条目相对应的语义分割图(如果指定了 target_sizes)。每个 torch.Tensor 的条目对应于一个语义类别 ID。

SegGptImageSegmentationOutput 的输出生成分割图。仅支持 PyTorch。

SegGptModel

class transformers.SegGptModel

< >

( config: SegGptConfig )

参数

  • config (SegGptConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化时不加载模型相关的权重,仅加载配置。有关加载模型权重的信息,请参阅 from_pretrained() 方法。

无任何特定头部,仅输出原始隐藏状态的 SegGpt 模型。这是一个 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,有关通用用途和行为,请参考 PyTorch 文档。

forward

< >

( pixel_values: Tensor prompt_pixel_values: Tensor prompt_masks: Tensor bool_masked_pos: Optional = None feature_ensemble: Optional = None embedding_type: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) transformers.models.seggpt.modeling_seggpt.SegGptEncoderOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 SegGptImageProcessor.call()
  • prompt_pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 提示像素值。提示像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 SegGptImageProcessor.call()
  • prompt_masks (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 提示掩码。提示掩码可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 SegGptImageProcessor.call()
  • bool_masked_pos (torch.BoolTensor of shape (batch_size, num_patches), 可选) — 布尔掩码位置。指示哪些块被掩码(1)以及哪些没有被掩码(0)。
  • feature_ensemble(《布尔值》,可选)— 表示是否使用特征集成。如果为 True,当至少有两个提示时,模型将使用特征集成。如果为 False,则模型将不使用特征集成。当对输入图像进行少样本推理(即对同一图像多个提示)时,应考虑此参数。
  • embedding_type(《字符串》,可选)— 嵌入类型。指提示是语义嵌入还是实例嵌入。可以是实例或语义。
  • output_attentions(《布尔值》,可选)— 是否返回所有注意力层的注意力张量。详细信息请参见返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。详细信息请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是普通的元组。
  • labels (torch.FloatTensor 形状为 (batch_size, num_channels, height, width), 可选) — 输入图像的地面实况掩码。

返回值:

transformers.models.seggpt.modeling_seggpt.SegGptEncoderOutputtuple(torch.FloatTensor)

equals transformers.models.seggpt.modeling_seggpt.SegGptEncoderOutput 或一个 torch.FloatTensor 的元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),包含各种元素,这些元素取决于配置(SegGptConfig)和输入。

  • last_hidden_state (torch.FloatTensor 形状为 (batch_size, patch_height, patch_width, hidden_size)) — 模型最后一层输出处的隐藏状态序列。
  • hidden_states (Tuple[torch.FloatTensor], 可选,当 config.output_hidden_states=True 时返回) — 包含 torch.FloatTensor 的元组(一个是嵌入层的输出,一个是每层输出),形状为 (batch_size, patch_height, patch_width, hidden_size)
  • 注意 (Tuple[torch.FloatTensor], optional, 当 config.output_attentions=True 时返回) — 一个 torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, seq_len, seq_len)
  • intermediate_hidden_states (Tuple[torch.FloatTensor], optional,当 config.intermediate_hidden_state_indices 被设置时返回) — 形状为 (batch_size, patch_height, patch_width, hidden_size)torch.FloatTensor 的元组。元组中的每个元素对应于 config.intermediate_hidden_state_indices 中指定的层的输出。另外,每个特征都通过了 LayerNorm。

SegGptModel 的前向方法重写了 __call__ 特殊方法。

虽然在函数内需要定义前向传递的配方,但应该随后调用 Module 实例,而不是这个,因为前者负责运行预和后处理步骤,而后者默默地忽略了它们。

示例

>>> from transformers import SegGptImageProcessor, SegGptModel
>>> from PIL import Image
>>> import requests

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

>>> image_input = Image.open(requests.get(image_input_url, stream=True).raw)
>>> image_prompt = Image.open(requests.get(image_prompt_url, stream=True).raw)
>>> mask_prompt = Image.open(requests.get(mask_prompt_url, stream=True).raw).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

transformers.SegGptForImageSegmentation

< >

( config: SegGptConfig )

参数

  • config (SegGptConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法来加载模型权重。

SegGpt模型顶部具有解码器,适用于单次图像分割。该模型是PyTorch torch.nn.Module 的子类。将其视为常规的PyTorch模块,并参考PyTorch文档以获取所有有关通用使用和行为的问题。

forward

< >

( pixel_values: 张量 prompt_pixel_values: 张量 prompt_masks: 张量 bool_masked_pos: 可选 = None feature_ensemble: 可选 = None embedding_type: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None ) transformers.models.seggpt.modeling_seggpt.SegGptImageSegmentationOutputtuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 SegGptImageProcessor.call()
  • prompt_pixel_values (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 提示像素值。提示像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 SegGptImageProcessor.call()
  • prompt_masks (torch.FloatTensor of shape (batch_size, num_channels, height, width)) — 提示掩码。提示掩码可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 SegGptImageProcessor.call()
  • bool_masked_pos (torch.BoolTensor of shape (batch_size, num_patches), optional) — Boolean masked positions. Indicates which patches are masked (1) and which aren’t (0).
  • feature_ensemble (bool, optional) — Boolean indicating whether to use feature ensemble or not. If True, the model will use feature ensemble if we have at least two prompts. If False, 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, optional) — Embedding type. Indicates whether the prompt is a semantic or instance embedding. Can be either instance or semantic.
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dict (bool, 可选) — 是否返回一个ModelOutput而不是一个普通的元组。
  • labels (torch.FloatTensor形状为(batch_size, num_channels, height, width), 可选) — 输入图像的地面实况掩码。

返回值:

transformers.models.seggpt.modeling_seggpt.SegGptImageSegmentationOutputtuple(torch.FloatTensor)

一个 transformers.models.seggpt.modeling_seggpt.SegGptImageSegmentationOutput 或一个包含各种元素的 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False),这些元素取决于配置(SegGptConfig)和输入。

  • 损失(《torch.FloatTensor》,可选,当提供 labels 时返回)——损失值。
  • 预测掩码(《torch.FloatTensor》尺寸为 (batch_size, num_channels, height, width))——预测掩码。
  • hidden_states (Tuple[torch.FloatTensor], 可选,当 config.output_hidden_states=True 时返回) — 包含 torch.FloatTensor 的元组(一个是嵌入层的输出,一个是每层输出),形状为 (batch_size, patch_height, patch_width, hidden_size)
  • 注意力(《Tuple[torch.FloatTensor]》,可选,当 config.output_attentions=True 时返回)——一个 torch.FloatTensor 元组(每个层一个),尺寸为 (batch_size, num_heads, seq_len, seq_len)

SegGptForImageSegmentation 的前向方法覆盖了 __call__ 特殊方法。

虽然在函数内需要定义前向传递的配方,但应该随后调用 Module 实例,而不是这个,因为前者负责运行预和后处理步骤,而后者默默地忽略了它们。

示例

>>> from transformers import SegGptImageProcessor, SegGptForImageSegmentation
>>> from PIL import Image
>>> import requests

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

>>> image_input = Image.open(requests.get(image_input_url, stream=True).raw)
>>> image_prompt = Image.open(requests.get(image_prompt_url, stream=True).raw)
>>> mask_prompt = Image.open(requests.get(mask_prompt_url, stream=True).raw).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.size[::-1]])[0]
>>> print(list(result.shape))
[170, 297]
< > GitHub 更新