Transformers 文档
ViTMatte
并获得增强的文档体验
开始使用
该模型于 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 进行了评估,结果显示我们的方法实现了最先进的性能,并大幅优于先前的抠图研究。
ViTMatte 高层概述。取自 原始论文。资源
一份官方 Hugging Face 和社区(由 🌎 标记)资源列表,旨在帮助您上手使用 ViTMatte。
- 有关使用 VitMatteForImageMatting 进行推理(包括背景替换)的演示笔记本,可以在 这里 找到。
该模型需要输入图像和三元图(trimap,拼接在一起)。为此,请使用
ViTMatteImageProcessor。
VitMatteConfig
class transformers.VitMatteConfig
< source >( 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.configVitMatteImageProcessor
class transformers.VitMatteImageProcessor
< source >( **kwargs: typing_extensions.Unpack[transformers.models.vitmatte.image_processing_vitmatte.VitMatteImageProcessorKwargs] )
参数
- size_divisor (
int, kwargs, 可选, 默认为self.size_divisor) — 图像的宽度和高度将被填充,以使其能被此数字整除。 - **kwargs (ImagesKwargs, 可选) — 额外的图像预处理选项。模型特定的 kwargs 列在上面;有关支持的参数的完整列表,请参阅 TypedDict 类。
构造一个 VitMatteImageProcessor 图像处理器。
preprocess
< source >( 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 (
str或 TensorType, 可选) — 如果设置为'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
< source >( **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
< source >( 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 (
str或 TensorType, 可选) — 如果设置为'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
< source >( 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
< source >( 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])