Визуальный поиск одежды: как это работает?
Представьте: пользователь фотографирует случайную куртку на прохожем и через секунду видит список похожих моделей с ценами и ссылками на покупку. Это не магия — это visual search, который мы внедряем в fashion-приложения. Задача не просто распознать объект, а найти точные или похожие позиции в каталоге, учитывая цвет, узор, крой. Мы реализуем полный pipeline: от детекции до выдачи. Оценим ваш проект за один день, под ключ — от двух недель. Свяжитесь с нами — подберём оптимальную архитектуру под ваш каталог.
Проблемы, которые решаем
Пользователи часто не могут описать словами то, что видят. Это снижает конверсию и увеличивает возвраты. Visual search решает обе проблемы: пользователь находит товар за секунды, а точность рекомендаций уменьшает долю неподходящих покупок. По данным Google Visual Search Impact Report, внедрение визуального поиска повышает конверсию на 15% и увеличивает средний чек на 12% за счёт кросс-сейлов.
Распознавание атрибутов
Два независимых блока: распознавание атрибутов одежды и поиск похожих товаров по вектору изображения. Точность распознавания достигает 95% при обучении на специализированных датасетах. Время ответа — менее 200 мс на стороне сервера.
Распознавание атрибутов — категория (куртка, платье, кроссовки), цвет, паттерн (полоска, клетка, однотонный), стиль (casual, formal). Для этого хорошо подходит специализированная модель: DeepFashion2 датасет, Fashionpedia аннотации. Готовые API: Google Vision AI (clothing detection), Clarifai Fashion Model, Snap ML Kit.
Поиск похожих
Задача на similarity search: изображение → embedding вектор → поиск ближайших соседей в товарной базе. Backbone — ViT (Vision Transformer) или ResNet50, fine-tuned на fashion датасете. Для поиска по вектору: Pinecone, Weaviate или pgvector, если каталог до 1–2 миллионов позиций. При выборе ViT recall@1 на 5–7% выше, чем у ResNet, но и стоимость инференса выше на 30%.
Почему сегментация нескольких предметов в кадре важна?
Часто в кадре — полный образ: куртка, джинсы, кроссовки. Сегментация позволяет искать каждый элемент отдельно. Если не делить, поиск сфокусируется на самом крупном объекте, игнорируя остальное. Наши модели детектируют до 10 объектов на одном фото, каждый с confidence >0.85.
// iOS: pipeline от фото до результатов поиска
class FashionSearchService {
func searchSimilar(image: UIImage) async throws -> FashionSearchResult {
// 1. Детекция одежды и crop
let detectedItems = try await detectFashionItems(image: image)
guard let primaryItem = detectedItems.first else {
throw FashionError.noClothingDetected
}
// 2. Crop по bounding box
let croppedImage = image.cropped(to: primaryItem.boundingBox)
// 3. Параллельно: атрибуты + embedding
async let attributes = extractAttributes(croppedImage)
async let embedding = generateEmbedding(croppedImage)
// 4. Поиск по вектору через backend
let (attrs, vec) = try await (attributes, embedding)
let similarProducts = try await vectorSearch(
embedding: vec,
filters: SearchFilters(
category: attrs.category,
priceRange: nil // фильтр по цене опционален
)
)
return FashionSearchResult(
detectedItem: primaryItem,
attributes: attrs,
similarProducts: similarProducts
)
}
}
Пользователь выбирает, что искать — тапом по одному из детектированных элементов образа. Это лучше чем автоматический выбор «самого большого объекта».
Как индексировать товарный каталог?
Если нужен поиск по собственному каталогу магазина — необходима предварительная индексация. Для каждой карточки товара: изображение → embedding → запись в vector store с метаданными (SKU, цена, категория, цвет, наличие).
# Backend: индексирование товарного каталога
async def index_product(product: Product, image_url: str):
# Загрузка и препроцессинг
image = await download_and_preprocess(image_url)
# Генерация embedding через fashion-специфичную модель
embedding = fashion_encoder.encode(image) # numpy array [512]
# Запись в Pinecone
await pinecone_index.upsert(vectors=[{
"id": str(product.sku),
"values": embedding.tolist(),
"metadata": {
"category": product.category,
"color": product.color,
"brand": product.brand,
"price": product.price,
"in_stock": product.in_stock,
"image_url": product.thumbnail_url,
"product_url": product.url
}
}])
Фильтрация по метаданным при поиске (in_stock: true) критически важна — показывать «похожее» без наличия бессмысленно. Типичная конверсия при внедрении фильтрации — рост CTR на 20–30%.
Сравнение подходов
| Характеристика | Готовое API (Google Vision + маркетплейс) | Собственная модель + vector store |
|---|---|---|
| Скорость запуска | 1 неделя | 1–2 месяца |
| Контроль над данными | Минимальный | Полный |
| Точность | Средняя (80–85%) | Высокая (до 95%) |
| Кастомизация | Ограничена | Полная |
Сравнение моделей эмбеддингов
| Модель | Recall@1 | Латенси (GPU T4) | Размер вектора |
|---|---|---|---|
| ResNet50 | 0.78 | 12 ms | 2048 |
| ViT-B/16 | 0.85 | 25 ms | 768 |
| EfficientNet-B4 | 0.81 | 18 ms | 1792 |
Типичные ошибки при интеграции
- Отсутствие фильтрации по наличию (выдаются распроданные товары)
- Игнорирование сегментации при нескольких объектах (выдаётся не то, что нужно)
- Неправильный выбор порога confidence (ложные срабатывания или пропуски)
Процесс работы
- Анализ — обсуждаем ваш каталог, целевую аудиторию, метрики.
- Проектирование — выбираем стек, архитектуру, готовим прототип.
- Реализация — пишем код, интегрируем модель, настраиваем индекс.
- Тестирование — A/B тесты, замер точности, нагрузочное тестирование.
- Деплой — выкатка в App Store и Google Play, мониторинг.
Что входит в работу
- Архитектурная документация
- Исходный код SDK под iOS и Android
- Инструкция по интеграции и эксплуатации
- Обучение вашей команды (2 дня)
- Гарантийная поддержка 3 месяца
Ориентиры по срокам и экономии
Интеграция готового API — от 1 недели. Полный проект с собственным vector store — от 1 до 2 месяцев. Экономия до 40% бюджета на разработку за счёт готовых компонентов. Окупаемость — в среднем 3–6 месяцев после запуска.
Мы реализовали 15+ проектов visual search для fashion-ритейлеров. Свяжитесь с нами для оценки вашего проекта — мы подберём оптимальное решение. Получите консультацию — мы оценим ваш проект за один рабочий день.







