Угадайте город по фотографии

Мы выпустили новую игру, в которую можно играть с Алисой, — «Угадайте город по фотографии». Механика игры простая: вам показывают случайную фотографию с Яндекс.Карт, а вы угадываете, в каком из четырёх городов России она сделана. Сама игра при этом достаточно сложная. На снимках попадается всё подряд — и знаковые достопримечательности, и места, которые есть в каждом городе: новостройки, церкви, торговые центры, спальные районы. Узнать Москву по Красной площади или Казань по мечети Кул-Шариф не составляет труда. Но чтобы определить, в каком городе России снята панельная девятиэтажка, надо быть настоящим краеведом.

Скриншот игры

Правильный ответ могут подсказать детали: рельеф, растения, транспорт, вывески и указатели. Если на фото вы видите пирамидальный тополь, вряд ли оно сделано где-то на севере. Если на снимке «сталинка», это определённо не Ноябрьск и не Новый Уренгой — они основаны в 1970-х годах. Обилие японских машин говорит о том, что на фотографии, вероятно, один из городов Дальнего Востока — и так далее.

В игре есть виртуальный соперник — Алиса. Она угадывает города вместе с игроком. Мы добавили Алису, чтобы было не скучно играть в одиночку. А ещё нам захотелось проверить, насколько хорошо искусственный интеллект справляется с задачей узнавания городов по сравнению с людьми. Наверняка существуют не очевидные для человека детали, по которым один город отличается от другого.

Как готовили фотографии

Снимки, которые вы видите в игре, — из Яндекс.Карт; их загрузили пользователи. Мы взяли все фото с Карт, сделанные на территории России, и исключили те, которые были сняты в сельской местности и в небольших городах. Если для города доступно всего две-три фотографии, Алиса не научится распознавать его достоверно.

Пользовательские фотографии на Яндекс.Картах

Затем фотографии автоматически отфильтровали. Во-первых, убрали снимки плохого качества: слишком маленькие или слишком тёмные. Во-вторых, отбросили снимки с неподходящими сюжетами — например, фотографии, где большую часть кадра занимают вывеска или объявление. В результате осталось около 400 тысяч фотографий, сделанных в 111 городах России. Распределение по городам получилось неравномерным: очевидно, что снимков Санкт-Петербурга на Яндекс.Картах гораздо больше, чем фотографий Старого Оскола.

Как Алиса училась распознавать города

В Лаборатории машинного интеллекта Яндекса обучили специализированный нейросетевой классификатор. Он не просто распознаёт на фото объекты, а по их особенностям пытается определить, в каком городе они могли бы находиться.

В игре задействована нейронная сеть с архитектурой SE-ResNeXt-50, обученная на 80 тысячах классов. Это основная нейросеть, которую Яндекс использует для обработки изображений. Для игры мы берём выходы одного из верхних слоёв сети и доучиваем на них классификатор изображений.

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

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

Все фотографии, которые показывает игра,  Алиса видит впервые. Более того, искусственный интеллект, в отличие от людей, не обучается в ходе игры. Если сыграть несколько раундов подряд, какой-то снимок может выпасть повторно — человек его узнает, а Алиса будет смотреть на фото как в первый раз.

Что видит на снимках нейронная сеть

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

Однозначного ответа на вопрос «Какой город на фотографии?» искусственный интеллект не даёт. Вместо этого он вычисляет вероятности: например, нейросеть может быть на 75% уверена, что на снимке Ялта и на 25% — что Москва.

Часовня Николая Чудотворца в Ялте. Красным цветом отмечены области, которые «голосовали» за то, что это Москва. Зелёным — за то, что это Ялта.

Мы несколько недель тестировали игру в Яндексе. Пока статистика показывает, что Алиса справляется с угадыванием в среднем лучше, чем живые игроки. У людей при этом есть фора — они могут определять города по надписям и кодам регионов на автомобильных номерах. Алиса в игре этого не делает: мы сознательно не стали добавлять функцию распознавания текста.

Проверьте себя — откройте игру в браузере или скажите Алисе «Давай сыграем в «Угадай город по фото». Если вам удастся обойти искусственный интеллект, можете считать себя краеведом-экспертом. Кстати, соревноваться можно не только с Алисой, но и с другими людьми — для этого используйте ссылку «Бросить вызов друзьям». По ссылке друзья увидят тот же набор снимков, что и вы.

©  Яндекс