Transformers 文件

條件 DETR

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Conditional DETR

PyTorch

概述

Conditional DETR 模型由 Depu Meng、Xiaokang Chen、Zejia Fan、Gang Zeng、Houqiang Li、Yuhui Yuan、Lei Sun、Jingdong Wang 在《Conditional DETR for Fast Training Convergence》中提出。Conditional DETR 提出了一種條件交叉注意力機制,用於加速 DETR 訓練。Conditional DETR 比 DETR 快 6.7 倍到 10 倍。

論文摘要如下:

最近開發的 DETR 方法將 transformer 編碼器和解碼器架構應用於目標檢測,並取得了可喜的效能。在本文中,我們處理了關鍵問題,即訓練收斂緩慢,並提出了一種用於快速 DETR 訓練的條件交叉注意力機制。我們的方法之所以產生,是因為 DETR 中的交叉注意力高度依賴內容嵌入來定位四個極值並預測框,這增加了對高質量內容嵌入的需求,從而增加了訓練難度。我們的方法名為 Conditional DETR,它從解碼器嵌入中學習條件空間查詢,用於解碼器多頭交叉注意力。這樣做的好處是,透過條件空間查詢,每個交叉注意力頭都能夠關注一個包含不同區域的波段,例如一個目標極值或目標框內的區域。這縮小了用於目標分類和框迴歸的獨特區域的定位空間範圍,從而減輕了對內容嵌入的依賴,並簡化了訓練。實驗結果表明,Conditional DETR 對於 R50 和 R101 主幹網路收斂速度提高了 6.7 倍,對於更強的主幹網路 DC5-R50 和 DC5-R101 收斂速度提高了 10 倍。程式碼可在https://github.com/Atten4Vis/ConditionalDETR獲取。

drawing 與原始 DETR 相比,Conditional DETR 表現出更快的收斂速度。摘自原始論文

此模型由DepuMeng貢獻。原始程式碼可在此處找到。

資源

ConditionalDetrConfig

class transformers.ConditionalDetrConfig

< >

( use_timm_backbone = True backbone_config = None num_channels = 3 num_queries = 300 encoder_layers = 6 encoder_ffn_dim = 2048 encoder_attention_heads = 8 decoder_layers = 6 decoder_ffn_dim = 2048 decoder_attention_heads = 8 encoder_layerdrop = 0.0 decoder_layerdrop = 0.0 is_encoder_decoder = True activation_function = 'relu' d_model = 256 dropout = 0.1 attention_dropout = 0.0 activation_dropout = 0.0 init_std = 0.02 init_xavier_std = 1.0 auxiliary_loss = False position_embedding_type = 'sine' backbone = 'resnet50' use_pretrained_backbone = True backbone_kwargs = None dilation = False class_cost = 2 bbox_cost = 5 giou_cost = 2 mask_loss_coefficient = 1 dice_loss_coefficient = 1 cls_loss_coefficient = 2 bbox_loss_coefficient = 5 giou_loss_coefficient = 2 focal_alpha = 0.25 **kwargs )

