# PP-OCRv5_mobile_det

## Обзор

**PP-OCRv5_mobile_det** — это специализированная легковесная модель для обнаружения текста, ориентированная на эффективное обнаружение и понимание текстовых элементов в многоязычных документах и естественных сценах.

## Архитектура модели

PP-OCRv5_mobile_det — одна из моделей серии PP-OCRv5_det, последнего поколения моделей обнаружения текста, разработанных командой PaddleOCR. Она обеспечивает эффективное и точное обнаружение текста в разнообразных сценариях — включая рукописный, вертикальный, повёрнутый и изогнутый текст — на нескольких языках, таких как упрощённый китайский, традиционный китайский, английский и японский. Ключевые особенности включают надёжную работу со сложными макетами, различными размерами текста и сложными фонами, что делает модель подходящей для практических приложений, таких как анализ документов, распознавание номерных знаков и обнаружение текста в сценах.

## Использование

### Вывод для одного входа

Приведённый ниже пример показывает, как обнаруживать текст с помощью PP-OCRV5_Mobile_Det, используя [Pipeline](/docs/transformers/main/ru/main_classes/pipelines#transformers.Pipeline) или [AutoModel](/docs/transformers/main/ru/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)

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/ru/main_classes/pipelines#transformers.Pipeline) или [AutoModel](/docs/transformers/main/ru/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/ru/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель PPOCRV5 Mobile Det для задач обнаружения объектов (текста). Оборачивает базовую модель PPOCRV5MobileDetModel и возвращает выходные данные, совместимые с API обнаружения объектов в Transformers.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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`, *optional*, по умолчанию 4) : Коэффициент редукции для размерности каналов признаков, используемый для уменьшения количества параметров модели и вычислительной сложности при сохранении выразительности признаков.

neck_out_channels (`int`, *optional*, по умолчанию 96) : Количество выходных каналов из neck-сети, которая отвечает за слияние и уточнение признаков перед их передачей в head-сеть.

interpolate_mode (`str`, *необязательный*, по умолчанию `"nearest"`) : Режим интерполяции, используемый для увеличения или уменьшения размерности карт признаков в neck-сети. Поддерживаемые режимы включают `"nearest"` (интерполяция ближайшего соседа) и `"bilinear"`.

kernel_list (`List[int]`, *необязательный*, по умолчанию `[3, 2, 2]`) : Список размеров ядер для свёрточных слоев в сети-голове, используемый для извлечения признаков в нескольких масштабах с целью обнаружения текстовых областей разного размера.

layer_list_out_channels (`List[int]`, *необязательный*, по умолчанию `[12, 18, 42, 360]`) : Список выходных каналов для каждого этапа backbone, используемый для настройки входных каналов слоев RSE в neck-сети для многомасштабного слияния признаков.

Это класс конфигурации для хранения настроек модели 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/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/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/ru/model_doc/pp_ocrv5_mobile_det#transformers.PPOCRV5MobileDetConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Ядро PP-OCRv5_mobile_det, состоящее из сетей Backbone, Neck и Head. Генерирует бинарные карты сегментации текста для задач обнаружения текста.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

