Реализация AI-распознавания мебели и поиска аналогов в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

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

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

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

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

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

Этапы разработки

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация AI-распознавания мебели и поиска аналогов в мобильном приложении

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

Стек распознавания

Для классификации мебели хорошо работают общие модели — Google Cloud Vision, AWS Rekognition — они натренированы на широких датасетах ImageNet, где мебели достаточно. Дополнительно: специализированные датасеты IKEA (публично доступен в академическом виде) и ADE20K для сегментации.

Более точный вариант для конкретного ритейлера — дообучение EfficientNet или MobileNetV3 на каталоге магазина. 50 000 изображений (по 200–300 на категорию) дают уверенную классификацию основных категорий: диван, кресло, стол, стул, шкаф, кровать, тумба.

// 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 }
    }
}

Определение стиля

Категория («диван») — только первый шаг. Для поиска аналогов важен стиль. Можно натренировать отдельный классификатор на стилевые категории или использовать 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 }
}

Поиск аналогов по каталогу

Архитектура та же, что и для одежды: embedding → vector search. Но для мебели важна дополнительная фильтрация по атрибутам: материал (дерево, металл, ткань), цвет, размерная группа.

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
}

Размерный класс без AR определяется приблизительно — по соотношению сторон и типичным пропорциям для категории. Точные размеры через ARKit LiDAR (доступен с iPhone 12 Pro) — но это feature для отдельной страницы.

Ориентиры по срокам

Интеграция с готовым API классификации и поиском по внешнему каталогу (IKEA API, Amazon Product API) — 1 неделя. Реализация с собственной TFLite/CoreML моделью на каталоге ритейлера, CLIP-based определением стиля, vector search по каталогу с фильтрацией и AR-размерами — 1–2 месяца.