Зрелища опыта; через них вы увидите ясно во второй раз

- Хенрик Ибсен

NoBroker.com - это крупнейшая в мире торговая площадка C2C без брокерских услуг. Наши основные ценности сосредоточены на налаживании связи между ищущими и собственниками наиболее эффективным способом. С помощью технологий и искусственного интеллекта мы решили одни из самых сложных задач в космосе.

Мы считаем, что C2C лучше всего решается путем обеспечения трех вещей - удаления посредников, обеспечения корректности представленных списков и устранения максимально возможной асимметрии информации между двумя сторонами. ML составляет основу многих систем, обеспечивающих их на NoBroker.com.

Очень важным аспектом оптимизации соединений C2C является обеспечение того, чтобы обе стороны имели под рукой как можно больше информации об объекте, с которым они взаимодействуют. Другими словами, обеспечение того, чтобы объекты недвижимости, перечисленные на NoBroker.com, передавали арендатору как можно больше информации, устраняет множество препятствий в его поиске дома.

Фотографии недвижимости - одна из таких важных сведений. Арендатор с определенными предпочтениями в отношении собственности принимает большинство суждений о ней по фотографиям. Мы наблюдали, что объекты с информативными фотографиями вызывают на 300% больший интерес по сравнению с объектами с плохими фотографиями или без них. Излишне говорить, что при просмотре на NoBroker.com основное внимание пользователя уделяется фотографиям.

Следовательно, загрузка фотографий - очень важный процесс для нас. Мы обрабатываем около 1,2 миллиона фотографий недвижимости на платформе каждый месяц. Эти изображения загружаются владельцами через несколько каналов, включая приложение, компьютер, мобильный Интернет и т. Д. Кроме того, мы также позволяем владельцам отправлять изображения своих объектов через WhatsApp. Фотографии через WhatsApp составляют около 40% изображений, которые мы получаем на платформе.

У нас есть правила, чтобы убедиться, что фотографии загруженных объектов недвижимости актуальны, информативны и не содержат злоупотреблений. По нашим наблюдениям, около 5–8% загрузок на платформу не соответствуют нашим рекомендациям при включении в листинг. К ним относятся одно или несколько из следующего:

  • Размытые / зашумленные изображения
  • Наличие сторонних водяных знаков
  • Наличие личной идентификационной информации (например, номера телефонов / адрес)
  • Наличие лиц / селфи
  • Случайные загрузки из WhatsApp
  • Пустые / неинформативные изображения
  • Явное содержание
  • Скриншоты
  • Изображения с низким разрешением

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

Так родилась Ирис.

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

Группа из 7 распределенных сервисов машинного обучения на экране GKE и загрузка изображений на NoBroker.com со временем загрузки 99-го процентиля, равным 3 минутам.

Компоненты в IRIS

Iris состоит из семейства моделей машинного обучения, которые вместе решают окончательную судьбу изображения на NoBroker.com. Вот их обзор. Мы опишем их подробно в другом сообщении в блоге очень скоро.

  • Обнаружение водяных знаков: - глубокая нейронная сеть, которая выполняет локализацию + классификацию сторонних водяных знаков. Технически это SSD с Mobilenet V2, обученный как бинарный классификатор на внутреннем кураторском наборе данных.
  • Обнаружение объектов: глубокая нейронная сеть для обнаружения объектов в комнате. Наша современная модель может идентифицировать около 40 объектов на типичном изображении недвижимости. Мы используем это для классификации комнат, обнаружения людей и явной пометки содержимого. Это снова SSD mobilenet V2, обученный коренным народам.
  • Обнаружение размытия. Используя дисперсию лапласиана по пикселям изображения, мы вычисляем метрику размытия и порог ее по значению отсечения, чтобы решить, одобрять ли изображения или нет.
  • Обнаружение снимков экрана: Используя градиент пикселей изображения, мы определяем, содержит ли данное изображение шаблоны, похожие на снимок экрана.
  • OCR: Используя модели OCR, мы идентифицируем тексты на изображении. Это могут быть адреса, номера телефонов, доски с именами или логотипы телефонов, например «снято на redmi». Мы используем наивную модель НЛП для просмотра того текстового содержимого, которое соответствует нашим рекомендациям, а не соответствует.
  • NIMA - Neural Image Assessment: мы используем модель googles nima для оценки эстетического качества изображения. Затем этот рейтинг используется, чтобы решить, какое изображение будет показано в качестве изображения предварительного просмотра в листинге недвижимости.
  • Служба загрузки: микрослужба для коррекции ориентации, коррекции соотношения сторон, добавления логотипа NoBroker, сжатия и загрузки.
  • Конечный автомат. Решение о том, загружать ли изображение на платформу или нет, принимается на основании общего правила результатов всех других моделей изображений. Все они являются независимыми микросервисами, самостоятельно обрабатывая изображения в своем собственном темпе. Конечный автомат работает в синергии со всеми этими микросервисами, чтобы на основе механизма правил решить, загружать ли изображение или нет.
  • Редактор изображений: центральный микросервис, позволяющий вносить необходимые изменения в изображение в конце оценки. Например; изображение, которое не удалось из-за наличия водяного знака, передается в модель удаления водяного знака. Технически модель удаления водяных знаков - это основанная на Unet модель для реконструкции изображения. Метод удаления снимков экрана на основе статистики пикселей также существует в сервисе редактора. В настоящее время мы работаем над другими сервисами редактирования, такими как устранение размытости, сверхвысокое разрешение и удаление текста с помощью GAN.

Обзор платформы IRIS

Все вышеперечисленные компоненты IRIS объединены в 7 микросервисов. Центральный интерфейс IRIS принимает изображения от серверной части ядра NoBroker. Этот сервис распределяет изображение через RabbitMQ до микросервисов на 6 ML. Мы будем называть их оценщиками изображений. Каждый из этих оценщиков обрабатывает изображения одно за другим и сохраняет свое оцененное состояние изображений (наличие водяного знака / размытие / наличие адреса и т. Д.) В центральном состоянии Redis. Микрослужба конечного автомата опрашивается каждым из этих модулей оценки в конце обработки. У конечного автомата есть написанные правила, которые принимают решение о загрузке + утверждении изображения после того, как все оценщики вернут свои соответствующие выходные данные.

Изображения, требующие редактирования после обработки; например, снимки экрана удаления водяных знаков / кадрирования и т. д. передаются другому микросервису, который мы будем называть редактором. Редактор вносит необходимые изменения в соответствии с решением конечного автомата и загружает изображение обратно в листинг.

ИРИС в масштабе

Все вышеперечисленные компоненты организованы в Google Cloud Kubernetes. Модули оценщика в центре работают как рабочие сельдерея, подписывающиеся из очереди RabbitMQ. Эти модули оценщика работают как поды кубернетов с размером очереди HPA, настроенным на RabbitMQ.

Чтобы получить представление об этом, семейство iris масштабируется до 24 реплик на GKE в часы пик. В непиковые часы система сокращается до 7 копий. И все это без ручного вмешательства.

Система проверяет все изображения, поступающие на платформу, и автоматически загружает их в течение 5 секунд - 3 минут с момента загрузки пользователем на платформу.

Любая достаточно продвинутая технология неотличима от магии.

- Артур Кларк

Каждый из компонентов iris - это отдельная запись в блоге. Мы скоро разместим больше о них в этой публикации. Мы также будем открывать источники для некоторых из них. Посмотрите это пространство на nobroker.com, чтобы узнать о других удивительных вещах, которые будят нас каждый день.