引數

  • use_timm_backbone (bool, 可選, 預設為 True) — 是否使用 timm 庫作為骨幹網路。如果設定為 False,將使用 AutoBackbone API。
  • backbone_config (PretrainedConfigdict, 可選) — 骨幹模型的配置。僅在 use_timm_backbone 設定為 False 時使用,預設為 ResNetConfig()
  • num_channels (int, 可選, 預設為 3) — 輸入通道數。
  • num_queries (int, 可選, 預設為 100) — 物件查詢的數量,即檢測槽的數量。這是 ConditionalDetrModel 在單張影像中可以檢測到的最大物件數量。對於 COCO,我們建議使用 100 個查詢。
  • d_model (int, 可選, 預設為 256) — 此引數是一個通用維度引數,用於定義編碼器層和解碼器層中的投影引數等元件的維度。
  • encoder_layers (int, 可選, 預設為 6) — 編碼器層數。
  • decoder_layers (int, 可選, 預設為 6) — 解碼器層數。
  • encoder_attention_heads (int, 可選, 預設為 8) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • decoder_attention_heads (int, 可選, 預設為 8) — Transformer 解碼器中每個注意力層的注意力頭數量。
  • decoder_ffn_dim (int, 可選, 預設為 2048) — 解碼器中“中間”(通常稱為前饋)層的維度。
  • encoder_ffn_dim (int, 可選, 預設為 2048) — 解碼器中“中間”(通常稱為前饋)層的維度。
  • activation_function (strfunction, 可選, 預設為 "relu") — 編碼器和池化器中的非線性啟用函式(函式或字串)。如果是字串,支援 "gelu", "relu", "silu""gelu_new"
  • dropout (float, 可選, 預設為 0.1) — 嵌入層、編碼器和池化器中所有全連線層的 dropout 機率。
  • attention_dropout (float, 可選, 預設為 0.0) — 注意力機率的 dropout 比率。
  • activation_dropout (float, 可選, 預設為 0.0) — 全連線層內部啟用的 dropout 比率。
  • init_std (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態初始化器的標準差。
  • init_xavier_std (float, 可選, 預設為 1) — HM Attention 模組中用於 Xavier 初始化增益的比例因子。
  • encoder_layerdrop (float, 可選, 預設為 0.0) — 編碼器的 LayerDrop 機率。更多詳細資訊請參見 [LayerDrop 論文](參見 https://huggingface.co/papers/1909.11556)。
  • decoder_layerdrop (float, 可選, 預設為 0.0) — 解碼器的 LayerDrop 機率。更多詳細資訊請參見 [LayerDrop 論文](參見 https://huggingface.co/papers/1909.11556)。
  • auxiliary_loss (bool, 可選, 預設為 False) — 是否使用輔助解碼損失(每個解碼器層的損失)。
  • position_embedding_type (str, 可選, 預設為 "sine") — 在影像特徵之上使用的位置嵌入型別。可選擇 "sine""learned"
  • backbone (str, 可選, 預設為 "resnet50") — 當 backbone_configNone 時使用的骨幹網路名稱。如果 use_pretrained_backboneTrue,這將從 timm 或 transformers 庫載入相應的預訓練權重。如果 use_pretrained_backboneFalse,這將載入骨幹網路的配置,並使用該配置初始化具有隨機權重的骨幹網路。
  • use_pretrained_backbone (bool, 可選, 預設為 True) — 是否使用骨幹網路的預訓練權重。
  • backbone_kwargs (dict, 可選) — 從檢查點載入時傳遞給 AutoBackbone 的關鍵字引數,例如 {'out_indices': (0, 1, 2, 3)}。如果設定了 backbone_config,則無法指定此引數。
  • dilation (bool, 可選, 預設為 False) — 是否在最後一個卷積塊 (DC5) 中用空洞卷積替換步長。僅在 use_timm_backbone = True 時支援。
  • class_cost (float, 可選, 預設為 1) — 匈牙利匹配成本中分類誤差的相對權重。
  • bbox_cost (float, 可選, 預設為 5) — 匈牙利匹配成本中邊界框座標 L1 誤差的相對權重。
  • giou_cost (float, 可選, 預設為 2) — 匈牙利匹配成本中邊界框的廣義 IoU 損失的相對權重。
  • mask_loss_coefficient (float, 可選, 預設為 1) — 全景分割損失中 Focal 損失的相對權重。
  • dice_loss_coefficient (float, 可選, 預設為 1) — 全景分割損失中 DICE/F-1 損失的相對權重。
  • bbox_loss_coefficient (float, 可選, 預設為 5) — 物件檢測損失中 L1 邊界框損失的相對權重。
  • giou_loss_coefficient (float, 可選, 預設為 2) — 物件檢測損失中廣義 IoU 損失的相對權重。
  • eos_coefficient (float, 可選, 預設為 0.1) — 物件檢測損失中“無物件”類別的相對分類權重。
  • focal_alpha (float, 可選, 預設為 0.25) — Focal 損失中的 Alpha 引數。

這是用於儲存 ConditionalDetrModel 配置的配置類。它用於根據指定引數例項化 Conditional DETR 模型,定義模型架構。使用預設值例項化配置將產生與 Conditional DETR microsoft/conditional-detr-resnet-50 架構類似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱 PretrainedConfig 的文件。

示例

>>> from transformers import ConditionalDetrConfig, ConditionalDetrModel

>>> # Initializing a Conditional DETR microsoft/conditional-detr-resnet-50 style configuration
>>> configuration = ConditionalDetrConfig()

>>> # Initializing a model (with random weights) from the microsoft/conditional-detr-resnet-50 style configuration
>>> model = ConditionalDetrModel(configuration)

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

ConditionalDetrImageProcessor

class transformers.ConditionalDetrImageProcessor

< >

( format: typing.Union[str, transformers.image_utils.AnnotationFormat] = <AnnotationFormat.COCO_DETECTION: 'coco_detection'> do_resize: bool = True size: typing.Optional[dict[str, int]] = None resample: Resampling = <Resampling.BILINEAR: 2> do_rescale: bool = True rescale_factor: typing.Union[int, float] = 0.00392156862745098 do_normalize: bool = True image_mean: typing.Union[float, list[float], NoneType] = None image_std: typing.Union[float, list[float], NoneType] = None do_convert_annotations: typing.Optional[bool] = None do_pad: bool = True pad_size: typing.Optional[dict[str, int]] = None **kwargs )

引數

  • format (str, 可選, 預設為 "coco_detection") — 註釋的資料格式。可選擇“coco_detection”或“coco_panoptic”。
  • do_resize (bool, 可選, 預設為 True) — 控制是否將影像的(高度,寬度)尺寸調整為指定的 size。可以透過 preprocess 方法中的 do_resize 引數覆蓋。
  • size (dict[str, int] 可選, 預設為 {"shortest_edge" -- 800, "longest_edge": 1333}):調整大小後圖像的 (height, width) 尺寸。可以透過 preprocess 方法中的 size 引數覆蓋。可用選項包括:
    • {"height": int, "width": int}:影像將精確調整為 (height, width) 大小。不保持縱橫比。
    • {"shortest_edge": int, "longest_edge": int}:影像將調整為最大尺寸,保持縱橫比,並使最短邊小於或等於 shortest_edge,最長邊小於或等於 longest_edge
    • {"max_height": int, "max_width": int}:影像將調整為最大尺寸,保持縱橫比,並使高度小於或等於 max_height,寬度小於或等於 max_width
  • resample (PILImageResampling, 可選, 預設為 PILImageResampling.BILINEAR) — 如果調整影像大小,要使用的重取樣過濾器。
  • do_rescale (bool, 可選, 預設為 True) — 控制是否透過指定的 rescale_factor 重新縮放影像。可以透過 preprocess 方法中的 do_rescale 引數覆蓋。
  • rescale_factor (intfloat, 可選, 預設為 1/255) — 如果重新縮放影像,要使用的縮放因子。可以透過 preprocess 方法中的 rescale_factor 引數覆蓋。
  • do_normalize — 控制是否對影像進行歸一化。可以透過 preprocess 方法中的 do_normalize 引數覆蓋。
  • image_mean (floatlist[float], 可選, 預設為 IMAGENET_DEFAULT_MEAN) — 影像歸一化時使用的平均值。可以是單個值或值列表,每個通道一個。可以透過 preprocess 方法中的 image_mean 引數覆蓋。
  • image_std (floatlist[float], 可選, 預設為 IMAGENET_DEFAULT_STD) — 影像歸一化時使用的標準差值。可以是單個值或值列表,每個通道一個。可以透過 preprocess 方法中的 image_std 引數覆蓋。
  • do_convert_annotations (bool, 可選, 預設為 True) — 控制是否將註釋轉換為 DETR 模型所需的格式。將邊界框轉換為 (center_x, center_y, width, height) 格式,範圍為 [0, 1]。可以透過 preprocess 方法中的 do_convert_annotations 引數覆蓋。
  • do_pad (bool, 可選, 預設為 True) — 控制是否填充影像。可以透過 preprocess 方法中的 do_pad 引數覆蓋。如果為 True,將用零填充影像的底部和右側。如果提供了 pad_size,影像將填充到指定尺寸。否則,影像將填充到批處理的最大高度和寬度。
  • pad_size (dict[str, int], 可選) — 影像要填充到的尺寸 {"height": int, "width" int}。必須大於為預處理提供的任何影像尺寸。如果未提供 pad_size,影像將填充到批處理中的最大高度和寬度。

構造一個條件 Detr 影像處理器。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] annotations: typing.Union[dict[str, typing.Union[int, str, list[dict]]], list[dict[str, typing.Union[int, str, list[dict]]]], NoneType] = None return_segmentation_masks: typing.Optional[bool] = None masks_path: typing.Union[str, pathlib.Path, NoneType] = None do_resize: typing.Optional[bool] = None size: typing.Optional[dict[str, int]] = None resample = None do_rescale: typing.Optional[bool] = None rescale_factor: typing.Union[int, float, NoneType] = None do_normalize: typing.Optional[bool] = None do_convert_annotations: typing.Optional[bool] = None image_mean: typing.Union[float, list[float], NoneType] = None image_std: typing.Union[float, list[float], NoneType] = None do_pad: typing.Optional[bool] = None format: typing.Union[str, transformers.image_utils.AnnotationFormat, NoneType] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None data_format: typing.Union[str, transformers.image_utils.ChannelDimension] = <ChannelDimension.FIRST: 'channels_first'> input_data_format: typing.Union[str, transformers.image_utils.ChannelDimension, NoneType] = None pad_size: typing.Optional[dict[str, int]] = None **kwargs )

引數

  • images (ImageInput) — 要預處理的影像或影像批次。期望單個或批次的影像,畫素值範圍為 0 到 255。如果傳入畫素值在 0 到 1 之間的影像,請設定 do_rescale=False
  • annotations (AnnotationTypelist[AnnotationType], 可選) — 與影像或影像批次關聯的註釋列表。如果註釋用於物件檢測,則註釋應為具有以下鍵的字典:
    • “image_id” (int):影像 ID。
    • “annotations” (list[Dict]):影像的註釋列表。每個註釋都應是一個字典。影像可以沒有註釋,在這種情況下,列表應為空。如果註釋用於分割,則註釋應為具有以下鍵的字典:
    • “image_id” (int):影像 ID。
    • “segments_info” (list[Dict]):影像的片段列表。每個片段都應是一個字典。影像可以沒有片段,在這種情況下,列表應為空。
    • “file_name” (str):影像的檔名。
  • return_segmentation_masks (bool, 可選, 預設為 self.return_segmentation_masks) — 是否返回分割掩碼。
  • masks_path (strpathlib.Path, 可選) — 包含分割掩碼的目錄路徑。
  • do_resize (bool, 可選, 預設為 self.do_resize) — 是否調整影像大小。
  • size (dict[str, int], 可選, 預設為 self.size) — 調整大小後圖像的 (height, width) 尺寸。可用選項包括:
    • {"height": int, "width": int}:影像將精確調整為 (height, width) 大小。不保持縱橫比。
    • {"shortest_edge": int, "longest_edge": int}:影像將調整為最大尺寸,保持縱橫比,並使最短邊小於或等於 shortest_edge,最長邊小於或等於 longest_edge
    • {"max_height": int, "max_width": int}:影像將調整為最大尺寸,保持縱橫比,並使高度小於或等於 max_height,寬度小於或等於 max_width
  • resample (PILImageResampling, 可選, 預設為 self.resample) — 調整影像大小時要使用的重取樣過濾器。
  • do_rescale (bool, 可選, 預設為 self.do_rescale) — 是否重新縮放影像。
  • rescale_factor (float, 可選, 預設為 self.rescale_factor) — 重新縮放影像時要使用的縮放因子。
  • do_normalize (bool, 可選, 預設為 self.do_normalize) — 是否對影像進行歸一化。
  • do_convert_annotations (bool, 可選, 預設為 self.do_convert_annotations) — 是否將註釋轉換為模型所需的格式。將邊界框從 (top_left_x, top_left_y, width, height) 格式轉換為 (center_x, center_y, width, height) 並使用相對座標。
  • image_mean (floatlist[float], 可選, 預設為 self.image_mean) — 影像歸一化時使用的平均值。
  • image_std (floatlist[float], 可選, 預設為 self.image_std) — 影像歸一化時使用的標準差。
  • do_pad (bool, 可選, 預設為 self.do_pad) — 是否填充影像。如果為 True,將用零填充影像的底部和右側。如果提供了 pad_size,影像將填充到指定尺寸。否則,影像將填充到批處理的最大高度和寬度。
  • format (strAnnotationFormat, 可選, 預設為 self.format) — 註釋的格式。
  • return_tensors (strTensorType, 可選, 預設為 self.return_tensors) — 要返回的張量型別。如果為 None,將返回影像列表。
  • data_format (ChannelDimensionstr, 可選, 預設為 ChannelDimension.FIRST) — 輸出影像的通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像格式為 (num_channels, height, width)。
    • "channels_last"ChannelDimension.LAST:影像格式為 (height, width, num_channels)。
    • 未設定:使用輸入影像的通道維度格式。
  • input_data_format (ChannelDimensionstr, 可選) — 輸入影像的通道維度格式。如果未設定,將從輸入影像推斷通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像格式為 (num_channels, height, width)。
    • "channels_last"ChannelDimension.LAST:影像格式為 (height, width, num_channels)。
    • "none"ChannelDimension.NONE:影像格式為 (height, width)。
  • pad_size (dict[str, int], 可選) — 影像要填充到的尺寸 {"height": int, "width" int}。必須大於為預處理提供的任何影像尺寸。如果未提供 pad_size,影像將填充到批處理中的最大高度和寬度。

預處理影像或影像批次,以便模型可以使用。

ConditionalDetrImageProcessorFast

class transformers.ConditionalDetrImageProcessorFast

< >

( **kwargs: typing_extensions.Unpack[transformers.models.conditional_detr.image_processing_conditional_detr_fast.ConditionalDetrFastImageProcessorKwargs] )

構造一個快速條件 Detr 影像處理器。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] annotations: typing.Union[dict[str, typing.Union[int, str, list[dict]]], list[dict[str, typing.Union[int, str, list[dict]]]], NoneType] = None masks_path: typing.Union[str, pathlib.Path, NoneType] = None **kwargs: typing_extensions.Unpack[transformers.models.conditional_detr.image_processing_conditional_detr_fast.ConditionalDetrFastImageProcessorKwargs] ) <class 'transformers.image_processing_base.BatchFeature'>

