Легко создавайте семантический поиск изображений с помощью Amazon Titan

Невероятно простой способ создать семантический поиск изображений с помощью Amazon Titan

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

Добавление изображений, которые отражают сущность текста, может улучшить впечатление от чтения. Техники машинного обучения могут помочь вам находить такие изображения. “Захватывающее изображение – один из самых эффективных способов привлечь внимание аудитории и создать вовлеченность в вашу историю, но оно также должно иметь смысл”.

В предыдущей статье рассматривалось, как вы можете использовать сервисы машинного обучения (ML) Amazon для поиска лучших изображений, которые можно разместить на странице статьи или в кратком описании телепередачи без ввода ключевых слов. В предыдущей статье вы использовали Amazon Rekognition, чтобы извлечь метаданные изображения. Затем вы использовали модель вложения текста для создания векторного представления метаданных, которое можно было использовать позже для поиска лучших изображений.

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

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

Amazon Bedrock – это полностью управляемый сервис, предлагающий выбор высокопроизводительных базовых моделей (FMs) от ведущих компаний в области искусственного интеллекта, включая AI21 Labs, Anthropic, Cohere, Meta, Stability AI и Amazon, с помощью единого API, а также широкий набор возможностей для создания AI-приложений, упрощая разработку при сохранении конфиденциальности и безопасности.

Amazon Titan недавно добавил новую модель вложения в свою коллекцию – Titan Multimodal Embeddings. Эта новая модель может использоваться для мультимодального поиска, систем рекомендаций и других приложений.

Мультимодельные модели могут понимать и анализировать данные в нескольких модальностях, таких как текст, изображение, видео и звук. Эта последняя модель Amazon Titan может принимать текст, изображения или и то, и другое. Это означает, что вы используете одну и ту же модель для создания вложений изображений и текста, а затем используете эти вложения для вычисления степени их сходства.

Обзор решения

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

Поиск изображения по семантике с помощью Amazon Titan В общих чертах, изображение загружается в Amazon Simple Storage Service (Amazon S3), и из него извлекаются метаданные, включая вложение изображения.

Чтобы извлечь текстовые метаданные из изображения, вы используете функцию распознавания знаменитостей и функцию обнаружения меток в Amazon Rekognition. Amazon Rekognition автоматически распознает десятки тысяч известных персоналий на изображениях и видео с помощью ML. Вы используете эту функцию, чтобы распознавать любых знаменитостей на изображениях и сохранять эти метаданные в Amazon OpenSearch Service. Обнаружение меток находит объекты и концепции на изображении, например, на предыдущем скриншоте вы имеете метаданные меток под изображением.

Вы используете модель Titan Multimodal Embeddings для создания внедрения изображения, которое также является доступными метаданными при поиске.

Все метаданные затем хранятся в OpenSearch Service для последующего поиска при запросе изображения или изображений.

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

При отправке статьи необходимо извлечь и преобразовать статью в поисковый запрос для OpenSearch Service. Вы используете Amazon Comprehend для обнаружения имен в тексте, которые могут быть потенциальными знаменитостями. Вы делаете краткое изложение статьи, так как, вероятно, выберете только одно или два изображения, чтобы передать суть статьи. Создание краткого изложения текста – это хороший способ убедиться, что внедрение захватывает основные моменты истории. Для этого вы используете модель Amazon Titan Text G1 – Express с запросом вроде “Пожалуйста, предоставьте краткое изложение следующего текста. Не добавляйте никакой информации, которая не упоминается в тексте ниже”. Используя краткое изложение статьи, вы используете модель Amazon Titan Multimodal Embeddings для создания внедрения данного краткого изложения. Модель внедрения также имеет максимальное количество токенов ввода, поэтому суммирование статьи еще более важно, чтобы убедиться, что в внедрение попадет как можно больше информации. Простыми словами, токен – это отдельное слово, подслово или символ.

Затем вы выполняете поиск в OpenSearch Service по именам и внедрению из статьи, чтобы найти изображения, семантически схожие с указанной знаменитостью, если она присутствует.

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

Обзор

Следующая схема показывает архитектуру для реализации данного случая использования.

Semantic image search using Amazon Titan

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

  1. Вы загружаете изображение в корзину Amazon S3.
  2. Amazon EventBridge прослушивает это событие, а затем запускает шаг Step Functions AWS.
  3. Шаг Step Functions принимает детали изображения Amazon S3 и выполняет три параллельные операции:
    1. Вызов API Amazon Rekognition DetectLabels для извлечения метаданных объекта
    2. Вызов API Amazon Rekognition для извлечения известных знаменитостей с помощью RecognizeCelebrities
    3. Функция AWS Lambda изменяет размер изображения до максимально допустимых размеров для модели внедрения МО и создает внедрение непосредственно из входных данных изображения.
  4. Функция Lambda вставляет метаданные объекта изображения и имена знаменитостей, если они присутствуют, а также внедрение вектора k-NN в индекс OpenSearch Service.
  5. Amazon S3 размещает простой статический веб-сайт, распределенный с помощью Amazon CloudFront. Пользовательский интерфейс (UI) позволяет вам аутентифицироваться в приложении с использованием Amazon Cognito для поиска изображений.
  6. Вы отправляете статью или некоторый текст с помощью пользовательского интерфейса (UI).
  7. Другая функция Lambda вызывает Amazon Comprehend для обнаружения имен в тексте в качестве потенциальных знаменитостей.
  8. Функция затем делает краткое изложение текста, чтобы получить ключевые моменты статьи с использованием Titan Text G1 – Express.
  9. Функция создает внедрение краткого изложения статьи с использованием модели Amazon Titan Multimodal Embeddings.
  10. Функция затем ищет изображения, соответствующие имени знаменитости и k-ближайшие соседи для вектора с использованием косинусной близости с использованием скрипта точечного нормирования точности.
  11. Amazon CloudWatch и AWS X-Ray предоставляют наблюдаемость всего рабочего процесса для своевременного оповещения обо всех проблемах.

