Transformers 文档

TextNet

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

TextNet

PyTorch

概述

TextNet 模型由 Zhe Chen, Jiahao Wang, Wenhai Wang, Guo Chen, Enze Xie, Ping Luo, Tong Lu 在 FAST: Faster Arbitrarily-Shaped Text Detector with Minimalist Kernel Representation 中提出。TextNet 是一种用于文本检测任务的视觉骨干网络。它是通过神经架构搜索(NAS)在骨干网络上,以文本检测任务作为奖励函数(为文本检测提供强大的特征)而获得的。

drawing 作为 FAST 的一部分的 TextNet 骨干网络。摘自原始论文。

此模型由 Raghavanjadechogharinielsr 贡献。

使用技巧

TextNet 主要用作文本检测架构搜索的骨干网络。骨干网络的每个阶段都由步长为 2 的卷积和可搜索块组成。具体来说,我们提供了一个层级候选集,定义为 {conv3×3, conv1×3, conv3×1, identity}。由于 1×3 和 3×1 卷积具有非对称核和定向结构先验,它们可能有助于捕捉极高长宽比和旋转文本行的特征。

TextNet 是 Fast 的骨干网络,但也可以用作高效的文本/图像分类器,我们添加了一个 `TextNetForImageClassification`,以便人们可以在预训练的 TextNet 权重之上训练图像分类器

TextNetConfig

class transformers.TextNetConfig

< >

( stem_kernel_size = 3 stem_stride = 2 stem_num_channels = 3 stem_out_channels = 64 stem_act_func = 'relu' image_size = [640, 640] conv_layer_kernel_sizes = None conv_layer_strides = None hidden_sizes = [64, 64, 128, 256, 512] batch_norm_eps = 1e-05 initializer_range = 0.02 out_features = None out_indices = None **kwargs )

