Transformers documentation

DAB-DETR

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 2022-01-28 và được đóng góp cho Hugging Face Transformers vào ngày 2025-02-04.

DAB-DETR

Tổng quan

Mô hình DAB-DETR được đề xuất trong DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR bởi Shilong Liu, Feng Li, Hao Zhang, Xiao Yang, Xianbiao Qi, Hang Su, Jun Zhu, Lei Zhang. DAB-DETR là một biến thể nâng cao của Conditional DETR. Nó sử dụng các hộp neo được cập nhật động để cung cấp cả một điểm truy vấn tham chiếu (x, y) và một kích thước hộp neo tham chiếu (w, h), cải thiện việc tính toán chú ý chéo. Cách tiếp cận mới này đạt được 45,7% AP khi được huấn luyện trong 50 epochs với một mô hình ResNet-50 duy nhất làm backbone.

drawing

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

Trong bài báo này, chúng tôi đề xuất một cách xây dựng truy vấn mới sử dụng các hộp neo động cho DETR (DEtection TRansformer) và cung cấp sự hiểu biết sâu sắc hơn về vai trò của các truy vấn trong DETR. Cách xây dựng mới này trực tiếp sử dụng tọa độ hộp làm truy vấn trong các bộ giải mã Transformer và cập nhật chúng động theo từng lớp. Việc sử dụng tọa độ hộp không chỉ giúp tận dụng các tiên nghiệm vị trí rõ ràng để cải thiện độ tương tự giữa truy vấn và đặc trưng, loại bỏ vấn đề hội tụ chậm trong quá trình huấn luyện của DETR, mà còn cho phép chúng tôi điều chỉnh bản đồ chú ý vị trí bằng thông tin về chiều rộng và chiều cao của hộp. Thiết kế này làm rõ rằng các truy vấn trong DETR có thể được triển khai dưới dạng thực hiện lớp pooling ROI mềm theo từng lớp theo cách liên kết. Kết quả là, nó đạt hiệu suất tốt nhất trên bộ chuẩn MS-COCO trong số các mô hình phát hiện kiểu DETR cùng cấu hình, ví dụ: AP 45,7% khi sử dụng ResNet50-DC5 làm bộ xương và huấn luyện trong 50 epoch. Chúng tôi cũng đã tiến hành các thí nghiệm mở rộng để xác nhận phân tích của mình và kiểm chứng hiệu quả của các phương pháp đề xuất.

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

Cách bắt đầu với Mô hình

Sử dụng mã bên dưới để bắt đầu với mô hình.

import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection


url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

image_processor = AutoImageProcessor.from_pretrained("IDEA-Research/dab-detr-resnet-50")
model = AutoModelForObjectDetection.from_pretrained("IDEA-Research/dab-detr-resnet-50", device_map="auto")

inputs = image_processor(images=image, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)

for result in results:
    for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
        score, label = score.item(), label_id.item()
        box = [round(i, 2) for i in box.tolist()]
        print(f"{model.config.id2label[label]}: {score:.2f} {box}")

Điều này nên in ra

cat: 0.87 [14.7, 49.39, 320.52, 469.28]
remote: 0.86 [41.08, 72.37, 173.39, 117.2]
cat: 0.86 [344.45, 19.43, 639.85, 367.86]
remote: 0.61 [334.27, 75.93, 367.92, 188.81]
couch: 0.59 [-0.04, 1.34, 639.9, 477.09]

Có ba cách khác để khởi tạo một mô hình DAB-DETR (tùy thuộc vào sở thích của bạn):

Tùy chọn 1: Khởi tạo DAB-DETR với trọng số được huấn luyện trước cho toàn bộ mô hình

from transformers import DabDetrForObjectDetection


model = DabDetrForObjectDetection.from_pretrained("IDEA-Research/dab-detr-resnet-50", device_map="auto")

Tùy chọn 2: Khởi tạo DAB-DETR với trọng số được khởi tạo ngẫu nhiên cho Transformer, nhưng dùng trọng số đã huấn luyện trước cho backbone

from transformers import DabDetrConfig, DabDetrForObjectDetection


config = DabDetrConfig()
model = DabDetrForObjectDetection(config)

Tùy chọn 3: Khởi tạo DAB-DETR với trọng số được khởi tạo ngẫu nhiên cho backbone + Transformer

