Поиск аналогов по фото: AI-распознавание мебели в мобильном приложении

Поиск аналогов по фото: AI-распознавание мебели в мобильном приложении Клиент хочет, чтобы пользователь сфотографировал диван и получил похожие модели с ценами. Но мебель — не одежда: одинаковые с виду кресла могут отличаться по стилю и размерам. Ошибка на этапе классификации изображений ведёт к

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Поиск аналогов по фото: AI-распознавание мебели в мобильном приложении
Сложный
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    598

Поиск аналогов по фото: AI-распознавание мебели в мобильном приложении

Клиент хочет, чтобы пользователь сфотографировал диван и получил похожие модели с ценами. Но мебель — не одежда: одинаковые с виду кресла могут отличаться по стилю и размерам. Ошибка на этапе классификации изображений ведёт к ложным рекомендациям. Мы решаем эту задачу с помощью комбинации Transfer Learning на свёрточных сетях и векторного поиска. Наш опыт показывает, что правильно настроенная модель экономит до 40% времени на ручной обработке каталога, а стоимость поддержки каталога снижается на 25% за счёт автоматизации.

Почему мебель сложнее одежды?

У мебели жёсткая геометрия и узнаваемые формы — это упрощает классификацию. Но поиск «похожего за меньшие деньги» требует не только визуального совпадения, но и понимания стиля (скандинавский минимализм, лофт, классика) и масштаба. Диван на фото без контекста — не позволяет понять, трёхместный он или двухместный. Мы решаем это с помощью дополнительных классификаторов стиля мебели и фильтрации по атрибутам.

Источник: рекомендации по обработке изображений мебели из открытых датасетов (например, Furniture-180).

Проблемы, которые мы решаем

  1. Категоризация: Большинство готовых моделей (Google Cloud Vision, AWS Rekognition) обучены на ImageNet — там мебели достаточно. Но точность падает для редких форм. Мы дообучаем EfficientNet или MobileNetV3 на каталоге магазина: 50 000 изображений (по 200–300 на категорию) дают уверенную классификацию основных категорий: диван, кресло, стол, стул, шкаф, кровать, тумба.
  2. Определение стиля: Категория — только первый шаг. Для поиска аналогов важен стиль. Используем CLIP, который понимает текстовые описания: "скандинавский минимализм", "лофт", "классика". CLIP сравнивает эмбеддинг изображения с эмбеддингами текстовых стилей и возвращает наиболее вероятный.
  3. Поиск с фильтрами: Архитектура та же, что и для одежды: эмбеддинг → vector search. Но для мебели важна фильтрация по материалу (дерево, металл, ткань), цвету, размерной группе. Размерный класс без AR определяется приблизительно — по соотношению сторон и типичным пропорциям для категории.

Сравнение подходов к классификации

Подход Точность Время на обучение Набор данных
Готовый API (Google Cloud Vision) 75-85% 0 Не требуется
Transfer Learning (MobileNetV3) 92-96% 2-4 дня 500–1000 на категорию
Обучение с нуля (ResNet) 96%+ 2-4 недели 10000+ на категорию

Transfer Learning — оптимальный выбор для большинства ритейлеров: точность 92% при минимальных затратах времени. Он точнее готового API в среднем на 15% по нашим тестам. При этом Transfer Learning требует в 2-3 раза меньше данных, чем обучение с нуля, при сравнимой точности. Мы используем MobileNetV3 или EfficientNet-Lite — они работают прямо на устройстве.

Как определить стиль мебели?

Метод Точность определения стиля Необходимость разметки
Только визуальные признаки (CNN) 70-80% 500+ изображений на стиль
CLIP (текст+изображение) 85-95% Текстовые описания стилей
Гибрид (CLIP + кастомный классификатор) 90-97% 200 изображений на стиль

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

Как мы это делаем: стек и примеры

Для Android используем TFLite с XNNPACK оптимизацией. Пример классификатора:

