Лицензия YOLO
Назад к глоссарию Ultralytics

Scale-Invariant Feature Transform (SIFT)

Scale-Invariant Feature Transform (SIFT) — классический алгоритм, который находит ключевые точки и строит дескрипторы из 128 значений, устойчивые к масштабированию и повороту.

Scale-Invariant Feature Transform (SIFT) — классический алгоритм компьютерного зрения, который находит на изображении характерные локальные ключевые точки и описывает каждую из них вектором из 128 чисел, который почти не меняется при масштабировании или повороте изображения. Сопоставление этих дескрипторов позволяет программам связывать две фотографии одной и той же сцены, снятые с разных расстояний и под разными углами, — так из перекрывающихся фотографий создают панораму. SIFT — это разработанный вручную метод извлечения признаков, в отличие от обучаемых карт признаков сверточной нейронной сети.

История и основная идея#

Дэвид Лоу из Университета Британской Колумбии представил SIFT в статье «Распознавание объектов по локальным инвариантным к масштабу признакам», опубликованной на ICCV в 1999 году, а полное описание метода дал в статье «Характерные признаки изображений по ключевым точкам, инвариантным к масштабу» в International Journal of Computer Vision в 2004 году. Признаки SIFT инвариантны к масштабу и повороту, а также надежно сопоставляются при значительных аффинных искажениях, изменениях ракурса в 3D, шумах и освещении. Метод был запатентован, срок действия патента истек в 2020 году. В версии 4.4.0 OpenCV перенесла SIFT из репозитория contrib в основную библиотеку.

Размер объекта на фотографии не фиксирован, поэтому детектор должен искать структуры разных размеров. SIFT строит пространство масштабов, многократно применяя размытие по Гауссу с нарастающей силой и уменьшая разрешение изображений в группах, называемых октавами.

Как работает SIFT#

Алгоритм состоит из четырех этапов:

  1. Поиск экстремумов в пространстве масштабов: Разности между соседними уровнями размытия (разность гауссиан) приближенно работают как детектор областей. Пиксель становится кандидатом, если он является максимумом или минимумом среди 26 соседей в пространстве и масштабе.
  2. Локализация ключевых точек: Координаты кандидатов уточняются до субпиксельной точности. Точки с низким контрастом и точки на границах отбрасываются как нестабильные.
  3. Назначение ориентации: Гистограмма локальных направлений градиента вокруг каждой ключевой точки определяет преобладающую ориентацию, относительно которой измеряются все последующие параметры. Это обеспечивает инвариантность к повороту.
  4. Построение дескриптора: Окрестность разбивается на сетку 4 x 4, и в каждой ячейке строится гистограмма градиентов с 8 интервалами. В итоге получается 4 x 4 x 8 = 128 значений, которые нормализуются, чтобы уменьшить чувствительность к освещению.

Дескрипторы сопоставляются по евклидову расстоянию. Тест отношения Лоу оставляет совпадение, только если ближайший сосед заметно ближе второго по расстоянию. Поиск k ближайших соседей при k = 2 возвращает оба расстояния.

import cv2
from ultralytics.utils import ASSETS

# Load a sample image in grayscale and a half-size copy
img = cv2.imread(str(ASSETS / "bus.jpg"), cv2.IMREAD_GRAYSCALE)
small = cv2.resize(img, None, fx=0.5, fy=0.5)

# Detect keypoints and compute 128-dimensional descriptors
sift = cv2.SIFT_create()
kp1, des1 = sift.detectAndCompute(img, None)
kp2, des2 = sift.detectAndCompute(small, None)

# Match half-size descriptors to full-size ones, then apply Lowe's ratio test
pairs = cv2.BFMatcher().knnMatch(des2, des1, k=2)
good = [m for m, n in pairs if m.distance < 0.8 * n.distance]
print(f"{len(good)} of {len(kp2)} half-size keypoints matched at full size")

Выведенное число показывает, сколько ключевых точек, найденных на изображении половинного размера, удалось снова обнаружить на изображении полного размера: это и есть инвариантность к масштабу.

Применение#

SIFT стал стандартным методом поиска локальных признаков в задачах геометрического зрения:

  • Сшивание панорам: В методе автоматического сшивания панорам Брауна и Лоу (IJCV, 2007) признаки SIFT сопоставляются между перекрывающимися фотографиями, а для их совмещения вычисляется гомография. Этот этап совмещения называется регистрацией изображений.
  • Восстановление 3D-сцены: В проекте Photo Tourism (Снавели, Зейтц и Сзелиски, 2006) признаки SIFT сопоставляются на фотографиях туристических мест, а эпиполярная геометрия используется для восстановления положений камер и разреженной 3D-структуры.
  • Локализация робота: В 2001 году Се, Лоу и Литтл использовали ориентиры SIFT для локализации и построения карты мобильным роботом. Этот метод стал предшественником современной визуальной SLAM.
  • Распознавание экземпляров: В статье Лоу 2004 года игрушечный поезд и лягушка распознаются в загроможденной, частично перекрытой сцене всего по 3 совпавшим признакам.

В Ultralytics YOLO отслеживании объектов BoT-SORT компенсирует движение камеры между кадрами, а параметр gmc_method: sift в конфигурации трекера включает сопоставление признаков SIFT для этой оценки вместо разреженного оптического потока, используемого по умолчанию.

SIFT сопоставляет одни и те же физические точки на разных ракурсах, что подходит для установления соответствий и геометрических задач. Обнаружение объектов, напротив, предсказывает категории и расположение объектов. Сопоставление с шаблоном перемещает фиксированный фрагмент изображения и не работает при изменении масштаба или поворота.

SIFT медленнее ORB — бинарного дескриптора, представленного Рубли и коллегами в 2011 году в качестве альтернативы SIFT и SURF. Кроме того, метод плохо работает на поверхностях без текстуры и при очень сильном изменении ракурса; для распознавания на уровне категорий его в основном заменили обучаемые модели.

В тестах Лоу 2004 года отбрасывание совпадений с отношением расстояний выше 0.8 устранило 90% ложных совпадений, отбросив менее 5% правильных; использовались изображения со случайными изменениями масштаба и поворота, поворотом по глубине на 30 градусов и шумом 2%, сопоставленные с 40,000 ключевыми точками.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения