Transformers documentation
PP-DocLayoutV4
Este modelo fue aportado a Hugging Face Transformers el 2026-10-08.
PP-DocLayoutV4
Resumen
PP-DocLayoutV4 es un modelo de análisis de diseño de documentos de extremo a extremo que predice, en una sola pasada hacia adelante, qué es cada elemento de diseño, el cuadrilátero que lo encierra y los logits desde los que se decodifica el orden de lectura.
Arquitectura del modelo
PP-DocLayoutV4 mantiene el esqueleto de RT-DETR de su predecesor —un backbone HGNetV2, un codificador híbrido AIFI y un decodificador deformable— y cambia tres cosas:
- Cuadriláteros en lugar de máscaras. PPDocLayoutV3ForObjectDetection predecía una máscara de segmentación por consulta y ajustaba un polígono a ella. PP-DocLayoutV4 elimina por completo la rama de máscaras y regresa directamente un cuadrilátero de cuatro puntos, codificado como
[center_x, center_y, dx1, dy1, ..., dx4, dy4]en el espacio sigmoid. Esto permite manejar documentos con distorsión de perspectiva o inclinación sin el coste de una cabeza de máscara, y ya no se necesita la característica de la columna vertebral con stride 4. - Cabezales por capa no compartidos. Cada capa del decodificador posee su propio cabezal de caja y clasificación, en lugar de compartir un único cabezal con el codificador.
- Dos cabezas de orden de lectura más una etapa de fusión. Junto a la cabeza de orden relativo de V3 (antisimétrica: “¿se lee
iantes quej?”) hay una cabeza de sucesor (ROOR: “¿jsigue directamente ai?”).PPDocLayoutV4S2RFusionincorpora un cierre transitivo amortiguado de la matriz de sucesor en los logits de orden relativo.
El orden de lectura no se decodifica dentro del modelo. PPDocLayoutV4ForObjectDetection devuelve los relative_order_logits y successor_order_logits crudos, y post_process_object_detection() los convierte en rangos aplicando un umbral a la matriz de sucesores para formar un grafo acíclico dirigido (DAG), rompiendo los ciclos, ordenando topológicamente cada componente conexa y ordenando las componentes según sus votos de orden relativo.
Uso
Los resultados devueltos por post_process_object_detection() ya están ordenados por orden de lectura. Cada resultado incluye polygon_points, un tensor (num_boxes, 4, 2) con las esquinas regresadas en el orden superior-izquierda, superior-derecha, inferior-derecha, inferior-izquierda, además de boxes, el rectángulo alineado con los ejes que encierra cada cuadrilátero, y order_seq, el rango basado en 0 de cada caja. El ejemplo de AutoModel a continuación imprime order_seq directamente, mientras que los demás imprimen la posición basada en 1 en la lista ordenada, que es order_seq + 1 a menos que una consulta se haya mantenido bajo varias etiquetas.
Pipeline conserva el orden de lectura en el orden de la lista devuelta, pero aplanar cada detección a una puntuación, una etiqueta y una caja delimitadora entera. Utilice la ruta AutoModel a continuación para obtener los cuadriláteros y order_seq.
from transformers import pipeline
from transformers.image_utils import load_image
image = load_image("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/layout_demo.jpg")
layout_detector = pipeline("object-detection", model="PaddlePaddle/PP-DocLayoutV4_safetensors")
results = layout_detector(image)
for idx, res in enumerate(results):
print(f"Order {idx + 1}: {res}")from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image
model_path = "PaddlePaddle/PP-DocLayoutV4_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)
image = load_image("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/layout_demo.jpg")
inputs = image_processor(images=image, return_tensors="pt").to(device=model.device, dtype=model.dtype)
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=[image.size[::-1]])
for result in results:
for score, label_id, box, quad, rank in zip(
result["scores"], result["labels"], result["boxes"], result["polygon_points"], result["order_seq"]
):
box = [round(i, 2) for i in box.tolist()]
print(f"Order {rank.item()}: {model.config.id2label[label_id.item()]}, score: {score.item():.2f}, box: {box}")
print(f" corners: {[[round(x, 2) for x in point] for point in quad.tolist()]}")Inferencia por lotes
Pase una lista de imágenes y un tamaño objetivo por imagen. El orden de lectura se decodifica por imagen.
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image
model_path = "PaddlePaddle/PP-DocLayoutV4_safetensors"
model = AutoModelForObjectDetection.from_pretrained(model_path, device_map="auto")
image_processor = AutoImageProcessor.from_pretrained(model_path)
image = load_image("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/layout_demo.jpg")
inputs = image_processor(images=[image, image], return_tensors="pt").to(device=model.device, dtype=model.dtype)
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=[image.size[::-1]] * 2)
for result in results:
print("result:")
for idx, (score, label_id, box) in enumerate(zip(result["scores"], result["labels"], result["boxes"])):
box = [round(i, 2) for i in box.tolist()]
print(f"Order {idx + 1}: {model.config.id2label[label_id.item()]}, score: {score.item():.2f}, box: {box}")PPDocLayoutV4ForObjectDetection
clase transformers.PPDocLayoutV4ForObjectDetection
< source >( config: PPDocLayoutV4Config )
Parámetros
- config (PPDocLayoutV4Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
Modelo PP-DocLayoutV4 (constituido por un backbone y un encoder-decoder) que genera cuadriláteros, logits de clase y logits de orden de lectura, para tareas como el análisis de la estructura de documentos.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → PPDocLayoutV4ForObjectDetectionOutput or tuple(torch.Tensor)
Parámetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizandoimage_processor_class. Consulteimage_processor_class.__call__para más detalles (processor_classutilizaimage_processor_classpara procesar las imágenes). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar realizar atención sobre los valores de píxeles de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los píxeles reales (es decir, no enmascarados),
- 0 para los píxeles que son relleno (es decir, mascarados).
- encoder_outputs (
torch.Tensor, opcional) — La tupla consiste en (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador. - labels (
list[Dict]de longitud(batch_size,), opcional) — No compatible: PP-DocLayoutV4 solo permite inferencia en Transformers.
Devuelve
PPDocLayoutV4ForObjectDetectionOutput o tuple(torch.Tensor)
Un PPDocLayoutV4ForObjectDetectionOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (None) y las entradas.
El método forward de PPDocLayoutV4ForObjectDetection sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de clasificación (sin no-object) para todas las consultas.pred_boxes (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Cuadrados normalizados para todas las consultas, codificados como[center_x, center_y, dx1, dy1, ..., dx4, dy4], donde los desplazamientos de las esquinas se desplazan por+0.5. Utilice post_process_object_detection() para recuperar las esquinas no normalizadas y sus cajas envolventes.last_hidden_state (
torch.Tensorde forma(batch_size, num_queries, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del decodificador del modelo.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermedios apilados (salida de cada capa del decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, config.num_coords)) — Puntos de referencia intermedios apilados (cuadriláteros refinados de cada capa del decodificador).decoder_hidden_states (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del decodificador en la salida de cada capa más las salidas de la incrustación inicial.
decoder_attentions (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
cross_attentions (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.
encoder_last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.encoder_hidden_states (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del codificador en la salida de cada capa más las salidas de la incrustación inicial.
encoder_attentions (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
init_reference_points (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Puntos de referencia inicial de cuadriláteros enviados a través del decodificador Transformer.enc_topk_logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de clase de las propuestas del codificador que fueron seleccionadas como consultas del decodificador.enc_topk_bboxes (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Cuadrados de las propuestas del codificador que fueron seleccionadas como consultas del decodificador.enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels)) — Logits de clase de cada propuesta del codificador.enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, config.num_coords)) — Logits de cuadrado de cada propuesta del codificador.denoising_meta_values (
dict, opcional) — Diccionario adicional para los valores relacionados con el denoising.relative_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de orden de lectura relativo por pares, tras la fusión S2R opcional. Un valor positivo enrelative_order_logits[i, j]significa que la consultaise lee antes que la consultaj.successor_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de sucesor directo por pares (ROOR). Un valor positivo ensuccessor_order_logits[i, j]significa que la consultajsigue directamente a la consultai.
Ejemplos:
>>> from transformers import AutoImageProcessor, AutoModelForObjectDetection
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> url = "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/layout_demo.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> model_path = "PaddlePaddle/PP-DocLayoutV4_safetensors"
>>> image_processor = AutoImageProcessor.from_pretrained(model_path)
>>> model = AutoModelForObjectDetection.from_pretrained(model_path)
>>> inputs = image_processor(images=[image], return_tensors="pt")
>>> outputs = model(**inputs)
>>> # results are already sorted by reading order
>>> results = image_processor.post_process_object_detection(outputs, target_sizes=[image.size[::-1]])
>>> for result in results:
... for idx, (score, label_id, box) in enumerate(zip(result["scores"], result["labels"], result["boxes"])):
... box = [round(i, 2) for i in box.tolist()]
... print(f"Order {idx + 1}: {model.config.id2label[label_id.item()]}: {score.item():.2f} {box}")
Order 1: text: 0.99 [336.07, 182.04, 894.17, 652.62]
Order 2: paragraph_title: 0.98 [336.45, 681.88, 868.78, 796.91]
Order 3: text: 0.99 [334.01, 840.84, 889.11, 1452.29]
Order 4: text: 0.99 [920.65, 183.62, 1476.75, 462.75]
Order 5: text: 0.99 [919.55, 482.55, 1479.85, 763.41]
Order 6: text: 0.98 [919.34, 844.48, 1481.28, 1219.44]
Order 7: text: 0.98 [920.84, 1238.61, 1467.66, 1374.54]
Order 8: text: 0.90 [334.24, 1612.85, 1478.79, 1730.92]
Order 9: text: 0.95 [334.25, 1755.98, 1467.34, 1845.6]
Order 10: text: 0.65 [337.14, 1909.47, 659.78, 1938.2]
Order 11: footnote: 0.78 [338.73, 2114.87, 1448.16, 2172.06]
Order 12: number: 0.98 [106.08, 2257.42, 134.76, 2281.3]
Order 13: footer: 0.93 [339.27, 2255.7, 984.16, 2282.81]PPDocLayoutV4Model
clase transformers.PPDocLayoutV4Model
< source >( config: PPDocLayoutV4Config )
Parámetros
- config (PPDocLayoutV4Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
Modelo PP-DocLayoutV4 (constituido por un backbone y un encoder-decoder) que genera estados ocultos sin ningún head en la parte superior.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → PPDocLayoutV4ModelOutput or tuple(torch.Tensor)
Parámetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizandoimage_processor_class. Consulteimage_processor_class.__call__para más detalles (processor_classutilizaimage_processor_classpara procesar las imágenes). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar realizar atención sobre los valores de píxeles de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los píxeles reales (es decir, no enmascarados),
- 0 para los píxeles que son relleno (es decir, mascarados).
- encoder_outputs (
torch.Tensor, opcional) — La tupla consiste en (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de hidden-states en la salida de la última capa del codificador. Se utiliza en la atención cruzada del decodificador. - labels (
list[Dict]de longitud(batch_size,), opcional) — No compatible: PP-DocLayoutV4 solo permite inferencia en Transformers.
Devuelve
PPDocLayoutV4ModelOutput o tuple(torch.Tensor)
Un PPDocLayoutV4ModelOutput o una tupla de
torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (None) y las entradas.
El método forward de PPDocLayoutV4Model sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.Tensorde forma(batch_size, num_queries, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del decodificador del modelo.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermedios apilados (salida de cada capa del decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, config.num_coords)) — Puntos de referencia intermedios apilados (cuadriláteros refinados de cada capa del decodificador).decoder_hidden_states (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de los embeddings, si el modelo tiene una capa de embedding, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del decodificador en la salida de cada capa más las salidas de la incrustación inicial.
decoder_attentions (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
cross_attentions (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención de la capa de atención cruzada del decodificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de atención cruzada.
encoder_last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador del modelo.encoder_hidden_states (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del codificador en la salida de cada capa más las salidas de la incrustación inicial.
encoder_attentions (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención del codificador, después del softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
init_reference_points (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Puntos de referencia inicial de cuadriláteros enviados a través del decodificador Transformer.enc_topk_logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de clase de las propuestas del codificador que fueron seleccionadas como consultas del decodificador.enc_topk_bboxes (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Cuadrados de las propuestas del codificador que fueron seleccionadas como consultas del decodificador.enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels)) — Logits de clase de cada propuesta del codificador.enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, config.num_coords)) — Logits de cuadrado de cada propuesta del codificador.denoising_meta_values (
dict, opcional) — Diccionario adicional para los valores relacionados con el denoising.logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de clasificación de la última capa del decodificador.relative_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de orden de lectura relativo por pares, tras la fusión S2R opcional.successor_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de sucesor directo por pares (ROOR).
PPDocLayoutV4Config
clase transformers.PPDocLayoutV4Config
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Trueinitializer_range: float = 0.01initializer_bias_prior_prob: float | None = Nonelayer_norm_eps: float = 1e-05batch_norm_eps: float = 1e-05tie_word_embeddings: bool = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonefreeze_backbone_batch_norms: bool = Trueencoder_hidden_dim: int = 256encoder_in_channels: list[int] | tuple[int, ...] = (512, 1024, 2048)feat_strides: list[int] | tuple[int, ...] = (8, 16, 32)encoder_layers: int = 1encoder_ffn_dim: int = 1024encoder_attention_heads: int = 8dropout: float | int = 0.0activation_dropout: float | int = 0.0encode_proj_layers: list[int] | tuple[int, ...] = (2,)positional_encoding_temperature: int = 10000encoder_activation_function: str = 'gelu'activation_function: str = 'silu'eval_size: list[int] | tuple[int, int] | None = Nonenormalize_before: bool = Falsehidden_expansion: float = 1.0num_queries: int = 300decoder_in_channels: list[int] | tuple[int, ...] = (256, 256, 256)decoder_ffn_dim: int = 1024num_feature_levels: int = 3decoder_n_points: int = 4decoder_layers: int = 6decoder_attention_heads: int = 8decoder_activation_function: str = 'relu'attention_dropout: float | int = 0.0num_denoising: int = 100anchor_image_size: list[int] | tuple[int, int] | None = Nonedisable_custom_kernels: bool = Trueglobal_pointer_head_size: int = 64gp_dropout_value: float | int = 0.1hidden_size: int = 256num_coords: int = 10s2r_steps: int = 3s2r_damping: float = 0.5s2r_closure_weight_init: float = 0.0 )
Parámetros
- is_encoder_decoder (
bool, opcional, valor predeterminadoTrue) — Indica si el modelo se utiliza como codificador/decodificador o no. - initializer_range (
float, opcional, valor predeterminado0.01) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - initializer_bias_prior_prob (
float, opcional) — La probabilidad a priori utilizada por el inicializador de sesgo para inicializar los sesgos deenc_score_headyclass_embed. Si esNone, el valor predeterminado es1 / (num_labels + 1). - layer_norm_eps (
float, opcional, valor predeterminado1e-05) — El epsilon utilizado por las capas de normalización de capa. - batch_norm_eps (
float, opcional, valor predeterminado1e-05) — La epsilon utilizada por las capas de normalización por lote. - tie_word_embeddings (
bool, opcional, valor predeterminadoTrue) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel modelo. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — La configuración del modelo backbone. - freeze_backbone_batch_norms (
bool, opcional, valor predeterminadoTrue) — Si se congelan las capas de normalización por lote en el backbone. - encoder_hidden_dim (
int, opcional, valor predeterminado256) — Dimensión de las representaciones ocultas. - encoder_in_channels (
list, opcional, valor predeterminado[512, 1024, 2048]) — Entrada de características multinivel para el codificador. - feat_strides (
list[int], opcional, valor predeterminado[8, 16, 32]) — Pasos utilizados en cada mapa de características. - encoder_layers (
int, opcional, valor predeterminado1) — Número de capas ocultas en el codificador del Transformer. Usará el mismo valor quenum_layerssi no se establece. - encoder_ffn_dim (
int, opcional, valor predeterminado1024) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) en el codificador. - encoder_attention_heads (
int, opcional, valor predeterminado8) — Número de cabezas de atención para cada capa de atención en el codificador Transformer. - dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción para todas las capas de dropout. - activation_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada. - encode_proj_layers (
list[int], opcional, valor predeterminado[2]) — Índices de las capas proyectadas que se usarán en el codificador. - positional_encoding_temperature (
int, opcional, valor predeterminado 10000) — El parámetro de temperatura utilizado para crear las codificaciones posicionales. - encoder_activation_function (
str, opcional, valor predeterminado"gelu") — La función de activación no lineal (función o cadena) en el codificador y el pooler. Si es una cadena, se admiten"gelu","relu","silu"y"gelu_new". - activation_function (
str, opcional, valor predeterminadosilu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo,"gelu","relu","silu", etc. - eval_size (
tuple[int, int], opcional) — Altura y ancho utilizados para calcular la altura y el ancho efectivos de los embeddings de posición después de tener en cuenta el stride. Debe dejarse comoNonepara reproducir la implementación de referencia, que calcula los embeddings de posición dinámicamente. - normalize_before (
bool, opcional, valor predeterminadoFalse) — Determina si se aplica la normalización de capas en la capa del codificador del transformer antes de los módulos de autoatención y de avance hacia adelante. - hidden_expansion (
float, opcional, valor predeterminado 1.0) — Relación de expansión para aumentar el tamaño de la dimensión de RepVGGBlock y CSPRepLayer. - num_queries (
int, opcional, valor predeterminado 300) — Número de consultas de objetos. - decoder_in_channels (
list, opcional, por defecto[256, 256, 256]) — Dimensión de las características de múltiples niveles para el decodificador - decoder_ffn_dim (
int, opcional, valor predeterminado 1024) — Dimensión de la capa “intermedia” (a menudo denominada feed-forward) en el decodificador. - num_feature_levels (
int, opcional, valor predeterminado 3) — El número de niveles de características de entrada. - decoder_n_points (
int, opcional, valor predeterminado 4) — El número de claves muestreadas en cada nivel de características para cada cabeza de atención en el decodificador. - decoder_layers (
int, opcional, valor predeterminado6) — Número de capas ocultas en el decodificador del Transformer. Si no se establece, se usará el mismo valor quenum_layers. - decoder_attention_heads (
int, opcional, valor predeterminado8) — Número de cabezas de atención para cada capa de atención en el decodificador del Transformer. - decoder_activation_function (
str, opcional, valor predeterminado"relu") — La función de activación no lineal (función o cadena) en el decodificador. Si es una cadena, se admiten"gelu","relu","silu"y"gelu_new". - attention_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las probabilidades de atención. - num_denoising (
int, opcional, valor predeterminado 100) — El número total de tareas o consultas de denoising que se utilizarán para el denoising contrastivo. - anchor_image_size (
tuple[int, int], opcional) — Altura y ancho de la imagen de entrada utilizada durante la evaluación para generar los anclajes de las cajas delimitadoras. Si es None, se aplica la generación automática de anclajes. - disable_custom_kernels (
bool, opcional, valor predeterminadoTrue) — Si se desactivan los kernels personalizados. - global_pointer_head_size (
int, opcional, valor predeterminado 64) — El tamaño de la cabecera del puntero global. - gp_dropout_value (
float, opcional, valor predeterminado 0.1) — La probabilidad de dropout en la cabeza de puntero global. - hidden_size (
int, opcional, valor predeterminado 256) — Dimensión de las capas del decodificador, excluyendo el codificador híbrido. También se puede leer comod_model, el nombre utilizado por la línea RT-DETR de la que desciende este modelo. - num_coords (
int, opcional, valor predeterminado 10) — Tamaño de la parametrización de la caja predicha por las cabeceras de bbox. PP-DocLayoutV4 regresa un cuadrilátero de cuatro puntos codificado como[center_x, center_y, dx1, dy1, dx2, dy2, dx3, dy3, dx4, dy4]en el espacio sigmoid, donde los desplazamientos de las esquinas se desplazan por+0.5. Solo se admite10. - s2r_steps (
int, opcional, valor predeterminado 3) — Número de pasos de propagación utilizados para aproximar el cierre transitivo de la matriz de sucesores. - s2r_damping (
float, opcional, valor predeterminado 0.5) — Factor de amortiguación aplicado a cada paso adicional de propagación del cierre transitivo. - s2r_closure_weight_init (
float, opcional, valor predeterminado 0.0) — Valor inicial de la compuerta aprendible que pondera el término de cierre. El valor predeterminado es0.0para que un módulo de fusión sin entrenar sea numéricamente idéntico al uso de solo los logits de orden relativo.
Esta es la clase de configuración para almacenar la configuración de un PPDocLayoutV4Model. Se utiliza para instanciar un modelo Pp Doclayout V4 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de PaddlePaddle/PP-DocLayoutV4_safetensors
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
Ejemplos:
>>> from transformers import PPDocLayoutV4Config, PPDocLayoutV4ForObjectDetection
>>> # Initializing a PP-DocLayoutV4 configuration
>>> configuration = PPDocLayoutV4Config()
>>> # Initializing a model (with random weights) from the configuration
>>> model = PPDocLayoutV4ForObjectDetection(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configPPDocLayoutV4ImageProcessor
clase transformers.PPDocLayoutV4ImageProcessor
< source >( **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )
Parámetros
- do_convert_rgb (
bool, kwargs, opcional) — Si se debe convertir la imagen a RGB. - do_resize (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe redimensionar la imagen. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, por defecto{'height' -- 800, 'width': 800}): Describe las dimensiones de entrada máximas para el modelo. - default_to_square (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe usar una imagen cuadrada por defecto al redimensionar, si size es un int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamaño de la imagen de salida tras aplicarcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, por defecto3) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los valores de la enumeraciónPILImageResampling. Solo tiene efecto sido_resizeestá establecido enTrue. - do_rescale (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe reescalar la imagen. - rescale_factor (
float, kwargs, opcional, valor predeterminado0.00392156862745098) — Factor de reescalado para reescalar la imagen sido_rescaleestá establecido enTrue. - do_normalize (
bool, kwargs, opcional, valor predeterminadoTrue) — Si se debe normalizar la imagen. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, valor predeterminado[0, 0, 0]) — Media de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, valor predeterminado[1, 1, 1]) — Desviación estándar de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - do_pad (
bool, kwargs, opcional) — Indica si se debe aplicar relleno a la imagen. El relleno se realiza hasta el tamaño más grande del lote o hasta un tamaño cuadrado fijo por imagen. La estrategia exacta de relleno depende del modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — El tamaño en{"height": int, "width" int}al que se rellenan las imágenes. Debe ser mayor que cualquier tamaño de imagen proporcionado para el preprocesamiento. Si no se proporcionapad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Si se debe recortar la imagen centrada. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — Solo se admiteChannelDimension.FIRST. Se añadió para garantizar la compatibilidad con los procesadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — El formato de la dimensión de canales para la imagen de entrada. Si no se establece, el formato de la dimensión de canales se infiere a partir de la imagen de entrada. Puede ser uno de:"channels_first"oChannelDimension.FIRST: imagen en formato (num_channels, height, width)."channels_last"oChannelDimension.LAST: imagen en formato (altura, ancho, num_canales)."none"oChannelDimension.NONE: imagen en formato (altura, ancho).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — El dispositivo en el que se procesarán los videos. Si no se establece, el dispositivo se infiere a partir de los videos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador. Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador. Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador. - Returns stacked tensors if set to
'pt', otherwise returns a list of tensors. —
Construye un procesador de imágenes PPDocLayoutV4ImageProcessor.
disable_grouping (bool, kwargs, opcional):
Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes.
Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en
observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 image_seq_length (int, kwargs, opcional):
El número de tokens de imagen que se utilizarán para cada imagen en la entrada.
Añadido para compatibilidad hacia atrás, pero en futuros modelos debería establecerse como un atributo del procesador.
preprocesar
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]*argsimage_like_kwargs: dict[str, typing.Any] | None = None**kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> ) → ~image_processing_base.BatchFeature
Parámetros
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Imagen a preprocesar. Espera una imagen única o un lote de imágenes con valores de píxeles que van de 0 a 255. Si se pasan imágenes con valores de píxeles entre 0 y 1, establezcado_rescale=False. - image_like_kwargs (
dict[str, Any], opcional) — Bandera para desarrolladores destinada a entradas adicionales de tipo imagen que también se preprocesarán. Utilice esto solo si pasar las entradas como kwarg no funciona. Por ejemplo,preprocess(images, masks=masks)es la opción preferida, pero provoca problemas de prioridad de argumentos en algunos modelos. En esos casos se puede usarpreprocess(images, image_like_inputs={"masks": masks})en su lugar. - do_convert_rgb (
bool, kwargs, opcional) — Si se debe convertir la imagen a RGB. - do_resize (
bool, kwargs, opcional) — Si se debe redimensionar la imagen. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Describe las dimensiones de entrada máximas del modelo. - default_to_square (
bool, kwargs, opcional) — Si se debe usar una imagen cuadrada por defecto al redimensionar, si size es un int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamaño de la imagen de salida tras aplicarcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtro de remuestreo a utilizar si se redimensiona la imagen. Puede ser uno de los enumPILImageResampling. Solo tiene efecto sido_resizeestá establecido enTrue. - do_rescale (
bool, kwargs, opcional) — Si se debe reescalar la imagen. - rescale_factor (
float, kwargs, opcional) — Factor de reescalado para reescalar la imagen sido_rescaleestá establecido enTrue. - do_normalize (
bool, kwargs, opcional) — Si se debe normalizar la imagen. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Media de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Desviación estándar de la imagen a utilizar para la normalización. Solo tiene efecto sido_normalizeestá establecido enTrue. - do_pad (
bool, kwargs, opcional) — Indica si se debe aplicar relleno a la imagen. El relleno se realiza hasta el tamaño más grande del lote o hasta un tamaño cuadrado fijo por imagen. La estrategia exacta de relleno depende del modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — El tamaño en{"height": int, "width" int}al que se rellenan las imágenes. Debe ser mayor que cualquier tamaño de imagen proporcionado para el preprocesamiento. Si no se proporcionapad_size, las imágenes se rellenarán hasta la mayor altura y anchura del lote. Se aplica solo cuandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Si se debe recortar la imagen centrada. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — Solo se admiteChannelDimension.FIRST. Se añadió para garantizar la compatibilidad con los procesadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — El formato de la dimensión de canales para la imagen de entrada. Si no se establece, el formato de la dimensión de canales se infiere a partir de la imagen de entrada. Puede ser uno de:"channels_first"oChannelDimension.FIRST: imagen en formato (num_channels, height, width)."channels_last"oChannelDimension.LAST: imagen en formato (altura, ancho, num_canales)."none"oChannelDimension.NONE: imagen en formato (altura, ancho).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — El dispositivo en el que se procesarán los videos. Si no se establece, el dispositivo se infiere a partir de los videos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Devuelve tensores apilados si se establece en'pt'; en caso contrario, devuelve una lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Si se debe deshabilitar el agrupamiento de imágenes por tamaño para procesarlas de forma individual y no en lotes. Si es None, se establecerá en True si las imágenes están en CPU, y en False en caso contrario. Esta elección se basa en observaciones empíricas, como se detalla aquí: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — El número de tokens de imagen que se utilizarán para cada imagen en la entrada. Añadido por compatibilidad con versiones anteriores, pero en futuros modelos debería establecerse como un atributo del procesador.
Devuelve
~image_processing_base.BatchFeature
- data (
dict) — Diccionario de listas/arrays/tensores devueltos por el método call (‘pixel_values’, etc.). - tensor_type (
Union[None, str, TensorType], opcional) — Puede especificar un tensor_type aquí para convertir las listas de enteros en Tensors de PyTorch/Numpy durante la inicialización.
Preprocesa una imagen o un lote de imágenes.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes = None ) → list[Dict]
Parámetros
- outputs (
PPDocLayoutV4ForObjectDetectionOutput) — Salidas sin procesar del modelo. - threshold (
float, opcional, valor predeterminado 0.5) — Umbral de puntuación para conservar las predicciones de detección de objetos. - target_sizes (
torch.Tensorolist[tuple[int, int]]) — Tensor de forma(batch_size, 2)o lista de tuplas ((height, width)) con el tamaño objetivo de cada imagen del lote.
Devuelve
list[Dict]
Una lista de diccionarios, uno por imagen, cada uno que contiene los scores, labels, boxes,
polygon_points y order_seq predichos por el modelo. Las predicciones se ordenan por orden de lectura, por lo que
order_seq es no decreciente (una consulta seleccionada bajo varias etiquetas mantiene un solo rango).
Convierte la salida cruda de PPDocLayoutV4ForObjectDetection en cuadriláteros finales, cajas envolventes en formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y) y rangos de orden de lectura. Solo admite PyTorch.