# PP-OCRv5_mobile_det

## 概述

**PP-OCRv5_mobile_det** 是一款专为文本检测打造的轻量级模型，专注于在多语言文档和自然场景中高效地检测和理解文本元素。

## 模型架构

PP-OCRv5_mobile_det 是 PP-OCRv5_det 系列中的一员，该系列是 PaddleOCR 团队开发的最新一代文本检测模型。它旨在高效且准确地支持多种场景下的文本检测，包括手写体、竖排、旋转和弯曲文本，并覆盖简体中文、繁体中文、英语和日语等多种语言。其主要特性包括对复杂版面、不同文本尺寸以及具有挑战性的背景具有强大的处理能力，因此适用于文档分析、车牌识别和场景文本检测等实际应用。

## 用法

### 单输入推理

以下示例演示了如何使用 [Pipeline](/docs/transformers/main/zh/main_classes/pipelines#transformers.Pipeline) 或 [AutoModel](/docs/transformers/main/zh/model_doc/auto#transformers.AutoModel) 通过 PP-OCRV5_Mobile_Det 检测文本。

```python
import requests
from PIL import Image

from transformers import pipeline

image = Image.open(
    requests.get(
        "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png", stream=True
    ).raw)
detector = pipeline(
    task="object-detection",
    model="PaddlePaddle/PP-OCRV5_mobile_det_safetensors",
    device_map="auto",
)
results = detector(image)

for result in results:
    print(result)
```

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection

model_path="PaddlePaddle/PP-OCRv5_mobile_det_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)

image = Image.open(requests.get("https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png", stream=True).raw).convert("RGB")
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"])

for result in results:
    print(result["boxes"])
    print(result["scores"])
```

### 批量推理

以下是如何使用 PP-OCRV5_Mobile_Det 配合 [Pipeline](/docs/transformers/main/zh/main_classes/pipelines#transformers.Pipeline) 或 [AutoModel](/docs/transformers/main/zh/model_doc/auto#transformers.AutoModel) 来实现：

```python
import requests
from PIL import Image

from transformers import pipeline

image = Image.open(
    requests.get(
        "https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png", stream=True
    ).raw)
detector = pipeline(
    task="object-detection",
    model="PaddlePaddle/PP-OCRV5_mobile_det_safetensors",
    device_map="auto",
)
results = detector([image, image])

for result in results:
    print(result)
```

```python
import requests
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection

model_path="PaddlePaddle/PP-OCRv5_mobile_det_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)

image = Image.open(requests.get("https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/paddle_general_ocr_001.png", stream=True).raw).convert("RGB")
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"])

for result in results:
    print(result["boxes"])
    print(result["scores"])
```

## PPOCRV5MobileDetForObjectDetection[[transformers.PPOCRV5MobileDetForObjectDetection]]

#### transformers.PPOCRV5MobileDetForObjectDetection[[transformers.PPOCRV5MobileDetForObjectDetection]]

```python
transformers.PPOCRV5MobileDetForObjectDetection(config: PPOCRV5MobileDetConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_det/modeling_pp_ocrv5_mobile_det.py#L296)

**参数：**

config ([PPOCRV5MobileDetConfig](/docs/transformers/main/zh/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig))：模型配置类，包含模型的所有参数。通过配置文件进行初始化时，不会加载与模型关联的权重，仅加载配置。请查看 [from_pretrained()](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel.from_pretrained) 方法以加载模型权重。

用于目标（文本）检测任务的 PPOCRV5 Mobile Det 模型。封装了核心 PPOCRV5MobileDetModel，并返回与 Transformers 目标检测 API 兼容的输出。

该模型继承自 [PreTrainedModel](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel)。请查阅父类文档，了解该库为所有模型实现的通用方法（例如下载或保存、调整输入嵌入大小、剪枝头等）。

该模型也是 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) 的子类。请将其作为常规的 PyTorch Module 使用，有关通用用法和行为的所有事项，请参阅 PyTorch 文档。

## PPOCRV5MobileDetConfig[[transformers.PPOCRV5MobileDetConfig]]

#### transformers.PPOCRV5MobileDetConfig[[transformers.PPOCRV5MobileDetConfig]]

```python
transformers.PPOCRV5MobileDetConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, reduction: int = 4, neck_out_channels: int = 96, interpolate_mode: str = 'nearest', kernel_list: list[int] | tuple[int, ...] = (3, 2, 2), layer_list_out_channels: list[int] | tuple[int, ...] = (12, 18, 42, 360))
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_det/configuration_pp_ocrv5_mobile_det.py#L31)

**参数：**

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`，*可选*)：骨干模型的配置。

reduction (`int`, *可选*，默认为 4)：特征通道维度的缩减因子，用于在保持特征表示能力的同时减少模型参数量和计算复杂度。

neck_out_channels (`int`, *可选*，默认为 96) : 颈部网络的输出通道数，该网络负责在将特征传递到头部网络之前进行特征融合与细化。

interpolate_mode (`str`, *可选*, 默认为 `"nearest"`) : 在颈部网络中对特征图进行上采样或下采样时使用的插值模式。支持的模式包括 `"nearest"`（最近邻插值）和 `"bilinear"`。

kernel_list (`List[int]`, *可选*, 默认为 `[3, 2, 2]`) : 头网络中卷积层的核大小列表，用于多尺度特征提取，以检测不同大小的文本区域。

layer_list_out_channels (`List[int]`, *可选*，默认为 `[12, 18, 42, 360]`) : 每个骨干网络阶段的输出通道列表，用于配置颈部网络中 RSE 层的输入通道，以实现多尺度特征融合。

这是用于存储 Pp Ocrv5 Mobile DetModel 配置的类。它根据指定的参数实例化 Pp Ocrv5 Mobile Det 模型，并定义模型架构。使用默认值实例化配置将得到与 [PaddlePaddle/PP-OCRv5_mobile_det_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv5_mobile_det_safetensors) 类似的配置。

配置对象继承自 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig)，可用于控制模型输出。有关更多信息，请参阅 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig) 的文档。

## PPOCRV5MobileDetModel[[transformers.PPOCRV5MobileDetModel]]

#### transformers.PPOCRV5MobileDetModel[[transformers.PPOCRV5MobileDetModel]]

```python
transformers.PPOCRV5MobileDetModel(config: PPOCRV5MobileDetConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv5_mobile_det/modeling_pp_ocrv5_mobile_det.py#L258)

**参数：**

config ([PPOCRV5MobileDetConfig](/docs/transformers/main/zh/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig))：模型配置类，包含模型的所有参数。通过配置文件进行初始化时，不会加载与模型关联的权重，仅加载配置。请查看 [from_pretrained()](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel.from_pretrained) 方法以加载模型权重。

核心 PP-OCRv5_mobile_det，由 Backbone、Neck 和 Head 网络组成。为文本检测任务生成二值文本分割图。

该模型继承自 [PreTrainedModel](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel)。请查阅父类文档，了解该库为所有模型实现的通用方法（例如下载或保存、调整输入嵌入大小、剪枝头等）。

该模型也是 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) 的子类。请将其作为常规的 PyTorch Module 使用，有关通用用法和行为的所有事项，请参阅 PyTorch 文档。

