Разработчики из Intel создали нейросеть, превращающую кадры из компьютерной игры GTA V в фотореалистичные. Для этого они обучили ее на множестве видео, снятых из салона автомобилей во время поездок. Пока алгоритм работает с небольшой скоростью, но в будущем его можно будет применять как модуль в компьютерных играх, повышающий их реалистичность в реальном времени, считают разработчики. Статья, примеры работы алгоритма и видео с рассказом о разработке опубликованы на сайте авторов.
Нейросетевые алгоритмы уже не первый год применяются на практике в компьютерных играх. Один из самых ярких примеров — алгоритм DLSS от NVIDIA. Он позволяет рендерить изображение игровым движком в одном разрешении, к примеру, Full HD, а затем при помощи нейросети увеличивать разрешение, к примеру, до 4K. Это позволяет тратить значительно меньше вычислительных ресурсов на получение изображения практически такого же качества, как и при обычном рендеринге в максимальном разрешении.
Также исследователи в области алгоритмов по работе с графикой работают над повышением реалистичности графики в играх. Например, в 2018 году исследователи из той же NVIDIA предложили новый подход для рендеринга. В их прототипе автосимулятора игровой движок создавал семантически сегментированные кадры, которые затем превращались в фотореалистичные с помощью нейросети, переносящей стили между видеороликами.
Исследователи из Intel Labs под руководством Владлена Колтуна (Vladlen Koltun) развили эту идею и научили нейросеть превращать кадры игры в фотореалистичные с гораздо более высоким и стабильным качеством, чем удавалось предыдущим алгоритмам. Главные отличие, позволившие авторам добиться таких результатов — это само устройство алгоритма и отбор обучающих кадров.
Авторы новой работы решили не создавать свой автосимулятор, а воспользовались GTA V, в которой существенная часть игрового процесса проходит за рулем автомобиля. Главное новшество, которое привнесли Колтун и коллеги, заключается в идее использовать помимо кадров из игры содержимое G-буфера, который используется в методе отложенного рендеринга. Суть этого метода заключается в том, что рендеринг 3D-сцены разбивается на две части, в первой из которых движок рассчитывает геометрические данные для рендеринга сцены и заполняет G-буфер кадрами, на которых отражаются свойства объектов: карта нормалей к поверхности, карта отражательной способности, карта глубины и так далее. На втором этапе движок, используя эти промежуточные данные о свойствах объектов, проводит рендеринг освещения в сцене.
Алгоритм, созданный разработчиками, принимает два типа данных: обычный кадр из игры и кадры из G-буфера, дающие нейросети больше данных о 3D-сцене и соответственно позволяющие повысить качество итогового изображения. Поскольку кадры из буфера имеют разную размерность и по сути кодируют данные разного типа, они предварительно пропускаются через кодировщик, который на выходе выдает тензор признаков.
Этот тензор вместе с исходным кадром (скриншотом) из игры попадает на сверточную нейросеть на базе HRNetV2, модифицированную авторами в том числе для работы с данными из G-буфера. На выходе образуется кадр из игры, который структурно повторяет исходный, то есть отображает ту же сцену, но визуально выглядит более похожим на реальный мир.
Для эффективного обучения нейросети разработчики применили два метода. Во-первых, они использовали функцию потерь, основанную на индексе LPIPS, которая способствует тому, чтобы структурные различия между исходным и получаемым кадрами были минимальными. Во-вторых, они применили сеть-дискриминатор, которая во время обучения пыталась отличить «улучшенный» кадр от реальной фотографии из обучающей выборки. Причем при обучении сравнение велось не сразу по всему изображению, а по отдельным фрагментам, что позволило улучшить результаты.
Разработчики создали три отдельные модели, обучив их на трех датасетах: Cityscapes, KITTI и Mapillary Vistas. Каждый из них состоит из снимков, снятых из салона автомобиля, но отличается тем, где собраны видео. В результате они получили модели, дающие разный визуальный стиль. Например, модель, обученная на Cityscapes, который в основном был снят в Германии на видеорегистратор, дает более темные и менее контрастные кадры, тогда как нейросеть, которую обучали на Mapillary Vistas, снятый в разных странах на смартфоны, научилась делать более яркие и контрастные изображения. Кроме того, исследователи отмечают, что получаемые в результате работы алгоритма кадры гораздо более согласованы между собой и не содержат резких различий, как это случалось с предыдущими алгоритмами.
Авторы признают, что в нынешнем виде при запуске на мощной видеокарте NVIDIA Geforce RTX 3090 алгоритм обрабатывает два кадра в секунду, что недостаточно для внедрения в игры. Однако они не ставили перед собой задачу оптимизации производительности. Также они отмечают, что при внедрении подобного алгоритма непосредственно в игровой движок производительность будет заметно выше. Более подробно о работе алгоритма можно узнать из расширенного видео с комментариями руководителя научной группы Владлена Колтуна.
Помимо нейросетей для улучшения работы обычных движков для рендеринга существуют и нейросети, непосредственно отвечающие за рендеринг 3D-сцен. Например, в 2019 году российские разработчики научили нейросетевой алгоритм создавать видеоролики, «снятые» с новых ракурсов.
Григорий Копиев