引數

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]) — 要預處理的影像。期望單個或批次的影像,畫素值範圍為 0 到 255。如果傳入畫素值在 0 到 1 之間的影像,請設定 do_rescale=False
  • annotations (AnnotationTypelist[AnnotationType], 可選) — 與影像或影像批次關聯的註釋列表。如果註釋用於物件檢測,則註釋應為具有以下鍵的字典:
    • “image_id” (int):影像 ID。
    • “annotations” (list[Dict]):影像的註釋列表。每個註釋都應是一個字典。影像可以沒有註釋,在這種情況下,列表應為空。如果註釋用於分割,則註釋應為具有以下鍵的字典:
    • “image_id” (int):影像 ID。
    • “segments_info” (list[Dict]):影像的片段列表。每個片段都應是一個字典。影像可以沒有片段,在這種情況下,列表應為空。
    • “file_name” (str):影像的檔名。
  • masks_path (strpathlib.Path, 可選) — 包含分割掩碼的目錄路徑。
  • do_resize (bool, 可選) — 是否調整影像大小。
  • size (dict[str, int], 可選) — 描述模型最大輸入尺寸。
  • default_to_square (bool, 可選) — 調整大小時是否預設將影像設為正方形,如果 size 是一個整數。
  • resample (Union[PILImageResampling, F.InterpolationMode, NoneType]) — 如果調整影像大小,要使用的重取樣過濾器。可以是列舉 PILImageResampling 之一。僅在 do_resize 設定為 True 時有效。
  • do_center_crop (bool, 可選) — 是否對影像進行中心裁剪。
  • crop_size (dict[str, int], 可選) — 應用 center_crop 後輸出影像的尺寸。
  • do_rescale (bool, 可選) — 是否重新縮放影像。
  • rescale_factor (Union[int, float, NoneType]) — 如果 do_rescale 設定為 True,用於重新縮放影像的縮放因子。
  • do_normalize (bool, 可選) — 是否對影像進行歸一化。
  • image_mean (Union[float, list[float], NoneType]) — 用於歸一化的影像平均值。僅在 do_normalize 設定為 True 時有效。
  • image_std (Union[float, list[float], NoneType]) — 用於歸一化的影像標準差。僅在 do_normalize 設定為 True 時有效。
  • do_convert_rgb (bool, 可選) — 是否將影像轉換為 RGB。
  • return_tensors (Union[str, ~utils.generic.TensorType, NoneType]) — 如果設定為 `pt`,則返回堆疊張量,否則返回張量列表。
  • data_format (~image_utils.ChannelDimension, 可選) — 輸出影像的通道維度格式。僅支援 ChannelDimension.FIRST。為相容慢速處理器而新增。
  • input_data_format (Union[str, ~image_utils.ChannelDimension, NoneType]) — 輸入影像的通道維度格式。如果未設定,將從輸入影像推斷通道維度格式。可以是以下之一:
    • "channels_first"ChannelDimension.FIRST:影像格式為 (num_channels, height, width)。
    • "channels_last"ChannelDimension.LAST:影像格式為 (height, width, num_channels)。
    • "none"ChannelDimension.NONE:影像格式為 (height, width)。
  • device (torch.device, optional) — 用於處理影像的裝置。如果未設定,則從輸入影像推斷裝置。
  • disable_grouping (bool, optional) — 是否停用按大小對影像進行分組以單獨而不是分批處理它們。如果為 None,則如果影像位於 CPU 上,則設定為 True,否則設定為 False。此選擇基於經驗觀察,詳情請參閱:https://github.com/huggingface/transformers/pull/38157
  • format (str, optional, 預設為 AnnotationFormat.COCO_DETECTION) — 註釋的資料格式。“coco_detection”或“coco_panoptic”之一。
  • do_convert_annotations (bool, optional, 預設為 True) — 控制是否將註釋轉換為 CONDITIONAL_DETR 模型期望的格式。將邊界框轉換為 (center_x, center_y, width, height) 格式並在 [0, 1] 範圍內。可以透過 preprocess 方法中的 do_convert_annotations 引數覆蓋。
  • do_pad (bool, optional, 預設為 True) — 控制是否填充影像。可以透過 preprocess 方法中的 do_pad 引數覆蓋。如果為 True,將用零填充影像的底部和右側。如果提供了 pad_size,影像將填充到指定的尺寸。否則,影像將填充到批次的最大高度和寬度。
  • pad_size (dict[str, int], optional) — 影像填充到的尺寸 {"height": int, "width" int}。必須大於為預處理提供的任何影像尺寸。如果未提供 pad_size,影像將填充到批次中的最大高度和寬度。
  • return_segmentation_masks (bool, optional, 預設為 False) — 是否返回分割掩碼。

