Реалізація 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 визначення стилю через 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)—але це окрема сторінка.

Орієнтири за часом

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