Создание поискового шопинг-опыта по изображению с VOVA и Milvus
Перейти к:
- Как работает поиск по изображениям?
- Обнаружение целей с использованием модели YOLO
- Извлечение векторов признаков изображения с помощью ResNet
- Поиск по сходству векторов на базе Milvus
- Инструмент VOVA для покупок по изображению
Онлайн-шопинг резко вырос в 2020 году, увеличившись на 44%, в значительной степени из-за пандемии коронавируса. Поскольку люди стремились соблюдать социальную дистанцию и избегать контактов с незнакомцами, бесконтактная доставка стала невероятно привлекательной опцией для многих потребителей. Эта популярность также привела к тому, что люди стали покупать онлайн более широкий ассортимент товаров, включая нишевые товары, которые сложно описать с помощью традиционного поиска по ключевым словам.
Чтобы помочь пользователям преодолеть ограничения запросов на основе ключевых слов, компании могут создавать поисковые системы по изображениям, которые позволяют пользователям использовать для поиска изображения вместо слов. Это не только позволяет пользователям находить товары, которые трудно описать, но и помогает им покупать вещи, которые они встречают в реальной жизни. Такая функциональность помогает создать уникальный пользовательский опыт и обеспечивает общее удобство, которое ценят клиенты.
VOVA — развивающаяся платформа электронной коммерции, ориентированная на доступность и предоставление положительного опыта покупок своим пользователям, с объявлениями, охватывающими миллионы товаров, и поддержкой 20 языков и 35 основных валют. Чтобы улучшить опыт покупок для своих пользователей, компания использовала Milvus для встраивания функциональности поиска по изображениям в свою платформу электронной коммерции. В статье рассматривается, как VOVA успешно создала поисковую систему по изображениям с помощью Milvus.
Как работает поиск по изображениям?
Система покупок по изображению VOVA ищет в ассортименте компании изображения товаров, похожие на загруженные пользователем. На следующей диаграмме показаны два этапа процесса системы: этап импорта данных (синий) и этап запроса (оранжевый):
- Использовать модель YOLO для обнаружения целей на загруженных фотографиях;
- Использовать ResNet для извлечения векторов признаков из обнаруженных целей;
- Использовать Milvus для поиска по сходству векторов.
Процесс системы функциональности поиска по изображению VOVA.
Обнаружение целей с использованием модели YOLO
Мобильные приложения VOVA на Android и iOS в настоящее время поддерживают поиск по изображениям. Компания использует современную систему обнаружения объектов в реальном времени под названием YOLO (You only look once) для обнаружения объектов на загруженных пользователями изображениях. Модель YOLO сейчас находится в своей пятой итерации.
YOLO — это одноэтапная модель, использующая только одну сверточную нейронную сеть (CNN) для прогнозирования категорий и положений различных целей. Она небольшая, компактная и хорошо подходит для использования на мобильных устройствах.
YOLO использует сверточные слои для извлечения признаков и полносвязные слои для получения прогнозируемых значений. Вдохновляясь моделью GooLeNet, CNN в YOLO включает 24 сверточных слоя и два полносвязных слоя.
Как показано на следующей иллюстрации, входное изображение 448 × 448 преобразуется рядом сверточных слоев и слоев пулинга в 7 × 7 × 1024-мерный тензор (изображен в третьем с конца кубе ниже), а затем преобразуется двумя полносвязными слоями в выходной 7 × 7 × 30-мерный тензор.
Прогнозируемый выход YOLO P — это двумерный тензор, форма которого [batch,7 ×7 ×30]. С использованием срезов P[:,0:7×7×20] — это вероятность категории, P[:,7×7×20:7×7×(20+2)] — это уверенность, а P[:,7×7×(20+2)]:] — это прогнозируемый результат ограничивающей рамки.
Архитектура сети YOLO.
Извлечение векторов признаков изображения с помощью ResNet
VOVA использовала модель остаточной нейронной сети (ResNet) для извлечения векторов признаков из обширной библиотеки изображений продуктов и фотографий, загруженных пользователями. ResNet имеет ограничение: по мере увеличения глубины обучающей сети точность сети снижается. На изображении ниже показана ResNet, запускающая модель VGG19 (вариант модели VGG), модифицированную для включения остаточного блока через механизм короткого замыкания. VGG была предложена в 2014 году и включает всего 14 слоев, тогда как ResNet появилась годом позже и может иметь до 152.
Структуру ResNet легко модифицировать и масштабировать. Изменяя количество каналов в блоке и количество сложенных блоков, можно легко регулировать ширину и глубину сети, чтобы получать сети с разными выразительными возможностями. Это эффективно решает проблему деградации сети, когда точность снижается по мере увеличения глубины обучения. При наличии достаточного количества обучающих данных можно получить модель с улучшающейся выразительной производительностью, постепенно углубляя сеть. В процессе обучения модели для каждого изображения извлекаются признаки и преобразуются в 256-мерные векторы с плавающей точкой.
Структура ResNet.
Поиск по сходству векторов на базе Milvus
База изображений продуктов VOVA включает 30 миллионов изображений и быстро растет. Чтобы быстро извлекать наиболее похожие изображения продуктов из этого огромного набора данных, Milvus используется для выполнения поиска по сходству векторов. Благодаря ряду оптимизаций Milvus предлагает быстрый и оптимизированный подход к управлению векторными данными и созданию приложений машинного обучения. Milvus обеспечивает интеграцию с популярными библиотеками индексов (например, Faiss, Annoy), поддерживает несколько типов индексов и метрик расстояния, имеет SDK на нескольких языках и предоставляет богатые API для управления векторными данными.
Milvus может выполнять поиск по сходству в наборах данных с триллионами векторов за миллисекунды, со временем запроса менее 1,5 секунды при nq=1 и средним временем пакетного запроса менее 0,08 секунды. Для создания своего поискового движка по изображениям VOVA ориентировалась на дизайн Mishards, решения промежуточного ПО для шардирования Milvus (см. схему ниже с его системным дизайном), чтобы реализовать высокодоступный серверный кластер. Благодаря горизонтальной масштабируемости кластера Milvus было выполнено требование проекта по высокой производительности запросов на массивных наборах данных.
Архитектура Mishards в Milvus.
Инструмент VOVA для покупок по изображению
Скриншоты ниже показывают инструмент VOVA для покупок с поиском по изображению в Android-приложении компании.
Скриншоты инструмента VOVA для покупок с поиском по изображению.
По мере того как все больше пользователей ищут продукты и загружают фотографии, VOVA продолжит оптимизировать модели, на которых работает система. Кроме того, компания внедрит новую функциональность Milvus, которая сможет еще больше улучшить опыт онлайн-покупок для ее пользователей.
Справочные материалы
YOLO:
https://arxiv.org/pdf/1506.02640.pdf
https://arxiv.org/pdf/1612.08242.pdf
ResNet:
https://arxiv.org/abs/1512.03385
Milvus:
https://milvus.io/docs/overview.md
Читать далее

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

The Real Bottlenecks in Autonomous Driving — And How AI Infrastructure Can Solve Them
Autonomous driving faces a data bottleneck. Learn how AI-native vector databases like Zilliz solve scale, cost, and insight challenges across AV pipelines.

Why Deepseek is Waking up AI Giants Like OpenAI And Why You Should Care
Discover how DeepSeek R1's open-source AI model with superior reasoning capabilities and lower costs is disrupting the AI landscape and challenging tech giants like OpenAI.