返回

<class 'transformers.image_processing_base.BatchFeature'>

  • data (dict) — 由 call 方法返回的列表/陣列/張量字典(“pixel_values”等)。
  • tensor_type (Union[None, str, TensorType], 可選) — 您可以在此處提供一個`tensor_type`,以便在初始化時將整數列表轉換為PyTorch/TensorFlow/Numpy張量。

post_process_object_detection

< >

( outputs threshold: float = 0.5 target_sizes: typing.Union[transformers.utils.generic.TensorType, list[tuple]] = None top_k: int = 100 ) list[Dict]

引數

  • outputs (ConditionalDetrObjectDetectionOutput) — 模型的原始輸出。
  • threshold (float, optional) — 保留物件檢測預測的得分閾值。
  • target_sizes (torch.Tensorlist[tuple[int, int]], optional) — 形狀為 (batch_size, 2) 的張量或包含批次中每個影像的目標大小(高度,寬度)的元組列表(tuple[int, int])。如果留空,預測將不會被調整大小。
  • top_k (int, optional, 預設為 100) — 在透過閾值過濾之前,僅保留前 k 個邊界框。

返回

list[Dict]

一個字典列表,每個字典包含模型預測的批處理中每張影像的分數、標籤和框。

ConditionalDetrForObjectDetection 的原始輸出轉換為 (top_left_x, top_left_y, bottom_right_x, bottom_right_y) 格式的最終邊界框。僅支援 PyTorch。

post_process_instance_segmentation

< >

( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 target_sizes: typing.Optional[list[tuple[int, int]]] = None return_coco_annotation: typing.Optional[bool] = False ) list[Dict]

