# PP-OCRv6_medium_det

## Ikhtisar

PP-OCRv6_medium_det adalah model terbesar dalam seri deteksi PP-OCRv6 yang dikembangkan oleh tim PaddleOCR. Model ini menggunakan LCNetV4 sebagai backbone dan RepLKFPN sebagai leher piramida fitur, menyediakan lokalisasi teks yang akurat di berbagai skenario, termasuk teks tulisan tangan, cetak, berputar, melengkung, dan artistik dalam berbagai bahasa. Model ini berisi 15,5 juta parameter.

## Arsitektur Model

## Penggunaan

### Inferensi input tunggal

Contoh di bawah ini menunjukkan cara mendeteksi teks dengan PP-OCRv6_medium_det menggunakan [AutoModel](/docs/transformers/main/id/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_medium_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)
```

### Inferensi berbatch

Berikut cara melakukannya dengan PP-OCRv6_medium_det menggunakan [AutoModel](/docs/transformers/main/id/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_medium_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)
```

## PPOCRV6MediumDetForObjectDetection[[transformers.PPOCRV6MediumDetForObjectDetection]]

#### transformers.PPOCRV6MediumDetForObjectDetection[[transformers.PPOCRV6MediumDetForObjectDetection]]

```python
transformers.PPOCRV6MediumDetForObjectDetection(config: PPOCRV6MediumDetConfig)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_medium_det/modeling_pp_ocrv6_medium_det.py#L363)

**Parameter:**

config ([PPOCRV6MediumDetConfig](/docs/transformers/main/id/model_doc/pp_ocrv6_medium_det#transformers.PPOCRV6MediumDetConfig)) : Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode [from_pretrained()](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model PPOCRV6MediumDet untuk tugas deteksi teks.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka ini untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran input embeddings, memangkas heads, dll.)

Model ini juga merupakan subclass dari [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

## PPOCRV6MediumDetConfig[[transformers.PPOCRV6MediumDetConfig]]

#### transformers.PPOCRV6MediumDetConfig[[transformers.PPOCRV6MediumDetConfig]]

```python
transformers.PPOCRV6MediumDetConfig(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, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, id2label: dict[int, str] | dict[str, str] | None = None, interpolate_mode: str = 'nearest', backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, neck_out_channels: int = 256, reduce_factor: int = 2, intraclass_block_number: int = 4, intraclass_block_config: dict | None = None, scale_factor: int = 2, scale_factor_list: list | None = None, kernel_list: list | None = None)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_medium_det/configuration_pp_ocrv6_medium_det.py#L31)

**Parameter:**

id2label (`Union[dict[int, str], dict[str, str]]`, *opsional*) : Pemetaan dari indeks (misalnya indeks prediksi, atau indeks target) ke label.

interpolate_mode (`str`, *opsional*, defaultnya `"nearest"`) : Mode interpolasi yang digunakan untuk upsampling atau downsampling peta fitur di jaringan neck.

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *opsional*) : Konfigurasi dari model backbone.

neck_out_channels (`int`, *opsional*, default 256) : Jumlah saluran keluaran dari jaringan leher, yang bertanggung jawab untuk fusi dan penyempurnaan fitur.

reduce_factor (`int`, *opsional*, defaultnya 2) : Faktor reduksi channel yang digunakan dalam blok neck untuk menyeimbangkan kinerja dan kompleksitas.

intraclass_block_number (`int`, *opsional*, default 4) : Jumlah modul Intra-Class Block yang digunakan untuk meningkatkan representasi fitur.

intraclass_block_config (`dict`, *opsional*, defaultnya `None`) : Konfigurasi untuk modul Intra-Class Block, jika ada, yang digunakan untuk meningkatkan representasi fitur.

scale_factor (`int`, *opsional*, defaultnya 2) : Faktor penskalaan yang digunakan untuk penyesuaian resolusi spasial pada peta fitur.

scale_factor_list (`list[int]`, *opsional*, defaultnya `None`) : Daftar faktor penskalaan yang digunakan untuk penyesuaian resolusi spasial pada peta fitur.

