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

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