引數

  • outputs (ConditionalDetrForSegmentation) — 模型的原始輸出。
  • threshold (float, optional, 預設為 0.5) — 保留預測例項掩碼的機率得分閾值。
  • mask_threshold (float, optional, 預設為 0.5) — 將預測掩碼轉換為二進位制值時使用的閾值。
  • overlap_mask_area_threshold (float, optional, 預設為 0.8) — 合併或丟棄每個二進位制例項掩碼內小的斷開部分的重疊掩碼區域閾值。
  • target_sizes (list[Tuple], optional) — 長度為 (batch_size) 的列表,其中每個列表項(tuple[int, int]])對應於批次中每個預測請求的最終大小(高度,寬度)。如果未設定,預測將不會被調整大小。
  • return_coco_annotation (bool, optional) — 預設為 False。如果設定為 True,分割圖將以 COCO 遊程編碼 (RLE) 格式返回。

返回

list[Dict]

字典列表,每個影像一個,每個字典包含兩個鍵

  • segmentation — 形狀為 (height, width) 的張量,其中每個畫素表示一個 segment_id,如果 return_coco_annotation 設定為 True,則為分割圖的 list[List] 遊程編碼 (RLE)。如果沒有找到高於 threshold 的掩碼,則設定為 None
  • segments_info — 包含每個段的附加資訊的字典。
    • id — 表示 segment_id 的整數。
    • label_id — 表示與 segment_id 對應的標籤/語義類 ID 的整數。
    • score — 具有 segment_id 的段的預測分數。

ConditionalDetrForSegmentation 的輸出轉換為例項分割預測。僅支援 PyTorch。

post_process_semantic_segmentation

< >

( outputs target_sizes: typing.Optional[list[tuple[int, int]]] = None ) list[torch.Tensor]

引數

  • outputs (ConditionalDetrForSegmentation) — 模型的原始輸出。
  • target_sizes (list[tuple[int, int]], optional) — 包含批次中每個影像目標大小(高度,寬度)的元組列表(tuple[int, int])。如果未設定,預測將不會被調整大小。

返回

list[torch.Tensor]

長度為 batch_size 的列表,其中每個專案是形狀為 (height, width) 的語義分割圖,對應於 target_sizes 條目(如果指定了 target_sizes)。每個 torch.Tensor 的每個條目對應一個語義類 ID。

ConditionalDetrForSegmentation 的輸出轉換為語義分割圖。僅支援 PyTorch。

post_process_panoptic_segmentation

< >

( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 label_ids_to_fuse: typing.Optional[set[int]] = None target_sizes: typing.Optional[list[tuple[int, int]]] = None ) list[Dict]

引數

  • outputs (ConditionalDetrForSegmentation) — ConditionalDetrForSegmentation 的輸出。
  • threshold (float, optional, 預設為 0.5) — 保留預測例項掩碼的機率得分閾值。
  • mask_threshold (float, optional, 預設為 0.5) — 將預測掩碼轉換為二進位制值時使用的閾值。
  • overlap_mask_area_threshold (float, optional, 預設為 0.8) — 合併或丟棄每個二進位制例項掩碼內小的斷開部分的重疊掩碼區域閾值。
  • label_ids_to_fuse (Set[int], optional) — 此狀態下的標籤將合併其所有例項。例如,我們可以說影像中只能有一個天空,但可以有幾個人,因此天空的標籤 ID 將在該集合中,但人的標籤 ID 則不會。
  • target_sizes (list[Tuple], optional) — 長度為 (batch_size) 的列表,其中每個列表項(tuple[int, int]])對應於批次中每個預測請求的最終大小(高度,寬度)。如果未設定,預測將不會被調整大小。

返回

list[Dict]

字典列表,每個影像一個,每個字典包含兩個鍵

  • segmentation — 形狀為 (height, width) 的張量,其中每個畫素表示一個 segment_id,如果沒有找到高於 threshold 的掩碼,則為 None。如果指定了 target_sizes,分割將調整為相應的 target_sizes 條目。
  • segments_info — 包含每個段的附加資訊的字典。
    • id — 表示 segment_id 的整數。
    • label_id — 表示與 segment_id 對應的標籤/語義類 ID 的整數。
    • was_fused — 一個布林值,如果 label_idlabel_ids_to_fuse 中則為 True,否則為 False。同一類別/標籤的多個例項已融合並分配了一個單獨的 segment_id
    • score — 具有 segment_id 的段的預測分數。

ConditionalDetrForSegmentation 的輸出轉換為影像全景分割預測。僅支援 PyTorch。

ConditionalDetrFeatureExtractor

class transformers.ConditionalDetrFeatureExtractor

< >

( *args **kwargs )

__call__

< >

( images **kwargs )

預處理單張或批次影像。

post_process_object_detection

< >

( outputs threshold: float = 0.5 target_sizes: typing.Union[transformers.utils.generic.TensorType, list[tuple]] = None top_k: int = 100 ) list[Dict]

引數

  • outputs (DetrObjectDetectionOutput) — 模型的原始輸出。
  • threshold (float, optional) — 保留物件檢測預測的得分閾值。
  • target_sizes (torch.Tensorlist[tuple[int, int]], optional) — 形狀為 (batch_size, 2) 的張量或包含批次中每個影像目標大小(高度,寬度)的元組列表(tuple[int, int])。如果留空,預測將不會被調整大小。
  • top_k (int, optional, 預設為 100) — 在透過閾值過濾之前,僅保留前 k 個邊界框。

返回

list[Dict]

一個字典列表,每個字典包含模型預測的批處理中每張影像的分數、標籤和框。

ConditionalDetrForObjectDetection 的原始輸出轉換為 (top_left_x, top_left_y, bottom_right_x, bottom_right_y) 格式的最終邊界框。僅支援 PyTorch。

post_process_instance_segmentation

< >

( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 target_sizes: typing.Optional[list[tuple[int, int]]] = None return_coco_annotation: typing.Optional[bool] = False ) list[Dict]

引數

  • outputs (ConditionalDetrForSegmentation) — 模型的原始輸出。
  • threshold (float, optional, 預設為 0.5) — 保留預測例項掩碼的機率得分閾值。
  • mask_threshold (float, optional, 預設為 0.5) — 將預測掩碼轉換為二進位制值時使用的閾值。
  • overlap_mask_area_threshold (float, optional, 預設為 0.8) — 合併或丟棄每個二進位制例項掩碼內小的斷開部分的重疊掩碼區域閾值。
  • target_sizes (list[Tuple], optional) — 長度為 (batch_size) 的列表,其中每個列表項(tuple[int, int]])對應於批次中每個預測請求的最終大小(高度,寬度)。如果未設定,預測將不會被調整大小。
  • return_coco_annotation (bool, optional) — 預設為 False。如果設定為 True,分割圖將以 COCO 遊程編碼 (RLE) 格式返回。

