paint-brush
Использование Amazon Rekognition для создания функции обнаружения объектов изображений для стартапа в социальных сетяхк@aidenwalton
367 чтения
367 чтения

Использование Amazon Rekognition для создания функции обнаружения объектов изображений для стартапа в социальных сетях

к Aiden Walton6m2024/04/14
Read on Terminal Reader

Слишком долго; Читать

Rekognition позволила нам быстро создать функцию обнаружения объектов изображения, которая будет точной, быстрой и масштабируемой.
featured image - Использование Amazon Rekognition для создания функции обнаружения объектов изображений для стартапа в социальных сетях
Aiden Walton HackerNoon profile picture


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

Что такое обнаружение объекта изображения?

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


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

Наш вариант использования

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


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

Анализ изображений с использованием глубокого обучения

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


Выполнение обнаружения объектов с нуля обычно представляет собой многоэтапный процесс, который включает в себя:

  • Собирайте изображения и маркируйте объекты внутри.
  • Обучение моделей ML
  • Использование обученных моделей для выполнения анализа
  • Настройка производительности
  • И, повторюсь…


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


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


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

Что такое распознавание Amazon?

Amazon Rekognition — это бессерверное предложение AWS, которое использует глубокое обучение для анализа изображений и видео. Полная бессерверность означает, что с Rekognition нам не нужно беспокоиться о сложности базовой инфраструктуры; мы платим только за то, что используем , и он предоставляет нам заранее написанное программное обеспечение для задач анализа изображений и видео. Rekognition предлагает ряд функций, включая обнаружение меток изображений, обнаружение лиц, обнаружение знаменитостей, модерацию контента и обнаружение текста.


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

Архитектура

Архитектура проста. Наше мобильное приложение загружает изображения с телефонов пользователей в корзину S3. Затем загрузка на S3 запускает функцию Lambda, которая, в свою очередь, вызывает Rekognition API и сохраняет результаты в DynamoDB для запросов.


Схема архитектуры бессерверного обнаружения объектов изображений с использованием AWS

Код

Писать код — это весело, правда? Что ж, писать меньше кода еще веселее.


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


Упрощенная версия нашей бессерверной инфраструктуры Инфраструктура в виде файла кода выглядит следующим образом:

 //serverless.yamlfunctions: imageLabelDetection: handler: image-label-detection.handler events: - s3: bucket: my-image-bucket event: s3:ObjectCreated:* existing: true iamRoleStatements: - Effect: Allow Action: rekognition:DetectLabels Resource: "*" - Effect: Allow Action: s3:GetObject Resource: arn:aws:s3:::my-image-bucket


Наш Lambda-код просто вызывает Rekognition API и сохраняет результаты в DynamoDB, но вы можете использовать все, что имеет смысл для вашего варианта использования. Мы получаем имя корзины S3 и имя объекта изображения из события S3 и передаем их в функцию обнаруженияLabels SDK распознавания .


Мы также передаем два дополнительных параметра (MaxLabels и MinConfidence), чтобы указать порог уровня достоверности и максимальное количество возвращаемых меток. В приведенном ниже примере мы получим в ответе только до 20 меток, и все метки будут иметь уровень достоверности более 80%.


 //image-label-detecion.jsconst AWS = require("aws-sdk");const rekognition = new AWS.Rekognition();exports.handler = async (event) => { const imageDetails = event.Records[0].s3; const bucketName = imageDetails.bucket.name; const objectKey = imageDetails.object.key; const rekognitionResp = await rekognition .detectLabels({ Image: { S3Object: { Bucket: bucketName, Name: objectKey, }, }, MaxLabels: 20, MinConfidence: 80, }) .promise(); // Send to data store, eg DynamoDB // ... };

Кому не нравится изображение собаки? Ниже приведен ответ на изображение, которое мы загрузили в нашу корзину S3. Как видите, Rekognition правильно определяет, что это изображение собаки на гравийной дорожке (и сообщает нам, где на изображении находится собака!).

Ответ распознавания (слева), загруженное изображение (справа).

Последние мысли

Итак, что я думаю после нескольких месяцев использования Rekognition в производстве? Вот список основных выводов:

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


  • Производительность — распознавание происходит быстро, в большинстве случаев около 600 мс.


  • Простота в использовании. API прост и легко интегрируется.


  • Постоянное совершенствование — AWS постоянно поддерживает и совершенствует Rekognition, что означает, что со временем он будет становиться все лучше.


  • Точность — Rekognition использует преимущества широкого круга клиентов Amazon; что приводит к высокоточному обнаружению меток изображений.


  • Имеет щедрый уровень бесплатного пользования, поэтому вы можете попробовать, прежде чем принять решение.


  • Стоимость — Мы платим только за то, что используем. Rekognition позволяет нам увеличивать и уменьшать масштаб в зависимости от потребностей бизнеса.

Краткое содержание

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