Transformers 文档

ViTMatte

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

该模型于 2023 年 5 月 24 日在 HF 论文中发布,并于 2023 年 9 月 19 日贡献给 Hugging Face Transformers。

ViTMatte

概述

ViTMatte 模型由 Jingfeng Yao, Xinggang Wang, Shusheng Yang, Baoyuan Wang 在 Boosting Image Matting with Pretrained Plain Vision Transformers 一文中提出。ViTMatte 利用原生 视觉 Transformer (Vision Transformers) 来执行图像抠图任务,即从图像和视频中准确提取前景对象的过程。

论文摘要如下:

最近,原生视觉 Transformer (ViTs) 凭借其强大的建模能力和大规模预训练,在各种计算机视觉任务中表现出色。然而,它们尚未攻克图像抠图问题。我们假设图像抠图也可以通过 ViTs 得到增强,并提出了一个名为 ViTMatte 的高效且稳健的基于 ViT 的抠图系统。我们的方法利用了 (i) 结合卷积颈部(convolution neck)的混合注意力机制,帮助 ViTs 在抠图任务中实现极佳的性能-计算权衡;(ii) 此外,我们引入了细节捕捉模块,该模块仅由简单的轻量级卷积组成,用于补充抠图所需的细节信息。据我们所知,ViTMatte 是首个通过简洁适配,释放 ViT 在图像抠图领域潜力的工作。它从 ViT 继承了许多优越的特性,包括各种预训练策略、简洁的架构设计和灵活的推理策略。我们在图像抠图最常用的基准测试集 Composition-1k 和 Distinctions-646 上对 ViTMatte 进行了评估,结果显示我们的方法实现了最先进的性能,并大幅优于先前的抠图研究。

该模型由 nielsr 贡献。原始代码可以在 这里 找到。

drawing ViTMatte 高层概述。取自 原始论文。

资源

一份官方 Hugging Face 和社区(由 🌎 标记)资源列表,旨在帮助您上手使用 ViTMatte。

该模型需要输入图像和三元图(trimap,拼接在一起)。为此,请使用 ViTMatteImageProcessor

VitMatteConfig

class transformers.VitMatteConfig

< >

( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = None chunk_size_feed_forward: int = 0 is_encoder_decoder: bool = False id2label: dict[int, str] | dict[str, str] | None = None label2id: dict[str, int] | dict[str, str] | None = None problem_type: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None hidden_size: int = 384 batch_norm_eps: float = 1e-05 initializer_range: float = 0.02 convstream_hidden_sizes: list[int] | tuple[int, ...] = (48, 96, 192) fusion_hidden_sizes: list[int] | tuple[int, ...] = (256, 128, 64, 32) )

参数

  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], 可选) — 骨干模型(backbone model)的配置。
  • hidden_size (int, 可选, 默认为 384) — 隐藏层表示的维度。
  • batch_norm_eps (float, 可选, 默认为 1e-05) — 批归一化(batch norm)层使用的 epsilon 值。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器(truncated_normal_initializer)的标准差。
  • convstream_hidden_sizes (list[int], 可选, 默认为 [48, 96, 192]) — ConvStream 模块的输出通道数。
  • fusion_hidden_sizes (list[int], 可选, 默认为 [256, 128, 64, 32]) — 融合块(Fusion blocks)的输出通道数。

这是用于存储 VitmatteModel 配置的配置类。它根据指定的参数实例化一个 Vitmatte 模型,从而定义模型架构。使用默认值实例化配置将产生与 hustvl/vitmatte-small-composition-1k 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。

示例

>>> from transformers import VitMatteConfig, VitMatteForImageMatting

>>> # Initializing a ViTMatte hustvl/vitmatte-small-composition-1k style configuration
>>> configuration = VitMatteConfig()

>>> # Initializing a model (with random weights) from the hustvl/vitmatte-small-composition-1k style configuration
>>> model = VitMatteForImageMatting(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

VitMatteImageProcessor

class transformers.VitMatteImageProcessor

< >

( **kwargs: typing_extensions.Unpack[transformers.models.vitmatte.image_processing_vitmatte.VitMatteImageProcessorKwargs] )

参数

  • size_divisor (int, kwargs, 可选, 默认为 self.size_divisor) — 图像的宽度和高度将被填充,以使其能被此数字整除。
  • **kwargs (ImagesKwargs, 可选) — 额外的图像预处理选项。模型特定的 kwargs 列在上面;有关支持的参数的完整列表,请参阅 TypedDict 类。

构造一个 VitMatteImageProcessor 图像处理器。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] trimaps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] **kwargs: typing_extensions.Unpack[transformers.models.vitmatte.image_processing_vitmatte.VitMatteImageProcessorKwargs] ) ~image_processing_base.BatchFeature