config = DabDetrConfig()
model = DabDetrForObjectDetection(config)

DabDetrConfig

lớp transformers.DabDetrConfig

< >

( 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_queries: int = 300encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8activation_function: str = 'prelu'hidden_size: 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 = Falsedilation: bool = Falseclass_cost: int = 2bbox_cost: int = 5giou_cost: int = 2cls_loss_coefficient: int = 2bbox_loss_coefficient: int = 5giou_loss_coefficient: int = 2focal_alpha: float = 0.25temperature_height: int = 20temperature_width: int = 20query_dim: int = 4random_refpoints_xy: bool = Falsekeep_query_pos: bool = Falsenum_patterns: int = 0normalize_before: bool = Falsesine_position_embedding_scale: float | None = Noneinitializer_bias_prior_prob: float | None = Nonetie_word_embeddings: bool = True )

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_queries (int, tùy chọn, mặc định là 300) — 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à DabDetrModel có thể phát hiện trong một hình ảnh. Đối với COCO, chúng tôi khuyến nghị sử dụng 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.
  • activation_function (str, tuỳ chọn, mặc định là prelu) — 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.
  • hidden_size (int, tùy chọn, mặc định là 256) — Kích thước của các biểu diễn ẩn.
  • 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.
  • 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à 2) — 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.
  • cls_loss_coefficient (int, tùy chọn, mặc định là 2) — Trọng số tương đối của tổn thất phân loại trong tổn thất phân đoạn toàn cảnh.
  • 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.
  • focal_alpha (float, tùy chọn, mặc định là 0.25) — Tham số Alpha trong hàm mất mát focal.
  • temperature_height (int, tùy chọn, mặc định là 20) — Tham số nhiệt độ để điều chỉnh độ phẳng của chú ý vị trí (HEIGHT)
  • temperature_width (int, tùy chọn, mặc định là 20) — Tham số nhiệt độ để điều chỉnh độ phẳng của chú ý vị trí (WIDTH)
  • query_dim (int, tuỳ chọn, mặc định là 4) — Tham số chiều query đại diện cho kích thước của vector đầu ra.
  • random_refpoints_xy (bool, tùy chọn, mặc định là False) — Có nên cố định tọa độ x và y của các hộp neo với khởi tạo ngẫu nhiên hay không.
  • keep_query_pos (bool, tùy chọn, mặc định là False) — Có nên nối embedding vị trí đã chiếu từ object query vào query (key) gốc trong mỗi lớp decoder hay không.
  • num_patterns (int, tùy chọn, mặc định là 0) — Số lượng pattern embeddings.
  • normalize_before (bool, tùy chọn, mặc định là False) — Liệu chúng ta có sử dụng một lớp chuẩn hóa trong Encoder hay không.
  • sine_position_embedding_scale (float, tùy chọn, mặc định là ‘None’) — Hệ số tỷ lệ được áp dụng cho các mã hóa vị trí đã được chuẩn hóa.
  • initializer_bias_prior_prob (float, tùy chọn) — Xác suất tiên nghiệm được bộ khởi tạo bias sử dụng để khởi tạo bias cho enc_score_head và class_embed. Nếu None, prior_prob được tính là prior_prob = 1 / (num_labels + 1) trong khi khởi tạo trọng số mô hình.
  • tie_word_embeddings (bool, tùy chọn, mặc định là True) — Có nên gắn kết các trọng số nhúng theo ánh xạ tied_weights_keys của mô hình hay không.

Đây là lớp cấu hình để lưu trữ cấu hình của một mô hình Dab DetrModel. Nó được sử dụng để khởi tạo một mô hình Dab Detr 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 IDEA-Research/dab-detr-resnet-50

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 DabDetrConfig, DabDetrModel

>>> # Initializing a DAB-DETR IDEA-Research/dab-detr-resnet-50 style configuration
>>> configuration = DabDetrConfig()

>>> # Initializing a model (with random weights) from the IDEA-Research/dab-detr-resnet-50 style configuration
>>> model = DabDetrModel(configuration)

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

DabDetrModel

lớp transformers.DabDetrModel

< >

( config: DabDetrConfig )

Tham số

  • config (DabDetrConfig) — 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ố mô hình.