返回

list[Dict]

字典列表,每個影像一個,每個字典包含兩個鍵

  • segmentation — 形狀為 (height, width) 的張量,其中每個畫素表示一個 segment_id,如果 return_coco_annotation 設定為 True,則為分割圖的 list[List] 遊程編碼 (RLE)。如果沒有找到高於 threshold 的掩碼,則設定為 None
  • segments_info — 包含每個段的附加資訊的字典。
    • id — 表示 segment_id 的整數。
    • label_id — 表示與 segment_id 對應的標籤/語義類 ID 的整數。
    • score — 具有 segment_id 的段的預測分數。

ConditionalDetrForSegmentation 的輸出轉換為例項分割預測。僅支援 PyTorch。

post_process_semantic_segmentation

< >

( outputs target_sizes: typing.Optional[list[tuple[int, int]]] = None ) list[torch.Tensor]

引數

  • outputs (ConditionalDetrForSegmentation) — 模型的原始輸出。
  • target_sizes (list[tuple[int, int]], optional) — 包含批次中每個影像目標大小(高度,寬度)的元組列表(tuple[int, int])。如果未設定,預測將不會被調整大小。

返回

list[torch.Tensor]

長度為 batch_size 的列表,其中每個專案是形狀為 (height, width) 的語義分割圖,對應於 target_sizes 條目(如果指定了 target_sizes)。每個 torch.Tensor 的每個條目對應一個語義類 ID。

ConditionalDetrForSegmentation 的輸出轉換為語義分割圖。僅支援 PyTorch。

post_process_panoptic_segmentation

< >

( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 label_ids_to_fuse: typing.Optional[set[int]] = None target_sizes: typing.Optional[list[tuple[int, int]]] = None ) list[Dict]

引數

  • outputs (ConditionalDetrForSegmentation) — ConditionalDetrForSegmentation 的輸出。
  • threshold (float, 可選, 預設為 0.5) — 用於保留預測例項掩碼的機率得分閾值。
  • mask_threshold (float, 可選, 預設為 0.5) — 將預測掩碼轉換為二進位制值時使用的閾值。
  • overlap_mask_area_threshold (float, 可選, 預設為 0.8) — 用於合併或丟棄每個二進位制例項掩碼中不相連的小部分的重疊掩碼區域閾值。
  • label_ids_to_fuse (Set[int], 可選) — 此狀態中的標籤將合併其所有例項。例如,我們可以說影像中只能有一個天空,但有幾個人,因此天空的標籤 ID 將在該集合中,但人的標籤 ID 不會。
  • target_sizes (list[Tuple], 可選) — 長度為 (batch_size) 的列表,其中每個列表項 (tuple[int, int]]) 對應於批次中每個預測所請求的最終大小(高度,寬度)。如果未設定,預測將不會被調整大小。

返回

list[Dict]

字典列表,每個影像一個,每個字典包含兩個鍵

  • segmentation — 形狀為 (height, width) 的張量,其中每個畫素表示一個 segment_id,如果沒有找到高於 threshold 的掩碼,則為 None。如果指定了 target_sizes,分割將調整為相應的 target_sizes 條目。
  • segments_info — 包含每個段的附加資訊的字典。
    • id — 表示 segment_id 的整數。
    • label_id — 表示與 segment_id 對應的標籤/語義類 ID 的整數。
    • was_fused — 一個布林值,如果 label_idlabel_ids_to_fuse 中則為 True,否則為 False。同一類別/標籤的多個例項已融合並分配了一個單獨的 segment_id
    • score — 具有 segment_id 的段的預測分數。

ConditionalDetrForSegmentation 的輸出轉換為影像全景分割預測。僅支援 PyTorch。

ConditionalDetrModel

class transformers.ConditionalDetrModel

< >

( config: ConditionalDetrConfig )

引數

  • config (ConditionalDetrConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。

裸露的 Conditional DETR 模型(由骨幹和編碼器-解碼器 Transformer 組成),輸出原始隱藏狀態,頂部沒有任何特定頭部。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件中與通用用法和行為相關的所有事項。

forward

< >

( pixel_values: FloatTensor pixel_mask: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrModelOutputtuple(torch.FloatTensor)

引數

  • pixel_values (torch.FloatTensor, 形狀為 (batch_size, num_channels, image_size, image_size)) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲取。有關詳細資訊,請參見 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 處理影像)。
  • pixel_mask (torch.LongTensor, 形狀為 (batch_size, height, width), 可選) — 用於避免對填充畫素值執行注意力操作的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示真實畫素(即未被遮罩),
    • 0 表示填充畫素(即被遮罩)。

    什麼是注意力掩碼?

  • decoder_attention_mask (torch.FloatTensor, 形狀為 (batch_size, num_queries), 可選) — 預設不使用。可用於遮蓋物件查詢。
  • encoder_outputs (torch.FloatTensor, 可選) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions) last_hidden_state 形狀為 (batch_size, sequence_length, hidden_size), 可選) 是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中會用到。
  • inputs_embeds (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size), 可選) — 或者,你可以選擇直接傳遞影像的扁平化表示,而不是傳遞扁平化特徵圖(骨幹 + 投影層的輸出)。
  • decoder_inputs_embeds (torch.FloatTensor, 形狀為 (batch_size, num_queries, hidden_size), 可選) — 或者,你可以選擇直接傳遞一個嵌入表示,而不是用零張量初始化查詢。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量中的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量中的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是純元組。

返回

transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrModelOutputtuple(torch.FloatTensor)

