AI furniture recognition and analog search in mobile app

TRUETECH is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1735 services
AI furniture recognition and analog search in mobile app
Complex
~1-2 weeks
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    495

AI Furniture Recognition and Analogs Search in Mobile Applications

Unlike clothing, furniture has rigid geometry and recognizable forms—simplifying classification. Finding "similar for less" requires visual match and understanding style (Scandinavian minimalism, loft, classic) and scale. Sofa in photo without context—can't tell if three-seat or two-seat.

Recognition Stack

For furniture classification, general models work well—Google Cloud Vision, AWS Rekognition—trained on broad ImageNet datasets where furniture is adequate. Additionally: IKEA datasets (academically available) and ADE20K for segmentation.

More precise option for specific retailer—fine-tune EfficientNet or MobileNetV3 on store catalog. 50,000 images (200–300 per category) give confident classification of main categories: sofa, armchair, table, chair, cabinet, bed, nightstand.

// Android: TFLite furniture classification
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 }
    }
}

Style Determination

Category ("sofa") is only step one. For analog search, style matters. Train separate classifier on style categories or use CLIP—it understands text style descriptions:

// iOS: CLIP-based style detection via Core ML
// CLIP model converted to .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 compares image embedding with text embeddings of styles
    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 }
}

Searching Analogs in Catalog

Architecture same as clothing: embedding → vector search. But for furniture, additional attribute filtering: material (wood, metal, upholstered), color, size class.

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
}

Size class without AR determined approximately—by aspect ratio and typical proportions for category. Precise sizes via ARKit LiDAR (iPhone 12 Pro+) but that's separate page.

Timeline Estimates

Integrating ready API (Google Vision + external catalog like IKEA API, Amazon Product API)—1 week. Full implementation with custom TFLite/CoreML model on retailer catalog, CLIP-based style detection, vector search with filtering, and AR dimensions—1–2 months.