Что такое масштабно-инвариантное преобразование признаков (SIFT)?
Узнай, как алгоритм SIFT обнаруживает и описывает инвариантные к масштабу и повороту ключевые точки, как работают его четыре этапа и где он применяется в компьютерном зрении.
Abirami Vina13 мин. чтения
Чтобы наглядно разобраться в концепциях, рассмотренных в этой статье, посмотри видео ниже.
Сегодня многие привычные нам умные устройства — от телефонов и камер до систем умного дома — оснащены решениями на основе ИИ, которые распознают лица, объекты и даже целые визуальные сцены. Эта возможность обеспечивается компьютерным зрением — областью искусственного интеллекта, которая позволяет машинам понимать и интерпретировать изображения и видео.
Например, если сфотографировать Эйфелеву башню под любым углом и с любого расстояния, устройство обычно все равно распознает ее с помощью компьютерного зрения и поместит снимок в нужную папку галереи. Это кажется простым, но распознавать объекты не всегда легко. Изображения могут сильно различаться размером, углом съемки, масштабом или освещением, поэтому машинам трудно стабильно распознавать объекты.
Чтобы решить эту проблему, исследователи разработали алгоритм компьютерного зрения под названием Scale Invariant Feature Transform, или SIFT. Этот алгоритм позволяет обнаруживать объекты при разных условиях съемки. Разработанный Дэвидом Лоу в 1999 году, SIFT предназначен для поиска и описания уникальных ключевых точек на изображении — например, углов, границ или узоров, которые остаются узнаваемыми даже при изменении размера изображения, его повороте или освещении.
До того как модели компьютерного зрения на основе глубокого обучения, такие как Ultralytics YOLO11, стали популярными, в компьютерном зрении широко применялся метод SIFT. Это был стандартный подход для таких задач, как распознавание объектов — определение конкретного предмета на фотографии — и сопоставление изображений, при котором фотографии выравнивают по совпадающим признакам.
В этой статье мы кратко рассмотрим, что такое SIFT, как он работает на базовом уровне и почему важен для развития компьютерного зрения.
Почему алгоритм SIFT важен для компьютерного зрения#
Один и тот же объект на изображении может выглядеть по-разному. Например, кофейную кружку могут сфотографировать сверху, сбоку, при ярком солнечном свете или под теплым светом лампы. Кроме того, кружка кажется больше, когда находится близко к камере, и меньше, когда она далеко.
Все эти различия усложняют обучение компьютера распознаванию объектов. Эта задача компьютерного зрения, известная как обнаружение объектов, требует, чтобы модели Vision AI точно определяли объекты и находили их на изображении, даже если меняются их размер, угол съемки или условия освещения.
Для этого компьютерное зрение использует процесс, называемый извлечением признаков, или обнаружением признаков. Вместо того чтобы пытаться сразу понять все изображение, модель ищет характерные особенности: четкие углы, уникальные узоры или текстуры, которые остаются узнаваемыми при разных углах съемки, масштабах и условиях освещения.
Именно для этого предназначен Scale Invariant Feature Transform, или SIFT. SIFT — алгоритм обнаружения и описания признаков, который позволяет надежно распознавать объекты на изображениях независимо от условий съемки.
Устойчивость к изменению масштаба#
У алгоритма SIFT есть несколько важных свойств, полезных для распознавания объектов. Одно из ключевых свойств называется устойчивостью к изменению масштаба. Это значит, что SIFT распознает разные части объекта, даже если объект выглядит крупным и находится близко к камере или кажется маленьким и находится далеко. Алгоритм может находить одни и те же ключевые точки, даже если объект виден не целиком.
Для этого используется концепция масштабного пространства. Проще говоря, изображение размывают с разной интенсивностью, создавая несколько его версий. Затем SIFT анализирует эти версии и ищет узоры и детали, которые остаются неизменными независимо от изменения размера или резкости изображения.
Например, дорожный знак, сфотографированный с расстояния в несколько метров, будет выглядеть намного крупнее, чем тот же знак вдали. Но SIFT все равно обнаружит одни и те же характерные признаки. Благодаря этому два изображения можно правильно сопоставить, даже если знак снят в совершенно разных масштабах.
Устойчивость к повороту#
Объекты на изображениях могут быть повернуты, иногда даже перевернуты вверх ногами. SIFT справляется с этим благодаря свойству, которое называется устойчивостью к повороту. Каждой найденной ключевой точке алгоритм назначает согласованное направление на основе локальных градиентов изображения. Благодаря этому один и тот же объект можно распознать при любом повороте.
Можно представить, что у каждой ключевой точки есть маленькая стрелка, указывающая направление. Выравнивая признаки по этим направлениям, SIFT обеспечивает правильное сопоставление ключевых точек даже при повороте объекта. Например, ориентир на пейзажной фотографии можно правильно распознать, даже если другой снимок этого ориентира сделан камерой, наклоненной под углом.
Устойчивость к другим изменениям изображения#
Помимо размера и поворота, изображения могут меняться и по другим параметрам, например из-за изменения освещения. Освещение объекта может стать ярче или тусклее, угол камеры может слегка измениться, а изображение может быть размытым или зашумленным.
SIFT рассчитан на работу с такими изменениями. Он фокусируется на характерных ключевых точках с высокой контрастностью, поскольку на эти признаки меньше влияют изменения освещения и небольшие сдвиги точки обзора. Поэтому SIFT обычно надежнее простых методов обнаружения границ или углов, которые часто дают сбой при изменении условий.

