В области компьютерного зрения сходство изображений играет решающую роль в различных приложениях, таких как поиск изображений, системы рекомендаций и поиск изображений на основе контента. Эффективный поиск похожих изображений в большой коллекции — непростая задача. Однако недавние достижения в области методов глубокого обучения и поиска по сходству векторов упростили решение этой проблемы. В этом блоге мы рассмотрим, как использовать модель Vision Transformer (ViT) для кодирования изображений и использовать Faiss, библиотеку для эффективного поиска сходства, чтобы эффективно находить похожие изображения.

1. Понимание ViTForImageClassification

Vision Transformer (ViT) — это мощная архитектура модели глубокого обучения, которая применяет архитектуру Transformer к данным изображения. Он добился замечательных успехов в различных задачах компьютерного зрения. ViTForImageClassification — это предварительно обученная модель ViT, которая была обучена на большом наборе данных для классификации изображений. Мы можем использовать эту предварительно обученную модель для извлечения вложений изображений, которые могут отображать визуальные особенности изображения в многомерном векторном представлении.

Понимание архитектуры ViT

Архитектура модели ViT отличается от традиционного подхода сверточной нейронной сети (CNN) и использует архитектуру модели Transformer, первоначально представленную для задач обработки естественного языка. Механизм внимания модели Transformer позволяет фиксировать глобальные зависимости и моделировать долгосрочные взаимодействия между участками изображения.

Исправление изображений и токенизация

Модель ViT разбивает входное изображение на сетку участков фиксированного размера. Каждый патч, обычно представленный квадратной областью пикселей, рассматривается как токен и подвергается линейному преобразованию, чтобы проецировать его в пространство встраивания меньшего размера. Эти вложения патчей вместе с позиционными вложениями служат входными данными для модели Transformer.

Слои кодировщика преобразователя

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

Позиционные кодировки

Чтобы сохранить пространственную информацию в изображении, к вложениям патчей добавляются позиционные вложения. Эти позиционные кодировки кодируют относительное положение каждого патча, позволяя модели понять макет и структуру изображения.

Предварительная подготовка и точная настройка

Модель ViT обычно предварительно обучают на крупномасштабных наборах данных изображений, таких как ImageNet, с использованием подхода к обучению с самоконтролем. Предварительное обучение включает в себя предсказание правильного порядка перетасованных фрагментов изображения или решение других предтекстовых задач, не требующих аннотированных человеком меток. После предварительного обучения модель настраивается для конкретных последующих задач, таких как классификация изображений или обнаружение объектов, с использованием размеченных данных.

Перенос обучения и классификация изображений

Одним из основных вариантов использования ViTForImageClassification является классификация изображений. После предварительной подготовки и тонкой настройки модель учится сопоставлять входные изображения с соответствующими классами. Подавая изображение через модель ViTForImageClassification, она создает прогноз на выходе, обычно в форме вероятностей классов. Это позволяет нам классифицировать изображения по различным предопределенным категориям.

2. Извлечение вложений изображений с помощью ViTForImageClassification

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

  • Загрузите предварительно обученную модель ViTForImageClassification.
  • Предварительно обработайте входные изображения, изменив их размер до требуемого размера ввода и применив нормализацию.
  • Настройте модель ViT, используя свои пользовательские данные, изображения похожих и непохожих собак в этом блоге.
  • Передайте предварительно обработанные изображения через модель ViT, чтобы получить выходные вложения.
  • Выходные вложения будут многомерными векторами, представляющими визуальные особенности изображений.

3. Эффективный поиск сходства с Faiss

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

  • Создайте индекс, используя извлеченные вложения изображений. Faiss поддерживает различные методы индексации, такие как IVF (перевернутый файл) и HNSW (иерархический малый мир с возможностью навигации).
  • Добавьте вложения изображений в индекс Faiss, что создаст доступную для поиска структуру для эффективного поиска сходства.
  • Выполните поиск по сходству, предоставив встраивание изображения запроса в индекс Faiss. Faiss вернет наиболее похожие изображения на основе метрики подобия, такой как косинусное сходство или евклидово расстояние.

Теперь давайте начнем с кодирования!

1. Создание набора данных

Мы используем набор изображений собак из репозитория http://vision.stanford.edu/aditya86/ImageNetDogs/.

Как только изображения собак загружаются из репо по ссылке. Папка выглядит так

# структура каталогов изображений собак после загрузки из репозитория:

# корневой_каталог

# ├── Японский_спаниель

# │ ├── Japanese_spaniel.jpg

# │ ├── Японский_спаниель2.jpg

# │ └── …

# └── Ши-тцу

# ├── Ши-Тцу1.jpg

# ├── Ши-Тцу2.jpg

# └── …

Мы выбираем 3 пары похожих изображений (породы собак) и 3 пары непохожих изображений (породы собак) для точной настройки модели, чтобы упростить работу с отрицательными образцами, для заданного якорного изображения (породы собак) любой другой породы собак. чем наземная правда, порода собак считалась негативной меткой.