一個 transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrModelOutputtorch.FloatTensor 元組(如果傳遞 return_dict=Falseconfig.return_dict=False),包含根據配置(ConditionalDetrConfig)和輸入的不同元素。

  • last_hidden_state (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)) — 模型解碼器最後一層輸出的隱藏狀態序列。

  • past_key_values (~cache_utils.EncoderDecoderCache, 可選, 當 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

    包含預計算的隱藏狀態(自注意力塊中的鍵和值,如果 config.is_encoder_decoder=True,則可選地包含交叉注意力塊中的鍵和值),可用於(請參閱 past_key_values 輸入)加快順序解碼。

  • decoder_hidden_states (tuple[torch.FloatTensor, ...], 可選, 當 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個用於嵌入層的輸出,+ 一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

  • decoder_attentions (tuple[torch.FloatTensor, ...], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

  • cross_attentions (tuple[torch.FloatTensor, ...], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

  • encoder_last_hidden_state (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 模型編碼器最後一層輸出的隱藏狀態序列。

  • encoder_hidden_states (tuple[torch.FloatTensor, ...], 可選, 當 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個用於嵌入層的輸出,+ 一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

  • encoder_attentions (tuple[torch.FloatTensor, ...], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

  • intermediate_hidden_states (torch.FloatTensor, 形狀為 (config.decoder_layers, batch_size, sequence_length, hidden_size), 可選, 當 config.auxiliary_loss=True 時返回) — 中間解碼器啟用,即每個解碼器層的輸出,每個都經過層歸一化。

  • reference_points (torch.FloatTensor, 形狀為 (config.decoder_layers, batch_size, num_queries, 2 (anchor points))) — 參考點(解碼器每一層的參考點)。

ConditionalDetrModel 的 forward 方法,重寫了 __call__ 特殊方法。

儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module 例項,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

示例

>>> from transformers import AutoImageProcessor, AutoModel
>>> 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("microsoft/conditional-detr-resnet-50")
>>> model = AutoModel.from_pretrained("microsoft/conditional-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]

ConditionalDetrForObjectDetection

class transformers.ConditionalDetrForObjectDetection

< >

( config: ConditionalDetrConfig )

引數

  • config (ConditionalDetrConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。

帶有物件檢測頭的 Conditional DETR 模型(由骨幹和編碼器-解碼器 Transformer 組成),用於 COCO 檢測等任務。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件中與通用用法和行為相關的所有事項。

forward

< >

( pixel_values: FloatTensor pixel_mask: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[list[dict]] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrObjectDetectionOutputtuple(torch.FloatTensor)

引數

  • pixel_values (torch.FloatTensor, 形狀為 (batch_size, num_channels, image_size, image_size)) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲取。有關詳細資訊,請參見 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 處理影像)。
  • pixel_mask (torch.LongTensor, 形狀為 (batch_size, height, width), 可選) — 用於避免對填充畫素值執行注意力操作的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示真實畫素(即未被遮罩),
    • 0 表示填充畫素(即被遮罩)。

    什麼是注意力掩碼?

  • decoder_attention_mask (torch.FloatTensor, 形狀為 (batch_size, num_queries), 可選) — 預設不使用。可用於遮蓋物件查詢。
  • encoder_outputs (torch.FloatTensor, 可選) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions) last_hidden_state 形狀為 (batch_size, sequence_length, hidden_size), 可選) 是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中會用到。
  • inputs_embeds (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size), 可選) — 或者,你可以選擇直接傳遞影像的扁平化表示,而不是傳遞扁平化特徵圖(骨幹 + 投影層的輸出)。
  • decoder_inputs_embeds (torch.FloatTensor, 形狀為 (batch_size, num_queries, hidden_size), 可選) — 或者,你可以選擇直接傳遞一個嵌入表示,而不是用零張量初始化查詢。
  • labels (list[Dict], 長度為 (batch_size,), 可選) — 用於計算二分匹配損失的標籤。字典列表,每個字典至少包含以下兩個鍵:'class_labels' 和 'boxes'(分別表示批次中影像的類標籤和邊界框)。類標籤本身應為長度為 (影像中邊界框的數量,)torch.LongTensor,邊界框應為形狀為 (影像中邊界框的數量, 4)torch.FloatTensor
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量中的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量中的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是純元組。

返回

transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrObjectDetectionOutputtuple(torch.FloatTensor)

一個 transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrObjectDetectionOutputtorch.FloatTensor 元組(如果傳遞 return_dict=Falseconfig.return_dict=False),包含根據配置(ConditionalDetrConfig)和輸入的不同元素。

  • loss (torch.FloatTensor, 形狀為 (1,), 可選, 當提供 labels 時返回) — 總損失,作為類預測的負對數似然(交叉熵)和邊界框損失的線性組合。後者定義為 L1 損失和廣義尺度不變 IoU 損失的線性組合。

  • loss_dict (Dict, 可選) — 包含各個損失的字典。用於日誌記錄。

  • logits (形狀為 (batch_size, num_queries, num_classes + 1)torch.FloatTensor) — 所有查詢的分類 logits(包括無物件)。

  • pred_boxes (torch.FloatTensor, 形狀為 (batch_size, num_queries, 4)) — 所有查詢的歸一化邊界框座標,表示為 (center_x, center_y, width, height)。這些值在 [0, 1] 之間歸一化,相對於批次中每個影像的大小(忽略可能的填充)。你可以使用 post_process_object_detection() 來檢索未歸一化的邊界框。

  • auxiliary_outputs (list[Dict], 可選) — 可選,僅當輔助損失被啟用(即 config.auxiliary_loss 設定為 True)且提供了標籤時才返回。它是一個字典列表,包含每個解碼器層的上述兩個鍵(logitspred_boxes)。

  • last_hidden_state (形狀為 (batch_size, sequence_length, hidden_size)torch.FloatTensor可選) — 模型解碼器最後一層輸出的隱藏狀態序列。

  • decoder_hidden_states (tuple[torch.FloatTensor], 可選, 當 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個用於嵌入層的輸出,+ 一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

  • decoder_attentions (tuple[torch.FloatTensor], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

  • cross_attentions (tuple[torch.FloatTensor], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

  • encoder_last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size), 可選, 預設為 None) — 模型編碼器最後一層輸出的隱藏狀態序列。

  • encoder_hidden_states (tuple[torch.FloatTensor], 可選, 當 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個用於嵌入層的輸出,+ 一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

  • encoder_attentions (tuple[torch.FloatTensor], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

ConditionalDetrForObjectDetection 的 forward 方法,重寫了 __call__ 特殊方法。

儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module 例項,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

示例

>>> from transformers import AutoImageProcessor, AutoModelForObjectDetection
>>> 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("microsoft/conditional-detr-resnet-50")
>>> model = AutoModelForObjectDetection.from_pretrained("microsoft/conditional-detr-resnet-50")

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

ConditionalDetrForSegmentation

class transformers.ConditionalDetrForSegmentation

< >

( config: ConditionalDetrConfig )

引數

  • config (ConditionalDetrConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。

帶有分割頭的 Conditional DETR 模型(由骨幹和編碼器-解碼器 Transformer 組成),用於 COCO 全景分割等任務。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 的子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件中與通用用法和行為相關的所有事項。

forward

< >

( pixel_values: FloatTensor pixel_mask: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.FloatTensor] = None encoder_outputs: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[list[dict]] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrSegmentationOutputtuple(torch.FloatTensor)

引數

  • pixel_values (torch.FloatTensor, 形狀為 (batch_size, num_channels, image_size, image_size)) — 對應於輸入影像的張量。畫素值可以使用 {image_processor_class} 獲取。有關詳細資訊,請參見 {image_processor_class}.__call__{processor_class} 使用 {image_processor_class} 處理影像)。
  • pixel_mask (torch.LongTensor, 形狀為 (batch_size, height, width), 可選) — 用於避免對填充畫素值執行注意力操作的掩碼。掩碼值選擇在 [0, 1] 之間:

    • 1 表示真實畫素(即未被遮罩),
    • 0 表示填充畫素(即被遮罩)。

    什麼是注意力掩碼?

  • decoder_attention_mask (torch.FloatTensor, 形狀為 (batch_size, num_queries), 可選) — 預設不使用。可用於遮蓋物件查詢。
  • encoder_outputs (torch.FloatTensor, 可選) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions) last_hidden_state 形狀為 (batch_size, sequence_length, hidden_size), 可選) 是編碼器最後一層輸出的隱藏狀態序列。在解碼器的交叉注意力中會用到。
  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選擇直接傳遞影像的展平表示,而不是傳遞展平的特徵圖(骨幹網路 + 投影層的輸出)。
  • decoder_inputs_embeds (torch.FloatTensor,形狀為 (batch_size, num_queries, hidden_size)可選) — 可選擇直接傳遞嵌入表示,而不是用零張量初始化查詢。
  • labels (list[Dict],長度為 (batch_size,)可選) — 用於計算二分匹配損失、DICE/F-1損失和Focal損失的標籤。字典列表,每個字典至少包含以下3個鍵:'class_labels'、'boxes'和'masks'(分別表示批次中影像的類別標籤、邊界框和分割掩碼)。類別標籤應為長度為 (影像中邊界框的數量,)torch.LongTensor,框應為形狀為 (影像中邊界框的數量, 4)torch.FloatTensor,掩碼應為形狀為 (影像中邊界框的數量, 高度, 寬度)torch.FloatTensor
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。更多詳情請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。更多詳情請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。

返回

transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrSegmentationOutputtuple(torch.FloatTensor)

一個 transformers.models.conditional_detr.modeling_conditional_detr.ConditionalDetrSegmentationOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),包含根據配置(ConditionalDetrConfig)和輸入而定的各種元素。

  • loss (torch.FloatTensor, 形狀為 (1,), 可選, 當提供 labels 時返回) — 總損失,作為類預測的負對數似然(交叉熵)和邊界框損失的線性組合。後者定義為 L1 損失和廣義尺度不變 IoU 損失的線性組合。

  • loss_dict (Dict, 可選) — 包含各個損失的字典。用於日誌記錄。

  • logits (形狀為 (batch_size, num_queries, num_classes + 1)torch.FloatTensor) — 所有查詢的分類 logits(包括無物件)。

  • pred_boxes (torch.FloatTensor, 形狀為 (batch_size, num_queries, 4)) — 所有查詢的歸一化邊界框座標,表示為 (center_x, center_y, width, height)。這些值在 [0, 1] 之間歸一化,相對於批次中每個影像的大小(忽略可能的填充)。你可以使用 post_process_object_detection() 來檢索未歸一化的邊界框。

  • pred_masks (torch.FloatTensor,形狀為 (batch_size, num_queries, height/4, width/4)) — 所有查詢的分割掩碼 logits。另請參閱 post_process_semantic_segmentation()post_process_instance_segmentation() post_process_panoptic_segmentation(),分別用於評估語義、例項和全景分割掩碼。

  • auxiliary_outputs (list[Dict], 可選) — 可選,僅當輔助損失被啟用(即 config.auxiliary_loss 設定為 True)且提供了標籤時才返回。它是一個字典列表,包含每個解碼器層的上述兩個鍵(logitspred_boxes)。

  • last_hidden_state (形狀為 (batch_size, sequence_length, hidden_size)torch.FloatTensor可選) — 模型解碼器最後一層輸出的隱藏狀態序列。

  • decoder_hidden_states (tuple[torch.FloatTensor], 可選, 當 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個用於嵌入層的輸出,+ 一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

  • decoder_attentions (tuple[torch.FloatTensor], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

  • cross_attentions (tuple[torch.FloatTensor], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

  • encoder_last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size), 可選, 預設為 None) — 模型編碼器最後一層輸出的隱藏狀態序列。

  • encoder_hidden_states (tuple[torch.FloatTensor], 可選, 當 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — torch.FloatTensor 的元組(如果模型有嵌入層,則一個用於嵌入層的輸出,+ 一個用於每個層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

  • encoder_attentions (tuple[torch.FloatTensor], 可選, 當 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

ConditionalDetrForSegmentation 的前向方法,重寫了 __call__ 特殊方法。

儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module 例項,因為前者負責執行預處理和後處理步驟,而後者會默默忽略它們。

示例

>>> import io
>>> import requests
>>> from PIL import Image
>>> import torch
>>> import numpy

>>> from transformers import (
...     AutoImageProcessor,
...     ConditionalDetrConfig,
...     ConditionalDetrForSegmentation,
... )
>>> from transformers.image_transforms import rgb_to_id

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

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/conditional-detr-resnet-50")

>>> # randomly initialize all weights of the model
>>> config = ConditionalDetrConfig()
>>> model = ConditionalDetrForSegmentation(config)

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

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

>>> # Use the `post_process_panoptic_segmentation` method of the `image_processor` to retrieve post-processed panoptic segmentation maps
>>> # Segmentation results are returned as a list of dictionaries
>>> result = image_processor.post_process_panoptic_segmentation(outputs, target_sizes=[(300, 500)])
>>> # A tensor of shape (height, width) where each value denotes a segment id, filled with -1 if no segment is found
>>> panoptic_seg = result[0]["segmentation"]
>>> # Get prediction score and segment_id to class_id mapping of each segment
>>> panoptic_segments_info = result[0]["segments_info"]
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.