Transformers 文档

TextNet

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

TextNet

PyTorch

概览

TextNet 模型在 FAST: 采用极简内核表示的更快任意形状文本检测器 中被提出,作者是 Zhe Chen, Jiahao Wang, Wenhai Wang, Guo Chen, Enze Xie, Ping Luo, Tong Lu。TextNet 是一个视觉骨干网络,可用于文本检测任务。它是以文本检测任务为奖励函数的骨干网络神经架构搜索 (NAS) 的结果(为文本检测提供强大的特征)。

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

此模型由 Raghavan, jadechogharinielsr 贡献。

使用技巧

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, 可选, 默认为 3) — 初始卷积层的内核大小。
  • stem_stride (int, 可选, 默认为 2) — 初始卷积层的步长。
  • stem_num_channels (int, 可选, 默认为 3) — 初始卷积层输入的通道数。
  • stem_out_channels (int, 可选, 默认为 64) — 初始卷积层输出的通道数。
  • stem_act_func (str, 可选, 默认为 "relu") — 初始卷积层的激活函数。
  • image_size (Tuple[int, int], 可选, 默认为 [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) — 如果用作 backbone,则输出特征列表。可以是 "stem""stage1""stage2" 等中的任何一个(取决于模型有多少个阶段)。如果未设置且设置了 out_indices,则默认为相应的阶段。如果未设置且未设置 out_indices,则默认为最后一个阶段。
  • out_indices (List[int], optional) — 如果用作 backbone,则输出特征的索引列表。可以是 0、1、2 等中的任何一个(取决于模型有多少个阶段)。如果未设置且设置了 out_features,则默认为相应的阶段。如果未设置且未设置 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.Dict[str, int] = None size_divisor: int = 32 resample: Resampling = <Resampling.BILINEAR: 2> do_center_crop: bool = False crop_size: typing.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, typing.List[float], NoneType] = [0.485, 0.456, 0.406] image_std: typing.Union[float, typing.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 参数覆盖。 可以被 preprocess 方法中的 image_std 参数覆盖。
  • do_convert_rgb (bool, optional, defaults to True) — 是否将图像转换为 RGB 格式。

构建 TextNet 图像处理器。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] do_resize: bool = None size: typing.Dict[str, int] = None size_divisor: int = None resample: Resampling = None do_center_crop: bool = None crop_size: int = None do_rescale: bool = None rescale_factor: float = None do_normalize: bool = None image_mean: typing.Union[float, typing.List[float], NoneType] = None image_std: typing.Union[float, typing.List[float], NoneType] = None do_convert_rgb: 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, 可选, 默认为 self.do_center_crop) — 是否对图像进行中心裁剪。
  • crop_size (Dict[str, int], 可选, 默认为 self.crop_size) — 中心裁剪的尺寸。 仅在 do_center_crop 设置为 True 时生效。
  • do_rescale (bool, 可选, 默认为 self.do_rescale) — 是否对图像进行重缩放。
  • 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 格式。
  • return_tensors (strTensorType, 可选) — 返回张量的类型。 可以是以下之一:
    • Unset: 返回 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)。
    • Unset: 使用输入图像的通道维度格式。
  • 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 (TextNetConfig) — 包含模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法以加载模型权重。

裸 Textnet 模型,输出原始特征,顶部没有任何特定的头部。 此模型是 PyTorch torch.nn.Module 子类。 将其用作常规 PyTorch 模块,并参考 PyTorch 文档,了解与常规用法和行为相关的所有事项。

前向传播

< >

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

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, height, width)) — 像素值。 像素值可以使用 AutoImageProcessor 获得。 有关详细信息,请参阅 TextNetImageProcessor.call()
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

返回值

transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontorch.FloatTensor 元组(如果传递 return_dict=False 或当 config.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=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 元组(如果模型具有嵌入层,则为嵌入输出提供一个,+ 为每层的输出提供一个),形状为 (batch_size, num_channels, height, width)

    模型在每一层输出的隐藏状态,加上可选的初始嵌入输出。

TextNetModel 前向传播方法,覆盖了 __call__ 特殊方法。

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

示例

>>> from transformers import AutoImageProcessor, TextNetModel
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image", trust_remote_code=True)
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("czczup/textnet-base")
>>> model = TextNetModel.from_pretrained("czczup/textnet-base")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 512, 20, 27]

TextNetForImageClassification

class transformers.TextNetForImageClassification

< >

( config )

参数

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

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

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

前向传播

< >

( 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 (torch.FloatTensor,形状为 (batch_size, num_channels, height, width)) — 像素值。 像素值可以使用 AutoImageProcessor 获得。 有关详细信息,请参阅 TextNetImageProcessor.call()
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • labels (torch.LongTensor,形状为 (batch_size,)可选) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方误差损失);如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回值

transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

一个 transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontorch.FloatTensor 的元组(如果传递 return_dict=False 或当 config.return_dict=False 时),包含各种元素,具体取决于配置 (TextNetConfig) 和输入。

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

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 上更新