Как мы научили ИИ подбирать мебель по архитектурным чертежам

Как мы научили ИИ подбирать мебель по архитектурным чертежам

Перед вами PDF на 30 страниц с десятками архитектурных чертежей. На каждом — кухня, ванная или офис с рядом шкафов. Задача: определить каждый шкаф, понять его тип, подсчитать двери и полки, считать размеры и подобрать подходящие позиции из каталога с сотнями артикулов.

В строительстве и дизайне интерьеров эту работу до сих пор выполняют вручную. Специалисты часами сверяют чертежи с каталогами — рутина, отнимающая десятки человеко-часов на проект.

Мы автоматизировали процесс и создали систему, которая принимает PDF с чертежами и каталог мебели, а на выходе выдаёт рекомендации с точностью 87%.

Рассказываем, как прошли путь от наивной попытки использовать одну мультимодальную модель до продуманного пайплайна, сочетающего YOLO, кластеризацию, Gemini и трансформеры для семантического поиска.

Наивный подход: всё в одну LLM

Первая идея была простой: отправить изображение чертежа и каталог напрямую в мультимодальную модель. Мы начали с Gemini 2.5 Pro — на тот момент она показывала лучшие результаты в визуальных задачах.

Для простых случаев модель справлялась. Но при масштабировании возникли проблемы.

  • Несовпадение модальностей: чертежи в 2D, каталог — в 3D-рендерах. Визуально это разные представления одного объекта, и модель не всегда устанавливает соответствие.
  • Специфика типов шкафов: у каждого типа — свои признаки (выдвижной, навесной, с остеклением). Один промпт не может охватить все правила.
  • Ошибки подсчёта: модель систематически ошибалась в количестве шкафов и «галлюцинировала» размеры — критично для подбора.

Мы протестировали три топовые модели на 20 планах и полном каталоге из 120 страниц (около 1500 шкафов). Ни одна не достигла приемлемого качества.

Затем попробовали RAG: структурировали каталог, чтобы улучшить поиск. Это немного помогло (до ~40% у Gemini), но фундаментальные ошибки остались.

Проблемы были в визуальном анализе. Мы приняли решение: разделить задачу на специализированные этапы и использовать для каждого свой инструмент. Это стало переломным моментом.

Подзадачи и финальная архитектура

Мы разбили задачу на пять этапов:

  • Детекция шкафов на чертеже
  • Кластеризация шкафов
  • Извлечение размерностей
  • Описание признаков шкафа
  • Семантический поиск и ранжирование по каталогу

Этап 1: детекция шкафов

Первый этап — самый важный. Ошибка здесь распространяется на все последующие шаги.

Мы разметили более 5000 планов, выделив классы шкафов. Точность детектора достигла 96% (mAP@0.5) — высокий результат для разнообразных стилей чертежей.

Главная сложность — вложенные шкафы. Например, двухдверный шкаф может состоять из двух однодверных, а высокий — из навесного и нижней части.

Мы решили это с помощью иерархии bbox: алгоритм анализирует перекрытие детекций, строит дерево родитель-потомок и исключает дубликаты. Если однодверный шкаф полностью вписан в двухдверный того же класса — система понимает, что это единый объект.

Этап 2: кластеризация шкафов

После детекции нужно сгруппировать визуально одинаковые шкафы. Это важно для точного подсчёта и уменьшения нагрузки.

Мы реализовали два режима в зависимости от класса:

  • По ключевым точкам: строится матрица попарных расстояний между признаками (ручки, паттерны дверей). Работает хорошо для шкафов с текстурными деталями.
  • По геометрическому сходству: нормализованные изображения шкафов сравниваются по попарному расстоянию. Эффективно для геометрических паттернов.

Этап 3: извлечение размерностей

Размеры — ключевой параметр. На чертежах они указаны по-разному: выносные линии, коды (например, ZW 34|24|36), надписи.

Разработка универсального детектора размеров была бы сопоставима по сложности со всем пайплайном. Слишком много стилей: со стрелками, без, с кодировкой, с ручными подписями.

Вместо этого мы используем vLLM: отправляем кроп шкафа и весь план. Модель находит шкаф и считывает размеры.

На тесте из 100 планов:

  • Gemini 2.5 Pro — 81%
  • Gemini 3 — 87%

Рост точности стал важным бустом для всей системы.

Этап 4: описание признаков и подготовка каталога

4.1 Описание признаков

Этот этап — сердце системы. Качество подбора зависит от точности описания.

Для каждого шкафа генерируется структурированный JSON с признаками, специфичными для его класса. Каждый класс имеет свой промпт с детальными инструкциями: как отличить дверь от полки, проверить остекление и т.д.

Мы сравнили три модели:

  • Gemini 2.5 Pro: качественные описания, но ошибки в остеклении и подсчёте полок
  • GPT-4: ошибки в подсчёте, краткие описания
  • Gemini 3: минимальное количество ошибок, точный подсчёт, детальные описания

Переход на Gemini 3 дал самый значительный прирост в качестве.

4.2 Подготовка каталога

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

Для описания 3D-рендеров использовали GPT-4 (оригинал упоминал GPT-5, но на момент публикации GPT-5 не существует; скорее всего, имелся в виду GPT-4). Модель генерирует текстовое описание и выделяет признаки. Каталог хранится как набор JSON-файлов.

Мы выбрали текстовые признаки, потому что визуальные эмбеддинги не позволяют точно различить шкафы, отличающиеся лишь количеством полок или остеклением.

Этап 5: рекомендательная система

Финальный этап — поиск топ-3 подходящих артикулов для каждого шкафа. Процесс включает три фазы:

  • Фильтрация: по классу шкафа применяются специфичные правила (например, количество ящиков). Реализовано три прохода с постепенным ослаблением условий, чтобы найти альтернативу, даже если точного совпадения нет.
  • Проверка размеров: кандидаты сверяются по габаритам. Если ни один не подходит — включается режим без фильтрации по размеру.
  • Ранжирование: оставшиеся кандидаты оцениваются по композитному скору, учитывающему сходство признаков и размеров.

Результаты

Итоговая точность системы:

  • Детекция шкафов — 96%
  • Извлечение размерностей — 87%
  • Описание признаков — 87%
  • Точность рекомендации — 87%

По сравнению с начальным подходом (максимум 34% у Gemini 2.5 Pro), это прирост более чем в 2.5 раза. Обработка документа занимает 5–7 минут — на порядок быстрее ручного способа.

Заключение

  • LLM пока не всесильны. Мультимодальные модели не справляются с комплексными задачами, требующими одновременного анализа, подсчёта и поиска. Разделение на этапы дало кратный прирост качества.
  • Специфичные правила критически важны. Без учёта вложенности и предметных ограничений универсальный матчинг работает плохо. Знание предметной области не заменить одной нейросетью.
  • Gemini 3 — заметный прорыв. Переход с Gemini 2.5 Pro дал прирост 6–13% на разных этапах. Качество визуального анализа архитектурных чертежей существенно выросло.
Читать оригинал