Все кейсы
Компьютерное зрение, сегментация

Векторизация планов помещений: растровое изображение в структурированные стены и проёмы

Сегментационная модель переводит скан плана помещения в векторные данные — полигоны стен и проёмов. Исходный код открыт, покрыт тестами.

Масштаб
Датасет CubiCasa5k, обучение сегментации
Этап
Открытый код
Сдан
декабрь 2025

TL;DR. Планы помещений чаще всего существуют картинкой: скан, JPEG, страница PDF. Модель сегментации на PyTorch, обученная на датасете CubiCasa5k, переводит такое изображение в структурированные векторные данные — полигоны стен и проёмов, пригодные для CRM и интерьерных сервисов. Код открыт.

Ситуация: план помещения существует только как картинка

В интерьерных сервисах, CRM застройщиков и системах учёта недвижимости планировка обычно хранится изображением. Картинку можно показать человеку, но нельзя посчитать: измерить площадь по помещениям, расставить объекты, сопоставить две планировки между собой.

Перевод плана в векторный вид делается вручную — обводкой в графическом редакторе. На поток такой способ не масштабируется.

Задача

  1. Принимать растровое изображение плана — скан или экспорт из PDF.
  2. Выделять конструктивные элементы: стены и проёмы.
  3. Отдавать результат структурированными данными, а не другой картинкой.
  4. Собрать воспроизводимый пайплайн: подготовка датасета, обучение, инференс, тесты.

Что сделали

Пайплайн состоит из трёх частей.

Подготовка данных. Датасет CubiCasa5k размечен в формате COCO. Скрипты конвертируют аннотации в маски сегментации, пригодные для обучения, и собирают выборки.

Модель. Сегментационная сеть на PyTorch обучается отличать стены и проёмы от остального содержимого плана — размерных линий, подписей, мебели, штриховки.

Векторизация. Предсказанная маска переводится в полигоны: контуры стен и проёмов выделяются и упрощаются до векторного представления, которое уже можно передать дальше — в интерьерный редактор или в карточку объекта.

Проект покрыт тестами, исходный код опубликован на github.com/pimenoffd.

Результат

Ключевые технические решения

  1. Сегментация, а не детекция прямоугольников. Стена на плане — не всегда прямоугольник: скруглённые и наклонные участки встречаются регулярно. Пиксельная маска описывает такую геометрию, рамка объекта — нет.
  2. Конвертация COCO-аннотаций в маски отдельным шагом. Подготовка данных вынесена в самостоятельные скрипты, а не спрятана внутри обучения. Датасет пересобирается без переписывания тренировочного кода.
  3. Векторизация как отдельный этап после инференса. Модель отвечает за маску, упрощение контуров в полигоны — за геометрию. Порог упрощения меняется без переобучения модели.

Частые вопросы

Зачем открывать исходный код такого проекта?

Открытый репозиторий с тестами отвечает на вопрос, который не закрывается описанием кейса: как человек пишет код. Клиентские проекты показать построчно нельзя, pet-project — можно.

Работает ли модель на сканах низкого качества?

Качество исходника влияет напрямую: модель обучена на CubiCasa5k, и чем ближе входное изображение к характеру этого датасета, тем устойчивее результат. Под конкретный поток документов модель дообучается.

Можно ли использовать это в своём сервисе?

Код открыт и доступен на GitHub. Под задачу конкретного сервиса — интеграция, дообучение на своих планировках и вывод в нужный формат — потребуется доработка.

Что было бы дальше

Естественное продолжение — распознавание помещений как замкнутых областей с расчётом площадей, извлечение подписей и размерных линий, экспорт в форматы интерьерных редакторов.

Если у вас поток планировок в виде картинок, из которых нужны данные, — обсудим за 30 минут.

Стек

  • Python
  • PyTorch
  • OpenCV
  • CubiCasa5k
  • pytest

Похожий процесс в вашей компании? Cortex IT делает письменный мини-аудит за 2-3 дня — бесплатно.

Запросить мини-аудит