Transformers documentation
EfficientLoFTR
Эта модель была опубликована в HF papers 07.03.2024 и добавлена в Hugging Face Transformers 22.07.2025.
EfficientLoFTR
EfficientLoFTR — это эффективный метод локального сопоставления признаков без детектора, который находит полуплотные соответствия между изображениями со скоростью, сопоставимой с разреженными методами. Метод основан на исходной архитектуре LoFTR, но включает существенные улучшения как в части эффективности, так и точности. Ключевая инновация — механизм агрегированного внимания с адаптивным выбором токенов, благодаря которому модель работает примерно в 2,5 раза быстрее LoFTR при более высокой точности. EfficientLoFTR даже превосходит по скорости передовые эффективные разреженные пайплайны сопоставления, такие как SuperPoint + LightGlue, что делает его пригодным для крупномасштабных или чувствительных к задержкам задач, например поиска изображений и 3D-реконструкции.
Эта модель была предоставлена пользователем stevenbucaille.
Щёлкните по моделям EfficientLoFTR в боковой панели справа, чтобы увидеть дополнительные примеры применения EfficientLoFTR к различным задачам компьютерного зрения.
Пример ниже показывает, как сопоставлять ключевые точки между двумя изображениями с помощью Pipeline или класса AutoModel.
from transformers import pipeline
keypoint_matcher = pipeline(task="keypoint-matching", model="zju-community/efficientloftr")
url_0 = "https://raw.githubusercontent.com/magicleap/SuperGluePretrainedNetwork/refs/heads/master/assets/phototourism_sample_images/united_states_capitol_98169888_3347710852.jpg"
url_1 = "https://raw.githubusercontent.com/magicleap/SuperGluePretrainedNetwork/refs/heads/master/assets/phototourism_sample_images/united_states_capitol_26757027_6717084061.jpg"
results = keypoint_matcher([url_0, url_1], threshold=0.9)
print(results[0])
# {'keypoint_image_0': {'x': ..., 'y': ...}, 'keypoint_image_1': {'x': ..., 'y': ...}, 'score': ...}import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModelForKeypointMatching
url_image1 = "https://raw.githubusercontent.com/magicleap/SuperGluePretrainedNetwork/refs/heads/master/assets/phototourism_sample_images/united_states_capitol_98169888_3347710852.jpg"
image1 = Image.open(requests.get(url_image1, stream=True).raw)
url_image2 = "https://raw.githubusercontent.com/magicleap/SuperGluePretrainedNetwork/refs/heads/master/assets/phototourism_sample_images/united_states_capitol_26757027_6717084061.jpg"
image2 = Image.open(requests.get(url_image2, stream=True).raw)
images = [image1, image2]
processor = AutoImageProcessor.from_pretrained("zju-community/efficientloftr")
model = AutoModelForKeypointMatching.from_pretrained("zju-community/efficientloftr", device_map="auto")
inputs = processor(images, return_tensors="pt").to(model.device)
with torch.inference_mode():
outputs = model(**inputs)
# Post-process to get keypoints and matches
image_sizes = [[(image.height, image.width) for image in images]]
processed_outputs = processor.post_process_keypoint_matching(outputs, image_sizes, threshold=0.2)Примечания
EfficientLoFTR разработан с акцентом на эффективность при сохранении высокой точности. Он использует механизм агрегированного внимания с адаптивным выбором токенов, что снижает вычислительные затраты по сравнению с оригинальной моделью LoFTR.
from transformers import AutoImageProcessor, AutoModelForKeypointMatching import torch from PIL import Image import requests processor = AutoImageProcessor.from_pretrained("zju-community/efficientloftr") model = AutoModelForKeypointMatching.from_pretrained("zju-community/efficientloftr", device_map="auto") # EfficientLoFTR requires pairs of images images = [image1, image2] inputs = processor(images, return_tensors="pt").to(model.device) with torch.inference_mode(): outputs = model(**inputs) # Extract matching information keypoints = outputs.keypoints # Keypoints in both images matches = outputs.matches # Matching indices matching_scores = outputs.matching_scores # Confidence scoresМодель генерирует полуплотные соответствия, обеспечивая хороший баланс между плотностью соответствий и вычислительной эффективностью. Она отлично справляется с большими изменениями точки обзора и сценариями с бедной текстурой.
Для более наглядной визуализации и анализа используйте метод post_process_keypoint_matching(), чтобы получить соответствия в более удобном для чтения формате.
# Process outputs for visualization image_sizes = [[(image.height, image.width) for image in images]] processed_outputs = processor.post_process_keypoint_matching(outputs, image_sizes, threshold=0.2) for i, output in enumerate(processed_outputs): print(f"For the image pair {i}") for keypoint0, keypoint1, matching_score in zip( output["keypoints0"], output["keypoints1"], output["matching_scores"] ): print(f"Keypoint at {keypoint0.numpy()} matches with keypoint at {keypoint1.numpy()} with score {matching_score}")Визуализируйте совпадения между изображениями с помощью встроенной функции построения графиков.
# Easy visualization using the built-in plotting method visualized_images = processor.visualize_keypoint_matching(images, processed_outputs)EfficientLoFTR использует новый двухэтапный слой корреляции, который обеспечивает точные субпиксельные соответствия, улучшая модуль тонкой корреляции оригинального LoFTR.

