Transformers documentation
PP-DocLayoutV4
Este modelo foi contribuído para o Hugging Face Transformers em 2026-10-08.
PP-DocLayoutV4
Visão geral
PP-DocLayoutV4 é um modelo de análise de layout de documentos de ponta a ponta que prevê, em uma única passagem direta, o que é cada elemento de layout, o quadrilátero que o delimita e os logits a partir dos quais a ordem de leitura é decodificada.
Arquitetura do Modelo
PP-DocLayoutV4 mantém o esqueleto RT-DETR de seu predecessor — um backbone HGNetV2, um encoder híbrido AIFI e um decoder deformável — e altera três aspectos:
- Quadriláteros em vez de máscaras. PPDocLayoutV3ForObjectDetection previa uma máscara de segmentação por query e ajustava um polígono a ela. O PP-DocLayoutV4 elimina completamente o ramo de máscara e regressa diretamente um quadrilátero de quatro pontos, codificado como
[center_x, center_y, dx1, dy1, ..., dx4, dy4]no espaço sigmoid. Isso lida com documentos distorcidos por perspectiva ou inclinação sem o custo de uma cabeça de máscara, e o recurso de backbone com stride 4 não é mais necessário. - Cabeças por camada não compartilhadas. Cada camada do decodificador possui sua própria caixa e cabeça de classificação, em vez de compartilhar uma única cabeça com o codificador.
- Duas cabeças de ordem de leitura mais uma etapa de fusão. Além da cabeça de ordem relativa da V3 (antissimétrica: “
ié lida antes dej?”), há uma cabeça de sucessor (ROOR: “jsegue diretamentei?”).PPDocLayoutV4S2RFusionincorpora um fechamento transitivo amortecido da matriz de sucessor de volta aos logits de ordem relativa.
A ordem de leitura não é decodificada dentro do modelo. PPDocLayoutV4ForObjectDetection retorna os relative_order_logits e successor_order_logits brutos, e post_process_object_detection() os converte em posições por meio do limiar da matriz de sucessores em um grafo acíclico direcionado (DAG), quebrando ciclos, ordenando cada componente conexo topologicamente e ordenando os componentes por seus votos de ordem relativa.
Uso
Os resultados retornados por post_process_object_detection() já estão ordenados pela ordem de leitura. Cada resultado contém polygon_points — um tensor (num_boxes, 4, 2) com os cantos regressados na ordem superior-esquerda, superior-direita, inferior-direita, inferior-esquerda — além de boxes, o retângulo alinhado aos eixos que envolve cada quadrilátero, e order_seq, o rank base 0 de cada caixa. O exemplo de AutoModel abaixo imprime order_seq diretamente, enquanto os outros imprimem a posição base 1 na lista ordenada, que é order_seq + 1, a menos que uma consulta tenha sido mantida sob vários rótulos.
O Pipeline preserva a ordem de leitura na ordem da lista retornada, mas aplanar cada detecção em uma pontuação, um rótulo e uma caixa delimitadora inteira. Use o caminho AutoModel abaixo para obter os quadriláteros e 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()]}")Inferência em lote
Passe uma lista de imagens e um tamanho de destino para cada imagem. A ordem de leitura é decodificada por imagem.
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
classe transformers.PPDocLayoutV4ForObjectDetection
< source >( config: PPDocLayoutV4Config )
Parâmetros
- config (PPDocLayoutV4Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
Modelo PP-DocLayoutV4 (composto por um backbone e um encoder-decoder) que gera quadriláteros, logits de classe e logits de ordem de leitura, para tarefas como análise de layout de documentos.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
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)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usandoimage_processor_class. Consulteimage_processor_class.__call__para mais detalhes (processor_classusaimage_processor_classpara processar as imagens). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar a execução de atenção em valores de pixels de preenchimento. Valores da máscara selecionados em[0, 1]:- 1 para pixels reais (ou seja, não mascarados),
- 0 para pixels que são padding (ou seja, mascarados).
- encoder_outputs (
torch.Tensor, opcional) — A tupla consiste em (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) é uma sequência de hidden-states na saída da última camada do encoder. Usado na cross-attention do decoder. - labels (
list[Dict]de comprimento(batch_size,), opcional) — Não suportado: PP-DocLayoutV4 é apenas para inferência no Transformers.
Retorna
PPDocLayoutV4ForObjectDetectionOutput ou tuple(torch.Tensor)
Um PPDocLayoutV4ForObjectDetectionOutput ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (None) e das entradas.
O método forward de PPDocLayoutV4ForObjectDetection sobrescreve o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de classificação (sem no-object) para todas as queries.pred_boxes (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Quads normalizados para todas as queries, codificados como[center_x, center_y, dx1, dy1, ..., dx4, dy4], onde os deslocamentos dos cantos são deslocados por+0.5. Use post_process_object_detection() para recuperar os cantos não normalizados e suas caixas delimitadoras.last_hidden_state (
torch.Tensorde forma(batch_size, num_queries, hidden_size)) — Sequência de estados ocultos na saída da última camada do decodificador do modelo.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, config.num_coords)) — Pontos de referência intermediários empilhados (quadriláteros refinados de cada camada do decoder).decoder_hidden_states (
tuple[torch.Tensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do decodificador na saída de cada camada, além das saídas do embedding inicial.
decoder_attentions (
tuple[torch.Tensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
cross_attentions (
tuple[torch.Tensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.
encoder_last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do codificador do modelo.encoder_hidden_states (
tuple[torch.Tensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do codificador na saída de cada camada, além das saídas do embedding inicial.
encoder_attentions (
tuple[torch.Tensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do codificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
init_reference_points (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Pontos de referência quadrados iniciais enviados através do decodificador Transformer.enc_topk_logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de classe das propostas do encoder que foram selecionadas como consultas do decoder.enc_topk_bboxes (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Quadrados das propostas do codificador que foram selecionados como consultas do decodificador.enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels)) — Logits de classe de cada proposta do codificador.enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, config.num_coords)) — Logits de quadrados de todas as propostas do codificador.denoising_meta_values (
dict, opcional) — Dicionário extra para os valores relacionados ao denoising.relative_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de ordem de leitura relativa em pares, após a fusão S2R opcional. Um valor positivo emrelative_order_logits[i, j]significa que a queryié lida antes da queryj.successor_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de sucessor direto em pares (ROOR). Um valor positivo emsuccessor_order_logits[i, j]significa que a queryjsegue diretamente a queryi.
Exemplos:
>>> 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
classe transformers.PPDocLayoutV4Model
< source >( config: PPDocLayoutV4Config )
Parâmetros
- config (PPDocLayoutV4Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
Modelo PP-DocLayoutV4 (composto por um backbone e um encoder-decoder) que produz estados ocultos brutos, sem nenhum head no topo.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
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)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usandoimage_processor_class. Consulteimage_processor_class.__call__para mais detalhes (processor_classusaimage_processor_classpara processar as imagens). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar a execução de atenção em valores de pixels de preenchimento. Valores da máscara selecionados em[0, 1]:- 1 para pixels reais (ou seja, não mascarados),
- 0 para pixels que são padding (ou seja, mascarados).
- encoder_outputs (
torch.Tensor, opcional) — A tupla consiste em (last_hidden_state, opcional:hidden_states, opcional:attentions)last_hidden_statede forma(batch_size, sequence_length, hidden_size), opcional) é uma sequência de hidden-states na saída da última camada do encoder. Usado na cross-attention do decoder. - labels (
list[Dict]de comprimento(batch_size,), opcional) — Não suportado: PP-DocLayoutV4 é apenas para inferência no Transformers.
Retorna
PPDocLayoutV4ModelOutput ou tuple(torch.Tensor)
Uma PPDocLayoutV4ModelOutput ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (None) e das entradas.
O método forward do PPDocLayoutV4Model substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
last_hidden_state (
torch.Tensorde forma(batch_size, num_queries, hidden_size)) — Sequência de estados ocultos na saída da última camada do decodificador do modelo.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, hidden_size)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, config.num_coords)) — Pontos de referência intermediários empilhados (quadriláteros refinados de cada camada do decoder).decoder_hidden_states (
tuple[torch.Tensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do decodificador na saída de cada camada, além das saídas do embedding inicial.
decoder_attentions (
tuple[torch.Tensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
cross_attentions (
tuple[torch.Tensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.
encoder_last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do codificador do modelo.encoder_hidden_states (
tuple[torch.Tensor], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do codificador na saída de cada camada, além das saídas do embedding inicial.
encoder_attentions (
tuple[torch.Tensor], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção do codificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de autoatenção.
init_reference_points (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Pontos de referência quadrados iniciais enviados através do decodificador do Transformer.enc_topk_logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de classe das propostas do encoder que foram selecionadas como consultas do decoder.enc_topk_bboxes (
torch.Tensorde forma(batch_size, num_queries, config.num_coords)) — Quadrados das propostas do codificador que foram selecionados como consultas do decodificador.enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels)) — Logits de classe de cada proposta do codificador.enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, config.num_coords)) — Logits de quadrados de cada proposta do codificador.denoising_meta_values (
dict, opcional) — Dicionário extra para os valores relacionados ao denoising.logits (
torch.Tensorde forma(batch_size, num_queries, config.num_labels)) — Logits de classificação da última camada do decoder.relative_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de ordem de leitura relativa em pares, após a fusão S2R opcional.successor_order_logits (
torch.Tensorde forma(batch_size, config.num_queries, config.num_queries)) — Logits de sucessor direto em pares (ROOR).
PPDocLayoutV4Config
classe 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, padrãoTrue) — Indica se o modelo é usado como encoder/decoder ou não. - initializer_range (
float, opcional, padrão0.01) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - initializer_bias_prior_prob (
float, opcional) — A probabilidade a priori usada pelo inicializador de viés para inicializar os vieses deenc_score_headeclass_embed. SeNone, o valor padrão é1 / (num_labels + 1). - layer_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização de camada. - batch_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização de lote. - tie_word_embeddings (
bool, opcional, padrãoTrue) — Se deve vincular as embeddings de pesos de acordo com o mapeamentotied_weights_keysdo modelo. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — A configuração do modelo backbone. - freeze_backbone_batch_norms (
bool, opcional, padrãoTrue) — Se as camadas de normalização de lote no backbone devem ser congeladas. - encoder_hidden_dim (
int, opcional, padrão256) — Dimensão das representações ocultas. - encoder_in_channels (
list, opcional, padrão[512, 1024, 2048]) — Entrada de recursos em múltiplos níveis para o codificador. - feat_strides (
list[int], opcional, padrão[8, 16, 32]) — Passos usados em cada mapa de características. - encoder_layers (
int, opcional, padrão1) — Número de camadas ocultas no codificador do Transformer. Usará o mesmo valor denum_layersse não for definido. - encoder_ffn_dim (
int, opcional, padrão1024) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no encoder. - encoder_attention_heads (
int, opcional, padrão8) — Número de cabeças de atenção para cada camada de atenção no codificador do Transformer. - dropout (
Union[float, int], opcional, padrão0.0) — A proporção para todas as camadas de dropout. - activation_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as ativações dentro da camada totalmente conectada. - encode_proj_layers (
list[int], opcional, padrão[2]) — Índices das camadas projetadas a serem usadas no codificador. - positional_encoding_temperature (
int, opcional, padrão 10000) — O parâmetro de temperatura usado para criar as codificações posicionais. - encoder_activation_function (
str, opcional, padrão"gelu") — A função de ativação não linear (função ou string) no encoder e no pooler. Se for string,"gelu","relu","silu"e"gelu_new"são suportadas. - activation_function (
str, opcional, padrãosilu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - eval_size (
tuple[int, int], opcional) — Altura e largura usadas para calcular a altura e a largura efetivas dos embeddings de posição após considerar o stride. Deve ser mantido comoNonepara reproduzir a implementação de referência, que calcula os embeddings de posição dinamicamente. - normalize_before (
bool, opcional, padrãoFalse) — Determina se a normalização de camada deve ser aplicada na camada do codificador do transformer antes dos módulos de autoatenção e de rede feed-forward. - hidden_expansion (
float, opcional, padrão 1.0) — Razão de expansão para aumentar o tamanho da dimensão de RepVGGBlock e CSPRepLayer. - num_queries (
int, opcional, padrão 300) — Número de consultas de objeto. - decoder_in_channels (
list, opcional, padrão[256, 256, 256]) — Dimensão dos recursos em múltiplos níveis para o decodificador - decoder_ffn_dim (
int, opcional, padrão 1024) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no decoder. - num_feature_levels (
int, opcional, padrão 3) — O número de níveis de recursos de entrada. - decoder_n_points (
int, opcional, padrão 4) — O número de chaves amostradas em cada nível de recurso para cada cabeça de atenção no decoder. - decoder_layers (
int, opcional, padrão6) — Número de camadas ocultas no decodificador do Transformer. Usará o mesmo valor denum_layersse não for definido. - decoder_attention_heads (
int, opcional, padrão8) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - decoder_activation_function (
str, opcional, padrão"relu") — A função de ativação não linear (função ou string) no decodificador. Se for string,"gelu","relu","silu"e"gelu_new"são suportadas. - attention_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as probabilidades de atenção. - num_denoising (
int, opcional, padrão 100) — O número total de tarefas ou consultas de desruido a serem usadas para o desruido contrastivo. - anchor_image_size (
tuple[int, int], opcional) — Altura e largura da imagem de entrada usada durante a avaliação para gerar as âncoras de bounding box. Se for None, a geração automática de âncoras é aplicada. - disable_custom_kernels (
bool, opcional, padrãoTrue) — Se deve desativar os kernels personalizados. - global_pointer_head_size (
int, opcional, padrão 64) — O tamanho da cabeça do ponteiro global. - gp_dropout_value (
float, opcional, padrão 0.1) — A probabilidade de dropout na cabeça de ponteiro global. - hidden_size (
int, opcional, padrão 256) — Dimensão das camadas do decodificador, excluindo o codificador híbrido. Também pode ser lido comod_model, o nome utilizado pela linhagem RT-DETR da qual este modelo descende. - num_coords (
int, opcional, padrão 10) — Tamanho da parametrização da caixa prevista pelas cabeças de bbox. O PP-DocLayoutV4 regressa um quadrilátero de quatro pontos codificado como[center_x, center_y, dx1, dy1, dx2, dy2, dx3, dy3, dx4, dy4]no espaço sigmoid, onde os deslocamentos dos cantos são deslocados por+0.5. Apenas10é suportado. - s2r_steps (
int, opcional, padrão 3) — Número de etapas de propagação usadas para aproximar o fechamento transitivo da matriz de sucessores. - s2r_damping (
float, opcional, padrão 0.5) — Fator de amortização aplicado a cada etapa adicional de propagação do fechamento transitivo. - s2r_closure_weight_init (
float, opcional, padrão 0.0) — Valor inicial do gate aprendível que pondera o termo de fechamento. O padrão é0.0, de modo que um módulo de fusão não treinado seja numericamente idêntico ao uso apenas dos logits de ordem relativa.
Esta é a classe de configuração para armazenar a configuração de um PPDocLayoutV4Model. Ela é usada para instanciar um modelo Pp Doclayout V4 de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do PaddlePaddle/PP-DocLayoutV4_safetensors
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
Exemplos:
>>> 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
classe transformers.PPDocLayoutV4ImageProcessor
< source >( **kwargs: *<class 'transformers.processing_utils.ImagesKwargs'> )
Parâmetros
- do_convert_rgb (
bool, kwargs, opcional) — Se a imagem deve ser convertida para RGB. - do_resize (
bool, kwargs, opcional, padrãoTrue) — Se deve redimensionar a imagem. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, padrão{'height' -- 800, 'width': 800}): Descreve as dimensões máximas de entrada para o modelo. - default_to_square (
bool, kwargs, opcional, padrãoTrue) — Se deve usar uma imagem quadrada por padrão ao redimensionar, caso o tamanho seja um inteiro. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamanho da imagem de saída após a aplicação decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, padrão3) — Filtro de redimensionamento a ser usado ao redimensionar a imagem. Pode ser um dos valores da enumeraçãoPILImageResampling. Tem efeito apenas sedo_resizeestiver definido comoTrue. - do_rescale (
bool, kwargs, opcional, padrãoTrue) — Se deve reescalar a imagem. - rescale_factor (
float, kwargs, opcional, padrão0.00392156862745098) — Fator de reescala para reescalar a imagem, casodo_rescaleesteja definido comoTrue. - do_normalize (
bool, kwargs, opcional, padrãoTrue) — Se a imagem deve ser normalizada. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, padrão[0, 0, 0]) — Média da imagem a ser usada para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, padrão[1, 1, 1]) — Desvio padrão da imagem a ser usado para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - do_pad (
bool, kwargs, opcional) — Indica se a imagem deve ser preenchida (padding). O preenchimento é feito até o maior tamanho do lote ou até um tamanho quadrado fixo por imagem. A estratégia exata de preenchimento depende do modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — O tamanho em{"height": int, "width" int}para o preenchimento das imagens. Deve ser maior que qualquer tamanho de imagem fornecido para o pré-processamento. Sepad_sizenão for fornecido, as imagens serão preenchidas até a maior altura e largura do lote. Aplicado apenas quandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Se deve recortar a imagem centralmente. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — ApenasChannelDimension.FIRSTé suportado. Adicionado para compatibilidade com processadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — O formato da dimensão de canal para a imagem de entrada. Se não definido, o formato da dimensão de canal é inferido a partir da imagem de entrada. Pode ser um dos seguintes:"channels_first"ouChannelDimension.FIRST: imagem no formato (num_channels, height, width)."channels_last"ouChannelDimension.LAST: imagem no formato (altura, largura, num_canais)."none"ouChannelDimension.NONE: imagem no formato (altura, largura).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — O dispositivo em que os vídeos serão processados. Se não for definido, o dispositivo é inferido a partir dos vídeos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retorna tensores empilhados se definido como'pt'; caso contrário, retorna uma lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Se deve desabilitar o agrupamento de imagens por tamanho para processá-las individualmente e não em lotes. Se for None, será definido como True se as imagens estiverem na CPU, e False caso contrário. Essa escolha é baseada em observações empíricas, conforme detalhado aqui: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — O número de tokens de imagem a serem usados para cada imagem na entrada. Adicionado para compatibilidade reversa, mas isso deve ser definido como um atributo do processador em modelos futuros. Retorna tensores empilhados se definido como'pt', caso contrário, retorna uma lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Se deve desabilitar o agrupamento de imagens por tamanho para processá-las individualmente e não em lotes. Se for None, será definido como True se as imagens estiverem na CPU, e False caso contrário. Essa escolha é baseada em observações empíricas, conforme detalhado aqui: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — O número de tokens de imagem a serem usados para cada imagem na entrada. Adicionado para compatibilidade reversa, mas isso deve ser definido como um atributo do processador em modelos futuros. Retorna tensores empilhados se definido como'pt', caso contrário, retorna uma lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Se deve desabilitar o agrupamento de imagens por tamanho para processá-las individualmente e não em lotes. Se for None, será definido como True se as imagens estiverem na CPU, e False caso contrário. Essa escolha é baseada em observações empíricas, conforme detalhado aqui: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — O número de tokens de imagem a serem usados para cada imagem na entrada. Adicionado para compatibilidade reversa, mas isso deve ser definido como um atributo do processador em modelos futuros. - Returns tensores empilhados se definido como
'pt', caso contrário, retorna uma lista de tensores. —
Constrói um processador de imagem PPDocLayoutV4ImageProcessor.
disable_grouping (bool, kwargs, opcional):
Se deve desabilitar o agrupamento de imagens por tamanho para processá-las individualmente e não em lotes.
Se for None, será definido como True se as imagens estiverem na CPU e False caso contrário. Essa escolha é baseada em
observações empíricas, conforme detalhado aqui: https://github.com/huggingface/transformers/pull/38157 image_seq_length (int, kwargs, opcional):
O número de tokens de imagem a serem usados para cada imagem na entrada.
Adicionado para compatibilidade reversa, mas isso deve ser definido como um atributo do processador em modelos futuros.
pré-processamento
< 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]]) — Imagem a ser pré-processada. Espera uma única imagem ou um lote de imagens com valores de pixel variando de 0 a 255. Se passar imagens com valores de pixel entre 0 e 1, definado_rescale=False. - image_like_kwargs (
dict[str, Any], opcional) — Flag para desenvolvedores destinada a entradas adicionais semelhantes a imagens que também serão pré-processadas. Use apenas se passar as entradas como kwarg não funcionar. Por exemplo,preprocess(images, masks=masks)é a opção preferida, mas resulta em problemas de prioridade de argumentos para alguns modelos. Nesses casos,preprocess(images, image_like_inputs={"masks": masks})pode ser usado em vez disso. - do_convert_rgb (
bool, kwargs, opcional) — Se a imagem deve ser convertida para RGB. - do_resize (
bool, kwargs, opcional) — Se deve redimensionar a imagem. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Descreve as dimensões máximas de entrada para o modelo. - default_to_square (
bool, kwargs, opcional) — Se deve usar uma imagem quadrada por padrão ao redimensionar, caso o tamanho seja um inteiro. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamanho da imagem de saída após a aplicação decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtro de redimensionamento a ser usado ao redimensionar a imagem. Pode ser um dos valores da enumeraçãoPILImageResampling. Tem efeito apenas sedo_resizeestiver definido comoTrue. - do_rescale (
bool, kwargs, opcional) — Se deve reescalar a imagem. - rescale_factor (
float, kwargs, opcional) — Fator de redimensionamento para redimensionar a imagem, casodo_rescaleesteja definido comoTrue. - do_normalize (
bool, kwargs, opcional) — Se a imagem deve ser normalizada. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Média da imagem a ser usada para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Desvio padrão da imagem a ser usado para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - do_pad (
bool, kwargs, opcional) — Indica se a imagem deve ser preenchida (padding). O preenchimento é feito até o maior tamanho do lote ou até um tamanho quadrado fixo por imagem. A estratégia exata de preenchimento depende do modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — O tamanho em{"height": int, "width" int}para o preenchimento das imagens. Deve ser maior que qualquer tamanho de imagem fornecido para o pré-processamento. Sepad_sizenão for fornecido, as imagens serão preenchidas até a maior altura e largura do lote. Aplicado apenas quandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Se deve recortar a imagem centralmente. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — ApenasChannelDimension.FIRSTé suportado. Adicionado para compatibilidade com processadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — O formato da dimensão de canal para a imagem de entrada. Se não definido, o formato da dimensão de canal é inferido a partir da imagem de entrada. Pode ser um dos seguintes:"channels_first"ouChannelDimension.FIRST: imagem no formato (num_channels, height, width)."channels_last"ouChannelDimension.LAST: imagem no formato (altura, largura, num_canais)."none"ouChannelDimension.NONE: imagem no formato (altura, largura).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — O dispositivo em que os vídeos serão processados. Se não for definido, o dispositivo é inferido a partir dos vídeos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retorna tensores empilhados se definido como'pt'; caso contrário, retorna uma lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Se deve desabilitar o agrupamento de imagens por tamanho para processá-las individualmente e não em lotes. Se for None, será definido como True se as imagens estiverem na CPU, e False caso contrário. Essa escolha é baseada em observações empíricas, conforme detalhado aqui: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — O número de tokens de imagem a serem usados para cada imagem na entrada. Adicionado para compatibilidade reversa, mas isso deve ser definido como um atributo do processador em modelos futuros.
Retorna
~image_processing_base.BatchFeature
- data (
dict) — Dicionário de listas/arrays/tensors retornados pelo método call (‘pixel_values’, etc.). - tensor_type (
Union[None, str, TensorType], opcional) — Você pode fornecer um tensor_type aqui para converter as listas de inteiros em Tensors do PyTorch/Numpy na inicialização.
Pré-processa uma imagem ou um lote de imagens.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes = None ) → list[Dict]
Parâmetros
- outputs (
PPDocLayoutV4ForObjectDetectionOutput) — Saídas brutas do modelo. - threshold (
float, opcional, padrão 0.5) — Limiar de pontuação para manter as previsões de detecção de objetos. - target_sizes (
torch.Tensoroulist[tuple[int, int]]) — Tensor de forma(batch_size, 2)ou lista de tuplas ((height, width)) com o tamanho alvo de cada imagem no lote.
Retorna
list[Dict]
Uma lista de dicionários, um por imagem, cada um contendo scores, labels, boxes,
polygon_points e order_seq previstos pelo modelo. As previsões são ordenadas pela ordem de leitura, de modo que
order_seq é não decrescente (uma consulta selecionada sob vários rótulos mantém um único rank).
Converte a saída bruta de PPDocLayoutV4ForObjectDetection em quadriláteros finais, caixas delimitadoras no formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y) e classificações de ordem de leitura. Suporta apenas PyTorch.