# PP-OCRv6_small_det

## Aperçu

PP-OCRv6_small_det est le petit modèle de la série de détection PP-OCRv6 développée par l'équipe PaddleOCR. Il utilise LCNetV4 comme colonne vertébrale et RepLKFPN comme cou de pyramide de caractéristiques, offrant une localisation précise du texte dans des scénarios variés, y compris le texte manuscrit, imprimé, rotatif, courbé et artistique dans plusieurs langues. Le modèle contient 2,48 millions de paramètres.

## Architecture du modèle

## Utilisation

### Inférence avec une seule entrée

L'exemple ci-dessous montre comment détecter du texte avec PP-OCRv6_small_det à l'aide de [AutoModel](/docs/transformers/main/fr/model_doc/auto#transformers.AutoModel).

```python
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)
```

### Inférence par lots

Voici comment faire avec PP-OCRv6_small_det en utilisant [AutoModel](/docs/transformers/main/fr/model_doc/auto#transformers.AutoModel) :

```python
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[[transformers.PPOCRV6SmallDetForObjectDetection]]

#### transformers.PPOCRV6SmallDetForObjectDetection[[transformers.PPOCRV6SmallDetForObjectDetection]]

```python
transformers.PPOCRV6SmallDetForObjectDetection(config: PPOCRV6SmallDetConfig)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_small_det/modeling_pp_ocrv6_small_det.py#L314)

**Paramètres :**

config ([PPOCRV6SmallDetConfig](/docs/transformers/main/fr/model_doc/pp_ocrv6_small_det#transformers.PPOCRV6SmallDetConfig)) : Classe de configuration du modèle contenant tous les paramètres du modèle. L'initialisation à partir d'un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour charger les poids du modèle.

Modèle PPOCR6SmallRec pour les tâches de reconnaissance de texte.

Ce modèle hérite de [PreTrainedModel](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, l'élagage des têtes, etc.).

Ce modèle est également une sous-classe de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l’utilisation et le comportement généraux.

## PPOCRV6SmallDetConfig[[transformers.PPOCRV6SmallDetConfig]]

#### transformers.PPOCRV6SmallDetConfig[[transformers.PPOCRV6SmallDetConfig]]

```python
transformers.PPOCRV6SmallDetConfig(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), dilated_kernel_size: int = 7)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_small_det/configuration_pp_ocrv6_small_det.py#L31)

**Paramètres :**

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *facultatif*) : La configuration du modèle de base.

reduction (`int`, *facultatif*, valeur par défaut : 4) : Facteur de réduction des dimensions des canaux de caractéristiques, utilisé pour réduire le nombre de paramètres du modèle et la complexité de calcul tout en conservant la capacité de représentation des caractéristiques.

neck_out_channels (`int`, *facultatif*, valeur par défaut : 96) : Le nombre de canaux de sortie du réseau neck, qui est responsable de la fusion et du raffinement des caractéristiques avant de les transmettre au réseau head.

interpolate_mode (`str`, *facultatif*, valeur par défaut `"nearest"`) : Le mode d'interpolation utilisé pour l'interpolation par suréchantillonnage ou sous-échantillonnage des cartes de caractéristiques dans le réseau neck. Les modes pris en charge incluent `"nearest"` (interpolation du plus proche voisin) et `"bilinear"`.

kernel_list (`List[int]`, *facultatif*, par défaut `[3, 2, 2]`) : La liste des tailles de noyaux pour les couches convolutives du réseau de tête, utilisée pour l'extraction de caractéristiques multi-échelles afin de détecter des régions de texte de différentes tailles.

layer_list_out_channels (`List[int]`, *facultatif*, par défaut `[12, 18, 42, 360]`) : La liste des canaux de sortie pour chaque étape du backbone, utilisée pour configurer les canaux d'entrée des couches RSE dans le réseau neck pour la fusion de caractéristiques multi-échelle.

dilated_kernel_size (`int`, *facultatif*, valeur par défaut : 7) : La taille du noyau de la couche de convolution dilatée dans le chemin de convolution d'entrée, utilisée pour capturer les dépendances à longue portée dans les cartes de caractéristiques.

Il s’agit de la classe de configuration destinée à stocker la configuration d’un PPOCRV6SmallDetModel. Elle est utilisée pour instancier un modèle Pp Ocrv6 Small Det en fonction des arguments spécifiés, en définissant l’architecture du modèle. L’instanciation d’une configuration avec les valeurs par défaut produit une configuration similaire à celle du [PaddlePaddle/PP-OCRv6_small_det_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv6_small_det_safetensors)

Les objets de configuration héritent de [PreTrainedConfig](/docs/transformers/main/fr/main_classes/configuration#transformers.PreTrainedConfig) et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de [PreTrainedConfig](/docs/transformers/main/fr/main_classes/configuration#transformers.PreTrainedConfig) pour plus d’informations.

## PPOCRV6SmallDetModel[[transformers.PPOCRV6SmallDetModel]]

#### transformers.PPOCRV6SmallDetModel[[transformers.PPOCRV6SmallDetModel]]

```python
transformers.PPOCRV6SmallDetModel(config: PPOCRV6SmallDetConfig)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_small_det/modeling_pp_ocrv6_small_det.py#L289)

**Paramètres :**

config ([PPOCRV6SmallDetConfig](/docs/transformers/main/fr/model_doc/pp_ocrv6_small_det#transformers.PPOCRV6SmallDetConfig)) : Classe de configuration du modèle contenant tous les paramètres du modèle. L'initialisation à partir d'un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode [from_pretrained()](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel.from_pretrained) pour charger les poids du modèle.

Le modèle Pp Ocrv6 Small Det brut, qui produit des états cachés bruts sans aucune tête spécifique au sommet.

Ce modèle hérite de [PreTrainedModel](/docs/transformers/main/fr/main_classes/model#transformers.PreTrainedModel). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, l'élagage des têtes, etc.).

Ce modèle est également une sous-classe de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l’utilisation et le comportement généraux.

#### forward[[transformers.PPOCRV6SmallDetModel.forward]]

```python
forward(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Source](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_small_det/modeling_pp_ocrv6_small_det.py#L296)

**Paramètres :**

pixel_values (`torch.Tensor` de forme `(batch_size, num_channels, image_size, image_size)`) : Les tenseurs correspondant aux images d’entrée. Les valeurs des pixels peuvent être obtenues à l’aide de [PPOCRV5ServerDetImageProcessor](/docs/transformers/main/fr/model_doc/pp_ocrv5_server_det#transformers.PPOCRV5ServerDetImageProcessor). Voir [PPOCRV5ServerDetImageProcessor.__call__()](/docs/transformers/main/fr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) pour plus de détails (`processor_class` utilise [PPOCRV5ServerDetImageProcessor](/docs/transformers/main/fr/model_doc/pp_ocrv5_server_det#transformers.PPOCRV5ServerDetImageProcessor) pour le traitement des images).

**Retourne :** `BaseModelOutputWithNoAttention` ou `tuple(torch.Tensor)`

Un `BaseModelOutputWithNoAttention` ou un tuple de `torch.Tensor` (si `return_dict=False` est passé ou lorsque `config.return_dict=False`) comprenant divers éléments selon la configuration ([PPOCRV6SmallDetConfig](/docs/transformers/main/fr/model_doc/pp_ocrv6_small_det#transformers.PPOCRV6SmallDetConfig)) et les entrées.

La méthode forward du modèle [PPOCRV6SmallDetModel](/docs/transformers/main/fr/model_doc/pp_ocrv6_small_det#transformers.PPOCRV6SmallDetModel) redéfinit la méthode spéciale `__call__`.

Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance `Module` plutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.

- **last_hidden_state** (`torch.Tensor` de forme `(batch_size, num_channels, height, width)`) -- Séquence d'états cachés à la sortie de la dernière couche du modèle.
- **hidden_states** (`tuple(torch.Tensor)`, *facultatif*, renvoyé lorsque `output_hidden_states=True` est passé ou lorsque `config.output_hidden_states=True`) -- Tuple de `torch.Tensor` (un pour la sortie des embeddings, si le modèle possède une couche d'embedding, + un pour la sortie de chaque couche) de forme `(batch_size, num_channels, height, width)`.

  États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.