参数

  • stem_kernel_size (int, optional, defaults to 3) — 初始卷积层的核大小。
  • stem_stride (int, optional, defaults to 2) — 初始卷积层的步长。
  • stem_num_channels (int, optional, defaults to 3) — 初始卷积层输入的通道数。
  • stem_out_channels (int, optional, defaults to 64) — 初始卷积层输出的通道数。
  • stem_act_func (str, optional, defaults to "relu") — 初始卷积层的激活函数。
  • image_size (tuple[int, int], optional, defaults to [640, 640]) — 每张图片的尺寸(分辨率)。
  • conv_layer_kernel_sizes (list[list[list[int]]], optional) — 阶段性核大小列表。如果为 None,则默认为:[[[3, 3], [3, 3], [3, 3]], [[3, 3], [1, 3], [3, 3], [3, 1]], [[3, 3], [3, 3], [3, 1], [1, 3]], [[3, 3], [3, 1], [1, 3], [3, 3]]]
  • conv_layer_strides (list[list[int]], optional) — 阶段性步长列表。如果为 None,则默认为:[[1, 2, 1], [2, 1, 1, 1], [2, 1, 1, 1], [2, 1, 1, 1]]
  • hidden_sizes (list[int], optional, defaults to [64, 64, 128, 256, 512]) — 每个阶段的维度(隐藏大小)。
  • batch_norm_eps (float, optional, defaults to 1e-05) — 批归一化层使用的 epsilon。
  • initializer_range (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • out_features (list[str], optional) — 如果用作骨干网络,则输出特征列表。可以是 "stem""stage1""stage2" 等(取决于模型有多少个阶段)。如果未设置且 out_indices 已设置,则默认为相应的阶段。如果两者都未设置,则默认为最后一个阶段。
  • out_indices (list[int], optional) — 如果用作骨干网络,则输出特征的索引列表。可以是 0、1、2 等(取决于模型有多少个阶段)。如果未设置且 out_features 已设置,则默认为相应的阶段。如果两者都未设置,则默认为最后一个阶段。

这是用于存储 TextNextModel 配置的配置类。它用于根据指定参数实例化 TextNext 模型,定义模型架构。使用默认值实例化配置将生成类似于 czczup/textnet-base 的配置。配置对象继承自 PretrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PretrainedConfig 的文档。

示例

>>> from transformers import TextNetConfig, TextNetBackbone

>>> # Initializing a TextNetConfig
>>> configuration = TextNetConfig()

>>> # Initializing a model (with random weights)
>>> model = TextNetBackbone(configuration)

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

TextNetImageProcessor

class transformers.TextNetImageProcessor

< >

( do_resize: bool = True size: typing.Optional[dict[str, int]] = None size_divisor: int = 32 resample: Resampling = <Resampling.BILINEAR: 2> do_center_crop: bool = False crop_size: typing.Optional[dict[str, int]] = None do_rescale: bool = True rescale_factor: typing.Union[int, float] = 0.00392156862745098 do_normalize: bool = True image_mean: typing.Union[float, list[float], NoneType] = [0.485, 0.456, 0.406] image_std: typing.Union[float, list[float], NoneType] = [0.229, 0.224, 0.225] do_convert_rgb: bool = True **kwargs )

参数

  • do_resize (bool, optional, defaults to True) — 是否将图像的(高度,宽度)尺寸调整为指定的 size。可以通过 preprocess 方法中的 do_resize 覆盖。
  • size (dict[str, int] optional, defaults to {"shortest_edge" -- 640}):调整大小后图像的大小。图像的最短边调整为 size[“shortest_edge”],最长边调整以保持输入长宽比。可以通过 preprocess 方法中的 size 覆盖。
  • size_divisor (int, optional, defaults to 32) — 确保调整大小后的高度和宽度四舍五入为此值的倍数。
  • resample (PILImageResampling, optional, defaults to Resampling.BILINEAR) — 如果调整图像大小,使用的重采样滤波器。可以通过 preprocess 方法中的 resample 覆盖。
  • do_center_crop (bool, optional, defaults to False) — 是否将图像中心裁剪为指定的 crop_size。可以通过 preprocess 方法中的 do_center_crop 覆盖。
  • crop_size (dict[str, int] optional, defaults to 224) — 应用 center_crop 后输出图像的大小。可以通过 preprocess 方法中的 crop_size 覆盖。
  • do_rescale (bool, optional, defaults to True) — 是否通过指定的 rescale_factor 重新缩放图像。可以通过 preprocess 方法中的 do_rescale 覆盖。
  • rescale_factor (int or float, optional, defaults to 1/255) — 如果重新缩放图像,则使用的缩放因子。可以通过 preprocess 方法中的 rescale_factor 覆盖。
  • do_normalize (bool, optional, defaults to True) — 是否对图像进行归一化。可以通过 preprocess 方法中的 do_normalize 覆盖。
  • image_mean (float or list[float], optional, defaults to [0.485, 0.456, 0.406]) — 如果对图像进行归一化,则使用的均值。这是一个浮点数或浮点数列表,其长度与图像中的通道数相同。可以通过 preprocess 方法中的 image_mean 参数覆盖。
  • image_std (float or list[float], optional, defaults to [0.229, 0.224, 0.225]) — 如果对图像进行归一化,则使用的标准差。这是一个浮点数或浮点数列表,其长度与图像中的通道数相同。可以通过 preprocess 方法中的 image_std 参数覆盖。
  • do_convert_rgb (bool, optional, defaults to True) — 是否将图像转换为 RGB。

构造一个 TextNet 图像处理器。

预处理

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] do_resize: typing.Optional[bool] = None size: typing.Optional[dict[str, int]] = None size_divisor: typing.Optional[int] = None resample: Resampling = None do_center_crop: typing.Optional[bool] = None crop_size: typing.Optional[int] = None do_rescale: typing.Optional[bool] = None rescale_factor: typing.Optional[float] = None do_normalize: typing.Optional[bool] = None image_mean: typing.Union[float, list[float], NoneType] = None image_std: typing.Union[float, list[float], NoneType] = None do_convert_rgb: typing.Optional[bool] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None data_format: typing.Optional[transformers.image_utils.ChannelDimension] = <ChannelDimension.FIRST: 'channels_first'> input_data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None **kwargs )

