23 829
147
14 марта 2021 в 8:00
Автор: Виталий Олехнович

Как нейросеть улучшает картинку в играх? О технологии DLSS

Когда в американских боевиках на снимках со спутника спецагенты увеличивали номер автомобиля до вполне читаемого состояния, мы смеялись. Начальник стоит над компьютерщиком, заставляет масштабировать, а потом «улучшить» картинку. До такой степени, что на мониторе появляется информация, которая на самом деле не может содержаться в изображении. Для людей, которые более-менее разбираются в обработке фотографий, такое казалось фантастикой. Да и сегодня, в принципе, это остается фантастикой. Но! Технология NVIDIA DLSS делает эту фантастику немного ближе к реальности.

Когда в 2018 году NVIDIA представляла новое поколение видеокарт на микроархитектуре Turing, основной фокус внимания геймеров был сосредоточен на трассировке лучей: видеокарты RTX 2000-й серии стали первыми, которые поддерживают эту технологию на аппаратном уровне благодаря RT-ядрам.

Но также в «тюрингах» были и тензорные ядра. Они, используя результаты глубокого обучения нейросети, улучшали сглаживание, увеличивали производительность и разрешение изображения, которое создается игрой. Технология получила название DLSS — Deep Lerning Super Sampling.

По сути, это один из продвинутых видов технологии сглаживания в играх. Компьютерные геймеры знакомы с ними по загадочным TAA, FXAA, MSAA, 8x, 4x и т. д. в настройках картинки в игре. За этими загадочными аббревиатурами кроются различные вариации сглаживания картинки. Она состоит из пикселей, все линии в кадре состоят из этих пикселей, но с помощью квадратов нарисовать диагональную линию непросто, она будет отображаться лесенками. А когда таких линий и лесенок на границах полигонов на экране много, картинка начинает рябить в глазах.

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

Магия в действии

Первая итерация технологии DLSS была неоднозначной и во многом ограниченной. Она требовала обучения искусственного интеллекта под каждую новую игру, поддержку со стороны разработчиков регулярными допиливаниями и выпуск специальных драйверов для видеокарты с выходом игры. Например, в игре 2019 года Control оригинальная технология повышала частоту смены кадров вплоть до 70%. В большинстве сцен качество изображения было отличным, но движущиеся объекты приносили много проблем. Оригинальной DLSS, к примеру, было непросто справляться с лопастями турбин, которые крутились в одной из сцен игры. Также были проблемы с границами мелких деталей в кадре.

Весной 2020 года NVIDIA выпустила версию DLSS 2.0 и для демонстрации своего прогресса опять показала Control. Там уже и с лопастями все было в порядке, и мелкие объекты стали четче, границы стали более резкими и прорисованными и повысилась общая производительность игры.

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

Оригинальная технология предполагала обучение нейросети под каждую новую игру. DLSS 2.0 стала более универсальной, ее стало проще имплементировать в игры.

Как работает эта магия? У NVIDIA есть специальный фреймворк, который обучает глубокую нейросеть. Обучение заключается в том, что нейросети скармливают десятки тысяч эталонных изображений в высоком разрешении. Действительно высоком — 16К. Эти изображения создаются мощным суперкомпьютером во время оффлайн-рендеринга игры с низкой частотой смены кадров. Благодаря такому натаскиванию нейросеть в последующем на основе исходного изображения в низком качестве способна создавать кадр в высоком разрешении уже на пользовательском устройстве. В этом она опирается на полученные знания во время обучения.

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

Для корректной работы нейросети DLSS 2.0 ей нужны входные данные. Их предоставляет игровой движок. Первая порция данных — изображение в низком разрешении без сглаживания. Вторая — векторы движения для этих изображений. Векторы — это информация о том, в каком направлении со сменой каждого кадра движутся объекты на этом кадре. По сути, это такая карта перемещений пикселей по кадру.

Нейросеть создает кадр в высоком разрешении и, зная векторы его изменения, на этой основе повышает разрешение следующего кадра. Буквально попиксельно определяет, как повысить разрешение в следующем кадре.

Препоны внедрения