kernel_list (`list[int]`, *opsional*, defaultnya `[3, 2, 2]`) : Daftar ukuran kernel untuk lapisan konvolusional dalam jaringan head untuk ekstraksi fitur multi-skala.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari PPOCRV6MediumDetModel. Kelas ini digunakan untuk membuat instans model Pp Ocrv6 Medium Det sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari [PaddlePaddle/PP-OCRv6_medium_det_safetensors](https://huggingface.co/PaddlePaddle/PP-OCRv6_medium_det_safetensors)

Objek konfigurasi mewarisi dari [PreTrainedConfig](/docs/transformers/main/id/main_classes/configuration#transformers.PreTrainedConfig) dan dapat digunakan untuk mengontrol keluaran model. Baca dokumentasi dari [PreTrainedConfig](/docs/transformers/main/id/main_classes/configuration#transformers.PreTrainedConfig) untuk informasi lebih lanjut.

## PPOCRV6MediumDetModel[[transformers.PPOCRV6MediumDetModel]]

#### transformers.PPOCRV6MediumDetModel[[transformers.PPOCRV6MediumDetModel]]

```python
transformers.PPOCRV6MediumDetModel(config: PPOCRV6MediumDetConfig)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_medium_det/modeling_pp_ocrv6_medium_det.py#L338)

**Parameter:**

config ([PPOCRV6MediumDetConfig](/docs/transformers/main/id/model_doc/pp_ocrv6_medium_det#transformers.PPOCRV6MediumDetConfig)) : Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode [from_pretrained()](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel.from_pretrained) untuk memuat bobot model.

Model Pp Ocrv6 Medium Det polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari [PreTrainedModel](/docs/transformers/main/id/main_classes/model#transformers.PreTrainedModel). Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka ini untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran input embeddings, memangkas heads, dll.)

Model ini juga merupakan subclass dari [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

#### forward[[transformers.PPOCRV6MediumDetModel.forward]]

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pp_ocrv6_medium_det/modeling_pp_ocrv6_medium_det.py#L345)

**Parameter:**

pixel_values (`torch.Tensor` dengan bentuk `(batch_size, num_channels, image_size, image_size)`) : Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan [PPOCRV5ServerDetImageProcessor](/docs/transformers/main/id/model_doc/pp_ocrv5_server_det#transformers.PPOCRV5ServerDetImageProcessor). Lihat [PPOCRV5ServerDetImageProcessor.__call__()](/docs/transformers/main/id/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) untuk detailnya (`processor_class` menggunakan [PPOCRV5ServerDetImageProcessor](/docs/transformers/main/id/model_doc/pp_ocrv5_server_det#transformers.PPOCRV5ServerDetImageProcessor) untuk memproses gambar).

**Mengembalikan:** `BaseModelOutputWithNoAttention` atau `tuple(torch.Tensor)`

`BaseModelOutputWithNoAttention` atau tuple dari `torch.Tensor` (jika `return_dict=False` dilewatkan atau ketika `config.return_dict=False`) yang terdiri dari berbagai elemen tergantung pada konfigurasi ([PPOCRV6MediumDetConfig](/docs/transformers/main/id/model_doc/pp_ocrv6_medium_det#transformers.PPOCRV6MediumDetConfig)) dan input.

Metode forward dari [PPOCRV6MediumDetModel](/docs/transformers/main/id/model_doc/pp_ocrv6_medium_det#transformers.PPOCRV6MediumDetModel) menimpa metode khusus `__call__`.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance `Module` setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

- **last_hidden_state** (`torch.Tensor` dengan bentuk `(batch_size, num_channels, height, width)`) -- Urutan hidden-state pada keluaran lapisan terakhir model.
- **hidden_states** (`tuple(torch.Tensor)`, *opsional*, dikembalikan ketika `output_hidden_states=True` dilewatkan atau ketika `config.output_hidden_states=True`) -- Tuple dari `torch.Tensor` (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk `(batch_size, num_channels, height, width)`.

  Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