Ресурсы
- См. оригинальный репозиторий EfficientLoFTR для получения дополнительных примеров и деталей реализации.
- Страница проекта EfficientLoFTR с интерактивными демонстрациями и дополнительной информацией.
EfficientLoFTRConfig
класс transformers.EfficientLoFTRConfig
< 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 = Nonestage_num_blocks: list[int] | None = Noneout_features: list[int] | None = Nonestage_stride: list[int] | None = Nonehidden_size: int = 256activation_function: str = 'relu'q_aggregation_kernel_size: int = 4kv_aggregation_kernel_size: int = 4q_aggregation_stride: int = 4kv_aggregation_stride: int = 4num_attention_layers: int = 4num_attention_heads: int = 8attention_dropout: float | int = 0.0attention_bias: bool = Falsemlp_activation_function: str = 'leaky_relu'coarse_matching_skip_softmax: bool = Falsecoarse_matching_threshold: float = 0.2coarse_matching_temperature: float = 0.1coarse_matching_border_removal: int = 2fine_kernel_size: int = 8batch_norm_eps: float = 1e-05rope_parameters: dict | None = Nonefine_matching_slice_dim: int = 8fine_matching_regress_temperature: float = 10.0initializer_range: float = 0.02 )
Параметры
- stage_num_blocks (
List, необязательный, по умолчанию [1, 2, 4, 14]) — Количество блоков на каждом этапе - out_features (
list[int], необязательный) — Имена промежуточных скрытых состояний (карт признаков), которые необходимо вернуть из backbone. Одно из значений:"stem","stage1","stage2"и т. д. - stage_stride (
List, необязательный, по умолчанию [2, 1, 2, 2]) — Шаг, используемый на каждом этапе - hidden_size (
int, необязательный, по умолчанию256) — Размерность скрытых представлений. - activation_function (
str, необязательный, по умолчаниюrelu) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - q_aggregation_kernel_size (
int, необязательный, по умолчанию 4) — Размер ядра для агрегации состояний запросов в сети слияния - kv_aggregation_kernel_size (
int, необязательный, по умолчанию 4) — Размер ядра для агрегации состояний ключей и значений в сети слияния - q_aggregation_stride (
int, необязательный, по умолчанию 4) — Шаг агрегации состояний запросов в сети слияния - kv_aggregation_stride (
int, необязательный, по умолчанию 4) — Шаг агрегации состояний ключей и значений в сети слияния - num_attention_layers (
int, необязательный, по умолчанию 4) — Количество слоев внимания в LocalFeatureTransformer - num_attention_heads (
int, необязательный, по умолчанию8) — Количество головок внимания в каждом слое внимания декодера Transformer. - attention_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для вероятностей внимания. - attention_bias (
bool, необязательный, по умолчаниюFalse) — Использовать ли смещение (bias) в слоях проекции query, key, value и output при само-внимании. - mlp_activation_function (
str, необязательный, по умолчанию"leaky_relu") — Функция активации, используемая в слое mlp внимания. - coarse_matching_skip_softmax (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли пропускать softmax на этапе грубого сопоставления. - coarse_matching_threshold (
float, необязательный, по умолчанию 0.2) — Порог минимальной оценки, необходимой для совпадения. - coarse_matching_temperature (
float, необязательный, по умолчанию 0.1) — Температура, применяемая к матрице грубого сходства - coarse_matching_border_removal (
int, необязательный, по умолчанию 2) — Размер границы, удаляемой при грубом сопоставлении - fine_kernel_size (
int, необязательный, по умолчанию 8) — Размер ядра, используемый для точного сопоставления признаков - batch_norm_eps (
float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями batch normalization - rope_parameters (
dict, необязательный) — Словарь, содержащий параметры конфигурации для эмбеддингов RoPE. В словаре должно быть указано значение дляrope_thetaи, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длиннымиmax_position_embeddings. - fine_matching_slice_dim (
int, необязательный, по умолчанию 8) — Размер среза, используемого для разделения тонких признаков на первом и втором этапах тонкого сопоставления. - fine_matching_regress_temperature (
float, необязательный, по умолчанию 10.0) — Температура, применяемая к матрице тонкого сходства - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
Это класс конфигурации для хранения настроек модели EfficientLoFTRModel. Он используется для создания модели Efficientloftr в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации zju-community/efficientloftr
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Примеры:
>>> from transformers import EfficientLoFTRConfig, EfficientLoFTRForKeypointMatching
>>> # Initializing a EfficientLoFTR configuration
>>> configuration = EfficientLoFTRConfig()
>>> # Initializing a model from the EfficientLoFTR configuration
>>> model = EfficientLoFTRForKeypointMatching(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configEfficientLoFTRImageProcessor
класс transformers.EfficientLoFTRImageProcessor
< source >( **kwargs: *<class 'transformers.models.efficientloftr.image_processing_efficientloftr.EfficientLoFTRImageProcessorKwargs'> )
Параметры
- 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, по умолчанию{'height' -- 480, 'width': 640}): Определяет максимальные размеры входных данных для модели. - 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, по умолчаниюNone) — Нужно ли нормализовать изображение. - 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) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_grayscale (
bool, kwargs, optional, по умолчаниюself.do_grayscale) — Следует ли преобразовать изображение в оттенки серого. Может быть переопределено параметромdo_grayscaleв методеpreprocess.
Создает процессор изображений EfficientLoFTRImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]**kwargs: *<class 'transformers.models.efficientloftr.image_processing_efficientloftr.EfficientLoFTRImageProcessorKwargs'> ) → ~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. - 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) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_grayscale (
bool, kwargs, optional, по умолчаниюself.do_grayscale) — Следует ли преобразовать изображение в оттенки серого. Может быть переопределено параметромdo_grayscaleв методеpreprocess.
Возвращает
~image_processing_base.BatchFeature
- data (
dict) — Словарь списков/массивов/тензоров, возвращаемый методом call (‘pixel_values’ и т. д.). - tensor_type (
Union[None, str, TensorType], необязательный) — Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.
post_process_keypoint_matching
< source >( outputs: EfficientLoFTRKeypointMatchingOutputtarget_sizes: transformers.utils.generic.TensorType | list[tuple]threshold: float = 0.0 ) → List[Dict]
Параметры
- outputs (
EfficientLoFTRKeypointMatchingOutput) — Сырые выходные данные модели. - target_sizes (
torch.TensorилиList[Tuple[Tuple[int, int]]], необязательный) — тензор формы(batch_size, 2, 2)или список кортежей кортежей (Tuple[int, int]), содержащий целевой размер(height, width)каждого изображения в батче. Это должен быть исходный размер изображения (до любой обработки). - threshold (
float, необязательный, по умолчанию 0.0) — Порог для отфильтровывания совпадений с низкой оценкой.
Возвращает
List[Dict]
Список словарей, где каждый словарь содержит ключевые точки на первом и втором изображении пары, оценки соответствия и индексы соответствия.
Преобразует необработанный вывод EfficientLoFTRKeypointMatchingOutput в списки ключевых точек, оценок и дескрипторов
с координатами, абсолютными относительно исходных размеров изображения.
visualize_keypoint_matching
< source >( imageskeypoint_matching_output: list ) → List[PIL.Image.Image]
Параметры
- images —
Пары изображений для построения графика. Аналогично
EfficientLoFTRImageProcessor.preprocess. Ожидается либо список из 2 изображений, либо список списков по 2 изображения, значения пикселей которых находятся в диапазоне от 0 до 255. - keypoint_matching_output (List[Dict[str, torch.Tensor]]) — Результат сопоставления ключевых точек после постобработки
Возвращает
List[PIL.Image.Image]
Список изображений PIL, каждое из которых содержит пары изображений, расположенные рядом, с обнаруженными ключевыми точками, а также соответствия между ними.
Строит пары изображений рядом друг с другом, отображая обнаруженные ключевые точки и соответствия между ними.
EfficientLoFTRImageProcessorPil
класс transformers.EfficientLoFTRImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.efficientloftr.image_processing_pil_efficientloftr.EfficientLoFTRImageProcessorKwargs'> )
Параметры
- 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, по умолчанию{'height' -- 480, 'width': 640}): Определяет максимальные размеры входных данных для модели. - 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, по умолчаниюNone) — Нужно ли нормализовать изображение. - 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) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_grayscale (
bool, kwargs, optional, по умолчаниюself.do_grayscale) — Следует ли преобразовать изображение в оттенки серого. Может быть переопределено параметромdo_grayscaleв методеpreprocess.
Создает процессор изображений EfficientLoFTRImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]**kwargs: *<class 'transformers.models.efficientloftr.image_processing_pil_efficientloftr.EfficientLoFTRImageProcessorKwargs'> ) → ~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. - 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) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_grayscale (
bool, kwargs, optional, по умолчаниюself.do_grayscale) — Следует ли преобразовать изображение в оттенки серого. Может быть переопределено параметромdo_grayscaleв методеpreprocess.
Возвращает
~image_processing_base.BatchFeature
- data (
dict) — Словарь списков/массивов/тензоров, возвращаемый методом call (‘pixel_values’ и т. д.). - tensor_type (
Union[None, str, TensorType], необязательный) — Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.
post_process_keypoint_matching
< source >( outputs: EfficientLoFTRKeypointMatchingOutputtarget_sizes: transformers.utils.generic.TensorType | list[tuple]threshold: float = 0.0 ) → List[Dict]
Параметры
- outputs (
EfficientLoFTRKeypointMatchingOutput) — Сырые выходные данные модели. - target_sizes (
torch.TensorилиList[Tuple[Tuple[int, int]]], необязательный) — тензор формы(batch_size, 2, 2)или список кортежей кортежей (Tuple[int, int]), содержащий целевой размер(height, width)каждого изображения в батче. Это должен быть исходный размер изображения (до любой обработки). - threshold (
float, необязательный, по умолчанию 0.0) — Порог для отфильтровывания совпадений с низкой оценкой.
Возвращает
List[Dict]
Список словарей, где каждый словарь содержит ключевые точки на первом и втором изображении пары, оценки соответствия и индексы соответствия.
Преобразует необработанный вывод EfficientLoFTRKeypointMatchingOutput в списки ключевых точек, оценок и дескрипторов
с координатами, абсолютными относительно исходных размеров изображения.
visualize_keypoint_matching
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]keypoint_matching_output: list ) → List[PIL.Image.Image]
Параметры
- images (
ImageInput) — Пары изображений для построения графика. АналогичноEfficientLoFTRImageProcessor.preprocess. Ожидается либо список из 2 изображений, либо список списков по 2 изображения, значения пикселей которых находятся в диапазоне от 0 до 255. - keypoint_matching_output (List[Dict[str, torch.Tensor]]) — Результат сопоставления ключевых точек после постобработки
Возвращает
List[PIL.Image.Image]
Список изображений PIL, каждое из которых содержит пары изображений, расположенные рядом, с обнаруженными ключевыми точками, а также соответствия между ними.
Строит пары изображений рядом друг с другом, отображая обнаруженные ключевые точки и соответствия между ними.
EfficientLoFTRModel
класс transformers.EfficientLoFTRModel
< source >( config: EfficientLoFTRConfig )
Параметры
- config (EfficientLoFTRConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель EfficientLoFTR, принимающая на вход изображения и выдающая их признаки.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: Tensorlabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BackboneOutput or tuple(torch.Tensor)
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью EfficientLoFTRImageProcessor. Подробности см. в EfficientLoFTRImageProcessor.call() (processor_classиспользует EfficientLoFTRImageProcessor для обработки изображений). - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне[0, ..., config.vocab_size]или быть равны -100 (см. docstringinput_ids). Токены с индексами, установленными в-100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне[0, ..., config.vocab_size].
Возвращает
BackboneOutput или tuple(torch.Tensor)
BackboneOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (EfficientLoFTRConfig) и входных данных.
Метод forward модели EfficientLoFTRModel переопределяет специальный метод __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, AutoModel
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "https://github.com/magicleap/SuperGluePretrainedNetwork/blob/master/assets/phototourism_sample_images/london_bridge_78916675_4568141288.jpg?raw=true"
>>> with httpx.stream("GET", url) as response:
... image1 = Image.open(BytesIO(response.read()))
>>> url = "https://github.com/magicleap/SuperGluePretrainedNetwork/blob/master/assets/phototourism_sample_images/london_bridge_19481797_2295892421.jpg?raw=true"
>>> with httpx.stream("GET", url) as response:
... image2 = Image.open(BytesIO(response.read()))
>>> images = [image1, image2]
>>> processor = AutoImageProcessor.from_pretrained("zju-community/efficient_loftr")
>>> model = AutoModel.from_pretrained("zju-community/efficient_loftr")
>>> with torch.no_grad():
>>> inputs = processor(images, return_tensors="pt")
>>> outputs = model(**inputs)EfficientLoFTRForKeypointMatching
класс transformers.EfficientLoFTRForKeypointMatching
< source >( config: EfficientLoFTRConfig )
Параметры
- config (EfficientLoFTRConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель EfficientLoFTR, принимающая на вход изображения и выдающая их соответствие.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( pixel_values: Tensorlabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EfficientLoFTRKeypointMatchingOutput or tuple(torch.Tensor)
Параметры
- pixel_values (
torch.Tensorформы(batch_size, num_channels, image_size, image_size)) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощьюimage_processor_class. Подробности см. вimage_processor_class.__call__(processor_classиспользуетimage_processor_classдля обработки изображений). - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне[0, ..., config.vocab_size]или быть равны -100 (см. docstringinput_ids). Токены с индексами, установленными в-100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне[0, ..., config.vocab_size].
Возвращает
EfficientLoFTRKeypointMatchingOutput или tuple(torch.Tensor)
EfficientLoFTRKeypointMatchingOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (None) и входных данных.
Метод forward класса EfficientLoFTRForKeypointMatching переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
- loss (
torch.Tensorформы(1,), необязательный) — Потери, вычисленные во время обучения. - matches (
torch.Tensorформы(batch_size, 2, num_matches)) — Индекс ключевой точки, найденной на другом изображении. - matching_scores (
torch.Tensorформы(batch_size, 2, num_matches)) — Оценки предсказанных совпадений. - keypoints (
torch.Tensorформы(batch_size, num_keypoints, 2)) — Абсолютные координаты (x, y) предсказанных ключевых точек на заданном изображении. - hidden_states (
tuple[torch.Tensor, ...], необязательный) — Кортежtorch.Tensor(по одному на выход каждого этапа) формы(batch_size, 2, num_channels, num_keypoints), возвращается при передачеoutput_hidden_states=Trueили когдаconfig.output_hidden_states=True) - attentions (
tuple[torch.Tensor, ...], необязательно) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, 2, num_heads, num_keypoints, num_keypoints), возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True)
Примеры:
>>> from transformers import AutoImageProcessor, AutoModel
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "https://github.com/magicleap/SuperGluePretrainedNetwork/blob/master/assets/phototourism_sample_images/london_bridge_78916675_4568141288.jpg?raw=true"
>>> with httpx.stream("GET", url) as response:
... image1 = Image.open(BytesIO(response.read()))
>>> url = "https://github.com/magicleap/SuperGluePretrainedNetwork/blob/master/assets/phototourism_sample_images/london_bridge_19481797_2295892421.jpg?raw=true"
>>> with httpx.stream("GET", url) as response:
... image2 = Image.open(BytesIO(response.read()))
>>> images = [image1, image2]
>>> processor = AutoImageProcessor.from_pretrained("zju-community/efficient_loftr")
>>> model = AutoModel.from_pretrained("zju-community/efficient_loftr")
>>> with torch.no_grad():
>>> inputs = processor(images, return_tensors="pt")
>>> outputs = model(**inputs)