Те, кто имел дело с покупкой и продажей недвижимости, знает, что просмотры — очень хлопотное занятие. Неудивительно, что для экономии времени появляются предложения посмотреть квартиру онлайн или с помощью 3D‑тура. О таких виртуальных экскурсиях мы сегодня и поговорим.

В сентябре Яндекс Недвижимость рассказала о 3D‑турах для новостроек. С момента начала тестирования в июле на сервисе было сгенерировано более четверти миллиона виртуальных экскурсий по строящимся квартирам. Чтобы это стало возможным, мы обучили нейросеть анализировать планировки и превращать их в трёхмерные визуализации. Но прежде всего нужно было проделать большую и кропотливую работу, чтобы нейросеть понимала, где отрисовывать окно или класть плитку на пол.

Меня зовут Катя Шибанова, я работаю архитектором краудсорсинговых решений (CSA) в службе разметки данных Yandex Crowd Solutions. Недавно к нам обратились коллеги из Яндекс Недвижимости: нужно было помочь с разметкой для обучения модели компьютерного зрения, которую используют для создания 3D‑туров. Об этом интересном проекте и будет мой рассказ. Я расскажу, чем опасны миллиметровые зазоры между полигонами в разметке, почему помимо типов помещений (кухня, спальня, санузел и тому подобное) нужно размечать структурно важные элементы — двери, окна, несущие стены, а также почему приоритизация геометрической согласованности важнее «средней» точности по пикселям. 

Для чего нужны 3D-туры

Лично ходить на просмотры квартир — занятие затратное: нужно договариваться о времени, ехать через весь город, тратить часы на дорогу и сами показы. А если приглянулась квартира в строящемся доме, то её точно не удастся посмотреть. Неудобно всем — и покупателям, и застройщикам. Поэтому у сервисов недвижимости появляется дополнительный стимул давать клиентам цифровые инструменты, которые решают эти проблемы. Очевидно, что пользователь скорее выберет платформу, где можно «прогуляться» по квартире в пару кликов.

Самый популярный формат — 3D‑тур. Обычно его делают по классической схеме: фотограф снимает каждую комнату, потом специалист склеивает всё это в красивый интерактив. Метод работает, но процесс всё равно напоминает офлайн‑просмотр: много времени, много ресурсов.

Технологичный путь — построить 3D‑тур прямо по 2D‑плану квартиры. Именно в этой истории мы и оказались: для обучения нейросети под эту задачу нужно было научить её «понимать» планы. Мы разметили сотни чертежей: подписывали типы помещений, отмечали двери, окна и несущие стены. Всё это, чтобы модель умела превращать сухую схему в наглядное виртуальное пространство, по которому можно «пройтись» так же, как по реальной квартире.

В задаче обучения модели для 3D‑туров точность пиксель в пиксель критична. Если стены будут размечены «на глазок», модель начнёт воспроизводить те же ошибки. А дальше это уйдёт в итоговый продукт — и в турах появятся «плывущие» стены и кривые дверные проёмы. Такой эффект уместен разве что в архитектуре Гауди:)

Поэтому в разметке важно сначала договориться с заказчиком, что именно считается качеством: какие объекты нужно выделять, в каком виде должны быть данные и как они решат задачу машинного обучения. Для нас это всегда баланс трёх факторов: качества, скорости и бюджета.

Первый подход к разметке квартир

На старте мы получили от команды Яндекс Недвижимости 2D‑планы квартир для разметки. Задача выглядела просто: обозначить кухни, спальни, санузлы и другие помещения. Технически это означало одно — обвести каждый объект по контуру и подписать его тип. Например, так мог выглядеть план квартиры‑студии, который попал к нам на разметку.

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

  • удалили с планов лишние текстовые комментарии от застройщиков, которые могли мешать;

  • внимательно изучили чертежи и отсортировали их по наличию разных типов помещений.

Казалось бы, дальше — рутина: запускаем разметку и идём по списку. Но тут началось самое интересное.

Интерфейс, которым мы обычно пользовались для разметки, не подходил для задач с такой точностью. Мы пробовали сегментировать каждое помещение отдельно, потом «склеивать» сегменты. Но инструменты не позволяли идеально редактировать полигоны, стыковать объекты пиксель в пиксель и корректно работать с пересекающимися элементами. Даже небольшие огрехи при разметке могли аукнуться в 3D: превращаться в дыры между стенами или перекосы в планировке.

Пример неточной разметки: зона кухни размечена не по стене, между ванной и коридором затесалась «щель». Всё это потом чревато неправильным рендером 
Пример неточной разметки: зона кухни размечена не по стене, между ванной и коридором затесалась «щель». Всё это потом чревато неправильным рендером 

