Поиск похожих изображений — задача компьютерного зрения. Применяется в сборе данных для обучения нейронных сетей, при создании моделей машинного обучения. Позволяет выявить общие признаки между изображениями и классифицировать их в соответствии с ними. Используется в обработке медицинских изображений для выявления симптомов заболеваний и аномалий, при мониторинге окружающей среды и во многих других сферах.
Примеры реализации
Один из примеров реальной задачи, которая может быть решена с помощью такого подхода, —интернет-системы поиска товаров по фото, так как Pinterest, «Яндекс», Google, Amazon Rekognition, Visual Search на Wildberries.
На том же маркетплейсе WB пользователи могут загрузить изображение товара, который хотят найти, и система автоматически определяет похожие, основываясь на сходстве визуальных признаков: цвета, текстуры, формы. Таким образом удобно искать аналоги или вещи, о которых покупатель ничего не знает (ни производителя, ни точного названия), и есть только фото.
Какие методы и технологии используются?
- Convolutional Neural Network (CNN) — сверточная нейронная сеть, одна из самых широко используемых технологий для поиска похожих изображений. Алгоритм обучается распознавать объекты на изображениях, используя операции свертки и пулинга для извлечения признаков. После этого применяются методы сравнения, например косинусное расстояние, для поиска и выбора наиболее похожих изображений.
- Siamese Neural Network — сиамская нейросеть, состоит из двух симметричных нейросетей, которые принимают на вход разные изображения. Затем из них извлекают признаки и сравнивают, например тем же косинусным расстоянием.
- Feature-Based Methods — методы машинного обучения для извлечения признаков из изображений, которые затем используются для поиска похожих. Примером может служить метод SIFT (Scale-Invariant Feature Transform), который выявляет и описывает уникальные особенности объектов.
- Content-Based Image Retrieval (CBIR) — так работает любой поиск по картинке. Основан на содержимом изображения: цвете, форме, текстуре. Эти признаки сначала прописываются в разметке, а затем используются для поиска похожих изображений.
Так, поисковой механизм «Гугла» использует CNN для анализа и выдачи похожих картинок. А Pinterest использует алгоритмы CBIR. В базе данных OpenCV реализован набор алгоритмов для извлечения ключевых особенностей изображений с помощью метода SIFT: на их основе работает, например, мобильное приложение Google Lens. Пользователи фотографируют на смартфон объекты в реальном мире и получают информацию о них или находят похожие изображения через Google Lens.