Mô hình DAB-DETR cơ bản (gồm một backbone và Transformer encoder-decoder) xuất ra các hidden-states thô, các trạng thái ẩn trung gian, các điểm tham chiếu, các tọa độ đầu ra mà không có bất kỳ head cụ thể nào ở phía trên.

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: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DabDetrModelOutput or tuple(torch.Tensor)

Tham số

  • pixel_values (torch.Tensor 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 image_processor_class. Xem image_processor_class.__call__ để biết chi tiết (processor_class sử dụng image_processor_class để xử lý hình ảnh).
  • pixel_mask (torch.LongTensor 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.Tensor 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 các truy vấn đối tượng.
  • encoder_outputs (torch.Tensor, 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.Tensor 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.Tensor 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ề

DabDetrModelOutput hoặc tuple(torch.Tensor)

Một DabDetrModelOutput hoặc một tuple của torch.Tensor (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 (DabDetrConfig) và đầu vào.

Phương thức forward của DabDetrModel 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.Tensor 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.Tensor), 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.Tensor (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.Tensor), tùy chọn, được trả về khi truyền output_attentions=True hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (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.Tensor), 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.Tensor (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.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.

  • encoder_hidden_states (tuple(torch.Tensor), 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.Tensor (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ộ 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.Tensor), tùy chọn, được trả về khi truyền output_attentions=True hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (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.Tensor có hình dạng (config.decoder_layers, batch_size, sequence_length, hidden_size), tùy chọn, được trả về khi config.auxiliary_loss=True) — Các kích hoạt trung gian của bộ giải mã, tức là đầu ra của từng lớp giải mã, mỗi lớp đã đi qua một layernorm.

  • reference_points (torch.Tensor có hình dạng (config.decoder_layers, batch_size, num_queries, 2 (anchor points))) — Các điểm tham chiếu (điểm tham chiếu của từng lớp trong decoder).

Ví dụ:

>>> from transformers import AutoImageProcessor, AutoModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("IDEA-Research/dab-detr-resnet-50")
>>> model = AutoModel.from_pretrained("IDEA-Research/dab-detr-resnet-50")

>>> # 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, 300, 256]

DabDetrForObjectDetection

lớp transformers.DabDetrForObjectDetection

< >

( config: DabDetrConfig )

Tham số

  • config (DabDetrConfig) — 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ố mô hình.

Mô hình DAB_DETR (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: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DabDetrObjectDetectionOutput or tuple(torch.Tensor)

Tham số

  • pixel_values (torch.Tensor 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 image_processor_class. Xem image_processor_class.__call__ để biết chi tiết (processor_class sử dụng image_processor_class để xử lý hình ảnh).
  • pixel_mask (torch.LongTensor 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.Tensor 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 các truy vấn đối tượng.
  • encoder_outputs (torch.Tensor, 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.Tensor 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.Tensor 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.Tensor 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ề

DabDetrObjectDetectionOutput hoặc tuple(torch.Tensor)

Một DabDetrObjectDetectionOutput hoặc một tuple của torch.Tensor (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 (DabDetrConfig) và đầu vào.

Phương thức forward của DabDetrForObjectDetection 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.Tensor có shape (1,), tùy chọn, đượ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.Tensor 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.Tensor 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 ~DabDetrImageProcessor.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.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn (hidden-states) 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.Tensor], 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.Tensor (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.Tensor], 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.Tensor (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.Tensor], 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.Tensor (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.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.

  • encoder_hidden_states (tuple[torch.Tensor], 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.Tensor (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ộ 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.Tensor], 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.Tensor (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 transformers import AutoImageProcessor, AutoModelForObjectDetection
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("IDEA-Research/dab-detr-resnet-50")
>>> model = AutoModelForObjectDetection.from_pretrained("IDEA-Research/dab-detr-resnet-50")

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

>>> with torch.no_grad():
>>>     outputs = model(**inputs)

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([(image.height, image.width)])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.5, 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 remote with confidence 0.833 at location [38.31, 72.1, 177.63, 118.45]
Detected cat with confidence 0.831 at location [9.2, 51.38, 321.13, 469.0]
Detected cat with confidence 0.804 at location [340.3, 16.85, 642.93, 370.95]
Detected remote with confidence 0.683 at location [334.48, 73.49, 366.37, 190.01]
Detected couch with confidence 0.535 at location [0.52, 1.19, 640.35, 475.1]
Update on GitHub