Transformers documentation
RF-DETR
Este modelo foi publicado no HF papers em 2024-07-24 e contribuído para o Hugging Face Transformers em 2026-05-07.
RF-DETR
RF-DETR propõe uma arquitetura de Receptive Field Detection Transformer (DETR) projetada para competir com e superar a série dominante YOLO em detecção de objetos em tempo real. Ela atinge um novo estado da arte no equilíbrio entre velocidade (latência) e precisão (mAP) ao combinar avanços recentes em transformers com escolhas de design eficientes.
A arquitetura RF-DETR é caracterizada por sua estrutura simples e eficiente: um Backbone DINOv2, um Projector e um Decoder DETR raso. Ela aprimora a arquitetura DETR para eficiência e velocidade usando as seguintes modificações principais:
- Backbone DINOv2: Utiliza um backbone DINOv2 poderoso para uma extração de recursos robusta.
- Group DETR Training: Utiliza a atribuição Group-Wise One-to-Many durante o treinamento para acelerar a convergência.
- Entrada mais rica: agrega recursos de múltiplos níveis do backbone e usa um Projetor C2f (de forma semelhante ao YOLOv8) para transmitir recursos em múltiplas escalas.
- Faster Decoder: Utiliza um decodificador DETR raso de 3 camadas com atenção cruzada deformável para reduzir a latência.
- Consultas Otimizadas: Utiliza um esquema de consultas mistas que combina consultas de conteúdo aprendíveis e consultas espaciais geradas.
Você pode encontrar todos os checkpoints disponíveis do RF-DETR na organização Roboflow. O código original pode ser encontrado aqui.
Graças ao mapeamento de conversão de pesos, o RfDetr é compatível com modelos da biblioteca original rf-detr, bem como com modelos que você treinou usando a plataforma Roboflow. Isso significa que você pode usar a plataforma Roboflow para treinar seu modelo e usar RfDetr no transformers para importar os pesos e implantar seu modelo em qualquer lugar.
Clique nos modelos RF-DETR na barra lateral à direita para ver mais exemplos de como aplicar o RF-DETR em diferentes tarefas de detecção de objetos.
O exemplo abaixo demonstra como realizar detecção de objetos com o Pipeline e a classe AutoModel.
from transformers import pipeline
import torch
pipeline = pipeline("object-detection", model="Roboflow/rf-detr-medium", device_map="auto")
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")from transformers import AutoImageProcessor, AutoModelForObjectDetection
from PIL import Image
from huggingface_hub.utils import httpx
from io import BytesIO
import torch
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(BytesIO(httpx.get(url).content))
image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-medium")
model = AutoModelForObjectDetection.from_pretrained("Roboflow/rf-detr-medium", device_map="auto")
# prepare image for the model
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}")Visualizando resultados com supervisão
Você pode usar a biblioteca supervision para visualizar os resultados de detecção e segmentação. Instale-a com pip install supervision.
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from PIL import Image
import supervision as sv
from huggingface_hub.utils import httpx
from io import BytesIO
import torch
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(BytesIO(httpx.get(url).content))
image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-medium")
model = AutoModelForObjectDetection.from_pretrained("Roboflow/rf-detr-medium", 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.height, image.width]), threshold=0.3
)[0]
detections = sv.Detections.from_transformers(
transformers_results=results, id2label=model.config.id2label
)
box_annotator = sv.BoxAnnotator()
label_annotator = sv.LabelAnnotator()
annotated_image = image.copy()
annotated_image = box_annotator.annotate(annotated_image, detections)
annotated_image = label_annotator.annotate(annotated_image, detections)
sv.plot_image(annotated_image)from transformers import AutoImageProcessor, AutoModelForInstanceSegmentation
from PIL import Image
import supervision as sv
from huggingface_hub.utils import httpx
from io import BytesIO
import torch
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(BytesIO(httpx.get(url).content))
image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-seg-medium")
model = AutoModelForInstanceSegmentation.from_pretrained("Roboflow/rf-detr-seg-medium", 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_instance_segmentation(
outputs, target_sizes=[image.size[::-1]], threshold=0.3
)[0]
detections = sv.Detections.from_transformers(
transformers_results=results, id2label=model.config.id2label
)
mask_annotator = sv.MaskAnnotator()
label_annotator = sv.LabelAnnotator()
annotated_image = image.copy()
annotated_image = mask_annotator.annotate(annotated_image, detections)
annotated_image = label_annotator.annotate(annotated_image, detections)
sv.plot_image(annotated_image)Recursos
- Veja também: Guia da tarefa de detecção de objetos.
RfDetrConfig
classe transformers.RfDetrConfig
< 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonehidden_expansion: float = 0.5c2f_num_blocks: int = 3activation_function: str = 'silu'dropout: float = 0.1decoder_ffn_dim: int = 2048decoder_n_points: int = 4decoder_layers: int = 3decoder_self_attention_heads: int = 8decoder_cross_attention_heads: int = 16decoder_activation_function: str = 'relu'num_queries: int = 300attention_bias: bool = Trueattention_dropout: float | int = 0.0activation_dropout: float | int = 0.0group_detr: int = 13init_std: float = 0.02disable_custom_kernels: bool = Trueclass_cost: int | float = 2bbox_cost: int | float = 5giou_cost: int | float = 2class_loss_coefficient: int | float = 1dice_loss_coefficient: int | float = 1bbox_loss_coefficient: int | float = 5giou_loss_coefficient: int | float = 2eos_coefficient: float = 0.1focal_alpha: float = 0.25auxiliary_loss: bool = Trued_model: int = 256layer_norm_eps: float = 1e-05num_feature_levels: int = 1mask_loss_coefficient: int | float = 1mask_point_sample_ratio: int = 16mask_downsample_ratio: int = 4mask_class_loss_coefficient: int | float = 5.0mask_dice_loss_coefficient: int | float = 5.0segmentation_head_activation_function: str = 'gelu'intermediate_size: int = 1024 )
Parâmetros
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — A configuração do modelo backbone. - hidden_expansion (
float, opcional, padrão 0.5) — Fator de expansão para as dimensões ocultas nas camadas do projetor. - c2f_num_blocks (
int, opcional, padrão 3) — Número de blocos na camada C2F. - activation_function (
str, opcional, padrão"silu") — A função de ativação não linear no projetor. Os valores suportados são"silu","relu","gelu". - dropout (
float, opcional, padrão0.1) — A proporção para todas as camadas de dropout. - decoder_ffn_dim (
int, opcional, padrão2048) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no decoder. - decoder_n_points (
int, opcional, padrão 4) — O número de chaves amostradas em cada nível de recurso para cada cabeça de atenção no decoder. - decoder_layers (
int, opcional, padrão 3) — Número de camadas do decodificador no transformer. - decoder_self_attention_heads (
int, opcional, padrão 8) — Número de cabeças de atenção para cada camada de atenção na autoatenção do decoder. - decoder_cross_attention_heads (
int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção na cross-attention do decoder. - decoder_activation_function (
str, opcional, padrão"relu") — A função de ativação não linear no decodificador. Os valores suportados são"relu","silu","gelu". - num_queries (
int, opcional, padrão 300) — Número de consultas de objeto, ou seja, slots de detecção. Este é o número máximo de objetos que o RfDetrModel pode detectar em uma única imagem. - attention_bias (
bool, opcional, padrãoTrue) — Se deve usar um viés nas camadas de projeção de query, key, value e output durante a autoatenção. - attention_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as probabilidades de atenção. - activation_dropout (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as ativações dentro da camada totalmente conectada. - group_detr (
int, opcional, padrão 13) — Número de grupos para o mecanismo de atenção Group DETR, que ajuda a reduzir a complexidade computacional. - init_std (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - disable_custom_kernels (
bool, opcional, padrãoTrue) — Desativa o uso de kernels CUDA e CPU personalizados. Essa opção é necessária para a exportação ONNX, pois os kernels personalizados não são suportados pela exportação ONNX do PyTorch. - class_cost (
Union[int, float], opcional, padrão2) — Peso relativo do erro de classificação no custo de correspondência húngara. - bbox_cost (
Union[int, float], opcional, padrão5) — Peso relativo do erro de caixa delimitadora L1 no custo de correspondência húngara. - giou_cost (
Union[int, float], opcional, padrão2) — Peso relativo da perda de IoU generalizada no custo de correspondência húngara. - class_loss_coefficient (
float, opcional, padrão 1) — Peso relativo da perda de classificação no custo de correspondência húngara. - dice_loss_coefficient (
float, opcional, padrão 1) — Peso relativo da perda DICE/F-1 na perda de detecção de objetos. - bbox_loss_coefficient (
float, opcional, padrão 5) — Peso relativo da perda L1 de caixa delimitadora na perda de detecção de objetos. - giou_loss_coefficient (
float, opcional, padrão 2) — Peso relativo da perda de IoU generalizada na perda de detecção de objetos. - eos_coefficient (
float, opcional, padrão0.1) — Peso de classificação relativo da classe 'no-object' na perda de detecção de objetos. - focal_alpha (
float, opcional, padrão0.25) — Parâmetro alpha na focal loss. - auxiliary_loss (
bool, opcional, padrãoTrue) — Se as perdas de decodificação auxiliares (perdas em cada camada do decodificador) devem ser usadas. - d_model (
int, opcional, padrão256) — Tamanho das camadas do codificador e da camada pooler. - layer_norm_eps (
float, opcional, padrão1e-05) — O epsilon usado pelas camadas de normalização de camada. - num_feature_levels (
int, opcional, padrão 1) — Número de níveis de recurso usados na atenção deformável multiescala. - mask_loss_coefficient (
float, opcional, padrão 1) — Peso relativo da perda Focal na perda de máscara da segmentação de instância. - mask_point_sample_ratio (
int, opcional, padrão 16) — A proporção de pontos a serem amostrados para o cálculo da perda de máscara. - mask_downsample_ratio (
int, opcional, padrão 4) — A taxa de redução de resolução das máscaras de segmentação em relação à resolução da imagem de entrada. - mask_class_loss_coefficient (
float, opcional, padrão 5.0) — Peso relativo da perda Focal na perda de segmentação de instância. - mask_dice_loss_coefficient (
float, opcional, padrão 5.0) — Peso relativo da perda DICE/F-1 na perda de segmentação de instância. - segmentation_head_activation_function (
str, opcional, padrão"gelu") — A função de ativação não linear no cabeçalho de segmentação. Os valores suportados são"relu","silu","gelu". - intermediate_size (
int, opcional, padrão1024) — Dimensão das representações do MLP.
Esta é a classe de configuração para armazenar a configuração de um RfDetrModel. Ela é usada para instanciar um modelo Rf Detr de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do Roboflow/rf-detr-base
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
Exemplos:
>>> from transformers import RfDetrConfig, RfDetrModel
>>> # Initializing a RF-DETR roboflow/rf-detr-base style configuration
>>> configuration = RfDetrConfig()
>>> # Initializing a model (with random weights) from the Roboflow/rf-detr-base style configuration
>>> model = RfDetrModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configRfDetrDinov2Config
classe transformers.RfDetrDinov2Config
< 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 = 0is_encoder_decoder: bool = Falseid2label: 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 = Nonehidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12mlp_ratio: int = 4hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0attention_probs_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 14num_channels: int = 3qkv_bias: bool = Truelayerscale_value: float = 1.0drop_path_rate: float | int = 0.0use_swiglu_ffn: bool = False_out_features: list[str] | None = None_out_indices: list[int] | None = Noneapply_layernorm: bool = Truereshape_hidden_states: bool = Trueuse_mask_token: bool = Truenum_windows: int = 4 )
Parâmetros
- hidden_size (
int, opcional, padrão768) — Dimensão das representações ocultas. - num_hidden_layers (
int, opcional, padrão12) — Número de camadas ocultas no decodificador do Transformer. - num_attention_heads (
int, opcional, padrão12) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - mlp_ratio (
int, opcional, padrão4) — Proporção entre a dimensão oculta do MLP e a dimensão de incorporação. - hidden_act (
str, opcional, padrãogelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - hidden_dropout_prob (
Union[float, int], opcional, padrão0.0) — A probabilidade de dropout para todas as camadas totalmente conectadas nos embeddings, no encoder e no pooler. - attention_probs_dropout_prob (
Union[float, int], opcional, padrão0.0) — A taxa de dropout para as probabilidades de atenção. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - layer_norm_eps (
float, opcional, padrão1e-06) — O epsilon usado pelas camadas de normalização de camada. - image_size (
Union[int, list[int], tuple[int, int]], opcional, padrão224) — O tamanho (resolução) de cada imagem. - patch_size (
Union[int, list[int], tuple[int, int]], opcional, padrão14) — O tamanho (resolução) de cada patch. - num_channels (
int, opcional, padrão3) — O número de canais de entrada. - qkv_bias (
bool, opcional, padrãoTrue) — Se deve adicionar um viés às queries, keys e values. - layerscale_value (
float, opcional, padrão 1.0) — Valor inicial a ser usado para a escala da camada. - drop_path_rate (
float, opcional, padrão 0.0) — Taxa de profundidade estocástica por amostra (quando aplicada no caminho principal das camadas residuais). - use_swiglu_ffn (
bool, opcional, padrãoFalse) — Se deve usar a rede neural feedforward SwiGLU. - apply_layernorm (
bool, opcional, padrãoTrue) — Se a normalização de camada deve ser aplicada aos mapas de características caso o modelo seja usado como backbone. - reshape_hidden_states (
bool, opcional, padrãoTrue) — Indica se os mapas de características devem ser redimensionados para tensores 4D com forma(batch_size, d_model, height, width)caso o modelo seja usado como backbone. SeFalse, os mapas de características serão tensores 3D com forma(batch_size, seq_len, d_model). - use_mask_token (
bool, opcional, padrãoTrue) — Se deve usar mask_token nos embeddings. - num_windows (
int, opcional, padrão 4) — Número de janelas a serem usadas para a atenção com janelas. Se for 1, nenhuma atenção com janelas é utilizada.
Esta é a classe de configuração para armazenar a configuração de um RfDetrModel. Ela é usada para instanciar um modelo Rf Detr de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do Roboflow/rf-detr-base
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
Exemplo:
>>> from transformers import RfDetrDinov2Config, RfDetrDinov2Backbone
>>> # Initializing a RfDetrDinov2 base style configuration
>>> configuration = RfDetrDinov2Config()
>>> # Initializing a model (with random weights) from the base style configuration
>>> model = RfDetrDinov2Backbone(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configRfDetrImageProcessor
classe transformers.RfDetrImageProcessor
< source >( **kwargs: *<class 'transformers.models.rf_detr.image_processing_rf_detr.RfDetrImageProcessorKwargs'> )
Parâmetros
- do_convert_rgb (
bool, kwargs, opcional) — Se a imagem deve ser convertida para RGB. - do_resize (
bool, kwargs, opcional, padrãoTrue) — Se deve redimensionar a imagem. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, padrão{'shortest_edge' -- 800, 'longest_edge': 1333}): Descreve as dimensões máximas de entrada para o modelo. - default_to_square (
bool, kwargs, opcional, padrãoFalse) — Se deve usar uma imagem quadrada por padrão ao redimensionar, caso o tamanho seja um inteiro. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamanho da imagem de saída após a aplicação decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, padrão2) — Filtro de reamostragem a ser usado ao redimensionar a imagem. Pode ser um dos valores da enumeraçãoPILImageResampling. Tem efeito apenas sedo_resizeestiver definido comoTrue. - do_rescale (
bool, kwargs, opcional, padrãoTrue) — Se deve reescalar a imagem. - rescale_factor (
float, kwargs, opcional, padrão0.00392156862745098) — Fator de reescala para reescalar a imagem, casodo_rescaleesteja definido comoTrue. - do_normalize (
bool, kwargs, opcional, padrãoTrue) — Se a imagem deve ser normalizada. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, padrão[0.485, 0.456, 0.406]) — Média da imagem a ser usada para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional, padrão[0.229, 0.224, 0.225]) — Desvio padrão da imagem a ser usado para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - do_pad (
bool, kwargs, opcional, padrãoTrue) — Se deve aplicar padding à imagem. O padding é feito até o maior tamanho do lote ou até um tamanho quadrado fixo por imagem. A estratégia exata de padding depende do modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — O tamanho em{"height": int, "width" int}para o preenchimento das imagens. Deve ser maior que qualquer tamanho de imagem fornecido para o pré-processamento. Sepad_sizenão for fornecido, as imagens serão preenchidas até a maior altura e largura do lote. Aplicado apenas quandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Se deve recortar a imagem centralmente. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — ApenasChannelDimension.FIRSTé suportado. Adicionado para compatibilidade com processadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — O formato da dimensão de canal para a imagem de entrada. Se não definido, o formato da dimensão de canal é inferido a partir da imagem de entrada. Pode ser um dos seguintes:"channels_first"ouChannelDimension.FIRST: imagem no formato (num_channels, height, width)."channels_last"ouChannelDimension.LAST: imagem no formato (altura, largura, num_canais)."none"ouChannelDimension.NONE: imagem no formato (altura, largura).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — O dispositivo em que os vídeos serão processados. Se não for definido, o dispositivo é inferido a partir dos vídeos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retorna tensores empilhados se definido como'pt'; caso contrário, retorna uma lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Se deve desabilitar o agrupamento de imagens por tamanho para processá-las individualmente e não em lotes. Se for None, será definido como True se as imagens estiverem na CPU, e False caso contrário. Essa escolha é baseada em observações empíricas, conforme detalhado aqui: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — O número de tokens de imagem a serem usados para cada imagem na entrada. Adicionado para compatibilidade reversa, mas isso deve ser definido como um atributo do processador em modelos futuros. - format (
str, kwargs, opcional, padrãoAnnotationFormat.COCO_DETECTION) — Formato dos dados das anotações. Um de “coco_detection” ou “coco_panoptic”. - do_convert_annotations (
bool, kwargs, opcional, padrãoTrue) — Controla se as anotações devem ser convertidas para o formato esperado pelo modelo RF_DETR. Converte as bounding boxes para o formato(center_x, center_y, width, height)e no intervalo[0, 1]. Pode ser sobrescrito pelo parâmetrodo_convert_annotationsno métodopreprocess.
Constrói um processador de imagem RfDetrImageProcessor.
pré-processamento
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.rf_detr.image_processing_rf_detr.RfDetrImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Parâmetros
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Imagem a ser pré-processada. Espera uma única imagem ou um lote de imagens com valores de pixel variando de 0 a 255. Se passar imagens com valores de pixel entre 0 e 1, definado_rescale=False. - annotations (
AnnotationTypeoulist[AnnotationType], opcional) — Anotações a serem transformadas de acordo com o padding aplicado às imagens. - return_segmentation_masks (
bool, opcional, padrãoself.return_segmentation_masks) — Se deve retornar máscaras de segmentação. - masks_path (
stroupathlib.Path, opcional) — Caminho para o diretório que contém as máscaras de segmentação. - do_convert_rgb (
bool, kwargs, opcional) — Se a imagem deve ser convertida para RGB. - do_resize (
bool, kwargs, opcional) — Se deve redimensionar a imagem. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Descreve as dimensões máximas de entrada para o modelo. - default_to_square (
bool, kwargs, opcional) — Se deve usar uma imagem quadrada por padrão ao redimensionar, caso o tamanho seja um inteiro. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Tamanho da imagem de saída após a aplicação decenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Filtro de redimensionamento a ser usado ao redimensionar a imagem. Pode ser um dos valores da enumeraçãoPILImageResampling. Tem efeito apenas sedo_resizeestiver definido comoTrue. - do_rescale (
bool, kwargs, opcional) — Se deve reescalar a imagem. - rescale_factor (
float, kwargs, opcional) — Fator de redimensionamento para redimensionar a imagem, casodo_rescaleesteja definido comoTrue. - do_normalize (
bool, kwargs, opcional) — Se a imagem deve ser normalizada. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Média da imagem a ser usada para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opcional) — Desvio padrão da imagem a ser usado para normalização. Tem efeito apenas sedo_normalizeestiver definido comoTrue. - do_pad (
bool, kwargs, opcional) — Indica se a imagem deve ser preenchida (padding). O preenchimento é feito até o maior tamanho do lote ou até um tamanho quadrado fixo por imagem. A estratégia exata de preenchimento depende do modelo. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — O tamanho em{"height": int, "width" int}para o preenchimento das imagens. Deve ser maior que qualquer tamanho de imagem fornecido para o pré-processamento. Sepad_sizenão for fornecido, as imagens serão preenchidas até a maior altura e largura do lote. Aplicado apenas quandodo_pad=True. - do_center_crop (
bool, kwargs, opcional) — Se deve recortar a imagem centralmente. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — ApenasChannelDimension.FIRSTé suportado. Adicionado para compatibilidade com processadores lentos. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opcional) — O formato da dimensão de canal para a imagem de entrada. Se não definido, o formato da dimensão de canal é inferido a partir da imagem de entrada. Pode ser um dos seguintes:"channels_first"ouChannelDimension.FIRST: imagem no formato (num_channels, height, width)."channels_last"ouChannelDimension.LAST: imagem no formato (altura, largura, num_canais)."none"ouChannelDimension.NONE: imagem no formato (altura, largura).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — O dispositivo em que os vídeos serão processados. Se não for definido, o dispositivo é inferido a partir dos vídeos de entrada. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Retorna tensores empilhados se definido como'pt'; caso contrário, retorna uma lista de tensores. - disable_grouping (
bool, kwargs, opcional) — Se deve desabilitar o agrupamento de imagens por tamanho para processá-las individualmente e não em lotes. Se for None, será definido como True se as imagens estiverem na CPU, e False caso contrário. Essa escolha é baseada em observações empíricas, conforme detalhado aqui: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opcional) — O número de tokens de imagem a serem usados para cada imagem na entrada. Adicionado para compatibilidade reversa, mas isso deve ser definido como um atributo do processador em modelos futuros. - format (
str, kwargs, opcional, padrãoAnnotationFormat.COCO_DETECTION) — Formato dos dados das anotações. Um de “coco_detection” ou “coco_panoptic”. - do_convert_annotations (
bool, kwargs, opcional, padrãoTrue) — Controla se as anotações devem ser convertidas para o formato esperado pelo modelo RF_DETR. Converte as bounding boxes para o formato(center_x, center_y, width, height)e no intervalo[0, 1]. Pode ser sobrescrito pelo parâmetrodo_convert_annotationsno métodopreprocess.
Retorna
~image_processing_base.BatchFeature
- data (
dict) — Dicionário de listas/arrays/tensors retornados pelo método call (‘pixel_values’, etc.). - tensor_type (
Union[None, str, TensorType], opcional) — Você pode fornecer um tensor_type aqui para converter as listas de inteiros em Tensors do PyTorch/Numpy na inicialização.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = Nonetop_k: int | None = None ) → list[Dict]
Parâmetros
- outputs (
RfDetrObjectDetectionOutput) — Saídas brutas do modelo. - threshold (
float, opcional) — Limiar de pontuação para manter as previsões de detecção de objetos. - target_sizes (
torch.Tensoroulist[tuple[int, int]], opcional) — Tensor de forma(batch_size, 2)ou lista de tuplas (tuple[int, int]) contendo o tamanho alvo(height, width)de cada imagem no lote. Se não definido, as previsões não serão redimensionadas.
Retorna
list[Dict]
Uma lista de dicionários, em que cada dicionário contém as pontuações, rótulos e caixas para uma imagem do lote, conforme previsto pelo modelo.
Converte a saída bruta de RfDetrForObjectDetection em caixas delimitadoras finais no formato (top_left_x, top_left_y, bottom_right_x, bottom_right_y). Suporta apenas PyTorch.
post_process_instance_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.0target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool = Falsereturn_binary_maps: bool = Falsetop_k: int | None = None**kwargs ) → list[dict]
Parâmetros
- outputs ([RfDetrInstanceSegmentationOutput]) — Saídas brutas do modelo.
- threshold (float, opcional, padrão 0.5) — Limiar de pontuação para manter as máscaras de instâncias previstas.
- mask_threshold (float, opcional, padrão 0.0) — Limiar para binarizar as máscaras previstas.
- target_sizes (list[tuple[int, int]], opcional) —
Alvo
(height, width)para cada imagem. Se não definido, as máscaras não são redimensionadas. - return_coco_annotation (bool, opcional, padrão False) — Se True, retorna os mapas de segmentação como codificação de comprimento de execução do COCO em vez de tensores. Mutuamente exclusivo com return_binary_maps.
- return_binary_maps (bool, opcional, padrão False) —
Se True, retorna os mapas de segmentação como um tensor empilhado de máscaras binárias de instâncias
(uma para cada instância detectada), sem resolução de sobreposição. Isso corresponde ao formato de saída
do pacote original
rfdetr. É mutuamente exclusivo com return_coco_annotation. - top_k (int, opcional) — Número máximo de consultas candidatas avaliadas antes da filtragem por limiar de pontuação. Padrão: o número total de consultas.
Retorna
list[dict]
Um dict por imagem com as chaves:
- segmentation — Tensor[H, W] de ids de segmentos
int32(-1= fundo), Tensor[num_instances, H, W] de máscaras binárias bool quando return_binary_maps=True, ou uma lista de codificações RLE quando return_coco_annotation=True. - segments_info — Lista de dicts com as chaves
id,label_idescore.
Converte a saída de [RfDetrForInstanceSegmentation] em previsões de segmentação de instâncias.
RfDetrModel
classe transformers.RfDetrModel
< source >( config: RfDetrConfig )
Parâmetros
- config (RfDetrConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
O modelo LW Detr básico (composto por um backbone e um Transformer decodificador) que produz estados ocultos brutos, sem nenhum head específico no topo.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → RfDetrModelOutput or tuple(torch.Tensor)
Parâmetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando RfDetrImageProcessor. Consulte RfDetrImageProcessor.call() para mais detalhes (processor_classusa RfDetrImageProcessor para processar imagens). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar a execução de atenção em valores de pixels de preenchimento. Valores da máscara selecionados em[0, 1]:- 1 para pixels reais (ou seja, não mascarados),
- 0 para pixels que são padding (ou seja, mascarados).
Retorna
RfDetrModelOutput ou tuple(torch.Tensor)
Uma RfDetrModelOutput ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (RfDetrConfig) e das entradas.
Passada para frente do modelo RF-DETR. O pipeline prossegue da seguinte forma:
- Gere um conjunto inicial de embeddings de consulta de objetos e propostas de localização espacial a partir da saída achatada do backbone.
- Inicialize o armazenamento para as previsões refinadas da etapa do codificador (acomodando estruturas de consulta multi-grupo) e refine iterativamente as consultas de objeto e suas coordenadas para cada grupo de consulta, a fim de capturar os candidatos de maior confiança da etapa do codificador.
- Inicialize os recursos de consulta aprendíveis e os pontos de referência espacial (restringindo ao grupo primário durante a inferência para eficiência).
- Projete os pontos de referência base em todo o lote, refine-os com os refinamentos de coordenadas previstos (desviando a atenção para as localizações dos objetos descobertos antes da decodificação) e expanda os recursos das consultas de destino para corresponder às dimensões do lote.
- Passe as consultas refinadas e os pontos de referência atualizados pelo decodificador do transformer para agregar o contexto espacial detalhado a partir dos recursos multiescala.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do modelo.init_reference_points (
torch.Tensorde forma(batch_size, num_queries, 4)) — Pontos de referência iniciais enviados através do decodificador do Transformer.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, d_model)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, 4)) — Pontos de referência intermediários empilhados (pontos de referência de cada camada do decodificador).enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Pontuações das caixas delimitadoras previstas, onde asconfig.two_stage_num_proposalscaixas delimitadoras com as maiores pontuações são selecionadas como propostas de região na primeira etapa. Saída da classificação binária de caixas delimitadoras (ou seja, primeiro plano e segundo plano).enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, 4), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das caixas delimitadoras previstas na primeira etapa.hidden_states (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
cross_attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.
backbone_features (
listdetorch.Tensorcom forma(batch_size, config.num_channels, config.image_size, config.image_size)) — Recursos do backbone.
Exemplos:
>>> from transformers import AutoImageProcessor, RfDetrModel
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-base")
>>> model = RfDetrModel.from_pretrained("Roboflow/rf-detr-base")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 200, 256]RfDetrForObjectDetection
classe transformers.RfDetrForObjectDetection
< source >( config: RfDetrConfig )
Parâmetros
- config (RfDetrConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
Modelo LW DETR (composto por um backbone e um Transformer decodificador) com cabeças de detecção de objetos no topo, para tarefas como a detecção COCO.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( pixel_values: Tensor = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → RfDetrObjectDetectionOutput or tuple(torch.Tensor)
Parâmetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando RfDetrImageProcessor. Consulte RfDetrImageProcessor.call() para mais detalhes (processor_classusa RfDetrImageProcessor para processar as imagens). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar a execução de atenção em valores de pixels de preenchimento. Valores da máscara selecionados em[0, 1]:- 1 para pixels reais (ou seja, não mascarados),
- 0 para pixels que são padding (ou seja, mascarados).
- labels (
list[Dict]de comprimento(batch_size,), opcional) — Rótulos para o cálculo da perda de correspondência bipartida. Lista de dicionários, em que cada dicionário contém pelo menos as seguintes 2 chaves: ‘class_labels’ e ‘boxes’ (os rótulos de classe e as caixas delimitadoras de uma imagem no lote, respectivamente). Os próprios rótulos de classe devem ser umtorch.LongTensorde comprimento(number of bounding boxes in the image,)e as caixas umtorch.Tensorde forma(number of bounding boxes in the image, 4).
Retorna
RfDetrObjectDetectionOutput ou tuple(torch.Tensor)
Uma RfDetrObjectDetectionOutput ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (RfDetrConfig) e das entradas.
A passagem direta (forward pass) prossegue da seguinte forma:
- Processe a entrada visual por meio do modelo base RF-DETR para obter o último estado oculto do transformer e a sequência final de pontos de referência.
- Primeira etapa: gerar logits de classificação a partir dos embeddings de consulta de objeto propostos pelo codificador.
- Segunda etapa: prever os rótulos de classificação finais e as caixas delimitadoras refinadas usando o último estado oculto do decodificador e os pontos de referência mais recentes.
loss (
torch.Tensorde forma(1,), opcional, retornado quandolabelssão fornecidas)) — Perda total como uma combinação linear de uma log-verossimilhança negativa (entropia cruzada) para a previsão de classe e uma perda de caixa delimitadora. Esta última é definida como uma combinação linear da perda L1 e da perda de IoU generalizada e invariante à escala.loss_dict (
Dict, opcional) — Um dicionário contendo as perdas individuais. Útil para registro de logs.logits (
torch.Tensorde forma(batch_size, num_queries, num_classes + 1)) — Logits de classificação (incluindo no-object) para todas as queries.pred_boxes (
torch.Tensorde forma(batch_size, num_queries, 4)) — Coordenadas normalizadas das caixas para todas as consultas, representadas como (center_x, center_y, width, height). Esses valores são normalizados em [0, 1], relativos ao tamanho de cada imagem individual no lote (ignorando possível preenchimento). Você pode usar~DeformableDetrProcessor.post_process_object_detectionpara recuperar as caixas delimitadoras não normalizadas.auxiliary_outputs (
list[Dict], opcional) — Opcional, retornado apenas quando as perdas auxiliares são ativadas (ou seja,config.auxiliary_lossestá definido comoTrue) e os rótulos são fornecidos. É uma lista de dicionários contendo as duas chaves acima (logitsepred_boxes) para cada camada do decodificador.init_reference_points (
torch.Tensorde forma(batch_size, num_queries, 4)) — Pontos de referência iniciais enviados através do decodificador do Transformer.last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Sequência de estados ocultos na saída da última camada do modelo.intermediate_hidden_states (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, d_model)) — Estados ocultos intermediários empilhados (saída de cada camada do decodificador).intermediate_reference_points (
torch.Tensorde forma(batch_size, config.decoder_layers, num_queries, 4)) — Pontos de referência intermediários empilhados (pontos de referência de cada camada do decodificador).enc_outputs_class (
torch.Tensorde forma(batch_size, sequence_length, config.num_labels), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Pontuações das caixas delimitadoras previstas, onde asconfig.two_stage_num_proposalscaixas delimitadoras com as maiores pontuações são selecionadas como propostas de região na primeira etapa. Saída da classificação binária de caixas delimitadoras (ou seja, primeiro plano e segundo plano).enc_outputs_coord_logits (
torch.Tensorde forma(batch_size, sequence_length, 4), opcional, retornado quandoconfig.with_box_refine=Trueeconfig.two_stage=True) — Logits das coordenadas das caixas delimitadoras previstas na primeira etapa.hidden_states (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
cross_attentions (
tuple[torch.Tensor, ...], opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com a forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção da camada de atenção cruzada do decodificador, após o softmax de atenção, usados para calcular a média ponderada nas cabeças de atenção cruzada.
backbone_features (
listdetorch.Tensorcom forma(batch_size, config.num_channels, config.image_size, config.image_size)) — Recursos do backbone.
Exemplos:
>>> from transformers import AutoImageProcessor, RfDetrForObjectDetection
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-base")
>>> model = RfDetrForObjectDetection.from_pretrained("Roboflow/rf-detr-base")
>>> 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.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 cat with confidence 0.8 at location [16.5, 52.84, 318.25, 470.78]
Detected cat with confidence 0.789 at location [342.19, 24.3, 640.02, 372.25]
Detected remote with confidence 0.633 at location [40.79, 72.78, 176.76, 117.25]RfDetrForInstanceSegmentation
forward
< source >( pixel_values: Tensor = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )
Parâmetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando RfDetrImageProcessor. Veja RfDetrImageProcessor.call() para detalhes (processor_classusa RfDetrImageProcessor para processar imagens). - pixel_mask (
torch.LongTensorde forma(batch_size, height, width), opcional) — Máscara para evitar a execução de atenção em valores de pixels de preenchimento. Valores da máscara selecionados em[0, 1]:- 1 para pixels reais (ou seja, não mascarados),
- 0 para pixels que são padding (ou seja, mascarados).
- labels (
list[Dict]de comprimento(batch_size,), opcional) — Rótulos para o cálculo da perda de correspondência bipartida. Lista de dicionários, em que cada dicionário contém pelo menos as seguintes 2 chaves: ‘class_labels’ e ‘boxes’ (os rótulos de classe e as caixas delimitadoras de uma imagem no lote, respectivamente). Os próprios rótulos de classe devem ser umtorch.LongTensorde comprimento(number of bounding boxes in the image,)e as caixas umtorch.Tensorde forma(number of bounding boxes in the image, 4).
Passada para frente do modelo RF-DETR para segmentação de instâncias. O pipeline prossegue da seguinte forma:
- Processe a entrada visual por meio do modelo base RF-DETR para obter recursos espaciais multiescala, incorporações de consulta e o histórico de sua transformação.
- Gere os logits de classificação e as máscaras de segmentação iniciais a partir dos embeddings de consultas de objeto propostos pelo codificador (primeira etapa).
- Preveja os rótulos de classificação finais e as caixas delimitadoras refinadas usando o último estado oculto do decodificador (segunda etapa).
- Passe os recursos espaciais de alta resolução e os estados ocultos de consulta pela cabeça de segmentação para produzir as máscaras de instância finais e detalhadas.
RfDetrDinov2Backbone
classe transformers.RfDetrDinov2Backbone
< source >( config: RfDetrDinov2Config )
Parâmetros
- config (RfDetrDinov2Config) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
Backbone RfDetrDinov2, para ser usado com frameworks como DETR e MaskFormer.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
forward
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BackboneOutput or tuple(torch.Tensor)
Parâmetros
- pixel_values (
torch.Tensorde forma(batch_size, num_channels, image_size, image_size)) — Os tensores correspondentes às imagens de entrada. Os valores de pixels podem ser obtidos usando RfDetrImageProcessor. Consulte RfDetrImageProcessor.call() para mais detalhes (processor_classusa RfDetrImageProcessor para processar imagens).
Retorna
BackboneOutput ou tuple(torch.Tensor)
Um BackboneOutput ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (RfDetrConfig) e das entradas.
O método forward da RfDetrDinov2Backbone substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
feature_maps (
tuple(torch.Tensor)de forma(batch_size, num_channels, height, width)) — Mapas de características dos estágios.hidden_states (
tuple(torch.Tensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size)ou(batch_size, num_channels, height, width), dependendo do backbone.Estados ocultos do modelo na saída de cada estágio, além das saídas do embedding inicial.
attentions (
tuple(torch.Tensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length). Aplicável apenas se o backbone usar atenção.Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
Exemplos:
>>> from transformers import AutoImageProcessor, AutoBackbone
>>> import torch
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
>>> model = AutoBackbone.from_pretrained(
... "facebook/dinov2-base", out_features=["stage2", "stage5", "stage8", "stage11"]
... )
>>> inputs = processor(image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 16, 16]