Transformers documentation
PP-OCRv6_small_det
该模型于 2026-05-19 贡献至 Hugging Face Transformers。
PP-OCRv6_small_det
概述
PP-OCRv6_small_det 是 PaddleOCR 团队开发的 PP-OCRv6 检测系列中的小型模型。它采用 LCNetV4 作为骨干网络,RepLKFPN 作为特征金字塔颈部,能够在多种场景下提供精确的文本定位,包括手写、印刷、旋转、弯曲以及多语言的艺术字。该模型包含 248 万个参数。
模型架构
用法
单输入推理
以下示例演示了如何使用 AutoModel 通过 PP-OCRv6_small_det 检测文本。
from io import BytesIO
from huggingface_hub.utils import httpx
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image
model_path = "PaddlePaddle/PP-OCRv6_small_det_safetensors" # or "PaddlePaddle/PP-OCRv6_tiny_det_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)
image_url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png"
image = load_image(image_url)
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
outputs = model(**inputs)
results = image_processor.post_process_object_detection(
outputs,
target_sizes=inputs["target_sizes"],
threshold=0.2,
box_threshold=0.45,
max_candidates=3000,
unclip_ratio=1.4,
)
for result in results:
print(result)批量推理
以下是使用 AutoModel 和 PP-OCRv6_small_det 实现此操作的方法:
from io import BytesIO
from huggingface_hub.utils import httpx
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image
model_path = "PaddlePaddle/PP-OCRv6_small_det_safetensors" # or "PaddlePaddle/PP-OCRv6_tiny_det_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)
image_url = "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png"
image = load_image(image_url)
inputs = image_processor(images=[image, image], return_tensors="pt").to(model.device)
outputs = model(**inputs)
results = image_processor.post_process_object_detection(
outputs,
target_sizes=inputs["target_sizes"],
threshold=0.2,
box_threshold=0.45,
max_candidates=3000,
unclip_ratio=1.4,
)
for result in results:
print(result)PPOCRV6SmallDetForObjectDetection
class transformers.PPOCRV6SmallDetForObjectDetection
< source >( config: PPOCRV6SmallDetConfig )
参数
- config (PPOCRV6SmallDetConfig) — 模型的配置类,包含模型的所有参数。通过配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
用于文本识别任务的 PPOCR6SmallRec 模型。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
PPOCRV6SmallDetConfig
class transformers.PPOCRV6SmallDetConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonereduction: int = 4neck_out_channels: int = 96interpolate_mode: str = 'nearest'kernel_list: list[int] | tuple[int, ...] = (3, 2, 2)layer_list_out_channels: list[int] | tuple[int, ...] = (12, 18, 42, 360)dilated_kernel_size: int = 7 )
参数
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig],可选) — 主干模型的配置。 - reduction (
int,可选,默认为 4) — 用于特征通道维度的缩减因子,在保持特征表示能力的同时,减少模型参数数量和计算复杂度。 - neck_out_channels (
int,可选,默认为 96) — 颈部网络的输出通道数。该网络负责在将特征传递到头部网络之前进行特征融合与细化。 - interpolate_mode (
str,可选,默认为"nearest") — 在 neck 网络中对特征图进行上采样或下采样时使用的插值模式。支持的模式包括"nearest"(最近邻插值)和"bilinear"(双线性插值)。 - kernel_list (
List[int],可选,默认为[3, 2, 2]) — 头网络中卷积层的核大小列表,用于多尺度特征提取,以检测不同大小的文本区域。 - layer_list_out_channels (
List[int],可选,默认为[12, 18, 42, 360]) — 骨干网络各阶段的输出通道数列表,用于配置颈部网络中 RSE 层的输入通道,以实现多尺度特征融合。 - dilated_kernel_size (
int,可选,默认为 7) — 输入卷积路径中膨胀卷积层的核大小,用于捕获特征图中的长程依赖关系。
这是用于存储 PPOCRV6SmallDetModel 配置的类。它根据指定的参数实例化 Pp Ocrv6 Small Det 模型,并定义模型架构。使用默认值实例化配置将生成与 PaddlePaddle/PP-OCRv6_small_det_safetensors 类似的配置。
配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。
PPOCRV6SmallDetModel
class transformers.PPOCRV6SmallDetModel
< source >( config: PPOCRV6SmallDetConfig )
参数
- config (PPOCRV6SmallDetConfig) — 模型的配置类,包含模型的所有参数。通过配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。
未添加任何特定头部的裸 Pp Ocrv6 Small Det 模型,直接输出原始隐藏状态。
该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。
该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。
forward
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithNoAttention or tuple(torch.Tensor)
参数
- pixel_values (
torch.Tensor,形状为(batch_size, num_channels, image_size, image_size)) — 与输入图像对应的张量。可以使用 PPOCRV5ServerDetImageProcessor 获取像素值。有关详细信息,请参阅 PPOCRV5ServerDetImageProcessor.call()(processor_class使用 PPOCRV5ServerDetImageProcessor 处理图像)。
返回值
BaseModelOutputWithNoAttention 或 tuple(torch.Tensor)
BaseModelOutputWithNoAttention 或 torch.Tensor 元组(如果传入 return_dict=False 或 config.return_dict=False),包含根据配置(PPOCRV6SmallDetConfig)和输入而定的各种元素。
PPOCRV6SmallDetModel 的 forward 方法重写了 __call__ 特殊方法。
尽管前向传播的实现需要在此函数中定义,但之后应调用
Module实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。
last_hidden_state(形状为
(batch_size, num_channels, height, width)的torch.Tensor)— 模型最后一层输出的隐藏状态序列。hidden_states (
tuple(torch.Tensor),可选,当传入output_hidden_states=True或config.output_hidden_states=True时返回) — 一个torch.Tensor元组(如果模型具有嵌入层,则包含嵌入层输出的一个张量,以及每个层输出的一个张量),形状为(batch_size, num_channels, height, width)。模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。