Ещё одна проблема — время. На один план уходило около 30 минут: 15 — на сегментацию, несколько минут на проверку и ещё 10 — на пересегментацию. Для десятков и сотен чертежей это означало рост нагрузки на исполнителей и, соответственно, стоимости разметки. Стало очевидно, что нужно что‑то поменять.

Новые инструменты

Для начала мы решили собрать обратную связь от исполнителей, команды Недвижимости и коллег, которые так или иначе сталкиваются с задачами сегментации для компьютерного зрения. А затем начали итерационно дорабатывать инструменты на нашей платформе. Среди прочего мы вдохновлялись программами, которыми пользуются архитекторы, вроде ArchiCAD, чтобы добавить полезную функциональность.

Каждую итерацию мы тестировали в деле: исполнители пробовали новый интерфейс и делились впечатлениями. Иногда это были лаконичные отзывы: «Спасибо, стало проще стыковать полигоны» или «Не хватает возможности скрывать слои». По таким комментариям мы выпускали следующую версию. Параллельно команда Недвижимости оценивала качество разметки, чтобы убедиться, что новые функции действительно повышают точность.

В итоге у нас получился обновлённый интерфейс сегментации с возможностями, которых раньше не хватало:

  • Редактирование. Вместо того чтобы удалять полигон и рисовать заново (как в старых решениях), можно просто подтянуть вершины. То же самое с предразметкой — если разметку сделали люди или модель, её проще поправить, чем перерисовывать.

  • Объединение и вырезание. Это продолжение редактирования: быстрее, аккуратнее и гибче. Например, удобнее обвести помещение по условным блокам, а потом объединить куски в единый полигон.

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

  • Примагничивание и стыковка. Если, например, между комнатой и коридором останется невидимый зазор, модель научится рисовать такие же щели. Асессорам проще сразу работать с автоподгонкой без зазоров.

  • Виртуальная миллиметровая бумага. С её помощью удобно выстраивать оси и проводить ровные вертикальные и горизонтальные линии.

  • Скрытие полигонов. Пригождается, когда мы, например, размечаем пятикомнатную квартиру. Комнаты и стены уже есть, но остались вентиляционные шахты. Чтобы не мешали остальные классы, скрываем их и спокойно дорисовываем то, что нужно.

Так выглядел интерфейс для разметки плана квартиры после доработки интерфейса. Панель инструментов заметно усовершенствовали
Так выглядел интерфейс для разметки плана квартиры после доработки интерфейса. Панель инструментов заметно усовершенствовали
Так работает инструмент «Примагничивание»
Так работает инструмент «Примагничивание»
А так — инструменты «Отмена» и «Мишень»
А так — инструменты «Отмена» и «Мишень»

С новым интерфейсом нам удалось увеличить скорость разметки в два раза.

Команда разметки и тайная комната

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

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

В итоге этот проект оказался ценным не только тем, что мы успешно разметили квартиры и коллеги смогли построить 3D‑тур, но и тем, что на его основе появился инструмент, который вышел далеко за пределы одного кейса. Например, его активно используют в задачах сегментации для автономного транспорта и складской робототехники. 

Что у нас получилось

Мы разметили для команды Недвижимости 12 000 квартир. За это время удалось не только решить задачу, но и оптимизировать процесс: изначально разметка была сложной и дорогой, а в итоге мы снизили cost per task на 40%.

И вот как модель в итоге возводит стены и вставляет окна:

Этапы разметки квартиры моделью и вид сверху полученной 3D‑модели
Этапы разметки квартиры моделью и вид сверху полученной 3D‑модели

Итог работы нейросети — квартира, по которой можно «погулять».


В этом проекте мы превратили разметку планов из ручной и хрупкой операции в воспроизводимый инженерный процесс с измеряемым качеством. Ключевые решения: заранее зафиксированные критерии «пиксель в пиксель», предобработка планов, а главное — новый интерфейс сегментации.

Сейчас 3D‑туры по квартирам доступны в приложении и на сайте Яндекс Недвижимости — они отмечены бейджем «3D‑тур». Пока квартиры выглядят одинаково, но вместе с коллегами из Недвижимости мы уже смотрим вперёд: следующая цель — мебель и интерьеры. А накопленная разметка уже работает на обучение модели. Более того, на её основе команда смогла разработать новые, более информативные офлайн‑метрики качества.

А для меня этот проект стал особенным, и сначала он казался мне неподъёмным. Но в процессе всё перевернулось — я настолько увлеклась, что начала советоваться с подругой‑архитектором, коллегами по сегментации, изучать программы для черчения и проектирования. В итоге я прошла путь от «отключите меня от проекта, это невозможно» до «это мой любимый проект, будут ещё задания?». И именно этот контраст лучше всего показывает, как непростая задача может драйвить и стать настоящим источником развития. 

Комментарии (4)