В случае с первой итерацией DLSS разработчикам игр приходилось работать в тесном сотрудничестве с NVIDIA, чтобы добавить поддержку в свою игру. Движку глубокого обучения требовалось много изображений из игры. Вторая версия DLSS стала более доступной, она обучается на общих изображениях, ей не нужны вводные данные из конкретной игры.

Благодаря этому список поддерживаемых игр расширился до трех десятков, тогда как у оригинальной DLSS их было меньше десяти.

В начале этого года NVIDIA выпустила плагин для имплементации DLSS в игры в Unreal Marketplace — магазин платных и бесплатных примочек для разработчиков игр на движке Unreal Engine. Но многие разработчики пока не спешат с ее добавлением в свои игры. Во многом это связано с распространенностью 4K-мониторов у геймеров. Все-таки наиболее впечатляюще DLSS 2.0 выглядит в разрешении 4K. Там технология позволяет добиться значительного роста производительности, позволяет даже видеокартам RTX 2000-й серии и начального уровня показывать стабильный и играбельный фреймрейт по сравнению с нативным разрешением в 4K.

Но дело в том, что большинство пека-геймеров по-прежнему играют в разрешении 1080 пикселей — в Steam таких пользователей больше 67%. Второе по популярности разрешение — ноутбучное: 1366×768 пикселей — у 8% пользователей. На третьем месте с небольшим отрывом разместились пользовательские экраны с разрешением 2560×1440 пикселей. 4K мониторы пока остаются уделом энтузиастов: чуть больше 2% от пользователей Steam.

Конкурент от AMD

DLSS — проприетарная технология NVIDIA. Работает только на видеокартах серии RTX, у которых есть тензорные ядра. Они занимаются вычислениями, связанными с алгоритмами искусственного интеллекта. Главный соперник NVIDIA — компания AMD работает над своей альтернативой DLSS, которую называют FidelityFX Super Resolution. Но пока практически никакой конкретной информации об этой разработке нет.

Известно лишь, что у «красных» будет важное преимущество. AMD пообещала, что сделает технологию открытой и кросс-платформенной. Это значит, что технология может прийти на консоли нового поколения, которые используют графическую архитектуру RDNA 2 от AMD.

Недавно AMD устроила презентацию новой видеокарты Radeon RX 6700 XT. Многие надеялись, что во время этого ивента расскажут и про FidelityFX Super Resolution. В кулуарах презентации объяснили, что AMD не торопится с выпуском технологии для одной топовой карты, а вместо этого хочет, чтобы она была во всех смыслах кросс-платформенной.

Технология AMD должна быть чем-то схожей с DLSS. А потому потенциальное присутствие нейросетевого сглаживания на консолях PS5 и Xbox Series вызывает большой интерес, так как далеко не во всех играх они могут показать 60 кадров в секунду в разрешении 4K.

Но все эти рассуждения остаются пока лишь спекуляциями. Возможно, до конца этого года AMD все-таки расскажет больше о своей разработке. А пока продолжаем следить за тем, как охотно разработчики игр будут внедрять в свои продукты DLSS.


Видеокарты в Каталоге на складе магазинов

NVIDIA GeForce GTX 1660 Super, базовая частота 1530 МГц, макс. частота 1815 МГц, 1408sp, частота памяти 14000 МГц, 192 бит, доп. питание: 8 pin, 2 слота, HDMI, DisplayPort
NVIDIA GeForce GTX 1050 Ti, базовая частота 1341 МГц, макс. частота 1455 МГц, 768sp, частота памяти 7008 МГц, 128 бит, доп. питание: нет, 2 слота, DVI, HDMI, DisplayPort
NVIDIA GeForce GTX 1050 Ti, базовая частота 1290 МГц, макс. частота 1392 МГц, 768sp, частота памяти 7000 МГц, 128 бит, 2 слота, DVI, HDMI, DisplayPort

Наш канал в Telegram. Присоединяйтесь!

Есть о чем рассказать? Пишите в наш телеграм-бот. Это анонимно и быстро

Перепечатка текста и фотографий Onliner без разрешения редакции запрещена. nak@onliner.by

Автор: Виталий Олехнович