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

Фон

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

Одна из ключевых функций приложения iYUNDONG - Найди меня в движении. Фотографы обычно делают огромные объемы фотографий или видео во время спортивного мероприятия, такого как марафон, и загружают фотографии и видео в реальном времени в базу данных iYUNDONG media. Марафонцы, которые хотят увидеть отмеченные ими моменты, могут получить фотографии, в том числе и самих себя, просто загрузив одно из своих селфи. Это экономит им много времени, потому что система поиска изображений в приложении iYUNDONG выполняет все сопоставления изображений. Milvus используется iYUNDONG для питания этой системы, поскольку Milvus может значительно ускорить процесс поиска и выдать высокоточные результаты.

Трудности и решения

iYUNDONG столкнулся со следующими проблемами и успешно нашел соответствующие решения при построении своей системы поиска изображений.

1. Фотографии мероприятий должны быть немедленно доступны для поиска.

iYUNDONG разработал функцию InstantUpload, чтобы фотографии с мероприятий были доступны для поиска сразу после их загрузки.

2. Хранение огромных наборов данных

Объемные данные, такие как фотографии и видео, загружаются в серверную часть iYUNDONG каждую миллисекунду. Поэтому iYUNDONG решил перейти на облачные системы хранения данных, включая AWS, S3 и Alibaba Cloud Object Storage Service (OSS) для безопасной, быстрой и надежной обработки гигантских объемов неструктурированных данных.

3. Мгновенное чтение

Чтобы добиться мгновенного чтения, iYUNDONG разработал собственное промежуточное программное обеспечение для сегментирования, позволяющее легко достичь горизонтальной масштабируемости и уменьшить влияние чтения с диска на систему. Кроме того, Redis используется как слой кэширования для обеспечения стабильной производительности в ситуации высокого параллелизма.

4. Мгновенное извлечение черт лица

Чтобы точно и эффективно извлекать черты лица из загруженных пользователями фотографий, iYUNDONG разработал собственный алгоритм преобразования изображений, который преобразует изображения в 128-мерные векторы признаков. Другая возникшая проблема заключалась в том, что часто многие пользователи и фотографы загружали изображения или видео одновременно. Таким образом, системные инженеры должны были учитывать динамическую масштабируемость при развертывании системы. В частности, iYUNDONG полностью использовал свой эластичный вычислительный сервис (ECS) в облаке для достижения динамического масштабирования.

5. Быстрый и крупномасштабный поиск векторных изображений

iYUNDONG требовалась база данных векторов для хранения большого количества векторов признаков, извлеченных моделями ИИ. Согласно собственному уникальному сценарию бизнес-приложения, iYUNDONG ожидал, что векторная база данных сможет:

  • Выполняйте невероятно быстрое получение векторных данных для сверхбольших наборов данных.
  • Получите массовое хранилище с меньшими затратами.

Первоначально ежегодно обрабатывалось в среднем 1 миллион изображений, поэтому iYUNDONG хранил все данные для поиска в оперативной памяти. Однако за последние два года его бизнес процветал, и в нем наблюдался экспоненциальный рост неструктурированных данных - количество изображений в базе данных iYUNDONG превысило 60 миллионов в 2019 году, а это означает, что необходимо было сохранить более 1 миллиарда векторов функций. Огромный объем данных неизбежно делал систему iYUNDONG сложной и требовательной к ресурсам. Поэтому ей приходилось постоянно инвестировать в оборудование для обеспечения высокой производительности. В частности, iYUNDONG развернул больше поисковых серверов, большую оперативную память и более производительный ЦП для достижения большей эффективности и горизонтальной масштабируемости. Однако одним из недостатков этого решения было то, что оно приводило к чрезмерно высоким эксплуатационным расходам. Поэтому iYUNDONG начал искать лучшее решение этой проблемы и задумался об использовании библиотек векторных индексов, таких как Faiss, для экономии затрат и лучшего управления своим бизнесом. Наконец, iYUNDONG выбрал векторную базу данных с открытым исходным кодом Milvus.

Что такое Милвус

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

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

● Затем встраиваемые векторы вставляются в Milvus для хранения. Milvus также составляет индексы для этих векторов.

● Milvus выполняет поиск по сходству и возвращает точные результаты поиска, основанные на различных бизнес-потребностях.

Почему Милвус

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

Более того, регулярно выходят новые версии Milvus. За период тестирования Milvus претерпел несколько обновлений версии с v0.6.0 до v0.10.1.

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

Система и рабочий процесс

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

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

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

Интерфейс приложения iYUNDONG

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

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

Заключение

В этой статье рассказывается, как приложение iYUNDONG создает интеллектуальную систему поиска изображений, которая может возвращать точные результаты поиска на основе загруженных пользователем фотографий, различающихся разрешением, размером, четкостью, углом и другими способами, которые усложняют поиск сходства. С помощью Milvus приложение iYUNDONG может успешно выполнять запросы миллисекундного уровня к базе данных, содержащей более 60 миллионов изображений. А точность поиска фотографий постоянно превышает 92% . Milvus упрощает для iYUNDONG создание мощной системы поиска изображений корпоративного уровня в короткие сроки с ограниченными ресурсами.