# Table Transformer

## Genel Bakış

Table Transformer modeli, Brandon Smock, Rohith Pesala ve Robin Abraham tarafından [PubTables-1M: Towards comprehensive table extraction from unstructured documents](https://huggingface.co/papers/2110.00061) makalesinde önerilmiştir. Yazarlar, yapılandırılmamış belgelerden tablo çıkarımı, tablo yapısı tanıma ve işlevsel analiz alanlarındaki ilerlemeyi ölçmek için PubTables-1M adlı yeni bir veri seti tanıtmaktadır. Yazarlar, bir tablo algılama ve bir tablo yapısı tanıma modeli olmak üzere, Table Transformers olarak adlandırılan iki [DETR](detr) modeli eğitmiştir.

Makalenin özeti aşağıdaki gibidir:

*Son zamanlarda, yapılandırılmamış belgelerden tablo yapısı çıkarımı ve çıkarımı sorununa makine öğrenmesi uygulamalarında önemli ilerlemeler kaydedilmiştir. Ancak en büyük zorluklardan biri, ölçekli olarak eksiksiz ve belirsiz olmayan gerçek değer (ground truth) içeren veri setlerinin oluşturulması olmaya devam etmektedir. Bu sorunu ele almak için, tablo çıkarımı için daha kapsamlı yeni bir veri seti olan PubTables-1M'yi geliştirdik. PubTables-1M, bilimsel makalelerden yaklaşık bir milyon tablo içerir, birden fazla giriş modalitesini destekler ve tablo yapıları için ayrıntılı başlık ve konum bilgisi içerir; bu da onu çeşitli modelleme yaklaşımları için faydalı kılar. Ayrıca, önceki veri setlerinde gözlemlenen ve aşırı segmentasyon (oversegmentation) olarak adlandırılan önemli bir gerçek değer tutarsızlığı kaynağını, yenilikçi bir kanonikleştirme (canonicalization) prosedürü kullanarak ele alır. Bu iyileştirmelerin, tablo yapısı tanıma için eğitim performansında önemli bir artışa ve değerlendirme sırasında model performansının daha güvenilir bir tahminine yol açtığını gösteriyoruz. Ayrıca, PubTables-1M üzerinde eğitilen transformer tabanlı nesne algılama modellerinin, bu görevler için herhangi bir özel özelleştirme gerektirmeden algılama, yapı tanıma ve işlevsel analiz olmak üzere üç görevin tümünde mükemmel sonuçlar ürettiğini gösteriyoruz.*

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/table_transformer_architecture.jpeg"
alt="drawing" width="600"/>

 Tablo algılama ve tablo yapısı tanıma netleştirildi. Orijinal makaleden alınmıştır.

Yazarlar 2 model yayınladı: biri belgelerde [tablo algılama](https://huggingface.co/microsoft/table-transformer-detection) için, diğeri [tablo yapısı tanıma](https://huggingface.co/microsoft/table-transformer-structure-recognition) (bir tablodaki bireysel satırları, sütunları vb. tanıma görevi) için.

Bu model [nielsr](https://huggingface.co/nielsr) tarafından katkıda bulunmuştur. Orijinal kod [burada](https://github.com/microsoft/table-transformer) bulunabilir.

> [!TIP]
> [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) içinde `use_kernels=True` değerini ayarlayarak desteklenen katmanları Hub'daki optimize edilmiş çekirdeklerle değiştirin. Daha fazla bilgi için [Çekirdekleri yükleme](../kernel_doc/loading_kernels) bölümüne bakın.

## Kaynaklar

- Table Transformer için bir demo defterine [buradan](https://github.com/NielsRogge/Transformers-Tutorials/tree/master/Table%20Transformer) ulaşabilirsiniz.
- Görüntülerin dolgu (padding) işlemi, algılama için oldukça önemli olduğu ortaya çıkmıştır. Yazarlardan gelen yanıtları içeren ilginç bir Github tartışması [burada](https://github.com/microsoft/table-transformer/issues/68) bulunabilir.

## TableTransformerConfig[[transformers.TableTransformerConfig]]

#### transformers.TableTransformerConfig[[transformers.TableTransformerConfig]]

```python
transformers.TableTransformerConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, is_encoder_decoder: bool = True, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, num_channels: int = 3, num_queries: int = 100, encoder_layers: int = 6, encoder_ffn_dim: int = 2048, encoder_attention_heads: int = 8, decoder_layers: int = 6, decoder_ffn_dim: int = 2048, decoder_attention_heads: int = 8, encoder_layerdrop: float | int = 0.0, decoder_layerdrop: float | int = 0.0, activation_function: str = 'relu', d_model: int = 256, dropout: float | int = 0.1, attention_dropout: float | int = 0.0, activation_dropout: float | int = 0.0, init_std: float = 0.02, init_xavier_std: float = 1.0, auxiliary_loss: bool = False, position_embedding_type: str = 'sine', dilation: bool = False, class_cost: int = 1, bbox_cost: int = 5, giou_cost: int = 2, mask_loss_coefficient: int = 1, dice_loss_coefficient: int = 1, bbox_loss_coefficient: int = 5, giou_loss_coefficient: int = 2, eos_coefficient: float = 0.1)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/table_transformer/configuration_table_transformer.py#L25)

**Parametreler:**

is_encoder_decoder (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı.

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *isteğe bağlı*) : Omurga modelinin yapılandırması.

num_channels (`int`, *opsiyonel*, varsayılan `3`) : Girdi kanal sayısı.

num_queries (`int`, *isteğe bağlı*, varsayılan 100) : Nesne sorgusu sayısı, yani algılama yuvaları. Bu, [TableTransformerModel](/docs/transformers/main/tr/model_doc/table-transformer#transformers.TableTransformerModel)'ün tek bir görüntüde algılayabileceği nesne sayısının üst sınırıdır. COCO için 100 sorgu öneririz.

encoder_layers (`int`, *isteğe bağlı*, varsayılan `6`) : Transformer kodlayıcısındaki gizli katman sayısı. Ayarlanmazsa `num_layers` ile aynı değeri kullanır.

encoder_ffn_dim (`int`, *opsiyonel*, varsayılan `2048`) : Kodlayıcıdaki "ara" (genellikle feed-forward olarak adlandırılan) katmanının boyutluluğu.

encoder_attention_heads (`int`, *isteğe bağlı*, varsayılan `8`) : Transformer kodlayıcısındaki her dikkat katmanı için dikkat başı sayısı.

decoder_layers (`int`, *isteğe bağlı*, varsayılan `6`) : Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsa `num_layers` ile aynı değer kullanılır.

decoder_ffn_dim (`int`, *opsiyonel*, varsayılan `2048`) : Dekoderdeki "ara" (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu.

decoder_attention_heads (`int`, *isteğe bağlı*, varsayılan `8`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

encoder_layerdrop (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Kodlayıcı için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](see https://huggingface.co/papers/1909.11556) bakın.

decoder_layerdrop (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Çözücü için LayerDrop olasılığı. Daha fazla ayrıntı için [LayerDrop makalesine](see https://huggingface.co/papers/1909.11556) bakın.

activation_function (`str`, *isteğe bağlı*, varsayılan `relu`) : Dekoderdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

d_model (`int`, *isteğe bağlı*, varsayılan `256`) : Kodlayıcı katmanlarının ve havuzlayıcı katmanının boyutu.

dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.1`) : Tüm dropout katmanları için oran.

attention_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Dikkat olasılıkları için dropout oranı.

activation_dropout (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.0`) : Tamamen bağlı katmandaki aktivasyonlar için dropout oranı.

init_std (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

init_xavier_std (`float`, *isteğe bağlı*, varsayılan `1.0`) : Çapraz dikkat ağırlıklarının Xavier başlatılmasında kullanılan ölçekleme faktörü.

auxiliary_loss (`bool`, *isteğe bağlı*, varsayılan `False`) : Yardımcı çözümleme kayıplarının (her decoder katmanındaki kayıp) kullanılıp kullanılmayacağı.

position_embedding_type (`str`, *isteğe bağlı*, varsayılan `"sine"`) : Görüntü özelliklerinin üzerine kullanılacak konum gömme türü. `"sine"` veya `"learned"` değerlerinden biri.

dilation (`bool`, *isteğe bağlı*, varsayılan `False`) : Son konvolüsyon bloğunda (DC5) stride'ın dilation ile değiştirilip değiştirilmeyeceğini belirtir. Yalnızca `use_timm_backbone` = `True` olduğunda desteklenir.

class_cost (`int`, *opsiyonel*, varsayılan `1`) : Macar eşleştirme maliyetinde sınıflandırma hatasının göreli ağırlığı.

bbox_cost (`int`, *opsiyonel*, varsayılan `5`) : Macar eşleştirme maliyetinde L1 sınırlayıcı kutu hatasının göreli ağırlığı.

giou_cost (`int`, *opsiyonel*, varsayılan `2`) : Macar eşleştirme maliyetinde genelleştirilmiş IoU kaybının göreli ağırlığı.

mask_loss_coefficient (`int`, *opsiyonel*, varsayılan `1`) : Panoptik segmentasyon kaybında odak kaybının göreli ağırlığı.

dice_loss_coefficient (`int`, *isteğe bağlı*, varsayılan `1`) : Panoptik segmentasyon kaybında dice kaybının göreli ağırlığı.

bbox_loss_coefficient (`int`, *opsiyonel*, varsayılan `5`) : Panoptik segmentasyon kaybında L1 sınırlayıcı kutu kaybının göreli ağırlığı.

giou_loss_coefficient (`int`, *isteğe bağlı*, varsayılan `2`) : Panoptik segmentasyon kaybında genelleştirilmiş IoU kaybının göreli ağırlığı.

eos_coefficient (`float`, *opsiyonel*, varsayılan `0.1`) : Nesne algılama kaybında 'no-object' sınıfının göreli sınıflandırma ağırlığı.

Bu, bir Table TransformerModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Table Transformer modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneği oluşturmak, [microsoft/table-transformer-detection](https://huggingface.co/microsoft/table-transformer-detection) yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnekler:

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

#### transformers.TableTransformerModel[[transformers.TableTransformerModel]]

```python
transformers.TableTransformerModel(config: TableTransformerConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/table_transformer/modeling_table_transformer.py#L967)

**Parametreler:**

config ([TableTransformerConfig](/docs/transformers/main/tr/model_doc/table-transformer#transformers.TableTransformerConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine bakın.

Üzerinde herhangi bir özel başlık olmadan ham gizli durumlar (hidden-states) üreten, bir omurga (backbone) ve encoder-decoder Transformer'dan oluşan sade Table Transformer Modeli.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.TableTransformerModel.forward]]

```python
forward(pixel_values: Tensor, pixel_mask: typing.Optional[torch.Tensor] = None, decoder_attention_mask: typing.Optional[torch.Tensor] = None, encoder_outputs: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, decoder_inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/table_transformer/modeling_table_transformer.py#L996)

**Parametreler:**

pixel_values (`torch.Tensor`, şekli `(batch_size, num_channels, image_size, image_size)`) : Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri [DetrImageProcessor](/docs/transformers/main/tr/model_doc/detr#transformers.DetrImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [DetrImageProcessor.__call__()](/docs/transformers/main/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) bölümüne bakın (`processor_class`, görüntüleri işlemek için [DetrImageProcessor](/docs/transformers/main/tr/model_doc/detr#transformers.DetrImageProcessor) kullanır).

pixel_mask (`torch.Tensor`, şekli `(batch_size, height, width)`, *isteğe bağlı*) : Dolgu piksel değerleri üzerinde dikkat işleminin uygulanmaması için maske. `[0, 1]` aralığında seçilen maske değerleri:  - Gerçek (yani **maskelenmemiş**) pikseller için 1, - Dolgu (yani **maskelenmiş**) pikseller için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

decoder_attention_mask (`torch.Tensor`, şekli `(batch_size, num_queries)`, *isteğe bağlı*) : Varsayılan olarak kullanılmaz. Nesne sorgularını maskelemek için kullanılabilir.

encoder_outputs (`torch.Tensor`, *isteğe bağlı*) : (`last_hidden_state`, *isteğe bağlı*: `hidden_states`, *isteğe bağlı*: `attentions`) `last_hidden_state` boyutu `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) kodlayıcının son katmanının çıktısındaki gizli durumlar dizisidir. Çözücüdeki çapraz dikkat (cross-attention) işleminde kullanılır.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : Düzleştirilmiş özellik haritasını (backbone + projeksiyon katmanının çıktısı) iletmek yerine, bir görüntünün düzleştirilmiş temsilini doğrudan iletme seçeneğine sahipsiniz.

decoder_inputs_embeds (`torch.Tensor`, şekli `(batch_size, num_queries, hidden_size)`, *isteğe bağlı*) : Sıfır tensörüyle sorguları başlatmak yerine, gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz.

output_attentions (`bool`, *isteğe bağlı*) : Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmediğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `attentions` bölümüne bakın.

output_hidden_states (`bool`, *isteğe bağlı*) : Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** `TableTransformerModelOutput` veya `tuple(torch.Tensor)`

Çeşitli öğelerden oluşan bir `TableTransformerModelOutput` veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda); bu öğeler yapılandırmaya ([TableTransformerConfig](/docs/transformers/main/tr/model_doc/table-transformer#transformers.TableTransformerConfig)) ve girdilere bağlı olarak değişir.

[TableTransformerModel](/docs/transformers/main/tr/model_doc/table-transformer#transformers.TableTransformerModel) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`) -- Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.

  `past_key_values` kullanılırsa, yalnızca `(batch_size, 1, hidden_size)` biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.
- **past_key_values** (`EncoderDecoderCache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [EncoderDecoderCache](/docs/transformers/main/tr/internal/generation_utils#transformers.EncoderDecoderCache) örneğidir. Daha fazla ayrıntı için [kv önbellek kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler) içerir.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında decoder'ın gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **decoder_attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan çözücü (decoder) dikkat ağırlıkları.
- **cross_attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
- **encoder_last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında kodlayıcının gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **encoder_attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.
- **intermediate_hidden_states** (`torch.Tensor`, şekli `(config.decoder_layers, batch_size, sequence_length, hidden_size)`, *isteğe bağlı*, `config.auxiliary_loss=True` olduğunda döndürülür) -- Ara decoder aktivasyonları, yani her decoder katmanının çıktısı, bunların her biri bir layernorm'dan geçirilmiştir.

Örnekler:

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

#### transformers.TableTransformerForObjectDetection[[transformers.TableTransformerForObjectDetection]]

```python
transformers.TableTransformerForObjectDetection(config: TableTransformerConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/table_transformer/modeling_table_transformer.py#L1136)

**Parametreler:**

config ([TableTransformerConfig](/docs/transformers/main/tr/model_doc/table-transformer#transformers.TableTransformerConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine bakın.

COCO algılama gibi görevler için üstünde nesne algılama başlıkları bulunan, bir omurga ve kodlayıcı-çözücü Transformer'dan oluşan Table Transformer Model.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.TableTransformerForObjectDetection.forward]]

```python
forward(pixel_values: Tensor, pixel_mask: typing.Optional[torch.Tensor] = None, decoder_attention_mask: typing.Optional[torch.Tensor] = None, encoder_outputs: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, decoder_inputs_embeds: typing.Optional[torch.Tensor] = None, labels: list[dict] | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/table_transformer/modeling_table_transformer.py#L1155)

**Parametreler:**

pixel_values (`torch.Tensor`, şekli `(batch_size, num_channels, image_size, image_size)`) : Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri [DetrImageProcessor](/docs/transformers/main/tr/model_doc/detr#transformers.DetrImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [DetrImageProcessor.__call__()](/docs/transformers/main/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) bölümüne bakın (`processor_class`, görüntüleri işlemek için [DetrImageProcessor](/docs/transformers/main/tr/model_doc/detr#transformers.DetrImageProcessor) kullanır).

pixel_mask (`torch.Tensor`, şekli `(batch_size, height, width)`, *isteğe bağlı*) : Dolgu piksel değerleri üzerinde dikkat işleminin uygulanmaması için maske. `[0, 1]` aralığında seçilen maske değerleri:  - Gerçek (yani **maskelenmemiş**) pikseller için 1, - Dolgu (yani **maskelenmiş**) pikseller için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

decoder_attention_mask (`torch.Tensor`, şekli `(batch_size, num_queries)`, *isteğe bağlı*) : Varsayılan olarak kullanılmaz. Nesne sorgularını maskelemek için kullanılabilir.

encoder_outputs (`torch.Tensor`, *isteğe bağlı*) : (`last_hidden_state`, *isteğe bağlı*: `hidden_states`, *isteğe bağlı*: `attentions`) `last_hidden_state` boyutu `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) kodlayıcının son katmanının çıktısındaki gizli durumlar dizisidir. Çözücüdeki çapraz dikkat (cross-attention) işleminde kullanılır.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : Düzleştirilmiş özellik haritasını (backbone + projeksiyon katmanının çıktısı) iletmek yerine, bir görüntünün düzleştirilmiş temsilini doğrudan iletme seçeneğine sahipsiniz.

decoder_inputs_embeds (`torch.Tensor`, şekli `(batch_size, num_queries, hidden_size)`, *isteğe bağlı*) : Sıfır tensörüyle sorguları başlatmak yerine, gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz.

labels (`list[Dict]`, len `(batch_size,)`, *isteğe bağlı*) : İkili eşleştirme kaybını hesaplamak için etiketler. Sözlüklerden oluşan liste, her sözlük en azından şu 2 anahtarı içerir: 'class_labels' ve 'boxes' (sırasıyla bir batch içindeki bir görüntünün sınıf etiketleri ve sınırlayıcı kutuları). Sınıf etiketlerinin kendisi, len `(number of bounding boxes in the image,)` olan bir `torch.LongTensor` ve kutuların şekli `(number of bounding boxes in the image, 4)` olan bir `torch.Tensor` olmalıdır.

output_attentions (`bool`, *isteğe bağlı*) : Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmediğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `attentions` bölümüne bakın.

output_hidden_states (`bool`, *isteğe bağlı*) : Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** `TableTransformerObjectDetectionOutput` veya `tuple(torch.Tensor)`

Bir `TableTransformerObjectDetectionOutput` veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırmaya ([TableTransformerConfig](/docs/transformers/main/tr/model_doc/table-transformer#transformers.TableTransformerConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[TableTransformerForObjectDetection](/docs/transformers/main/tr/model_doc/table-transformer#transformers.TableTransformerForObjectDetection) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `labels` sağlandığında döndürülür)) -- Sınıf tahmini için negatif log-olabilirlik (çapraz entropi) ile sınırlayıcı kutu kaybının doğrusal bir kombinasyonu olarak toplam kayıp. İkincisi, L1 kaybı ve genelleştirilmiş ölçekten bağımsız IoU kaybının doğrusal bir kombinasyonu olarak tanımlanır.
- **loss_dict** (`Dict`, *isteğe bağlı*) -- Bireysel kayıpları içeren bir sözlük. Kayıt tutma için faydalıdır.
- **logits** (`torch.Tensor`, şekli `(batch_size, num_queries, num_classes + 1)`) -- Tüm sorgular için sınıflandırma logitleri (no-object dahil).
- **pred_boxes** (`torch.Tensor`, şekli `(batch_size, num_queries, 4)`) -- Tüm sorgular için normalize edilmiş kutu koordinatları, (center_x, center_y, width, height) olarak temsil edilir. Bu değerler, [0, 1] aralığında normalize edilir ve parti içindeki her bir görüntünün boyutuna göre (olası dolgular göz ardı edilerek) göreli olarak hesaplanır. Normalize edilmemiş sınırlayıcı kutuları almak için `~TableTransformerImageProcessor.post_process_object_detection` işlevini kullanabilirsiniz.
- **auxiliary_outputs** (`list[Dict]`, *isteğe bağlı*) -- İsteğe bağlı, yalnızca yardımcı kayıplar etkinleştirildiğinde (yani `config.auxiliary_loss` `True` olarak ayarlandığında) ve etiketler sağlandığında döndürülür. Her kodlayıcı katmanı için yukarıdaki iki anahtarı (`logits` ve `pred_boxes`) içeren sözlüklerden oluşan bir listedir.
- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.
- **decoder_hidden_states** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında ve başlangıç gömme çıktılarında dekodlayıcının gizli durumları.
- **decoder_attentions** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan çözücü (decoder) dikkat ağırlıkları.
- **cross_attentions** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `(batch_size, num_heads, sequence_length, sequence_length)` biçiminde, her katman için bir adet içeren `torch.Tensor` demeti.

  Dekoderin çapraz dikkat katmanının dikkat ağırlıkları, dikkat softmax'ından sonra, çapraz dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.
- **encoder_last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin kodlayıcısının son katmanının çıktısındaki gizli durumlar dizisi.
- **encoder_hidden_states** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında ve başlangıç gömme çıktılarında kodlayıcının gizli durumları.
- **encoder_attentions** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat yumuşatma (attention softmax) sonrasında, öz-dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan kodlayıcının dikkat ağırlıkları.

Örnekler:

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