参数

  • images (ImageInput) — 要预处理的图像。期望像素值范围为 0 到 255 的单个或批次图像。如果传入的图像像素值在 0 到 1 之间,请将 do_rescale=False
  • do_resize (bool, optional, defaults to self.do_resize) — 是否调整图像大小。
  • size (dict[str, int], optional, defaults to self.size) — 调整大小后图像的大小。图像的最短边调整为 size[“shortest_edge”],最长边调整以保持输入长宽比。
  • size_divisor (int, optional, defaults to 32) — 确保调整大小后的高度和宽度四舍五入为此值的倍数。
  • resample (int, optional, defaults to self.resample) — 如果调整图像大小,使用的重采样滤波器。这可以是枚举 PILImageResampling 之一。仅在 do_resize 设置为 True 时有效。
  • do_center_crop (bool, optional, defaults to self.do_center_crop) — 是否对图像进行中心裁剪。
  • crop_size (dict[str, int], optional, defaults to self.crop_size) — 中心裁剪的大小。仅在 do_center_crop 设置为 True 时有效。
  • do_rescale (bool, optional, defaults to self.do_rescale) — 是否对图像进行重新缩放。
  • rescale_factor (float, optional, defaults to 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 格式。
  • return_tensors (strTensorType, 可选) — 返回张量的类型。可以是以下之一:
    • 未设置:返回 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)。

预处理一张或一批图像。

TextNetModel

class transformers.TextNetModel

< >

( config )

参数

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

原始 Textnet 模型,输出原始隐藏状态,顶部没有任何特定头部。

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

此模型也是 PyTorch torch.nn.Module 子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档了解所有与通用用法和行为相关的事项。

forward

< >

( pixel_values: Tensor output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(torch.FloatTensor)

参数

  • pixel_values (形状为 (batch_size, num_channels, image_size, image_size)torch.Tensor) — 对应于输入图像的张量。像素值可以使用 {image_processor_class} 获取。详情请参阅 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。更多详情请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通的元组。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttention 或一个 torch.FloatTensor 的元组(如果传入 return_dict=Falseconfig.return_dict=False),包含根据配置(TextNetConfig)和输入而定的各种元素。

  • last_hidden_state (torch.FloatTensor, 形状为 (batch_size, num_channels, height, width)) — 模型最后一层输出的隐藏状态序列。

  • pooler_output (torch.FloatTensor, 形状为 (batch_size, hidden_size)) — 经过空间维度池化操作后的最后一层隐藏状态。

  • hidden_states (tuple(torch.FloatTensor), 可选, 当传入 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, num_channels, height, width)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,+ 一个用于每层输出)。

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

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

尽管前向传播的定义需要在该函数中完成,但之后应该调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默忽略它们。

TextNetForImageClassification

class transformers.TextNetForImageClassification

< >

( config )

参数

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

带图像分类头(在池化特征之上有一个线性层)的 TextNet 模型,例如用于 ImageNet。

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

此模型也是 PyTorch torch.nn.Module 子类。将其作为常规 PyTorch 模块使用,并参考 PyTorch 文档了解所有与通用用法和行为相关的事项。

forward

< >

( pixel_values: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

参数

  • pixel_values (形状为 (batch_size, num_channels, image_size, image_size)torch.FloatTensor, 可选) — 对应于输入图像的张量。像素值可以使用 {image_processor_class} 获取。详情请参阅 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 处理图像)。
  • labels (形状为 (batch_size,)torch.LongTensor, 可选) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失),如果 config.num_labels > 1,则计算分类损失(交叉熵)。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。更多详情请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通的元组。

返回

transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

一个 transformers.modeling_outputs.ImageClassifierOutputWithNoAttention 或一个 torch.FloatTensor 的元组(如果传入 return_dict=Falseconfig.return_dict=False),包含根据配置(TextNetConfig)和输入而定的各种元素。

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。
  • logits (形状为 (batch_size, config.num_labels)torch.FloatTensor) — 分类(如果 config.num_labels==1,则为回归)分数(SoftMax 之前)。
  • hidden_states (tuple(torch.FloatTensor), 可选, 当传入 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, num_channels, height, width)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,+ 一个用于每个阶段的输出)。模型的隐藏状态(也称为特征图)在每个阶段的输出处。

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

尽管前向传播的定义需要在该函数中完成,但之后应该调用 Module 实例而不是此函数,因为前者负责运行预处理和后处理步骤,而后者则会默默忽略它们。

示例

>>> import torch
>>> import requests
>>> from transformers import TextNetForImageClassification, TextNetImageProcessor
>>> from PIL import Image

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> processor = TextNetImageProcessor.from_pretrained("czczup/textnet-base")
>>> model = TextNetForImageClassification.from_pretrained("czczup/textnet-base")

>>> inputs = processor(images=image, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)
>>> outputs.logits.shape
torch.Size([1, 2])
< > 在 GitHub 上更新