# PP-OCRv5_mobile_det

## 概要

**PP-OCRv5_mobile_det** は、テキスト検出に特化した軽量モデルです。多言語ドキュメントや自然なシーンにおけるテキスト要素の効率的な検出と理解に焦点を当てています。

## モデルアーキテクチャ

PP-OCRv5_mobile_det は、PaddleOCR チームが開発した最新世代のテキスト検出モデルシリーズである PP-OCRv5_det の一つです。簡体字中国語、繁体字中国語、英語、日本語など、多様な言語において、手書き文字、縦書き、回転、曲線状のテキストを含む多様なシナリオでのテキスト検出を効率的かつ高精度にサポートすることを目的としています。主な機能として、複雑なレイアウト、異なるテキストサイズ、困難な背景への堅牢な対応があり、文書解析、ナンバープレート認識、シーンテキスト検出などの実用的なアプリケーションに適しています。

## 使用方法

### 単一入力推論

以下の例では、[Pipeline](/docs/transformers/main/ja/main_classes/pipelines#transformers.Pipeline)または[AutoModel](/docs/transformers/main/ja/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"])
```

### バッチ推論

[Pipeline](/docs/transformers/main/ja/main_classes/pipelines#transformers.Pipeline)または[AutoModel](/docs/transformers/main/ja/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, 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/ja/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

object (text) detectionタスク用のPPOCRV5 Mobile Detモデルです。コアのPPOCRV5MobileDetModelをラップし、Transformersのobject detection APIと互換性のある出力を返します。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/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]`、*optional*) : バックボーンモデルの設定です。

reduction (`int`, *optional*, デフォルトは 4) : 特徴量チャネル次元の削減係数です。特徴量の表現力を維持しつつ、モデルのパラメータ数と計算複雑度を低減するために使用されます。

neck_out_channels (`int`, *optional*, デフォルトは 96) : neck ネットワークからの出力チャネル数です。neck ネットワークは、特徴量を head ネットワークに渡す前に、特徴量の融合と洗練を行う役割を担います。

interpolate_mode (`str`、*任意*、デフォルトは`"nearest"`) : neckネットワーク内で特徴マップをアップサンプリングまたはダウンサンプリングする際に使用される補間モード。サポートされているモードには`"nearest"`（最近傍補間）と`"bilinear"`があります。

kernel_list (`List[int]`、*optional*、デフォルトは`[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/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/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/ja/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

Backbone、Neck、Headのネットワークで構成されるコアのPP-OCRv5_mobile_det。テキスト検出タスク用のバイナリテキストセグメンテーションマップを生成します。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

