Автофотограф

На Яндекс.Картах легко найти по адресу любой дом. А чтобы пользователь мог посмотреть, как выглядит здание, на карточках многих домов есть фотографии. Часть из них Яндексу передают партнеры, часть добавляют сами пользователи. Но больше всего фотографий Яндекс добывает из собственных Панорам улиц. Специально для этого была разработана технология Автофотограф.
Панорамы улиц состоят из множества снимков, на которых запечатлены тысячи зданий. Но просмотреть все панорамы и «вручную» вырезать из них снимки домов — это сложно и долго. Панорамы снимаются через каждые 20-50 метров, и только для одного Петербурга было сделано 60 тысяч панорам. Поэтому нужно было разработать механизм, который бы автоматически находил на панорамах здания, вырезал и отбирал лучшие кадры. Этот механизм и получил название Автофотограф.
Автофотограф находит на панорамах дома, сопоставляя панорамный снимок и соответствующий фрагмент обычной карты. Зная координаты дома на карте и его очертания, Автофотограф определяет, как расположен дом относительно точки съёмки. Для этого он вычисляет для крайних точек здания азимут (угол между направлением на север и на объект). А затем по этим азимутам находит дом на панорамном снимке.
Сначала Автофотограф делает снимки всех домов подряд, не обращая внимания на то, хорошо ли они видны. Может оказаться, что дом на снимке закрывает листва или неудачно припаркованный грузовик. Такие фотографии, конечно, не помогут пользователям рассмотреть здание. Поэтому дальше Автофотограф оценивает качество снимков. Для этого был создан специальный классификатор, который анализирует фотографию и выставляет свою оценку — от единицы до трех.
При оценке снимков классификатор учитывает целый ряд факторов: линейные размеры здания, угол съёмки, расстояние от точки съёмки до дома. Эти параметры помогают определить, в каком ракурсе и насколько крупно снято здание. Кроме того, анализируется само изображение: насыщенность цвета, цветовые и геометрические составляющие. Так, если снимок содержит много разнонаправленных линий, скорее всего, дом плохо различим. А если на фотографии много зелёного или желто-оранжевого цвета, здание может быть закрыто листвой.
Классификатор-оценщик настраивался с помощью машинного обучения. Чтобы научить машину определять качество снимков, специалисты вручную отобрали несколько тысяч хороших фотографий. Проанализировав снимки, классификатор выделил наиболее важные для определения качества факторы и рассчитал их значимость.
Обычно здание попадает сразу на несколько панорам, поэтому у Автофотографа получается 15-20 снимков одного дома. Среди них нужно выбрать несколько хороших фотографий, снятых с разных точек, ведь пользователям удобно, когда они могут увидеть здание с разных сторон. Для этого Автофотограф разбивает все снимки на группы (по секторам) — в зависимости от того, с какой точки и с какого расстояния они были сделаны. И затем выбирает несколько лучших фотографий из разных секторов.
Отобранные снимки загружаются на сервис Яндекс.Фотки, а оттуда попадают на Яндекс.Карты. Эти фотографии и видят пользователи на карточке здания.