Отказ от ответственности: «похожие изображения» означают, что изображения одной породы собак считались положительной парой, а «разные изображения» означали, что изображения собак другой породы считались отрицательными.

Пояснение кода

В приведенной выше строке кода изображения 46:6 не были выбраны случайным образом из каждой папки с изображениями собак.

В приведенной выше строке кода № 47: выбранные изображения были перемещены в папку «tmp» и переименованы в «similar_images», поскольку они относятся к папке одной и той же породы собак.

В приведенной выше строке кода нет 55: как только все это будет завершено, они будут перемещены в папку «similar_all_images».

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

затем описанный выше процесс был повторен снова, чтобы получить пары непохожих изображений и переместить их в папку «dissimilar_all_images».

Как только все это будет сделано, мы можем перейти к созданию объекта набора данных.

В приведенной выше строке кода нет от 8 до 10: изображение подвергается предварительной обработке, которая включает изменение размера изображения до 256, поскольку модель VIT, которую мы настраиваем, была обучена на изображениях размера 256, затем обрезка по центру и нормализация изображения, которая гарантирует, что значения пикселей находятся в определенном диапазоне, обычно между 0 и 1 или -1 и 1. Это помогает поддерживать числовую стабильность во время вычислений и предотвращает такие проблемы, как взрыв или исчезновение градиентов.

Мы используем размер пакета 32, он может отличаться в зависимости от вашей вычислительной мощности и графического процессора.

Обучение модели

Мы обучили модель на 10 эпох; подобие косинусов было учтено для вычисления функции потерь.

Оценка

Теперь эту модель можно использовать для кодирования изображений.

Закодированные изображения могут быть проиндексированы в FAISS, затем при наличии изображения запроса оно будет снова закодировано с использованием вышеуказанной модели, затем с использованием этого закодированного вектора запроса ближайшее изображение (вектор) поезда будет извлечено из FAISS.

Преимущества и ограничения

Модель ViT имеет несколько преимуществ, таких как ее способность фиксировать глобальные зависимости, обрабатывать долгосрочные взаимодействия и демонстрировать широкие возможности обобщения. Он показал конкурентоспособную производительность по сравнению с традиционными архитектурами CNN, особенно на крупномасштабных наборах данных. Однако модели ViT могут потребовать значительных вычислительных ресурсов и обучающих данных из-за их многомерных входных данных и повышенной сложности модели.

Случаи использования

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

1. Поиск изображений на основе контента.
Системы поиска изображений на основе контента (CBIR) позволяют пользователям искать изображения на основе их визуального содержания, а не полагаться исключительно на текстовые метаданные. Сходство изображений играет решающую роль в CBIR, позволяя пользователям находить изображения, визуально похожие на заданное изображение запроса. Это особенно полезно в таких сценариях, как системы поиска изображений, где пользователи могут находить изображения, напоминающие определенный стиль, объект или композицию.

2. Системы рекомендаций по продуктам.
Сходство изображений играет важную роль в системах рекомендаций по продуктам, особенно в индустрии моды и электронной коммерции. Анализируя визуальные характеристики изображений, системы рекомендаций могут предлагать пользователям похожие продукты на основе их предпочтений или предыдущих покупок. Например, пользователю, ищущему конкретное платье, могут быть представлены визуально похожие платья или аксессуары, чтобы улучшить его покупательский опыт.

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

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

5. Анализ медицинских изображений.
В медицине сходство изображений используется для таких задач, как диагностика заболеваний, классификация изображений и мониторинг пациентов. Сравнивая медицинские изображения, врачи и исследователи могут выявлять закономерности, обнаруживать аномалии и ставить точные диагнозы. Сходство изображений помогает выявлять похожие случаи, помогая врачам определять наилучшие варианты лечения на основе исходов схожих случаев.

6. Анализ произведений искусства.
Сходство изображений находит применение при анализе произведений искусства и сохранении культурного наследия. Сравнивая визуальные особенности картин, скульптур или артефактов, историки искусства и реставраторы могут выявить сходство или влияние между художниками, определить подлинность и проследить эволюцию художественных стилей с течением времени.

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

Заключение

Модель ViTForImageClassification представляет собой прорыв в компьютерном зрении за счет применения архитектуры Transformer к данным изображений. Он продемонстрировал впечатляющую производительность при классификации изображений и других задачах компьютерного зрения. Способность модели фиксировать глобальные зависимости и долгосрочные взаимодействия открывает новый взгляд на понимание и анализ изображений. Поскольку исследования в этой области продолжаются, мы можем ожидать дальнейшего развития и применения ViT и аналогичных архитектур в различных реальных задачах компьютерного зрения.

Использованная литература:

  • Документ ViT: «Изображение стоит 16x16 слов: преобразователи для распознавания изображений в масштабе» Досовицкого и др.
  • Репозиторий Faiss GitHub: https://github.com/facebookresearch/faiss