Ниже показан дизайнер визуального рабочего процесса Step Functions.

Поиск семантических изображений с использованием Step Functions Amazon Titan

Вот пример вложения:

{"Вложение_Результаты": [-0.40342346, 0.073382884, 0.22957325, -0.014249567, 0.042733602, -0.102064356, 0.21086141, -0.4672587, 0.17779616, 0.08438544, -0.58220416, -0.010788828, -0.28306714, 0.4242958, -0.01655291,...

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

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

Мультимодальное встроенное против встроенного текста

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

Проведя быстрый тест и запустив запрос в пользовательском интерфейсе для двух подходов, вы можете увидеть, что результаты заметно отличаются. Примерный запрос статьи: “Werner Vogels любит носить белые шарфы, путешествуя по Индии”.

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

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

Ниже показаны результаты от модели Titan Multimodal Embeddings от Amazon.

Поиск семантических изображений с использованием мультимедиа-технологии Amazon Titan

Ниже показаны результаты от модели встроенного текста Amazon Titan, использующей извлеченные метаданные Amazon Rekognition для генерации вложения.

Поиск семантических изображений с использованием встроенного текста Amazon Titan

Предварительные требования

Для выполнения этой инструкции вам понадобятся следующие предварительные требования:

  • Учетная запись AWS
  • Интерфейс командной строки AWS Serverless Application Model (AWS SAM CLI)
    • Решение использует AWS SAM CLI для развертывания.
    • Убедитесь, что вы используете последнюю версию AWS SAM CLI.
  • Docker
    • Решение использует опцию AWS SAM CLI для сборки внутри контейнера, чтобы не возникала необходимость в локальных зависимостях. Для этого требуется Docker.
  • Node
    • Фронтэнд для этого решения – это веб-приложение React, которое можно запустить локально с помощью Node.
  • npm
    • Установка пакетов, необходимых для запуска веб-приложения локально или его сборки для удаленного развертывания, требует npm.

Создание и развертывание полноценного приложения

  1. Клонировать репозиторий

    git clone https://github.com/aws-samples/semantic-image-search-for-articles.git
  2. Перейти в новый клонированный проект.

    cd semantic-image-search-for-articles
  3. Запустите npm install, чтобы загрузить все необходимые пакеты для запуска приложения.

    npm install
  4. Запустите скрипт развертывания, который запускает последовательность скриптов, выполняющих сам сборку, само развертывание, обновление файлов конфигурации и размещение файлов веб-приложения в Amazon S3 для обслуживания через Amazon CloudFront.

    npm run deploy
  5. Одним из конечных результатов работы скрипта является URL Amazon CloudFront, через который можно получить доступ к приложению. Вам необходимо создать нового пользователя в консоли управления AWS для входа. Запишите URL для дальнейшего использования.

На следующем скриншоте показано, как скрипт использовал AWS SAM для развертывания стека и сгенерировал URL Amazon CloudFront, с помощью которого можно получить доступ к приложению.

Вывод сборки SAM

Создание нового пользователя для входа в приложение

  1. Перейдите в консоль Amazon Cognito и выберите новый пул пользователей.
  2. Создайте нового пользователя с новым паролем.

Добавление пользователя Cognito

Вход и тестирование веб-приложения

  1. Найдите URL Amazon CloudFront, чтобы перейти на страницу входа. Это выводится в последней строке, как показано на предыдущем скриншоте.
  2. Введите комбинацию нового имени пользователя и пароля для входа.
  3. Загрузите несколько образцовых изображений, используя пользовательский интерфейс.
    1. Выберите Выберите файл, а затем выберите Загрузить. Примечание: Вы также можете загрузить файлы пакетом непосредственно в бакет S3, добавив файлы в папку /uploads.
    2. Напишите или скопируйте и вставьте статью и выберите Отправить, чтобы увидеть, возвращаются ли изображения в ожидаемом порядке.

Поиск семантического изображения с использованием Amazon Titan upload image

Очистка

Для предотвращения будущих расходов удалите ресурсы.

  1. Найдите бакет S3, развернутый с помощью этого решения, и очистите его.
  2. Перейдите в консоль CloudFormation, выберите стек, развернутый через упомянутый ранее скрипт развертывания, и удалите стек.

Стеки CloudFormation

Заключение

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

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