Transformers documentation
RF-DETR
Эта модель была опубликована в HF papers 24.07.2024 и добавлена в Hugging Face Transformers 07.05.2026.
RF-DETR
RF-DETR предлагает архитектуру Receptive Field Detection Transformer (DETR), разработанную для конкуренции с доминирующей серией YOLO и превосходства над ней в задачах детектирования объектов в реальном времени. Она обеспечивает новый баланс между скоростью (латентностью) и точностью (mAP), сочетая последние достижения в области трансформеров с эффективными решениями в проектировании.
Архитектура RF-DETR отличается простой и эффективной структурой: DINOv2 Backbone, Projector и неглубокий DETR Decoder. Она повышает эффективность и скорость архитектуры DETR за счёт следующих ключевых модификаций:
- Backbone DINOv2: Использует мощный backbone DINOv2 для надежного извлечения признаков.
- Обучение Group DETR: использует Group-Wise One-to-Many Assignment на этапе обучения для ускорения сходимости.
- Более богатый вход: агрегирует многоуровневые признаки из backbone и использует проектор C2f (аналогично YOLOv8) для передачи многомасштабных признаков.
- Faster Decoder: использует неглубокий 3-слойный декодер DETR с деформируемым кросс-вниманием для снижения задержки.
- Оптимизированные запросы: Используется схема смешанных запросов, объединяющая обучаемые контентные запросы и генерируемые пространственные запросы.
Все доступные контрольные точки RF-DETR можно найти в организации Roboflow. Исходный код доступен здесь.
Благодаря маппингу весов RfDetr совместим с моделями из исходной библиотеки rf-detr, а также с моделями, обученными на платформе Roboflow. Это означает, что вы можете обучать модель на платформе Roboflow, а затем использовать RfDetr в transformers для импорта весов и развертывания модели в любом окружении.
Щёлкните по моделям RF-DETR в боковой панели справа, чтобы увидеть больше примеров применения RF-DETR к различным задачам обнаружения объектов.
Приведённый ниже пример демонстрирует, как выполнять обнаружение объектов с помощью Pipeline и класса 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}")Визуализация результатов с надзором
Библиотеку supervision можно использовать для визуализации результатов обнаружения и сегментации. Установите её с помощью 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)Ресурсы
- См. также: Руководство по задаче обнаружения объектов.
RfDetrConfig
класс 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 )
Параметры
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], необязательный) — Конфигурация модели-бэкбона. - hidden_expansion (
float, необязательный, по умолчанию 0.5) — Коэффициент расширения для скрытых размерностей в слоях проектора. - c2f_num_blocks (
int, необязательный, по умолчанию 3) — Количество блоков в слое C2F. - activation_function (
str, необязательный, по умолчанию"silu") — Нелинейная функция активации в проекторе. Поддерживаемые значения:"silu","relu","gelu". - dropout (
float, необязательный, по умолчанию0.1) — Доля для всех слоёв dropout. - decoder_ffn_dim (
int, необязательный, по умолчанию2048) — Размерность «промежуточного» (часто называемого feed-forward) слоя в декодере. - decoder_n_points (
int, необязательный, по умолчанию 4) — Количество выбранных ключей на каждом уровне признаков для каждой головы внимания в декодере. - decoder_layers (
int, необязательный, по умолчанию 3) — Количество декодерных слоёв в трансформере. - decoder_self_attention_heads (
int, необязательный, по умолчанию 8) — Количество головок внимания в каждом слое внимания для само-внимания декодера. - decoder_cross_attention_heads (
int, необязательный, по умолчанию 16) — Количество голов внимания для каждого слоя внимания в кросс-внимании декодера. - decoder_activation_function (
str, необязательный, по умолчанию"relu") — Нелинейная функция активации в декодере. Поддерживаемые значения:"relu","silu","gelu". - num_queries (
int, необязательный, по умолчанию 300) — Количество запросов объектов, то есть слотов для обнаружения. Это максимальное число объектов, которые RfDetrModel может обнаружить на одном изображении. - attention_bias (
bool, необязательный, по умолчаниюTrue) — Использовать ли смещение (bias) в слоях проекции query, key, value и output при само-внимании. - attention_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для вероятностей внимания. - activation_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для активаций внутри полносвязного слоя. - group_detr (
int, необязательный, по умолчанию 13) — Количество групп для механизма внимания Group DETR, который помогает снизить вычислительную сложность. - init_std (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов. - disable_custom_kernels (
bool, необязательный, по умолчаниюTrue) — Отключает использование собственных CUDA- и CPU-ядер. Этот параметр необходим для экспорта в ONNX, так как собственные ядра не поддерживаются экспортом PyTorch в ONNX. - class_cost (
Union[int, float], необязательный, по умолчанию2) — Относительный вес ошибки классификации в стоимости венгерского сопоставления. - bbox_cost (
Union[int, float], необязательный, по умолчанию5) — Относительный вес ошибки L1 для ограничивающих прямоугольников в стоимости венгерского сопоставления. - giou_cost (
Union[int, float], необязательный, по умолчанию2) — Относительный вес функции потерь обобщённого IoU в стоимости венгерского сопоставления. - class_loss_coefficient (
float, необязательный, по умолчанию 1) — Относительный вес потерь классификации в стоимости венгерского сопоставления. - 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) — Параметр alpha в функции потерь focal loss. - auxiliary_loss (
bool, необязательный, по умолчаниюTrue) — Использовать ли вспомогательные потери декодирования (потери на каждом слое декодера). - d_model (
int, необязательный, по умолчанию256) — Размер слоев кодировщика и пулера. - layer_norm_eps (
float, необязательный, по умолчанию1e-05) — Значение epsilon, используемое слоями нормализации. - num_feature_levels (
int, необязательный, по умолчанию 1) — Количество уровней признаков, используемых в многомасштабном деформируемом внимании. - mask_loss_coefficient (
float, необязательный, по умолчанию 1) — Относительный вес функции потерь Focal в функции потерь масок для сегментации объектов. - mask_point_sample_ratio (
int, необязательный, по умолчанию 16) — Количество точек, отбираемых для вычисления потерь маски. - mask_downsample_ratio (
int, необязательный, по умолчанию 4) — Коэффициент уменьшения разрешения сегментационных масок относительно разрешения входного изображения. - mask_class_loss_coefficient (
float, необязательный, по умолчанию 5.0) — Относительный вес функции потерь Focal в функции потерь для сегментации объектов. - mask_dice_loss_coefficient (
float, необязательный, по умолчанию 5.0) — Относительный вес функции потерь DICE/F-1 в функции потерь для сегментации экземпляров. - segmentation_head_activation_function (
str, необязательный, по умолчанию"gelu") — Нелинейная функция активации в сегментационной голове. Поддерживаемые значения:"relu","silu","gelu". - intermediate_size (
int, необязательный, по умолчанию1024) — Размерность представлений MLP.
Это класс конфигурации для хранения настроек модели RfDetrModel. Он используется для создания модели Rf Detr в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации Roboflow/rf-detr-base
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Примеры:
>>> 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
класс 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 )
Параметры
- hidden_size (
int, необязательный, по умолчанию768) — Размерность скрытых представлений. - num_hidden_layers (
int, необязательный, по умолчанию12) — Количество скрытых слоев в декодере Transformer. - num_attention_heads (
int, необязательный, по умолчанию12) — Количество головок внимания в каждом слое внимания декодера Transformer. - mlp_ratio (
int, необязательный, по умолчанию4) — Соотношение скрытого размера MLP к размеру эмбеддинга. - hidden_act (
str, необязательный, по умолчаниюgelu) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - hidden_dropout_prob (
Union[float, int], необязательный, по умолчанию0.0) — Вероятность dropout для всех полносвязных слоёв в блоках эмбеддингов, энкодера и пуллера. - attention_probs_dropout_prob (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для вероятностей внимания. - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов. - layer_norm_eps (
float, необязательный, по умолчанию1e-06) — Значение epsilon, используемое слоями нормализации. - image_size (
Union[int, list[int], tuple[int, int]], необязательный, по умолчанию224) — Размер (разрешение) каждого изображения. - patch_size (
Union[int, list[int], tuple[int, int]], необязательный, по умолчанию14) — Размер (разрешение) каждого патча. - num_channels (
int, необязательный, по умолчанию3) — Количество входных каналов. - qkv_bias (
bool, необязательный, по умолчаниюTrue) — Добавлять ли смещение к запросам, ключам и значениям. - layerscale_value (
float, необязательный, по умолчанию 1.0) — Начальное значение для layer scale. - drop_path_rate (
float, необязательный, по умолчанию 0.0) — Частота стохастической глубины для каждого образца (при применении в основном пути остаточных слоёв). - use_swiglu_ffn (
bool, необязательный, по умолчаниюFalse) — Использовать ли свёрточную нейронную сеть SwiGLU. - apply_layernorm (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли применять нормализацию слоя к картам признаков, если модель используется в качестве базовой (backbone). - reshape_hidden_states (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли преобразовать карты признаков в 4D-тензоры формы(batch_size, d_model, height, width), если модель используется в качестве базовой. ЕслиFalse, карты признаков будут 3D-тензорами формы(batch_size, seq_len, d_model). - use_mask_token (
bool, необязательный, по умолчаниюTrue) — Использовать ли mask_token в эмбеддингах. - num_windows (
int, необязательный, по умолчанию 4) — Количество окон, используемых для оконного внимания. Если равно 1, оконное внимание не используется.
Это класс конфигурации для хранения настроек модели RfDetrModel. Он используется для создания модели Rf Detr в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации Roboflow/rf-detr-base
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> 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
класс transformers.RfDetrImageProcessor
< source >( **kwargs: *<class 'transformers.models.rf_detr.image_processing_rf_detr.RfDetrImageProcessorKwargs'> )
Параметры
- do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли изменять размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, по умолчанию{'shortest_edge' -- 800, 'longest_edge': 1333}): Определяет максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional, по умолчаниюFalse) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size задано как int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, по умолчанию2) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли выполнять рескейлинг изображения. - rescale_factor (
float, kwargs, optional, по умолчанию0.00392156862745098) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.485, 0.456, 0.406]) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.229, 0.224, 0.225]) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - format (
str, kwargs, optional, по умолчаниюAnnotationFormat.COCO_DETECTION) — Формат данных аннотаций. Одно из значений: “coco_detection” или “coco_panoptic”. - do_convert_annotations (
bool, kwargs, optional, по умолчаниюTrue) — Управляет преобразованием аннотаций в формат, ожидаемый моделью RF_DETR. Преобразует ограничивающие рамки в формат(center_x, center_y, width, height)в диапазоне[0, 1]. Может быть переопределено параметромdo_convert_annotationsв методеpreprocess.
Создаёт процессор изображений RfDetrImageProcessor.
preprocess
< 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
Параметры
- 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 (
AnnotationTypeилиlist[AnnotationType], необязательный) — Аннотации, которые преобразуются в соответствии с применяемым к изображениям заполнением (padding). - return_segmentation_masks (
bool, необязательный, по умолчаниюself.return_segmentation_masks) — Возвращать ли маски сегментации. - masks_path (
strилиpathlib.Path, необязательный) — Путь к каталогу, содержащему маски сегментации. - do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional) — Указывает, нужно ли изменить размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Описывает максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size является целым числом. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional) — Нужно ли перемасштабировать изображение. - rescale_factor (
float, kwargs, optional) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional) — Нужно ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional) — Определяет, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Точная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - format (
str, kwargs, optional, по умолчаниюAnnotationFormat.COCO_DETECTION) — Формат данных аннотаций. Одно из значений: “coco_detection” или “coco_panoptic”. - do_convert_annotations (
bool, kwargs, optional, по умолчаниюTrue) — Управляет преобразованием аннотаций в формат, ожидаемый моделью RF_DETR. Преобразует ограничивающие рамки в формат(center_x, center_y, width, height)в диапазоне[0, 1]. Может быть переопределено параметромdo_convert_annotationsв методеpreprocess.
Возвращает
~image_processing_base.BatchFeature
- data (
dict) — Словарь списков/массивов/тензоров, возвращаемый методом call (‘pixel_values’ и т. д.). - tensor_type (
Union[None, str, TensorType], необязательный) — Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = Nonetop_k: int | None = None ) → list[Dict]
Параметры
- outputs (
RfDetrObjectDetectionOutput) — Сырые выходные данные модели. - threshold (
float, необязательный) — Порог оценки для сохранения предсказаний обнаружения объектов. - target_sizes (
torch.Tensororlist[tuple[int, int]], необязательный) — Тензор формы(batch_size, 2)или список кортежей (tuple[int, int]), содержащих целевой размер(height, width)каждого изображения в батче. Если не задано, предсказания не будут масштабироваться.
Возвращает
list[Dict]
Список словарей, где каждый словарь содержит оценки, метки и рамки для изображения в батче, как их предсказал модель.
Преобразует необработанный вывод RfDetrForObjectDetection в итоговые ограничивающие рамки в формате (top_left_x, top_left_y, bottom_right_x, bottom_right_y). Поддерживается только 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]
Параметры
- outputs ([RfDetrInstanceSegmentationOutput]) — Сырые выходные данные модели.
- threshold (float, optional, по умолчанию 0.5) — Порог оценки для сохранения предсказанных масок экземпляров.
- mask_threshold (float, optional, по умолчанию 0.0) — Порог для бинаризации предсказанных масок.
- target_sizes (list[tuple[int, int]], optional) —
Целевые размеры
(height, width)для каждого изображения. Если не заданы, маски не масштабируются. - return_coco_annotation (bool, optional, по умолчанию False) — Если True, возвращает карты сегментации в формате COCO run-length encoding вместо тензоров. Взаимоисключаемый с return_binary_maps.
- return_binary_maps (bool, optional, по умолчанию False) —
Если True, возвращает карты сегментации в виде стека тензоров с бинарными масками инстансов
(по одной на каждый обнаруженный инстанс), без разрешения пересечений. Это соответствует формату
выходных данных исходного пакета
rfdetr. Взаимоисключаемый параметр с return_coco_annotation. - top_k (int, optional) — Максимальное количество кандидатур запросов, оцениваемых до применения порога по значению. По умолчанию равно общему числу запросов.
Возвращает
list[dict]
Один словарь на изображение с ключами:
- segmentation — Tensor[H, W] с идентификаторами сегментов типа
int32(-1= фон), Tensor[num_instances, H, W] с булевыми бинарными масками, если return_binary_maps=True, или список RLE-кодирований, если return_coco_annotation=True. - segments_info — список словарей с ключами
id,label_idиscore.
Преобразует выход [RfDetrForInstanceSegmentation] в предсказания сегментации экземпляров.
RfDetrModel
класс transformers.RfDetrModel
< source >( config: RfDetrConfig )
Параметры
- config (RfDetrConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель LW Detr без дополнительных компонентов (состоящая из backbone и decoder Transformer), на выходе которой выдаются «сырые» hidden-states без какого-либо специализированного head.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → RfDetrModelOutput or tuple(torch.Tensor)
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью RfDetrImageProcessor. Подробности см. в RfDetrImageProcessor.call() (processor_classиспользует RfDetrImageProcessor для обработки изображений). - pixel_mask (
torch.LongTensorформы(batch_size, height, width), , необязательный) — Маска для исключения пикселей padding из вычислений внимания. Значения маски из диапазона[0, 1]:- 1 для пикселей, которые являются реальными (т. е. не замаскированы),
- 0 для пикселей, являющихся заполнением (т. е. замаскированных).
Возвращает
RfDetrModelOutput или tuple(torch.Tensor)
RfDetrModelOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (RfDetrConfig) и входных данных.
Прямой проход модели RF-DETR. Конвейер выполняется следующим образом:
- Сгенерируйте начальный набор эмбеддингов запросов объектов и предложений пространственных локаций из сглаженного (flattened) вывода бэкбона.
- Инициализируйте хранилище для уточненных предсказаний на этапе энкодера (с учетом многогрупповых структур запросов) и итеративно уточняйте объектные запросы и их координаты для каждой группы запросов, чтобы извлечь кандидатов с наивысшей уверенностью на этапе энкодера.
- Инициализируйте обучаемые признаки запросов и пространственные опорные точки (при выводе ограничивайтесь основной группой ради эффективности).
- Проекция базовых опорных точек по всей выборке, их уточнение с помощью предсказанных корректировок координат (перенос внимания на обнаруженные расположения объектов перед декодированием) и расширение признаков целевых запросов до размерности выборки.
- Передайте уточнённые запросы и обновлённые опорные точки в декодер трансформера, чтобы агрегировать детальный пространственный контекст из многомасштабных признаков.
last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя модели.init_reference_points (
torch.Tensorформы(batch_size, num_queries, 4)) — Начальные опорные точки, передаваемые через декодер Transformer.intermediate_hidden_states (
torch.Tensorформы(batch_size, config.decoder_layers, num_queries, d_model)) — Стек промежуточных скрытых состояний (выход каждого слоя декодера).intermediate_reference_points (
torch.Tensorформы(batch_size, config.decoder_layers, num_queries, 4)) — Стек промежуточных опорных точек (опорные точки каждого слоя декодера).enc_outputs_class (
torch.Tensorформы(batch_size, sequence_length, config.num_labels), необязательный, возвращается, еслиconfig.with_box_refine=Trueиconfig.two_stage=True) — Оценки предсказанных ограничивающих прямоугольников, где верхниеconfig.two_stage_num_proposalsпрямоугольников с наивысшими оценками выбираются в качестве региональных предложений на первом этапе. Результат бинарной классификации ограничивающих прямоугольников (т. е. передний план и фон).enc_outputs_coord_logits (
torch.Tensorформы(batch_size, sequence_length, 4), необязательный, возвращается, еслиconfig.with_box_refine=Trueиconfig.two_stage=True) — Логиты координат предсказанных ограничивающих прямоугольников на первом этапе.hidden_states (
tuple[torch.Tensor, ...], необязательный, возвращается при передачеoutput_hidden_states=Trueили когдаconfig.output_hidden_states=True) — Кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple[torch.Tensor, ...], необязательный, возвращается при передачеoutput_attentions=Trueили когдаconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
cross_attentions (
tuple[torch.Tensor, ...], необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания кросс-внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах кросс-внимания.
backbone_features (
listизtorch.Tensorформы(batch_size, config.num_channels, config.image_size, config.image_size)) — Признаки из backbone.
Примеры:
>>> 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
класс transformers.RfDetrForObjectDetection
< source >( config: RfDetrConfig )
Параметры
- config (RfDetrConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель LW DETR (состоящая из backbone и decoder Transformer) с головками для обнаружения объектов, предназначенная для таких задач, как COCO detection.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
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)
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью RfDetrImageProcessor. Подробности см. в RfDetrImageProcessor.call() (processor_classиспользует RfDetrImageProcessor для обработки изображений). - pixel_mask (
torch.LongTensorформы(batch_size, height, width), , необязательный) — Маска для исключения пикселей padding из вычислений внимания. Значения маски из диапазона[0, 1]:- 1 для пикселей, которые являются реальными (т. е. не замаскированы),
- 0 для пикселей, являющихся заполнением (т. е. замаскированных).
- labels (
list[Dict]длины(batch_size,), необязательный) — Метки для вычисления функции потерь двудольного сопоставления. Список словарей, каждый из которых содержит как минимум следующие два ключа: ‘class_labels’ и ‘boxes’ (метки классов и ограничивающие рамки изображения в батче соответственно). Метки классов должны представлять собойtorch.LongTensorдлины(number of bounding boxes in the image,), а рамки —torch.Tensorформы(number of bounding boxes in the image, 4).
Возвращает
RfDetrObjectDetectionOutput или tuple(torch.Tensor)
RfDetrObjectDetectionOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (RfDetrConfig) и входных данных.
Прямой проход выполняется следующим образом:
- Обработайте визуальный вход с помощью базовой модели RF-DETR, чтобы получить последнее скрытое состояние трансформера и последнюю последовательность опорных точек.
- Первый этап: генерация логитов классификации из эмбеддингов предложенных объектных запросов, сгенерированных энкодером.
- Второй этап: предсказание финальных меток классификации и уточненных ограничивающих прямоугольников с использованием последнего скрытого состояния декодера и последних опорных точек.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если предоставленыlabels) — Суммарная потеря, представляющая собой линейную комбинацию отрицательного логарифма правдоподобия (кросс-энтропии) для предсказания класса и потери для ограничивающих прямоугольников. Последняя определяется как линейная комбинация L1-потери и обобщенной масштабно-инвариантной потери IoU.loss_dict (
Dict, необязательный) — словарь, содержащий отдельные значения потерь. Полезен для логирования.logits (
torch.Tensorформы(batch_size, num_queries, num_classes + 1)) — Логиты классификации (включая no-object) для всех запросов.pred_boxes (
torch.Tensorформы(batch_size, num_queries, 4)) — нормализованные координаты границ для всех запросов, представленные в виде (center_x, center_y, width, height). Эти значения нормализованы в диапазоне [0, 1] относительно размера каждого отдельного изображения в батче (без учета возможного выравнивания). Для получения ненормализованных границ используйте~DeformableDetrProcessor.post_process_object_detection.auxiliary_outputs (
list[Dict], необязательный) — Необязательный параметр, возвращается только при активации вспомогательных потерь (т. е. когдаconfig.auxiliary_lossустановлено вTrue) и при наличии меток. Это список словарей, содержащих два указанных выше ключа (logitsиpred_boxes) для каждого слоя декодера.init_reference_points (
torch.Tensorформы(batch_size, num_queries, 4)) — Начальные опорные точки, передаваемые через декодер Transformer.last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя модели.intermediate_hidden_states (
torch.Tensorформы(batch_size, config.decoder_layers, num_queries, d_model)) — Стек промежуточных скрытых состояний (выход каждого слоя декодера).intermediate_reference_points (
torch.Tensorформы(batch_size, config.decoder_layers, num_queries, 4)) — Стек промежуточных опорных точек (опорные точки каждого слоя декодера).enc_outputs_class (
torch.Tensorформы(batch_size, sequence_length, config.num_labels), необязательный, возвращается, еслиconfig.with_box_refine=Trueиconfig.two_stage=True) — Оценки предсказанных ограничивающих прямоугольников, где верхниеconfig.two_stage_num_proposalsпрямоугольников с наивысшими оценками выбираются в качестве региональных предложений на первом этапе. Результат бинарной классификации ограничивающих прямоугольников (т. е. передний план и фон).enc_outputs_coord_logits (
torch.Tensorформы(batch_size, sequence_length, 4), необязательный, возвращается, еслиconfig.with_box_refine=Trueиconfig.two_stage=True) — Логиты координат предсказанных ограничивающих прямоугольников на первом этапе.hidden_states (
tuple[torch.Tensor, ...], необязательный, возвращается при передачеoutput_hidden_states=Trueили когдаconfig.output_hidden_states=True) — Кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple[torch.Tensor, ...], необязательный, возвращается при передачеoutput_attentions=Trueили когдаconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
cross_attentions (
tuple[torch.Tensor, ...], необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания кросс-внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах кросс-внимания.
backbone_features (
listизtorch.Tensorформы(batch_size, config.num_channels, config.image_size, config.image_size)) — Признаки из backbone.
Примеры:
>>> 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'> )
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью RfDetrImageProcessor. Подробности см. в RfDetrImageProcessor.call() (processor_classиспользует RfDetrImageProcessor для обработки изображений). - pixel_mask (
torch.LongTensorформы(batch_size, height, width), , необязательный) — Маска для исключения пикселей padding из вычислений внимания. Значения маски из диапазона[0, 1]:- 1 для пикселей, которые являются реальными (т. е. не замаскированы),
- 0 для пикселей, являющихся заполнением (т. е. замаскированных).
- labels (
list[Dict]длины(batch_size,), необязательный) — Метки для вычисления функции потерь двудольного сопоставления. Список словарей, каждый из которых содержит как минимум следующие два ключа: ‘class_labels’ и ‘boxes’ (метки классов и ограничивающие рамки изображения в батче соответственно). Метки классов должны представлять собойtorch.LongTensorдлины(number of bounding boxes in the image,), а рамки —torch.Tensorформы(number of bounding boxes in the image, 4).
Прямой проход модели RF-DETR для сегментации объектов. Конвейер выполняется следующим образом:
- Обработайте визуальный вход с помощью базовой модели RF-DETR, чтобы получить многомасштабные пространственные признаки, эмбеддинги запросов и историю их преобразований.
- Сгенерировать логиты классификации и начальные маски сегментации из предложенных кодировщиком эмбеддингов запросов объектов (первый этап).
- Предскажите итоговые метки классификации и уточнённые ограничивающие рамки, используя последнее скрытое состояние декодера (второй этап).
- Передайте пространственные признаки высокого разрешения и скрытые состояния запросов через сегментационную головку, чтобы получить финальные детальные маски инстансов.
RfDetrDinov2Backbone
класс transformers.RfDetrDinov2Backbone
< source >( config: RfDetrDinov2Config )
Параметры
- config (RfDetrDinov2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Для загрузки весов модели используйте метод from_pretrained().
Backbone RfDetrDinov2, предназначенный для использования в таких фреймворках, как DETR и MaskFormer.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BackboneOutput or tuple(torch.Tensor)
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью RfDetrImageProcessor. Подробности см. в RfDetrImageProcessor.call() (processor_classиспользует RfDetrImageProcessor для обработки изображений).
Возвращает
BackboneOutput или tuple(torch.Tensor)
BackboneOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (RfDetrConfig) и входных данных.
Метод forward класса RfDetrDinov2Backbone переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
feature_maps (
tuple(torch.Tensor)формы(batch_size, num_channels, height, width)) — Карты признаков на каждом этапе.hidden_states (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_hidden_states=Trueили приconfig.output_hidden_states=True) — Кортеж изtorch.Tensor(один для вывода эмбеддингов + один для вывода каждого слоя) с формой(batch_size, sequence_length, hidden_size)или(batch_size, num_channels, height, width)в зависимости от базовой модели.Скрытые состояния модели на выходе каждого этапа, а также выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length). Применимо только в том случае, если базовая модель использует механизм внимания.Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Примеры:
>>> 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]