Рис. 1. Ключевые точки SIFT, извлеченные из (a) дождливого изображения и (b) соответствующего исходного изображения без дождя. (Источник)
Представь картину в галерее. Ее можно распознать, если она сфотографирована при мягком дневном свете, под яркими искусственными прожекторами или даже с легким размытием из-за движения камеры в руках. Несмотря на эти различия, ключевые точки остаются достаточно стабильными для точного сопоставления.
Как работает алгоритм Scale-Invariant Feature Transform (SIFT)#
Теперь рассмотрим, как работает алгоритм SIFT. Этот процесс можно разделить на четыре основных этапа: обнаружение ключевых точек, локализация ключевых точек, назначение ориентации и описание ключевых точек.
Шаг 1. Обнаружение экстремумов в масштабном пространстве#
На первом этапе нужно найти и обнаружить ключевые точки — характерные области изображения, например углы или резкие изменения текстуры, которые помогают отслеживать или распознавать объект.
Чтобы возможные ключевые точки можно было распознавать при любом размере, SIFT строит так называемое масштабное пространство. Это набор изображений, создаваемый путем постепенного размытия исходного изображения фильтром Гаусса — методом сглаживания — и группировки результатов по слоям, которые называются октавами. В каждой октаве содержится одно и то же изображение с разной степенью размытия, а следующая октава содержит уменьшенную версию изображения.
Вычитая одно размытое изображение из другого, SIFT вычисляет разность гауссианов (DoG), которая выделяет области с резким изменением яркости. Эти области выбираются в качестве возможных ключевых точек, поскольку они остаются стабильными при увеличении или уменьшении изображения.

Рис. 2. DoG выделяет ключевые структуры, вычитая изображения с разной степенью размытия. (Источник)
Шаг 2. Локализация ключевых точек#
Не все возможные ключевые точки полезны: некоторые из них могут быть слабыми или нестабильными. Чтобы уточнить их, SIFT использует математический метод под названием разложение в ряд Тейлора, который помогает точнее оценить положение ключевой точки.
На этом шаге ненадежные точки удаляются. Ключевые точки с низкой контрастностью, сливающиеся с окружением, отбрасываются, как и точки, расположенные непосредственно на границах, поскольку их положение может легко смещаться. После фильтрации остаются только самые стабильные и характерные ключевые точки.
Шаг 3. Назначение ориентации#
После определения стабильных ключевых точек SIFT делает их устойчивыми к повороту: их можно сопоставлять, даже если изображение повернуто на бок или перевернуто вверх ногами. Для этого SIFT анализирует изменения яркости вокруг каждой ключевой точки — градиент. Градиенты показывают направление и силу изменения интенсивности пикселей, а вместе они описывают локальную структуру вокруг точки.
Для каждой ключевой точки SIFT анализирует градиенты в окружающей области и группирует их в гистограмму ориентаций. Самый высокий пик на этой гистограмме показывает основное направление изменения интенсивности, которое и назначается ориентацией ключевой точки. Для построения гистограммы используются и направления градиентов, показывающие, где меняется интенсивность, и величины градиентов, показывающие силу этого изменения.
Если есть другие почти такие же высокие пики, SIFT назначает одной ключевой точке несколько ориентаций. Это помогает не потерять важные признаки, когда объекты сняты под необычными углами. Выравнивая каждую ключевую точку по ее ориентации, SIFT обеспечивает согласованность дескрипторов, создаваемых на следующем шаге.
Иными словами, даже если два изображения одного объекта повернуты по-разному, ключевые точки, выровненные по ориентации, все равно будут правильно сопоставлены. Благодаря этому шагу SIFT хорошо справляется с поворотами и значительно превосходит более ранние методы обнаружения признаков по устойчивости.

