Мы выпустили новую игру, в которую можно играть с Алисой, — «Угадайте город по фотографии». Механика игры простая: вам показывают случайную фотографию с Яндекс.Карт, а вы угадываете, в каком из четырёх городов России она сделана. Сама игра при этом достаточно сложная. На снимках попадается всё подряд — и знаковые достопримечательности, и места, которые есть в каждом городе: новостройки, церкви, торговые центры, спальные районы. Узнать Москву по Красной площади или Казань по мечети Кул-Шариф не составляет труда. Но чтобы определить, в каком городе России снята панельная девятиэтажка, надо быть настоящим краеведом.
Правильный ответ могут подсказать детали: рельеф, растения, транспорт, вывески и указатели. Если на фото вы видите пирамидальный тополь, вряд ли оно сделано где-то на севере. Если на снимке «сталинка», это определённо не Ноябрьск и не Новый Уренгой — они основаны в 1970-х годах. Обилие японских машин говорит о том, что на фотографии, вероятно, один из городов Дальнего Востока — и так далее.
В игре есть виртуальный соперник — Алиса. Она угадывает города вместе с игроком. Мы добавили Алису, чтобы было не скучно играть в одиночку. А ещё нам захотелось проверить, насколько хорошо искусственный интеллект справляется с задачей узнавания городов по сравнению с людьми. Наверняка существуют не очевидные для человека детали, по которым один город можно отличить от другого.
Как готовили фотографии
Снимки, которые вы видите в игре, — из Яндекс.Карт; их загрузили пользователи. Мы взяли все фото с Карт, сделанные на территории России, и исключили те, которые были сняты в сельской местности и в небольших городах. Если для города доступно всего две-три фотографии, Алиса не научится распознавать его достоверно.
Затем фотографии автоматически отфильтровали. Во-первых, убрали снимки плохого качества: слишком маленькие или слишком тёмные. Во-вторых, отбросили снимки с неподходящими сюжетами — например, фотографии, где большую часть кадра занимают вывеска или объявление. В результате осталось около 400 тысяч фотографий, сделанных в 111 городах России. Распределение по городам получилось неравномерным: очевидно, что снимков Санкт-Петербурга на Яндекс.Картах гораздо больше, чем фотографий Старого Оскола.
Как Алиса училась распознавать города
В Лаборатории машинного интеллекта Яндекса обучили специализированный нейросетевой классификатор. Он не просто распознаёт на фото объекты, а по их особенностям пытается определить, в каком городе они могли бы находиться.
В игре задействована нейронная сеть с архитектурой SE-ResNeXt-50, обученная на 80 тысячах классов. Это основная нейросеть, которую Яндекс использует для обработки изображений. Для игры мы берём выходы одного из верхних слоёв сети и доучиваем на них классификатор изображений.
В основе классификатора лежит нейронная сеть. Её обучают примерно так же, как людей: показывают фотографию и сообщают, в каком городе она снята. Все картинки, показанные при обучении, нейросеть запоминает — и в дальнейшем узнаёт со стопроцентной точностью.
Мы разделили фотографии на две части: одни использовались только для обучения, а другие только для игры. Это позволило научить нейросеть, и вместе с ней и Алису, обобщать наблюдения и находить закономерности, а не выдавать заученный ответ.
Все фотографии, которые показывает игра, Алиса видит впервые. Более того, искусственный интеллект, в отличие от людей, не обучается в ходе игры. Если сыграть несколько раундов подряд, какой-то снимок может выпасть повторно — человек его узнает, а Алиса будет смотреть на фото как в первый раз.
Что видит на снимках нейронная сеть
Точно понять, почему нейронная сеть приняла то или иное решение, нельзя — но можно выделить на снимке области, которые сыграли важную роль при вынесении вердикта. На чёрно-белом изображении красным отмечены зоны, которые помогли нейросети определить, что на фото — Владивосток (это правильный ответ).
Однозначного ответа на вопрос «Какой город на фотографии?» искусственный интеллект не даёт. Вместо этого он вычисляет вероятности: например, нейросеть может быть на 75% уверена, что на снимке Ялта и на 25% — что Москва.
Мы несколько недель тестировали игру в Яндексе. Пока статистика показывает, что Алиса справляется с угадыванием в среднем лучше, чем живые игроки. У людей при этом есть фора — они могут определять города по надписям и кодам регионов на автомобильных номерах. Алиса в игре этого не делает: мы сознательно не стали добавлять функцию распознавания текста.
Проверьте себя — откройте игру в браузере или скажите Алисе «Давай сыграем в „Угадай город по фото“». Если вам удастся обойти искусственный интеллект, можете считать себя краеведом-экспертом.
Кстати, соревноваться можно не только с Алисой, но и с другими людьми — для этого используйте ссылку «Бросить вызов друзьям». По ссылке друзья увидят тот же набор снимков, что и вы.