参数

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 要预处理的图像。期望单个图像或一批图像,像素值范围为 0 到 255。如果传入像素值在 0 到 1 之间的图像,请设置 do_rescale=False
  • trimaps (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 要预处理的三元图(trimaps)。
  • size_divisor (int, kwargs, 可选, 默认为 self.size_divisor) — 图像的宽度和高度将被填充,以使其能被此数字整除。
  • return_tensors (strTensorType, 可选) — 如果设置为 'pt',则返回堆叠的张量,否则返回张量列表。
  • **kwargs (ImagesKwargs, 可选) — 额外的图像预处理选项。模型特定的 kwargs 列在上面;有关支持的参数的完整列表,请参阅 TypedDict 类。

返回

~image_processing_base.BatchFeature

  • data (dict) — 由 call 方法返回的列表/数组/张量字典(“pixel_values”等)。
  • tensor_type (Union[None, str, TensorType], optional) — 您可以在此处提供 tensor_type 以在初始化时将整数列表转换为 PyTorch/Numpy 张量。

VitMatteImageProcessorPil

class transformers.VitMatteImageProcessorPil

< >

( **kwargs: typing_extensions.Unpack[transformers.models.vitmatte.image_processing_pil_vitmatte.VitMatteImageProcessorKwargs] )

参数

  • size_divisor (int, kwargs, 可选, 默认为 self.size_divisor) — 图像的宽度和高度将被填充,以使其能被此数字整除。
  • **kwargs (ImagesKwargs, 可选) — 额外的图像预处理选项。模型特定的 kwargs 列在上面;有关支持的参数的完整列表,请参阅 TypedDict 类。

构造一个 VitMatteImageProcessor 图像处理器。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] trimaps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] **kwargs: typing_extensions.Unpack[transformers.models.vitmatte.image_processing_pil_vitmatte.VitMatteImageProcessorKwargs] ) ~image_processing_base.BatchFeature

参数

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 要预处理的图像。期望单个图像或一批图像,像素值范围为 0 到 255。如果传入像素值在 0 到 1 之间的图像,请设置 do_rescale=False
  • trimaps (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 要预处理的三元图(trimaps)。
  • size_divisor (int, kwargs, 可选, 默认为 self.size_divisor) — 图像的宽度和高度将被填充,以使其能被此数字整除。
  • return_tensors (strTensorType, 可选) — 如果设置为 'pt',则返回堆叠的张量,否则返回张量列表。
  • **kwargs (ImagesKwargs, 可选) — 额外的图像预处理选项。模型特定的 kwargs 列在上面;有关支持的参数的完整列表,请参阅 TypedDict 类。

返回

~image_processing_base.BatchFeature

  • data (dict) — 由 call 方法返回的列表/数组/张量字典(“pixel_values”等)。
  • tensor_type (Union[None, str, TensorType], optional) — 您可以在此处提供 tensor_type 以在初始化时将整数列表转换为 PyTorch/Numpy 张量。

VitMatteForImageMatting

class transformers.VitMatteForImageMatting

< >

( config model_args: ~utils.generic.ModelArgs | None = None adapter_args: ~utils.generic.AdapterArgs | None = None lora_args: ~utils.generic.LoRAArgs | None = None tokenizer_args: ~utils.generic.TokenizerArgs | None = None dataset_args: ~utils.generic.DatasetArgs | None = None data_args: ~utils.generic.DataArgs | None = None training_args: ~utils.generic.TrainingArgs | None = None generation_args: ~utils.generic.GenerationArgs | None = None vision_tower_args: ~utils.generic.VisionTowerArgs | None = None qlora_args: ~utils.generic.QLoRAArgs | None = None vision_tower_template_args: ~utils.generic.VisionTowerTemplateArgs | None = None video_tower_args: ~utils.generic.VideoTowerArgs | None = None vision_config: ~utils.generic.VisionConfig | None = None video_config: ~utils.generic.VideoConfig | None = None load_dataset: bool | None = None load_data_collator: bool | None = None load_processor: bool | None = None load_lora_adapter: bool | None = None load_adapter: bool | None = None load_qlora_adapter: bool | None = None **kwargs: typing_extensions.Unpack[transformers.modeling_utils.PreTrainedModelKwargs] )

参数

  • config (VitMatteForImageMatting) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。

ViTMatte 框架利用任何视觉骨干网络,例如用于 ADE20k、CityScapes 等任务。

该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( pixel_values: torch.Tensor | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None labels: torch.Tensor | None = None return_dict: bool | None = None **kwargs )

参数

  • pixel_values (torch.Tensor,形状为 (batch_size, num_channels, image_size, image_size)可选) — 对应于输入图像的张量。像素值可以使用 VitMatteImageProcessor 获取。详细信息请参阅 VitMatteImageProcessor.__call__() (processor_class 使用 VitMatteImageProcessor 来处理图像)。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的 hidden_states
  • labels (torch.LongTensor,形状为 (batch_size, height, width)可选) — 用于计算损失的真实值(Ground truth)图像抠图。
  • return_dict (bool可选) — 是否返回一个 ModelOutput 而不是纯元组。

VitMatteForImageMatting 的 forward 方法,覆盖了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from transformers import VitMatteImageProcessor, VitMatteForImageMatting
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub import hf_hub_download

>>> processor = VitMatteImageProcessor.from_pretrained("hustvl/vitmatte-small-composition-1k")
>>> model = VitMatteForImageMatting.from_pretrained("hustvl/vitmatte-small-composition-1k")

>>> filepath = hf_hub_download(
...     repo_id="hf-internal-testing/image-matting-fixtures", filename="image.png", repo_type="dataset"
... )
>>> image = Image.open(filepath).convert("RGB")
>>> filepath = hf_hub_download(
...     repo_id="hf-internal-testing/image-matting-fixtures", filename="trimap.png", repo_type="dataset"
... )
>>> trimap = Image.open(filepath).convert("L")

>>> # prepare image + trimap for the model
>>> inputs = processor(images=image, trimaps=trimap, return_tensors="pt")

>>> with torch.no_grad():
...     alphas = model(**inputs).alphas
>>> print(alphas.shape)
torch.Size([1, 1, 640, 960])
在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.