Рис. 3. Подробнее о шаге 3 алгоритма SIFT (Источник)
Шаг 4. Дескриптор ключевой точки#
На последнем шаге SIFT создает описание каждой ключевой точки, чтобы ее можно было распознать на других изображениях.
Для этого SIFT анализирует небольшой квадратный участок вокруг каждой ключевой точки размером примерно 16 на 16 пикселей. Сначала участок выравнивается по ориентации ключевой точки, чтобы поворот на него не влиял. Затем участок делится на сетку из 4 на 4 маленьких квадратов.
В каждом маленьком квадрате SIFT измеряет, как меняется яркость в разных направлениях. Эти изменения записываются в гистограмму — график, который показывает, какие направления встречаются чаще всего. Для каждого квадрата строится своя гистограмма, поэтому 16 квадратов дают 16 гистограмм.
Наконец, эти гистограммы объединяются в единый список из 128 чисел. Этот список называется вектором признаков и служит своеобразным отпечатком ключевой точки. Поскольку он содержит уникальные данные о текстуре и структуре вокруг точки, этот отпечаток позволяет сопоставлять одну и ту же ключевую точку на разных изображениях, даже если изображения имеют разный размер, повернуты или освещены по-разному.

Рис. 4. Общая схема работы SIFT (Источник)
Основные области применения SIFT в компьютерном зрении#
Теперь, когда мы лучше понимаем, что такое SIFT и как он работает, рассмотрим некоторые примеры его применения в компьютерном зрении.
Распознавание и обнаружение объектов#
Одно из основных применений SIFT — распознавание и обнаружение объектов. Это означает, что компьютер обучают распознавать объекты на изображениях и находить их, даже если они выглядят по-разному. Например, SIFT может обнаружить книгу независимо от того, находится ли она рядом с камерой, далеко от нее или повернута под углом.
Это работает потому, что SIFT извлекает характерные и стабильные ключевые точки. Если объединить эти ключевые точки с дескрипторами SIFT, получатся признаки SIFT — надежный способ сопоставлять один и тот же объект на разных изображениях. Эти признаки отражают уникальные детали объекта, которые остаются неизменными, поэтому изображения можно надежно сопоставлять по признакам даже при изменении размера, положения или ориентации объекта.