// Android: TFLite классификация мебели class FurnitureClassifier(context: Context) { private val interpreter: Interpreter by lazy { val model = FileUtil.loadMappedFile(context, "furniture_classifier_v2.tflite") Interpreter(model, Interpreter.Options().apply { numThreads = 4 useXNNPACK = true }) } fun classify(bitmap: Bitmap): List<FurnitureClassification> { val resized = Bitmap.createScaledBitmap(bitmap, 224, 224, true) val input = TensorImage.fromBitmap(resized) val output = TensorBuffer.createFixedSize(intArrayOf(1, NUM_CLASSES), DataType.FLOAT32) interpreter.run(input.buffer, output.buffer) return output.floatArray .mapIndexed { index, score -> FurnitureClassification(LABELS[index], score) } .filter { it.score > 0.1f } .sortedByDescending { it.score } } } 

Для iOS — Core ML. CLIP позволяет определять стиль через текстовые промпты:

// iOS: CLIP-based style detection через Core ML // CLIP модель конвертирована в .mlpackage func detectStyle(_ image: UIImage) async throws -> [StyleScore] { let styleDescriptions = [ "scandinavian minimalist furniture", "industrial loft style furniture", "classic traditional furniture", "mid-century modern furniture", "boho eclectic furniture" ] // CLIP сравнивает image embedding с text embeddings стилей let imageEmbedding = try await clipEncoder.encodeImage(image) return styleDescriptions.enumerated().map { i, desc in let textEmbedding = clipEncoder.encodeText(desc) let similarity = cosineSimilarity(imageEmbedding, textEmbedding) return StyleScore(style: desc, score: similarity) }.sorted { $0.score > $1.score } } 

Как работает поиск аналогов по каталогу?

Эмбеддинги товаров хранятся в векторной БД (например, FAISS или Pinecone). Поиск включает несколько этапов:

  1. Извлечение эмбеддинга: изображение пользователя проходит через ту же модель, что и каталог.
  2. Векторный поиск: косинусное расстояние до всех эмбеддингов каталога.
  3. Применение фильтров: отсев по категории, стилю, материалу, цвету, размеру и цене.
  4. Постобработка: сортировка по схожести и вывод топ-10 результатов.
struct FurnitureSearchFilters { let category: FurnitureCategory let style: StyleTag? let colorFamily: ColorFamily? // warm, cool, neutral let material: MaterialType? // wood, metal, upholstered let maxDimensionClass: SizeClass? // compact, standard, large let priceRange: ClosedRange<Int>? let inStockOnly: Bool } 

Процесс интеграции

Внедрение функции распознавания и поиска аналогов проходит несколько этапов:

Подробнее об этапах
  1. Анализ каталога: оценка объёма изображений, категорий, стилей.
  2. Подготовка данных: разметка 200–500 изображений на категорию/стиль (если требуется дообучение).
  3. Обучение модели: Transfer Learning на TensorFlow/Keras или Create ML.
  4. Интеграция в приложение: подключение TFLite/Core ML, настройка векторного хранилища.
  5. Тестирование: A/B тест точности распознавания и скорости поиска.
  6. Деплой: релиз через App Store/Google Play, мониторинг.

Минимально жизнеспособный продукт (MVP) можно запустить за 1 неделю, используя готовое API распознавания и облачное векторное хранилище. Полное решение с собственной моделью, CLIP и AR-размерами занимает 1–2 месяца. Например, для одного из клиентов с каталогом 10 000 товаров мы дообучили MobileNetV3 на 500 изображениях на категорию. Точность классификации выросла с 72% до 94%.

Объем работ

  • MVP: интеграция с готовым API (Google Cloud Vision + векторный поиск) — срок от 1 недели.
  • Полное решение: дообученная TFLite/CoreML модель, CLIP-классификатор стиля, векторное хранилище с фильтрами, AR-размеры (LiDAR) — срок 1–2 месяца.
  • Документация по модели и API.
  • Обучение команды заказчика.
  • Пост-релизная поддержка 2 недели.

Наша команда имеет 7+ лет опыта в мобильной разработке и машинном обучении. Мы выполнили 30+ проектов по распознаванию изображений. Гарантируем качество: модель будет работать офлайн, без задержек. Если вы хотите реализовать аналогичную функцию, свяжитесь с нами — мы подберём оптимальное решение. Получите консультацию по интеграции — оценим ваш проект бесплатно.