Transformers documentation
D-FINE
Bu model 2024-10-17 tarihinde HF papers'ta yayımlandı ve 2025-04-29 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
D-FINE
Genel Bakış
D-FINE modeli, Yansong Peng, Hebei Li, Peixi Wu, Yueyi Zhang, Xiaoyan Sun ve Feng Wu tarafından D-FINE: Redefine Regression Task in DETRs as Fine-grained Distribution Refinement makalesinde önerilmiştir.
Makalenin özeti aşağıdaki gibidir:
D-FINE'yi tanıtıyoruz; bu güçlü gerçek zamanlı nesne algılayıcı, DETR modellerinde sınırlayıcı kutu regresyon görevini yeniden tanımlayarak olağanüstü konumlandırma hassasiyeti elde eder. D-FINE iki ana bileşenden oluşur: İnce Taneli Dağılım İncelemesi (FDR) ve Küresel Optimal Konumlandırma Öz-Distilasyonu (GO-LSD). FDR, regresyon sürecini sabit koordinat tahmininden olasılık dağılımlarını iteratif olarak incelemeye dönüştürerek konumlandırma doğruluğunu önemli ölçüde artıran ince taneli bir ara temsil sağlar. GO-LSD, öz-distilasyon yoluyla konumlandırma bilgisini incelenmiş dağılımlardan daha sığ katmanlara aktaran ve aynı zamanda daha derin katmanlar için kalan tahmin görevlerini basitleştiren çift yönlü bir optimizasyon stratejisidir. Ayrıca D-FINE, hesaplama yoğun modüllerde ve işlemlerde hafif optimizasyonlar uygulayarak hız ve doğruluk arasında daha iyi bir denge sağlar. Özellikle, D-FINE-L / X, NVIDIA T4 GPU üzerinde COCO veri setinde 124 / 78 FPS hızında %54,0 / %55,8 AP elde eder. Objects365 üzerinde ön eğitildiğinde D-FINE-L / X, %57,1 / %59,3 AP'ye ulaşarak mevcut tüm gerçek zamanlı algılayıcıları geride bırakır. Bununla birlikte, yöntemimiz, ihmal edilebilir düzeyde ek parametre ve eğitim maliyetleriyle geniş bir yelpazedeki DETR modellerinin performansını en fazla %5,3 AP kadar artırır. Kodumuz ve ön eğitilmiş modellerimiz: this https URL.
Bu model VladOS95-cyber tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.
Kullanım ipuçları
import torch
from transformers import AutoImageProcessor, DFineForObjectDetection
from transformers.image_utils import load_image
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = load_image(url)
image_processor = AutoImageProcessor.from_pretrained("ustc-community/dfine_x_coco")
model = DFineForObjectDetection.from_pretrained("ustc-community/dfine_x_coco", 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=[(image.height, image.width)], threshold=0.5)
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}")
cat: 0.96 [344.49, 23.4, 639.84, 374.27]
cat: 0.96 [11.71, 53.52, 316.64, 472.33]
remote: 0.95 [40.46, 73.7, 175.62, 117.57]
sofa: 0.92 [0.59, 1.88, 640.25, 474.74]
remote: 0.89 [333.48, 77.04, 370.77, 187.3]DFineConfig
sınıf transformers.DFineConfig
< 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-05backbone_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: int | None = Nonenormalize_before: bool = Falsehidden_expansion: float = 1.0d_model: int = 256num_queries: int = 300decoder_in_channels: list[int] | tuple[int, ...] = (256, 256, 256)decoder_ffn_dim: int = 1024num_feature_levels: int = 3decoder_n_points: int | list[int] = 4decoder_layers: int = 6decoder_attention_heads: int = 8decoder_activation_function: str = 'relu'attention_dropout: float | int = 0.0num_denoising: int = 100label_noise_ratio: float = 0.5box_noise_scale: float = 1.0learn_initial_query: bool = Falseanchor_image_size: int | list[int] | None = Nonewith_box_refine: bool = Truematcher_alpha: float = 0.25matcher_gamma: float = 2.0matcher_class_cost: float = 2.0matcher_bbox_cost: float = 5.0matcher_giou_cost: float = 2.0use_focal_loss: bool = Trueauxiliary_loss: bool = Truefocal_loss_alpha: float = 0.75focal_loss_gamma: float = 2.0weight_loss_vfl: float = 1.0weight_loss_bbox: float = 5.0weight_loss_giou: float = 2.0weight_loss_fgl: float = 0.15weight_loss_ddf: float = 1.5eos_coefficient: float = 0.0001eval_idx: int = -1layer_scale: int | float = 1.0max_num_bins: int = 32reg_scale: float = 4.0depth_mult: float = 1.0top_prob_values: int = 4lqe_hidden_dim: int = 64lqe_layers: int = 2decoder_offset_scale: float = 0.5decoder_method: str = 'default'up: float = 0.5tie_word_embeddings: bool = True )
Parametreler
- is_encoder_decoder (
bool, isteğe bağlı, varsayılanTrue) — Modelin bir kodlayıcı/çözücü olarak kullanılıp kullanılmadığı. - initializer_range (
float, isteğe bağlı, varsayılan0.01) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması. - initializer_bias_prior_prob (
float, isteğe bağlı) —enc_score_headveclass_embediçin önyargıları başlatmak üzere önyargı başlatıcısı tarafından kullanılan önceden olasılık.Noneise, model ağırlıkları başlatılırkenprior_prob,prior_prob = 1 / (num_labels + 1)olarak hesaplanır. - layer_norm_eps (
float, isteğe bağlı, varsayılan1e-05) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - batch_norm_eps (
float, isteğe bağlı, varsayılan1e-05) — Toplu normalizasyon katmanları tarafından kullanılan epsilon. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], isteğe bağlı) — Backbone modelinin yapılandırması. - freeze_backbone_batch_norms (
bool, isteğe bağlı, varsayılanTrue) — Backbone'daki batch normalization katmanlarını dondurulup dondurulmayacağı. - encoder_hidden_dim (
int, isteğe bağlı, varsayılan256) — Gizli temsillerin boyutu. - encoder_in_channels (
list, isteğe bağlı, varsayılan[512, 1024, 2048]) — Encoder için çok seviyeli özellik girişi. - feat_strides (
list[int], isteğe bağlı, varsayılan[8, 16, 32]) — Her özellik haritasında kullanılan adımlar. - encoder_layers (
int, isteğe bağlı, varsayılan1) — Transformer kodlayıcısındaki gizli katman sayısı. Ayarlanmazsanum_layersile aynı değeri kullanır. - encoder_ffn_dim (
int, isteğe bağlı, varsayılan1024) — Encoder'daki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu. - encoder_attention_heads (
int, isteğe bağlı, varsayılan8) — Transformer kodlayıcısındaki her dikkat katmanı için dikkat başı sayısı. - dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Tüm dropout katmanları için oran. - activation_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Tamamen bağlı katmandaki aktivasyonlar için dropout oranı. - encode_proj_layers (
list[int], isteğe bağlı, varsayılan[2]) — Kodlayıcıda kullanılacak projeksiyon katmanlarının indeksleri. - positional_encoding_temperature (
int, isteğe bağlı, varsayılan 10000) — Konumsal kodlamaları oluşturmak için kullanılan sıcaklık parametresi. - encoder_activation_function (
str, isteğe bağlı, varsayılan"gelu") — Encoder ve pooler'daki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Dize ise"gelu","relu","silu"ve"gelu_new"desteklenir. - activation_function (
str, isteğe bağlı, varsayılansilu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin,"gelu","relu","silu"vb. - eval_size (
tuple[int, int], isteğe bağlı) — Adım (stride) değerleri dikkate alındıktan sonra konum gömme (position embeddings) için etkili yükseklik ve genişliğin hesaplanmasında kullanılan yükseklik ve genişlik. - normalize_before (
bool, isteğe bağlı, varsayılanFalse) — Transformer kodlayıcı katmanında self-attention ve feed-forward modüllerinden önce katman normalizasyonunun uygulanıp uygulanmayacağını belirler. - hidden_expansion (
float, isteğe bağlı, varsayılan 1.0) — RepVGGBlock ve CSPRepLayer boyutlarını büyütmek için kullanılan genişletme oranı. - d_model (
int, isteğe bağlı, varsayılan256) — Kodlayıcı katmanlarının ve pooler katmanının boyutu. - num_queries (
int, isteğe bağlı, varsayılan 300) — Nesne sorgusu sayısı. - decoder_in_channels (
list, isteğe bağlı, varsayılan[256, 256, 256]) — Çözücü için çok seviyeli özellik boyutu - decoder_ffn_dim (
int, isteğe bağlı, varsayılan1024) — Decoder'daki “ara” (genellikle feed-forward olarak adlandırılan) katmanın boyutluluğu. - num_feature_levels (
int, isteğe bağlı, varsayılan 3) — Girdi özellik seviyelerinin sayısı. - decoder_n_points (
int, isteğe bağlı, varsayılan 4) — Decoder'daki her dikkat başı için her özellik seviyesinde örneklenen anahtar sayısı. - decoder_layers (
int, isteğe bağlı, varsayılan6) — Transformer decoder'ındaki gizli katman sayısı. Ayarlanmazsanum_layersile aynı değeri kullanır. - decoder_attention_heads (
int, isteğe bağlı, varsayılan8) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - decoder_activation_function (
str, isteğe bağlı, varsayılan"relu") — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Dize ise"gelu","relu","silu"ve"gelu_new"desteklenir. - attention_dropout (
Union[float, int], isteğe bağlı, varsayılan0.0) — Dikkat olasılıkları için dropout oranı. - num_denoising (
int, isteğe bağlı, varsayılan 100) — Karşılaştırmalı gürültü giderme için kullanılacak toplam gürültü giderme görevi veya sorgu sayısı. - label_noise_ratio (
float, isteğe bağlı, varsayılan 0.5) — Rastgele gürültü eklenmesi gereken gürültü giderme etiketlerinin oranı. - box_noise_scale (
float, isteğe bağlı, varsayılan 1.0) — Sınır kutularına eklenecek gürültünün ölçeği veya büyüklüğü. - learn_initial_query (
bool, isteğe bağlı, varsayılanFalse) — Eğitim sırasında decoder için başlangıç sorgu gömme değerlerinin öğrenilip öğrenilmeyeceğini belirtir - anchor_image_size (
tuple[int, int], isteğe bağlı) — Değerlendirme sırasında sınırlayıcı kutu (bounding box) çapaları (anchor) oluşturmak için kullanılan girdi görüntüsünün yüksekliği ve genişliği. None ise, otomatik çapa (anchor) üretimi uygulanır. - with_box_refine (
bool, isteğe bağlı, varsayılanTrue) — İteratif sınırlayıcı kutu iyileştirmesinin uygulanıp uygulanmayacağını belirtir; bu yöntemde her decoder katmanı, sınırlayıcı kutuları önceki katmandan gelen tahminlere göre iyileştirir. - matcher_alpha (
float, isteğe bağlı, varsayılan 0.25) — Macar Eşleştiricisi tarafından kullanılan alpha parametresi. - matcher_gamma (
float, isteğe bağlı, varsayılan 2.0) — Macar Eşleştiricisi tarafından kullanılan gamma parametresi. - matcher_class_cost (
float, isteğe bağlı, varsayılan 2.0) — Macar Eşleştiricisi tarafından kullanılan sınıf kaybının göreli ağırlığı. - matcher_bbox_cost (
float, isteğe bağlı, varsayılan 5.0) — Macar Eşleştiricisi tarafından kullanılan sınırlayıcı kutu kaybının göreli ağırlığı. - matcher_giou_cost (
float, isteğe bağlı, varsayılan 2.0) — Macar Eşleştiricisi tarafından kullanılan giou kaybının göreli ağırlığı. - use_focal_loss (
bool, isteğe bağlı, varsayılanTrue) — Focal loss kullanılacaksa bilgilendiren parametre. - auxiliary_loss (
bool, isteğe bağlı, varsayılanTrue) — Yardımcı çözümleme kayıplarının (her decoder katmanındaki kayıplar) kullanılıp kullanılmayacağı. - focal_loss_alpha (
float, isteğe bağlı, varsayılan 0.75) — Focal loss hesaplamak için kullanılan alpha parametresi. - focal_loss_gamma (
float, isteğe bağlı, varsayılan 2.0) — Focal loss hesaplamak için kullanılan gamma parametresi. - weight_loss_vfl (
float, isteğe bağlı, varsayılan 1.0) — Nesne algılama kaybında varifocal kaybının göreli ağırlığı. - weight_loss_bbox (
float, isteğe bağlı, varsayılan 5.0) — Nesne algılama kaybında L1 sınırlayıcı kutu kaybının göreli ağırlığı. - weight_loss_giou (
float, isteğe bağlı, varsayılan 2.0) — Nesne algılama kaybında genelleştirilmiş IoU kaybının göreli ağırlığı. - weight_loss_fgl (
float, isteğe bağlı, varsayılan 0.15) — Nesne algılama kaybında ince taneli konumlandırma kaybının göreli ağırlığı. - weight_loss_ddf (
float, isteğe bağlı, varsayılan 1.5) — Nesne algılama kaybında ayrıştırılmış damıtma odaklı kaybın göreli ağırlığı. - eos_coefficient (
float, isteğe bağlı, varsayılan0.0001) — Nesne algılama kaybında ‘nesne-yok’ sınıfının göreli sınıflandırma ağırlığı. - eval_idx (
int, isteğe bağlı, varsayılan -1) — Değerlendirme için kullanılacak decoder katmanının indeksi. Negatifse sondan sayılır (ör. -1, son katmanı kullanmak anlamına gelir). Bu, decoder yığınındaki sonraki katmanlar hâlâ eğitilirken erken tahmin yapılmasına olanak tanır. - layer_scale (
float, isteğe bağlı, varsayılan1.0) — Sonraki decoder katmanlarında gizli boyut için ölçekleme faktörü. Değerlendirme katmanından sonra model kapasitesini ayarlamak için kullanılır. - max_num_bins (
int, isteğe bağlı, varsayılan 32) — Dağılım yönlendirmeli sınırlayıcı kutu iyileştirmesi için maksimum kutu sayısı. Daha yüksek değerler daha ince taneli konumlandırma sağlar ancak hesaplama yükünü artırır. - reg_scale (
float, isteğe bağlı, varsayılan 4.0) — Regresyon dağılımı için ölçekleme faktörü. Sınır kutusu (bounding box) iyileştirme sürecinin aralığını ve inceliğini kontrol eder. - depth_mult (
float, isteğe bağlı, varsayılan 1.0) — RepNCSPELAN4 katmanlarındaki blok sayısının çarpanı. Modelin derinliğini ölçeklemek için mimarisini koruyarak kullanılır. - top_prob_values (
int, isteğe bağlı, varsayılan 4) — Her köşenin dağılımından dikkate alınacak en yüksek olasılık değerlerinin sayısı. - lqe_hidden_dim (
int, isteğe bağlı, varsayılan 64) — Konum Kalitesi Tahminleyici (LQE) ağı için gizli boyut büyüklüğü. - lqe_layers (
int, isteğe bağlı, varsayılan 2) — Konum Kalitesi Tahminleyici MLP'sindeki katman sayısı. - decoder_offset_scale (
float, isteğe bağlı, varsayılan 0.5) — Deformable attention'da kullanılan offset ölçeği. - decoder_method (
str, isteğe bağlı, varsayılan"default") — Çözücü için kullanılacak yöntem:"default"veya"discrete". - up (
float, isteğe bağlı, varsayılan 0.5) — Ağırlıklandırma Fonksiyonu'nun üst sınırlarını kontrol eder. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanTrue) — Modelintied_weights_keyseşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
Bu, bir DFineModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir D Fine modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneği oluşturmak, ustc-community/dfine-xlarge-coco modelinin yapılandırmasına benzer bir yapılandırma üretir.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
DFineModel
sınıf transformers.DFineModel
< source >( config: DFineConfig )
Parametreler
- config (DFineConfig) — 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() yöntemine bakın.
RT-DETR Model (bir omurga ve kodlayıcı-çözücüden oluşan) üzerinde herhangi bir başlık olmadan ham gizli durumlar üreten.
Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch 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
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DFineModelOutput or tuple(torch.Tensor)
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ğerleriimage_processor_classkullanılarak elde edilebilir. Ayrıntılar içinimage_processor_class.__call__bölümüne bakın (processor_class, görüntü işleme içinimage_processor_classkullanır). - pixel_mask (
torch.LongTensorşeklinde(batch_size, height, width), isteğe bağlı) — Doldurma piksel değerlerinde dikkat işleminin uygulanmaması için maske. Seçilen maske değerleri[0, 1]:- gerçek olan (yani maske uygulanmamış) pikseller için 1,
- Dolgu olan (yani maskelenmiş) pikseller için 0.
- encoder_outputs (
torch.Tensor, isteğe bağlı) — (last_hidden_state, isteğe bağlı:hidden_states, isteğe bağlı:attentions) içeren bir Tuplelast_hidden_state,(batch_size, sequence_length, hidden_size)boyutunda, isteğe bağlı) kodlayıcının (encoder) son katmanının çıktısındaki gizli durumlar (hidden-states) dizisidir. Çözücüde (decoder) çapraz dikkat (cross-attention) için 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ı çıktısı) iletmek yerine, bir görüntünün düzleştirilmiş temsilini doğrudan iletme seçeneğine sahipsiniz. - labels (
list[Dict]of len(batch_size,), optional) — Labels for computing the bipartite matching loss. List of dicts, each dictionary containing at least the following 2 keys: ‘class_labels’ and ‘boxes’ (the class labels and bounding boxes of an image in the batch respectively). The class labels themselves should be atorch.LongTensorof len(number of bounding boxes in the image,)and the boxes atorch.Tensorof shape(number of bounding boxes in the image, 4).
Dönüş değeri
DFineModelOutput veya tuple(torch.Tensor)
DFineModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (None) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
DFineModel 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ü önceki, ö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, num_queries, hidden_size)) — Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.intermediate_hidden_states (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, hidden_size)) — Yığılmış ara gizli durumlar (decoder'ın her katmanının çıktısı).intermediate_logits (
torch.Tensor, şekli(batch_size, config.decoder_layers, sequence_length, config.num_labels)) — Yığılmış ara logits (decoder'ın her katmanının logits'i).intermediate_reference_points (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, 4)) — Yığılmış ara referans noktaları (decoder'ın her katmanının referans noktaları).intermediate_predicted_corners (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, 4)) — Yığılmış ara tahmini köşeler (decoder'ın her katmanının tahmini köşeleri).initial_reference_points (
torch.Tensor, şekli(batch_size, num_queries, 4)) — İlk decoder katmanı için kullanılan başlangıç referans noktaları.decoder_hidden_states (
tuple[torch.Tensor], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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 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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin
cross_attentions (
tuple[torch.Tensor], isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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 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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına 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ı.
init_reference_points (
torch.Tensor, şekli(batch_size, num_queries, 4)) — Transformer decoder üzerinden gönderilen başlangıç referans noktaları.enc_topk_logits (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels)) — Kodlayıcı aşamasında bölge önerileri olarak seçilen, en yüksekconfig.two_stage_num_proposalspuanlı sınırlayıcı kutuların tahmini sınırlayıcı kutu puanları. Sınırlayıcı kutu ikili sınıflandırmasının (yani ön plan ve arka plan) çıktısı.enc_topk_bboxes (
torch.Tensor, şekli(batch_size, sequence_length, 4)) — Kodlayıcı aşamasında tahmin edilen sınırlayıcı kutu koordinatlarının logitleri.enc_outputs_class (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels), isteğe bağlı,config.with_box_refine=Trueveconfig.two_stage=Trueolduğunda döndürülür) — İlk aşamada en yüksekconfig.two_stage_num_proposalspuanlı sınırlayıcı kutuların bölge önerileri olarak seçildiği, tahmini sınırlayıcı kutu puanları. Sınırlayıcı kutu ikili sınıflandırmasının çıktısı (yani ön plan ve arka plan).enc_outputs_coord_logits (
torch.Tensor, şekli(batch_size, sequence_length, 4), opsiyonel,config.with_box_refine=Trueveconfig.two_stage=Trueolduğunda döndürülür) — Birinci aşamada tahmin edilen sınırlayıcı kutu koordinatlarının logitleri.denoising_meta_values (
dict, isteğe bağlı) — Gürültü azaltma ile ilgili değerler için ek sözlük.
Örnekler:
>>> from transformers import AutoImageProcessor, DFineModel
>>> 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("PekingU/DFine_r50vd")
>>> model = DFineModel.from_pretrained("PekingU/DFine_r50vd")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 300, 256]DFineForObjectDetection
sınıf transformers.DFineForObjectDetection
< source >( config: DFineConfig )
Parametreler
- config (DFineConfig) — 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() yöntemine bakın.
RT-DETR Model (bir omurga ve kodlayıcı-çözücüden oluşan) sınırlayıcı kutuları ve daha sonra puanlara ve sınıflara çözümlenecek logitleri üreten.
Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch 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
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DFineObjectDetectionOutput or tuple(torch.Tensor)
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ğerleriimage_processor_classkullanılarak elde edilebilir. Ayrıntılar içinimage_processor_class.__call__bölümüne bakın (processor_class, görüntü işleme içinimage_processor_classkullanır). - pixel_mask (
torch.LongTensorşeklinde(batch_size, height, width), isteğe bağlı) — Doldurma piksel değerlerinde dikkat işleminin uygulanmaması için maske. Seçilen maske değerleri[0, 1]:- gerçek olan (yani maske uygulanmamış) pikseller için 1,
- Dolgu olan (yani maskelenmiş) pikseller için 0.
- encoder_outputs (
torch.Tensor, isteğe bağlı) — (last_hidden_state, isteğe bağlı:hidden_states, isteğe bağlı:attentions) içeren bir Tuplelast_hidden_state,(batch_size, sequence_length, hidden_size)boyutunda, isteğe bağlı) kodlayıcının (encoder) son katmanının çıktısındaki gizli durumlar (hidden-states) dizisidir. Çözücüde (decoder) çapraz dikkat (cross-attention) için kullanılır. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - labels (
list[Dict]of len(batch_size,), optional) — Labels for computing the bipartite matching loss. List of dicts, each dictionary containing at least the following 2 keys: ‘class_labels’ and ‘boxes’ (the class labels and bounding boxes of an image in the batch respectively). The class labels themselves should be atorch.LongTensorof len(number of bounding boxes in the image,)and the boxes atorch.Tensorof shape(number of bounding boxes in the image, 4).
Dönüş değeri
DFineObjectDetectionOutput veya tuple(torch.Tensor)
DFineObjectDetectionOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (None) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
DFineForObjectDetection ileri yöntemi, __call__ özel yöntemini 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ü önceki, ö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ı,labelssağ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ı ederek) göreli olarak hesaplanır. Normalize edilmemiş (mutlak) sınırlayıcı kutuları almak için~DFineImageProcessor.post_process_object_detectionkullanabilirsiniz.auxiliary_outputs (
list[Dict], isteğe bağlı) — İsteğe bağlı, yalnızca yardımcı kayıplar etkinleştirildiğinde (yaniconfig.auxiliary_lossTrueolarak ayarlandığında) ve etiketler sağlandığında döndürülür. Her kodlayıcı katmanı için yukarıdaki iki anahtarı (logitsvepred_boxes) içeren sözlüklerden oluşan bir listedir.last_hidden_state (
torch.Tensor, şekli(batch_size, num_queries, hidden_size)) — Modelin decoder'ının son katmanının çıktısındaki gizli durumlar dizisi.intermediate_hidden_states (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, hidden_size)) — Yığılmış ara gizli durumlar (decoder'ın her katmanının çıktısı).intermediate_logits (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, config.num_labels)) — Yığılmış ara logits (decoder'ın her katmanının logits'i).intermediate_reference_points (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, 4)) — Yığılmış ara referans noktaları (decoder'ın her katmanının referans noktaları).intermediate_predicted_corners (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, 4)) — Yığılmış ara tahmini köşeler (decoder'ın her katmanının tahmini köşeleri).initial_reference_points (
torch.Tensor, şekli(batch_size, config.decoder_layers, num_queries, 4)) — Yığılmış başlangıç referans noktaları (decoder'ın her katmanının başlangıç referans noktaları).decoder_hidden_states (
tuple[torch.Tensor], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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 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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).Dikkat ağırlıkları, dikkat softmax'ından sonra, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılan dekoderin
cross_attentions (
tuple[torch.Tensor], isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, sequence_length).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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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 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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına 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ı.
init_reference_points (
torch.Tensor, şekli(batch_size, num_queries, 4)) — Transformer decoder üzerinden gönderilen başlangıç referans noktaları.enc_topk_logits (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels), isteğe bağlı,config.with_box_refine=Trueveconfig.two_stage=Trueolduğunda döndürülür) — Kodlayıcıda tahmin edilen sınırlayıcı kutu koordinatlarının logitleri.enc_topk_bboxes (
torch.Tensor, şekli(batch_size, sequence_length, 4), isteğe bağlı,config.with_box_refine=Trueveconfig.two_stage=Trueolduğunda döndürülür) — Kodlayıcıda tahmin edilen sınırlayıcı kutu koordinatlarının logitleri.enc_outputs_class (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels), isteğe bağlı,config.with_box_refine=Trueveconfig.two_stage=Trueolduğunda döndürülür) — İlk aşamada en yüksekconfig.two_stage_num_proposalspuanlı sınırlayıcı kutuların bölge önerileri olarak seçildiği, tahmini sınırlayıcı kutu puanları. Sınırlayıcı kutu ikili sınıflandırmasının çıktısı (yani ön plan ve arka plan).enc_outputs_coord_logits (
torch.Tensor, şekli(batch_size, sequence_length, 4), opsiyonel,config.with_box_refine=Trueveconfig.two_stage=Trueolduğunda döndürülür) — Birinci aşamada tahmin edilen sınırlayıcı kutu koordinatlarının logitleri.denoising_meta_values (
dict, isteğe bağlı) — Gürültü azaltma ile ilgili değerler için ek sözlük
Örnek:
>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoImageProcessor, DFineForObjectDetection
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)
>>> image_processor = AutoImageProcessor.from_pretrained("ustc-community/dfine-xlarge-coco")
>>> model = DFineForObjectDetection.from_pretrained("ustc-community/dfine-xlarge-coco")
>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> # forward pass
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 300, 80]
>>> boxes = outputs.pred_boxes
>>> list(boxes.shape)
[1, 300, 4]
>>> # 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)
>>> result = results[0] # first image in batch
>>> for score, label, box in zip(result["scores"], result["labels"], result["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 cat with confidence 0.958 at location [344.49, 23.4, 639.84, 374.27]
Detected cat with confidence 0.956 at location [11.71, 53.52, 316.64, 472.33]
Detected remote with confidence 0.947 at location [40.46, 73.7, 175.62, 117.57]
Detected sofa with confidence 0.918 at location [0.59, 1.88, 640.25, 474.74]