特征提取器
特征提取器负责为音频模型准备输入特征。这包括从序列中提取特征,例如对音频文件进行预处理以生成 Log-Mel Spectrogram 特征,以及将其转换为 NumPy 和 PyTorch 张量。
FeatureExtractionMixin
这是一个用于为顺序特征提取器和音频特征提取器提供保存/加载功能的特征提取混入类。
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs )
参数
- pretrained_model_name_or_path (
str或os.PathLike) — 可以是以下之一:- 一个字符串,即托管在 huggingface.co 上某个模型仓库中的预训练 feature_extractor 的 model id。
- 指向一个目录的路径,该目录包含使用
save_pretrained() 方法保存的特征提取器文件,例如
./my_model_directory/。 - 指向已保存的特征提取器 JSON 文件的路径,例如
./my_model_directory/preprocessor_config.json。
- cache_dir (
str或os.PathLike,可选) — 如果不应使用标准缓存,则下载预训练模型特征提取器时应缓存到的目录路径。 - force_download (
bool,可选,默认为False) — 是否强制(重新)下载特征提取器文件,并在缓存版本存在时覆盖它们。 - proxies (
dict[str, str], 可选) — 按协议或端点使用的代理服务器字典,例如{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.每次请求都会使用这些代理。 - token (
str或bool,可选) — 用于远程文件的 HTTP bearer 授权令牌。如果为True或未指定,则使用运行hf auth login时生成的令牌(存储在~/.huggingface中)。 - revision (
str,可选,默认为"main") — 要使用的特定模型版本。由于我们在 huggingface.co 上使用基于 git 的系统来存储模型和其他工件,因此它可以是分支名称、标签名称或提交 id,revision可以是 git 允许的任何标识符。
从特征提取器实例化 FeatureExtractionMixin 的一种类型,例如 SequenceFeatureExtractor 的派生类。
示例:
# We can't instantiate directly the base class *FeatureExtractionMixin* nor *SequenceFeatureExtractor* so let's show the examples on a
# derived class: *Wav2Vec2FeatureExtractor*
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(
"facebook/wav2vec2-base-960h"
) # Download feature_extraction_config from huggingface.co and cache.
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(
"./test/saved_model/"
) # E.g. feature_extractor (or model) was saved using *save_pretrained('./test/saved_model/')*
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained("./test/saved_model/preprocessor_config.json")
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(
"facebook/wav2vec2-base-960h", return_attention_mask=False, foo=False
)
assert feature_extractor.return_attention_mask is False
feature_extractor, unused_kwargs = Wav2Vec2FeatureExtractor.from_pretrained(
"facebook/wav2vec2-base-960h", return_attention_mask=False, foo=False, return_unused_kwargs=True
)
assert feature_extractor.return_attention_mask is False
assert unused_kwargs == {"foo": False}save_pretrained
< source >( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs )
参数
- save_directory (
str或os.PathLike) — 用于保存特征提取器 JSON 文件的目录(如果该目录不存在,则会自动创建)。 - push_to_hub (
bool,可选,默认为False) — 是否在保存模型后将其推送到 Hugging Face 模型库。您可以使用repo_id指定要推送到的仓库(默认使用您命名空间中save_directory的名称)。 - kwargs (
dict[str, Any],可选) — 传递给 push_to_hub() 方法的额外关键字参数。
将 feature_extractor 对象保存到目录 save_directory,以便之后可以使用 from_pretrained() 类方法重新加载。
SequenceFeatureExtractor
class transformers.SequenceFeatureExtractor
< source >( feature_size: intsampling_rate: intpadding_value: float**kwargs )
这是一个用于语音识别的通用特征提取类。
填充
< source >( processed_features: transformers.feature_extraction_utils.BatchFeature | list[transformers.feature_extraction_utils.BatchFeature] | dict[str, transformers.feature_extraction_utils.BatchFeature] | dict[str, list[transformers.feature_extraction_utils.BatchFeature]] | list[dict[str, transformers.feature_extraction_utils.BatchFeature]]padding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonetruncation: bool = Falsepad_to_multiple_of: int | None = Nonereturn_attention_mask: bool | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = None )
参数
- processed_features (BatchFeature, BatchFeature 列表 BatchFeature,
dict[str, list[float]],dict[str, list[list[float]]或list[dict[str, list[float]]]) — 处理后的输入。可以表示单个输入(BatchFeature 或dict[str, list[float]]) )或一批 输入值 / 向量( BatchFeature, dict[str, list[list[float]]] 或 list[dict[str, list[float]]]) 因此,您可以在预处理阶段以及 PyTorch Dataloader 的 collate 函数中使用此方法。您可以使用张量(numpy 数组或 PyTorch 张量)代替
list[float],有关返回类型,请参阅上方的说明。 - padding (
bool,str或 PaddingStrategy, 可选, 默认为True) — 选择一种策略,根据模型的填充侧和填充索引对返回的序列进行填充,可选策略如下:True或'longest':填充至批次中最长的序列(如果仅提供单个序列,则不进行填充)。'max_length':填充至由参数max_length指定的最大长度;若未提供该参数,则填充至模型可接受的最大输入长度。False或'do_not_pad'(默认值):不进行填充(即可以输出包含不同长度序列的批次)。
- max_length (
int,可选) — 返回列表的最大长度,以及可选的填充长度(见上文)。 - truncation (
bool) — 启用截断,将长度超过max_length的输入序列截断为max_length。 - pad_to_multiple_of (
int, 可选) — 如果设置,将把序列填充为所提供值的倍数。这在启用 NVIDIA 硬件(计算能力
>= 7.5,即 Volta 架构)上的 Tensor Cores 使用时尤为有用,或者在 TPU 上使用时也特别有益,因为 TPU 在序列长度为 128 的倍数时性能更佳。 - return_attention_mask (
bool, 可选) — 是否返回注意力掩码。如果保持默认值,将根据特定 feature_extractor 的默认设置返回注意力掩码。 - return_tensors (
str或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:'pt':返回 PyTorchtorch.Tensor对象。'np':返回 Numpynp.ndarray对象。
将输入值 / 输入向量或一批输入值 / 输入向量填充至预定义长度或批次中的最大序列长度。
填充侧(left/right)的填充值在特征提取器级别定义(通过 self.padding_side、self.padding_value)
如果传入的
processed_features是 numpy 数组或 PyTorch 张量的字典,则结果将使用相同的类型,除非你通过return_tensors指定了不同的张量类型。对于 PyTorch 张量,你将会丢失张量所在的特定设备信息。
BatchFeature
class transformers.BatchFeature
< source >( data: dict[str, typing.Any] | None = Nonetensor_type: None | str | transformers.utils.generic.TensorType = Noneskip_tensor_conversion: list[str] | set[str] | None = None )
保存 pad() 和特征提取器特定的 __call__ 方法的输出。
此类派生自 Python 字典,可用作字典。
convert_to_tensors
< source >( tensor_type: str | transformers.utils.generic.TensorType | None = Noneskip_tensor_conversion: list[str] | set[str] | None = None )
参数
- tensor_type (
str或 TensorType,可选) — 要使用的张量类型。如果为str,则应为枚举 TensorType 的某个值。如果为None,则不进行任何修改。 - skip_tensor_conversion (
list[str]或set[str],可选) — 不应转换为张量的键的列表或集合,即使指定了tensor_type。
将内部内容转换为张量。
注意: 不具有数组结构(例如字符串、字典、字符串列表)的值会被自动跳过,不会转换为张量。对于不规则数组(长度不同的数组列表),系统仍会尝试进行转换,但在转换过程中可能会引发错误。
到
< source >( *args**kwargs ) → BatchFeature
通过调用 v.to(*args, **kwargs) 将所有值发送到设备(仅限 PyTorch)。这应支持转换为不同的 dtypes,并将 BatchFeature 发送到不同的 device。
ImageFeatureExtractionMixin
包含用于准备图像特征的实用工具的方法混入类。
center_crop
< source >( imagesize ) → new_image
使用中心裁剪将 image 裁剪到指定大小。请注意,如果图像太小而无法裁剪到指定大小,则会进行填充(因此返回的结果具有所请求的大小)。
将 PIL.Image.Image 转换为 RGB 格式。
将二维 image 扩展为三维。
flip_channel_order
< source >( image )
将 image 的通道顺序从 RGB 翻转为 BGR,或反之。请注意,如果 image 是 PIL Image,这将触发将其转换为 NumPy 数组。
normalize
< source >( imagemeanstdrescale = False )
使用 mean 和 std 对 image 进行归一化。请注意,如果 image 是 PIL Image,这将触发将其转换为 NumPy 数组。
按缩放比例调整 numpy 图像
调整大小
< source >( imagesizeresample = Nonedefault_to_square = Truemax_size = None ) → image
参数
- image(
PIL.Image.Image或np.ndarray或torch.Tensor)— 要调整大小的图像。 - size (
int或tuple[int, int]) — 用于调整图像大小的尺寸。如果size是形如 (h, w) 的序列,则输出尺寸将与之匹配。如果
size是 int 且default_to_square为True,则图像将被调整为 (size, size)。如果size是 int 且default_to_square为False,则图像的较短边将匹配该数值。即,如果 height > width,则图像将被重新缩放为 (size * height / width, size)。 - resample (
int,可选,默认为PILImageResampling.BILINEAR) — 用于重采样的滤波器。 - default_to_square (
bool,可选,默认为True) — 当size为单个整数时,如何对其进行转换。如果设置为True,size将被转换为正方形(size,size)。如果设置为False,则行为与torchvision.transforms.Resize一致,支持仅调整最小边,并提供可选的max_size。 - max_size (
int, 可选,默认为None) — 调整后图像较长边的最大允许值:如果图像根据size调整后,其较长边大于max_size,则图像会再次调整,使较长边等于max_size。因此,size可能会被覆盖,即较短边可能小于size。仅在default_to_square为False时使用。
返回值
image
调整大小后的 PIL.Image.Image。
调整 image 的大小。强制将输入转换为 PIL.Image。
rotate
< source >( imageangleresample = Noneexpand = 0center = Nonetranslate = Nonefillcolor = None ) → image
返回 image 的旋转副本。此方法返回 image 的副本,该副本围绕其中心逆时针旋转指定的度数。
to_numpy_array
< source >( imagerescale = Nonechannel_first = True )
将 image 转换为 numpy 数组。可选择对其进行重新缩放,并将通道维度置于第一维。
to_pil_image
< source >( imagerescale = None )
将 image 转换为 PIL Image。如有需要,可选择对其进行重新缩放,并将通道维度移回最后一个轴。