Рис. 5. Использование SIFT для распознавания обложки книги на новом изображении, снятом под другим углом, чем исходное. Изображение предоставлено автором.
До того как глубокое обучение стало популярным, SIFT был одним из самых надежных методов создания систем распознавания объектов. Его широко применяли в исследованиях и задачах, где нужно было сопоставлять объекты в больших наборах изображений, хотя этот метод часто требовал значительных вычислительных ресурсов.
Сшивание изображений и создание панорам#
SIFT также можно использовать для создания панорам — широких фотографий, полученных путем сшивания нескольких снимков. С помощью SIFT характерные ключевые точки находят на перекрывающихся участках разных изображений, а затем сопоставляют друг с другом. Эти совпадения служат опорными точками и помогают определить, как выровнять снимки при сшивании.
После сопоставления алгоритмы сшивания рассчитывают правильное выравнивание, часто используя геометрические преобразования, которые проецируют одно изображение на другое. Затем изображения объединяются так, чтобы швы исчезли. В результате получается цельная панорама, похожая на одну широкую фотографию, хотя она создана из нескольких снимков.
3D-реконструкция и робототехника#
Еще одно интересное применение SIFT — 3D-реконструкция, при которой несколько 2D-фотографий, снятых под разными углами, объединяются в трехмерную модель. SIFT находит и сопоставляет одни и те же точки на этих изображениях.
После сопоставления 3D-положение этих точек можно оценить с помощью триангуляции — метода, который вычисляет глубину по разным точкам обзора. Этот процесс является частью метода «структура по движению» (SfM), который использует несколько перекрывающихся изображений для оценки трехмерной формы сцены и положения камер, сделавших снимки.
В результате обычно получается 3D-облако точек — набор точек в пространстве, очерчивающих объект или окружающую среду. SIFT был одним из первых инструментов, сделавших метод «структура по движению» практически применимым. Сегодня более новые методы быстрее и распространены шире, но SIFT по-прежнему используют, когда точность важнее скорости.
SIFT также применялся в робототехнике, особенно в визуальной SLAM (одновременной локализации и картографировании). SLAM позволяет роботу определять свое местоположение и одновременно строить карту окружающей среды.
Ключевые точки SIFT служат надёжными ориентирами, которые робот может распознавать в разных кадрах, даже если меняются освещение или угол обзора. Отслеживая эти ориентиры, робот может оценивать своё положение и обновлять карту на ходу. Сегодня в робототехнике чаще используют более быстрые детекторы признаков, но SIFT сыграл важную роль в ранних системах SLAM и по-прежнему незаменим в случаях, когда надёжность важнее скорости.
Преимущества и особенности SIFT#
Алгоритм SIFT широко используется в компьютерном зрении и известен своей надёжностью, однако у него есть и компромиссные стороны. Поэтому важно взвесить его плюсы и минусы, прежде чем решать, подходит ли он для проекта. Давай рассмотрим его основные преимущества и ограничения.
Основные преимущества SIFT#
Вот некоторые преимущества использования алгоритма SIFT:
- Инвариантность к масштабу и повороту: SIFT обеспечивает ключевые точки, инвариантные к масштабу и относительно стабильные при изменении размеров или ориентации объектов. Это значительный шаг вперёд по сравнению с более ранними детекторами признаков.
- Умеренная устойчивость к изменениям освещения и ракурса: SIFT справляется с изменениями яркости и контрастности, а также с небольшими сдвигами точки обзора, но в более экстремальных условиях работает менее надёжно.
- Работа в загромождённых сценах и при частичном перекрытии объектов: SIFT обнаруживает множество локальных ключевых точек, поэтому часто может распознать объект, даже если часть его закрыта или фон сложный.
Особенности производительности и альтернативы#
Вот некоторые недостатки использования алгоритма SIFT:
- Высокие вычислительные затраты: Многоэтапный процесс SIFT и подробные дескрипторы делают его медленнее и требовательнее к ресурсам, чем современные детекторы признаков. Чтобы улучшить этот подход, исследователи разработали алгоритм SURF (ускоренные устойчивые признаки), использующий более быстрые вычисления для поиска и описания признаков. В некоторых случаях SURF менее точен, чем SIFT, зато работает намного быстрее и потому лучше подходит для задач, чувствительных к задержкам.
- Не подходит для работы в реальном времени: Из-за высоких вычислительных затрат SIFT плохо справляется с задачами, где важна скорость, например с отслеживанием в реальном времени или мобильной робототехникой.
- Ограниченная универсальность: Несмотря на устойчивость во многих случаях, SIFT менее эффективен при экстремальных изменениях освещения, значительных сдвигах ракурса или в динамичных сценах, где лучше работают новые алгоритмы и методы машинного обучения.
Изучая плюсы и минусы SIFT, ты можешь заметить, что многие его ограничения проложили путь к более совершенным методам. В частности, мощной альтернативой стали свёрточные нейронные сети (CNNs).
CNN — это тип модели глубокого обучения, вдохновлённый работой зрительной системы человека. Модель обрабатывает изображение послойно: сначала распознаёт простые закономерности, такие как контуры и текстуры, а затем постепенно выделяет более сложные формы и объекты. В отличие от вручную заданных правил выделения признаков в SIFT, CNN обучаются извлекать представления признаков непосредственно из данных.
Благодаря обучению на данных CNN могут превосходить SIFT в задачах сопоставления дескрипторов и классификации. CNN также обладают большей выразительностью и устойчивостью, лучше адаптируясь к разнообразию и сложности визуальных данных.
Например, модели на основе CNN добились прорывных результатов на ImageNet — масштабном наборе данных для тестирования, содержащем миллионы размеченных изображений из тысяч категорий. ImageNet создан для оценки того, насколько хорошо алгоритмы распознают и классифицируют объекты, и наглядно показывает разрыв между более ранними методами на основе признаков и глубоким обучением.
CNN быстро превзошли SIFT, научившись строить гораздо более богатые и гибкие представления. Благодаря этому они могут распознавать объекты при изменении освещения и ракурса, а также при частичном перекрытии — в ситуациях, с которыми SIFT часто не справляется.
Главные выводы#
Алгоритм Scale Invariant Feature Transform занимает важное место в истории компьютерного зрения. Он предоставил надёжный способ обнаруживать признаки даже в меняющихся условиях и повлиял на многие современные методы.
Хотя более новые методы работают быстрее и эффективнее, они опираются на основу, заложенную SIFT. SIFT показывает, с чего начался современный прогресс в компьютерном зрении, и позволяет оценить, насколько далеко продвинулись современные системы ИИ.
Присоединяйся к нашему глобальному сообществу и загляни в наш репозиторий GitHub, чтобы узнать больше о компьютерном зрении. Посети страницы наших решений и познакомься с инновациями в таких областях, как ИИ в сельском хозяйстве и компьютерное зрение в розничной торговле. Ознакомься с нашими вариантами лицензирования и начни создавать собственную модель компьютерного зрения.
Автор
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.










