Transformers documentation

Table Transformer

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Mô hình này được công bố trên HF papers vào ngày 30-09-2021 và được đóng góp cho Hugging Face Transformers vào ngày 18-10-2022.

Table Transformer

Tổng quan

Mô hình Table Transformer được đề xuất trong PubTables-1M: Towards comprehensive table extraction from unstructured documents của Brandon Smock, Rohith Pesala, Robin Abraham. Các tác giả giới thiệu một bộ dữ liệu mới, PubTables-1M, để đánh giá tiến bộ trong việc trích xuất bảng từ các tài liệu không cấu trúc, cũng như nhận diện cấu trúc bảng và phân tích chức năng. Các tác giả huấn luyện 2 mô hình DETR, một cho phát hiện bảng và một cho nhận diện cấu trúc bảng, được gọi là Table Transformers.

Tóm tắt từ bài báo như sau:

Gần đây, các tiến bộ đáng kể đã được ghi nhận trong việc áp dụng machine learning cho bài toán suy luận và trích xuất cấu trúc bảng từ các tài liệu không có cấu trúc. Tuy nhiên, một trong những thách thức lớn nhất vẫn là việc tạo ra các bộ dữ liệu có ground truth đầy đủ, không mơ hồ ở quy mô lớn. Để giải quyết vấn đề này, chúng tôi phát triển một bộ dữ liệu mới, toàn diện hơn cho việc trích xuất bảng, có tên là PubTables-1M. PubTables-1M chứa gần một triệu bảng từ các bài báo khoa học, hỗ trợ nhiều phương thức đầu vào khác nhau và bao gồm thông tin chi tiết về tiêu đề và vị trí của cấu trúc bảng, giúp ích cho nhiều phương pháp mô hình hóa đa dạng. Nó cũng giải quyết một nguồn gốc gây ra sự không nhất quán của ground truth được quan sát thấy trong các bộ dữ liệu trước đó, gọi là oversegmentation, bằng cách sử dụng một quy trình chuẩn hóa (canonicalization) mới. Chúng tôi chứng minh rằng những cải tiến này dẫn đến sự gia tăng đáng kể về hiệu suất huấn luyện và một ước tính đáng tin cậy hơn về hiệu suất mô hình khi đánh giá cho việc nhận dạng cấu trúc bảng. Hơn nữa, chúng tôi cho thấy các mô hình phát hiện đối tượng dựa trên transformer được huấn luyện trên PubTables-1M cho kết quả xuất sắc cho cả ba tác vụ: phát hiện, nhận dạng cấu trúc và phân tích chức năng, mà không cần bất kỳ tùy chỉnh đặc biệt nào cho các tác vụ này.

drawing Table detection and table structure recognition clarified. Taken from the original paper.

Các tác giả đã phát hành 2 mô hình, một mô hình cho phát hiện bảng trong tài liệu, và một mô hình cho nhận diện cấu trúc bảng (nhiệm vụ nhận diện các hàng, cột riêng lẻ trong bảng).

Mô hình này được đóng góp bởi nielsr. Mã gốc có thể được tìm thấy tại đây.

Đặt use_kernels=True trong from_pretrained() để thay thế các lớp được hỗ trợ bằng các kernel tối ưu từ Hub. Xem Tải kernel để biết thêm.

Tài nguyên

Object Detection
  • Một notebook demo cho Table Transformer có thể được tìm thấy tại đây.
  • Hóa ra việc đệm (padding) ảnh khá quan trọng đối với phát hiện. Một luồng thảo luận thú vị trên Github có phản hồi từ các tác giả có thể được tìm thấy tại đây.

TableTransformerConfig

lớp transformers.TableTransformerConfig

< >

( 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 = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_channels: int = 3num_queries: int = 100encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0activation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02init_xavier_std: float = 1.0auxiliary_loss: bool = Falseposition_embedding_type: str = 'sine'dilation: bool = Falseclass_cost: int = 1bbox_cost: int = 5giou_cost: int = 2mask_loss_coefficient: int = 1dice_loss_coefficient: int = 1bbox_loss_coefficient: int = 5giou_loss_coefficient: int = 2eos_coefficient: float = 0.1 )

Tham số

  • is_encoder_decoder (bool, tùy chọn, mặc định là True) — Xác định xem mô hình có được sử dụng như một encoder/decoder hay không.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], tùy chọn) — Cấu hình của mô hình backbone.
  • num_channels (int, tùy chọn, mặc định là 3) — Số lượng kênh đầu vào.
  • num_queries (int, tuỳ chọn, mặc định là 100) — Số lượng truy vấn đối tượng, tức là các khe phát hiện. Đây là số lượng đối tượng tối đa mà TableTransformerModel có thể phát hiện trong một hình ảnh. Đối với COCO, chúng tôi khuyến nghị 100 truy vấn.
  • encoder_layers (int, tùy chọn, mặc định là 6) — Số lượng lớp ẩn trong bộ mã hóa Transformer. Nếu không được đặt, giá trị này sẽ giống với num_layers.
  • encoder_ffn_dim (int, tùy chọn, mặc định là 2048) — Kích thước của lớp “trung gian” (thường được gọi là lớp feed-forward) trong encoder.
  • encoder_attention_heads (int, tùy chọn, mặc định là 8) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ mã hóa Transformer.
  • decoder_layers (int, tùy chọn, mặc định là 6) — Số lượng lớp ẩn trong bộ giải mã Transformer. Nếu không được đặt, giá trị này sẽ giống với num_layers.
  • decoder_ffn_dim (int, tùy chọn, mặc định là 2048) — Kích thước của lớp “trung gian” (thường được gọi là lớp feed-forward) trong decoder.
  • decoder_attention_heads (int, tùy chọn, mặc định là 8) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã Transformer.
  • encoder_layerdrop (Union[float, int], tùy chọn, mặc định là 0.0) — Xác suất LayerDrop cho bộ mã hóa. Xem [bài báo LayerDrop](xem https://huggingface.co/papers/1909.11556) để biết thêm chi tiết.
  • decoder_layerdrop (Union[float, int], tùy chọn, mặc định là 0.0) — Xác suất LayerDrop cho bộ giải mã. Xem [bài báo LayerDrop](xem https://huggingface.co/papers/1909.11556) để biết thêm chi tiết.
  • activation_function (str, tùy chọn, mặc định là relu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ, "gelu", "relu", "silu", v.v.
  • d_model (int, tùy chọn, mặc định là 256) — Kích thước của các lớp encoder và lớp pooler.
  • dropout (Union[float, int], tùy chọn, mặc định là 0.1) — Tỷ lệ cho tất cả các lớp dropout.
  • attention_dropout (Union[float, int], tùy chọn, mặc định là 0.0) — Tỷ lệ dropout cho các xác suất chú ý.
  • activation_dropout (Union[float, int], tùy chọn, mặc định là 0.0) — Tỷ lệ dropout cho các kích hoạt bên trong lớp liên kết đầy đủ.
  • init_std (float, tùy chọn, mặc định là 0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.
  • init_xavier_std (float, tuỳ chọn, mặc định là 1.0) — Hệ số tỷ lệ được sử dụng cho khởi tạo Xavier của trọng số cross-attention.
  • auxiliary_loss (bool, tùy chọn, mặc định là False) — Xác định có sử dụng các tổn thất giải mã phụ (tổn thất ở mỗi lớp giải mã) hay không.
  • position_embedding_type (str, tùy chọn, mặc định là "sine") — Loại position embedding được sử dụng trên các đặc trưng hình ảnh. Một trong "sine" hoặc "learned".
  • dilation (bool, tùy chọn, mặc định là False) — Có thay thế stride bằng dilation trong khối convolutional cuối cùng (DC5) hay không. Chỉ được hỗ trợ khi use_timm_backbone = True.
  • class_cost (int, tùy chọn, mặc định là 1) — Trọng số tương đối của lỗi phân loại trong chi phí khớp Hungarian.
  • bbox_cost (int, tùy chọn, mặc định là 5) — Trọng số tương đối của lỗi hộp bao L1 trong chi phí khớp Hungarian.
  • giou_cost (int, tùy chọn, mặc định là 2) — Trọng số tương đối của tổn thất IoU tổng quát trong chi phí khớp Hungarian.
  • mask_loss_coefficient (int, tùy chọn, mặc định là 1) — Trọng số tương đối của focal loss trong tổn thất phân đoạn panoptic.
  • dice_loss_coefficient (int, tùy chọn, mặc định là 1) — Trọng số tương đối của dice loss trong panoptic segmentation loss.
  • bbox_loss_coefficient (int, tùy chọn, mặc định là 5) — Trọng số tương đối của tổn thất hộp bao L1 trong tổn thất phân đoạn toàn cảnh.
  • giou_loss_coefficient (int, tùy chọn, mặc định là 2) — Trọng số tương đối của tổn thất IoU tổng quát trong tổn thất phân đoạn panoptic.
  • eos_coefficient (float, tùy chọn, mặc định là 0.1) — Trọng số phân loại tương đối của lớp ‘no-object’ trong hàm mất mát phát hiện đối tượng.

Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Table Transformer. Nó được sử dụng để khởi tạo một mô hình Table Transformer theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của microsoft/table-transformer-detection

Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.

Ví dụ:

>>> from transformers import TableTransformerModel, TableTransformerConfig

>>> # Initializing a Table Transformer microsoft/table-transformer-detection style configuration
>>> configuration = TableTransformerConfig()

>>> # Initializing a model from the microsoft/table-transformer-detection style configuration
>>> model = TableTransformerModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

TableTransformerModel

lớp transformers.TableTransformerModel

< >

( config: TableTransformerConfig )

Tham số

  • config (TableTransformerConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Mô hình Table Transformer thô (gồm một backbone và một Transformer encoder-decoder) xuất ra các hidden-states thô mà không có bất kỳ head cụ thể nào ở trên cùng.

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( pixel_values: FloatTensorpixel_mask: typing.Optional[torch.FloatTensor] = Nonedecoder_attention_mask: typing.Optional[torch.FloatTensor] = Noneencoder_outputs: typing.Optional[torch.FloatTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → TableTransformerModelOutput or tuple(torch.FloatTensor)

Tham số

  • pixel_values (torch.FloatTensor có hình dạng (batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng DetrImageProcessor. Xem DetrImageProcessor.call() để biết chi tiết (processor_class sử dụng DetrImageProcessor để xử lý hình ảnh).
  • pixel_mask (torch.FloatTensor có hình dạng (batch_size, height, width), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các giá trị pixel padding. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các pixel thực (tức là không bị che),
    • 0 cho các pixel là padding (tức là đã bị che).

    Mặt nạ chú ý là gì?

  • decoder_attention_mask (torch.FloatTensor có hình dạng (batch_size, num_queries), tùy chọn) — Không được sử dụng theo mặc định. Có thể được dùng để che (mask) các truy vấn đối tượng.
  • encoder_outputs (torch.FloatTensor, tùy chọn) — Tuple gồm (last_hidden_state, tùy chọn: hidden_states, tùy chọn: attentions) last_hidden_state có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention của decoder.
  • inputs_embeds (torch.FloatTensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền bản đồ đặc tính đã được làm phẳng (đầu ra của lớp backbone + lớp projection), bạn có thể chọn cách truyền trực tiếp một biểu diễn đã được làm phẳng của một hình ảnh.
  • decoder_inputs_embeds (torch.FloatTensor có hình dạng (batch_size, num_queries, hidden_size), tùy chọn) — Tùy chọn, thay vì khởi tạo các query bằng một tensor các số 0, bạn có thể chọn truyền trực tiếp một biểu diễn đã nhúng (embedded representation).
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

TableTransformerModelOutput hoặc tuple(torch.FloatTensor)

Một TableTransformerModelOutput hoặc một tuple của torch.FloatTensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (TableTransformerConfig) và đầu vào.

Phương thức forward của TableTransformerModel ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • last_hidden_state (torch.FloatTensor có hình dạng (batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của bộ giải mã (decoder) của mô hình.

    Nếu past_key_values được sử dụng, chỉ có hidden-state cuối cùng của các chuỗi có shape (batch_size, 1, hidden_size) được xuất ra.

  • past_key_values (EncoderDecoderCache, tùy chọn, được trả về khi use_cache=True được truyền vào hoặc khi config.use_cache=True) — Đây là một instance của EncoderDecoderCache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.

    Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và trong các khối cross-attention) có thể được sử dụng (xem đầu vào past_key_values) để tăng tốc độ giải mã tuần tự.

  • decoder_hidden_states (tuple(torch.FloatTensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Tuple của torch.FloatTensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của bộ giải mã tại đầu ra của mỗi lớp cùng với các đầu ra nhúng ban đầu tùy chọn.

  • decoder_attentions (tuple(torch.FloatTensor), tùy chọn, được trả về khi truyền output_attentions=True hoặc khi config.output_attentions=True) — Tuple của torch.FloatTensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).

  • cross_attentions (tuple(torch.FloatTensor), tùy chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.FloatTensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.

  • encoder_last_hidden_state (torch.FloatTensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của encoder trong mô hình.

  • encoder_hidden_states (tuple(torch.FloatTensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.FloatTensor (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của bộ mã hóa tại đầu ra của mỗi lớp cùng với các đầu ra nhúng ban đầu tùy chọn.

  • encoder_attentions (tuple(torch.FloatTensor), tùy chọn, được trả về khi truyền output_attentions=True hoặc khi config.output_attentions=True) — Tuple của torch.FloatTensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).

  • intermediate_hidden_states (torch.FloatTensor có shape (config.decoder_layers, batch_size, sequence_length, hidden_size), optional, được trả về khi config.auxiliary_loss=True) — Các activation trung gian của decoder, tức là đầu ra của từng lớp decoder, mỗi lớp đã đi qua một layernorm.

Ví dụ:

>>> from transformers import AutoImageProcessor, TableTransformerModel
>>> from huggingface_hub import hf_hub_download
>>> from PIL import Image

>>> file_path = hf_hub_download(repo_id="nielsr/example-pdf", repo_type="dataset", filename="example_pdf.png")
>>> image = Image.open(file_path).convert("RGB")

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/table-transformer-detection")
>>> model = TableTransformerModel.from_pretrained("microsoft/table-transformer-detection")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> # the last hidden states are the final query embeddings of the Transformer decoder
>>> # these are of shape (batch_size, num_queries, hidden_size)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 15, 256]

TableTransformerForObjectDetection

lớp transformers.TableTransformerForObjectDetection

< >

( config: TableTransformerConfig )

Tham số

  • config (TableTransformerConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Mô hình Table Transformer (gồm một backbone và Transformer encoder-decoder) với các đầu dò phát hiện đối tượng ở phía trên, dành cho các tác vụ như phát hiện COCO.

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( pixel_values: FloatTensorpixel_mask: typing.Optional[torch.FloatTensor] = Nonedecoder_attention_mask: typing.Optional[torch.FloatTensor] = Noneencoder_outputs: typing.Optional[torch.FloatTensor] = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: list[dict] | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → TableTransformerObjectDetectionOutput or tuple(torch.FloatTensor)

Tham số

  • pixel_values (torch.FloatTensor có hình dạng (batch_size, num_channels, image_size, image_size)) — Các tensor tương ứng với các hình ảnh đầu vào. Giá trị pixel có thể được lấy bằng cách sử dụng DetrImageProcessor. Xem DetrImageProcessor.call() để biết chi tiết (processor_class sử dụng DetrImageProcessor để xử lý hình ảnh).
  • pixel_mask (torch.FloatTensor có hình dạng (batch_size, height, width), tùy chọn) — Mặt nạ để tránh thực hiện attention trên các giá trị pixel padding. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các pixel thực (tức là không bị che),
    • 0 cho các pixel là padding (tức là đã bị che).

    Mặt nạ chú ý là gì?

  • decoder_attention_mask (torch.FloatTensor có hình dạng (batch_size, num_queries), tùy chọn) — Không được sử dụng theo mặc định. Có thể được dùng để che (mask) các truy vấn đối tượng.
  • encoder_outputs (torch.FloatTensor, tùy chọn) — Tuple gồm (last_hidden_state, tùy chọn: hidden_states, tùy chọn: attentions) last_hidden_state có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) là một chuỗi các hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention của decoder.
  • inputs_embeds (torch.FloatTensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền bản đồ đặc tính đã được làm phẳng (đầu ra của lớp backbone + lớp projection), bạn có thể chọn cách truyền trực tiếp một biểu diễn đã được làm phẳng của một hình ảnh.
  • decoder_inputs_embeds (torch.FloatTensor có hình dạng (batch_size, num_queries, hidden_size), tùy chọn) — Tùy chọn, thay vì khởi tạo các query bằng một tensor các số 0, bạn có thể chọn truyền trực tiếp một biểu diễn đã nhúng (embedded representation).
  • labels (list[Dict] có độ dài (batch_size,), tùy chọn) — Nhãn để tính toán tổn thất khớp hai phần (bipartite matching loss). Danh sách các từ điển, mỗi từ điển chứa ít nhất 2 khóa sau: ‘class_labels’ và ‘boxes’ (lần lượt là nhãn lớp và hộp bao quanh của một hình ảnh trong lô). Bản thân các nhãn lớp phải là một torch.LongTensor có độ dài (number of bounding boxes in the image,) và các hộp bao quanh phải là một torch.FloatTensor có hình dạng (number of bounding boxes in the image, 4).
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

TableTransformerObjectDetectionOutput hoặc tuple(torch.FloatTensor)

Một TableTransformerObjectDetectionOutput hoặc một tuple của torch.FloatTensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (TableTransformerConfig) và đầu vào.

Phương thức forward của TableTransformerForObjectDetection ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.FloatTensor có shape (1,), optional, được trả về khi labels được cung cấp)) — Tổng loss dưới dạng tổ hợp tuyến tính của negative log-likelihood (cross-entropy) cho dự đoán lớp và loss của bounding box. Phần sau được định nghĩa là tổ hợp tuyến tính của L1 loss và generalized scale-invariant IoU loss.

  • loss_dict (Dict, tùy chọn) — Một từ điển chứa các giá trị loss riêng lẻ. Hữu ích cho việc ghi log.

  • logits (torch.FloatTensor có shape (batch_size, num_queries, num_classes + 1)) — Logits phân loại (bao gồm no-object) cho tất cả các query.

  • pred_boxes (torch.FloatTensor có shape (batch_size, num_queries, 4)) — Tọa độ hộp đã được chuẩn hóa cho tất cả các query, được biểu diễn dưới dạng (center_x, center_y, width, height). Các giá trị này được chuẩn hóa trong khoảng [0, 1], tương đối với kích thước của từng hình ảnh riêng lẻ trong batch (bỏ qua phần padding có thể có). Bạn có thể sử dụng ~TableTransformerImageProcessor.post_process_object_detection để lấy các hộp giới hạn chưa được chuẩn hóa.

  • auxiliary_outputs (list[Dict], tuỳ chọn) — Tuỳ chọn, chỉ được trả về khi các tổn thất phụ được kích hoạt (tức là config.auxiliary_loss được đặt thành True) và nhãn được cung cấp. Đây là một danh sách các từ điển chứa hai khóa nêu trên (logits và pred_boxes) cho mỗi lớp giải mã.

  • last_hidden_state (torch.FloatTensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của bộ giải mã (decoder) của mô hình.

  • decoder_hidden_states (tuple[torch.FloatTensor], tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Tuple của torch.FloatTensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của bộ giải mã tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.

  • decoder_attentions (tuple[torch.FloatTensor], tùy chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.FloatTensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).

  • cross_attentions (tuple[torch.FloatTensor], tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.FloatTensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.

  • encoder_last_hidden_state (torch.FloatTensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của encoder trong mô hình.

  • encoder_hidden_states (tuple[torch.FloatTensor], tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple các torch.FloatTensor (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của bộ mã hóa tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.

  • encoder_attentions (tuple[torch.FloatTensor], tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Bộ tuple của torch.FloatTensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).

Ví dụ:

>>> from huggingface_hub import hf_hub_download
>>> from transformers import AutoImageProcessor, TableTransformerForObjectDetection
>>> import torch
>>> from PIL import Image

>>> file_path = hf_hub_download(repo_id="nielsr/example-pdf", repo_type="dataset", filename="example_pdf.png")
>>> image = Image.open(file_path).convert("RGB")

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/table-transformer-detection")
>>> model = TableTransformerForObjectDetection.from_pretrained("microsoft/table-transformer-detection")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[
...     0
... ]

>>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
...     box = [round(i, 2) for i in box.tolist()]
...     print(
...         f"Detected {model.config.id2label[label.item()]} with confidence "
...         f"{round(score.item(), 3)} at location {box}"
...     )
Detected table with confidence 1.0 at location [202.1, 210.59, 1119.22, 385.09]
Update on GitHub