Технология dlss что это
Бесплатные ФПС: как ИИ помогает сделать игровую графику лучше
В последние годы искусственный интеллект приобретает все большую популярность. Стоит только попросить, и Siri сообщит вам результат футбольного матча, который вы пропустили вчера вечером. Рекомендации в Spotify подскажут, чем пополнить музыкальную библиотеку, а Amazon попытается предсказать, какой продукт вы купите в следующий раз, когда этого еще не знаете даже вы.
Не обошел стороной он и игровую индустрию. Пока в геймерской среде сравнивают графику вышедшей на ПК Death Stranding с технологией DLSS и без нее, на днях стало известно, что в процессорах NVIDIA Ampere будет задействована уже DLSS 3.0. При этом она будет работать с любой игрой с TAA (Temporal Anti-Aliasing) и драйвером Game Ready. Это означает, что разработчикам понадобится подстроить технологию к своим играм — впрочем, этот процесс будет проходить куда легче, чем сейчас.
В этой статье мы рассмотрим, как NVIDIA использует машинное обучение для улучшения нашего игрового опыта.
Что такое DLSS?
Качество графики в современных играх только возрастает, а вместе с ним растет вычислительная сложность производимых операций. Этому мы обязаны трассировке лучей, имитирующей настоящее освещение в реальном времени, тем самым оставляя предварительно запеченные отражения пережитком прошлого. Вычислительная сложность рейтрейсинга связана с тем, что разрешение современных игр превышает старые добрые 1080p. Отсюда необходимость ускорения расчетов во время рендеринга.
Deep Learning Super Sampling (DLSS) — технология NVIDIA, использующая глубокое машинное обучение для повышения частоты кадров в играх, требующих сложных графических вычислений. С DLSS геймеры могут использовать более высокие настройки и разрешение, не беспокоясь при этом за стабильность fps.
В частности, DLSS выполняет задачу суперразрешения. С его помощью изображение с разрешением, скажем, 1080p может быть увеличено до 4K с минимальными потерями в качестве. Это избавляет от необходимости воспроизводить игру в 4K (и тем самым, вероятно, расплавить ваш ПК). Разрешение по-прежнему будет 1080p, что позволяет сохранить более высокую частоту кадров, однако благодаря масштабированию при помощи DLSS разницы с 4K вы практически не заметите.
Архитектура DLSS 2.0
По сути, DLSS — это нейронная сеть, обученная на суперкомпьютерах NVIDIA. Выход этой нейросети сравнивается с эталонным изображением с разрешением 16K, а ошибка между ними возвращается сети по петле обратной связи. Чтобы не возникло проблем со скоростью, DLSS использует тензорные ядра, являющиеся основой процессоров RTX 2000 (и в будущем RTX 3000). Это позволяет значительно ускорить тензорные операции и повысить эффективность обучения ИИ и задач, связанных с высокопроизводительными вычислениями.
Эволюция DLSS: от 1.0 к 2.0
DLSS 1.0 обучался для каждой игры отдельно, а оттого учился чрезвычайно долго. Еще он не поддерживал 4-х кратный апсэмплинг (upsampling), например, из 1080p до 4K, и имел ряд других недостатков в качестве изображения, которые не стоили улучшения частоты кадров.
DLSS 2.0 — более общий алгоритм, лишенный ограничений на обучение и апсэмплинг, а также имеющий меньшую задержку вывода за счет использования тензорных ядер: она составляет порядка 1,5 мс при 4K на RTX 2080ti — и в некоторых случаях обеспечивает результат даже лучше, чем исходное изображение.
Изображения с DLSS имеют конечное разрешение 1080p
В DLSS 1.0 максимально можно увеличить разрешение 720p до 1080p, тогда как DLSS 2.0 может масштабировать до 1080p даже разрешение 540p. Как видно на примере, изображение при 540p выглядит совсем размытым. При этом результат с DLSS 2.0 оказался лучше, чем с DLSS 1.0, и даже немного лучше исходной картинки. То есть, DLSS 2.0 справляется с заполнением пикселей эффективнее, чем DLSS 1.0, даже несмотря на то, что последнему нужно перемасштабировать не такую большую разницу в разрешении.
Умение DLSS 2.0 масштабировать изображение с разрешением 540p в сочетании с малой задержкой, обусловенной самим методом, дает существенное увеличение производительности по сравнению с предшественником.
Время рендеринга с DLSS 2.0 и без него (в мс)
Подробнее о принципе работы DLSS
При рендеринге геометрии сцены в играх (например, в треугольнике) количество используемых пикселей (или sampling rate — субпиксельная маска) определяет, как будет выглядеть изображение.
При использовании сетки сэмплирования 4×4 для рендеринга треугольника мы видим, что результат оставляет желать лучшего.
С увеличением сетки сэмплирования в 4 раза — до 8×8 — изображение оказывается больше похожим на предполагаемый треугольник. В этом и заключается суть DLSS: преобразовать изображение с низким разрешением в более высокое.
Суть DLSS
В результате при той же стоимости рендеринга, что и у низкокачественного изображения, вы получите изображение с более высоким разрешением.
Цель DLSS
Это фактически решает уже не новую проблему супер-разрешения.
Давайте кратко рассмотрим, как развивались методы повышения разрешения с помощью ИИ.
Single Image Super-Resolution
Эта техника позволяет получать изображения с высоким разрешением из более низкого при помощи методов интерполяции, таких как билинейный, бикубический и фильтр Ланцоша. Можно реализовать ее и с помощью глубоких нейронных сетей, но тогда возникает проблема искажения новых пикселей, полученных на основе данных обучения. Это приводит к тому, что изображение будет казаться правдоподобным, но не слишком похожим на исходное. Метод выдает чрезмерно гладкую, не детализированную картинку и нестабилен во времени, что приводит к несогласованности и мерцанию кадров.
Single Image Super-Resolution
Давайте сравним несколько результатов таких техник супер-разрешения на основе одного изображения с тем, что предлагает DLSS 2.0.
Целевое разрешение — 1080p
Очевидно, что результат DLSS 2.0 лучше, чем метод бикубической интерполяции и ESRGAN — архитектуры нейронной сети, использующей метод генеративно-состязательной сети для достижения супер-разрешения. В результате папоротники в случае DLSS 2.0 выглядят даже более детальными, чем на оригинальном изображении.
Multi-frame Super-Resolution
Этот метод использует несколько изображений с низким разрешением для получения изображения с высоким. Он помогает восстановить детали лучше, чем предыдущий подход. В основном он разрабатывался для видео- и серийной фотосъемки, а потому не задействует специфическую для рендеринга информацию. Одним из примеров его использования можно назвать выравнивание кадров при помощи оптического потока вместо геометрических векторов движения. В данном случае вычисления оказываются дешевле, а результаты точнее. Этот подход видится более многообещающим, чем предыдущий, и подводит нас к следующей технике.
Spatial-Temporal Super Sampling
Этот метод использует несколько кадров для супер-сэмплинга изображений.
У нас есть текущий кадр. Предположим, что предыдущий выглядит на него похожим. Используя более низкий sampling rate, мы можем увеличить общее число отсчетов, необходимое для реконструкции изображения.
Гистограмма метода Spatial-Temporal Super Sampling
Проблема в том, что в играх все постоянно находится в движении. Поэтому для исправления истории кадров данный метод суперсэмплинга вынужден производить эвристический поиск, например, по принципу Neighbour Clamping. Эти эвристики вносят свой вклад в размытость, временную нестабильность, муар, лаги и ghosting.
Нежелательные эффекты от Neighbour Clamping
Временное мерцание и муар на изображениях с Neighbour Clamping
DLSS 2.0: Deep Learning-based multi-frame reconstruction
Нейронная сеть DLSS учится на десятках тысяч обучающих изображений, предназначенных для выполнения реконструкции лучшей, чем могут предложить эвристики, тем самым устраняя эффекты от них. Это приводит к гораздо более качественному результату с использованием данных нескольких кадров.
Реализуя DLSS в движке, в первую очередь необходимо провести рендеринг сцены в низком разрешении: всей ее геометрии, динамического освещения, эффектов в экранном пространстве и трассировки лучей. После этого можно применить DLSS на этапе, когда обычно происходит анти-алиасинг — ведь технология выполняет ровно ту же функцию, только еще с супер-сэмплингом. Затем происходит постобработка изображения, включающая размытие в движении, блум, хроматическую абберацию, тональную компрессию и другие эффекты.
DLSS — не просто алгоритм обработки изображения. Обычно он работает в совокупности с рендерингом, поэтому и его процесс тоже необходимо пересмотреть. Впрочем, в случае DLSS 2.0 эти изменения не так сложно реализовать, как случалось до этого.
Тесты производительности
Последний тайтл Remedy Control поддерживает как трассировку лучей, так и и DLSS. Как видно на графике выше, RTX 2060 получил прирост производительности с 8 кадров в секунду до примерно 36,8 кадров в секунду за счет DLSS, что значительно повысило играбельность проекта. Этот результат оказался даже лучше, чем в случае с RTX 2080ti без DLSS, что еще раз доказывает, насколько эффективна эта технология.
Digital Foundry сравнил качество изображения с использованием DLSS 1.9 и 2.0 в этом видео.
Слева — Control с DLSS 1.9, справа — с DLSS 2.0. Изображения получены на RTX 2060 с разрешением 1080p и затем отмасштабированы до 4K
На сравнении выше мы видим, как DLSS 2.0 отрисовывает пряди волос, искаженные в случае DLSS 1.9.
Да кто такой этот ваш DLSS
Статья про сглаживание уже была, и в ней мы проехались по самым основным видам алиасинга, попытались понять, как они работают, и почему эти кучи огромных букв — просто костыли. Но мы даже не упоминали ещё одну крупную птицу на этой ветке — NVIDIA DLSS, который вроде как и сглаживание, а вроде как и нет. «Зелёные» придумали кое-что похитрее и посложнее, чем просто замыливание краёв, да ещё и наворотили там всякого, а потому разбираться с вопросом о том, да кто такой этот ваш DLSS, мы будем отдельно и без сглаживания углов.
DLSS расшифровывается как Deep Learning Super Sampling. Если очень кратко, то это суперсэмплинг, который основан на машинном обучении. Нейронные сети кучу раз прокатывают по каждой игре, поддерживающей DLSS, отдельно, обучают улучшать производительность видеокарты и одновременно с этим — изничтожать надоедливые лесенки и другие досадные некрасивости. При этом суперсэмплинг увеличивает частоту кадров, фактически не теряя в качестве картинки.
Звучит как какая-то сказка, да?
Ну почти она и есть. А всякие там MSAA и TXAA не достигли таких высот, потому что не могут себе позволить работать не на мощности GPU или процессора, а на отдельном блоке в графическом чипе, оптимизированном для работы с ИИ — ядрах Tensor. Они — инновационная разработка Nvidia, и естественно, что в быту найти их можно только в видеокартах NVIDIA GeForce RTX.
Было бы слишком много чести придумывать какие-то отдельные ядра просто для того, чтобы они так же, как обычное сглаживание, мылили края объектов и заливали градиентом крайние пиксели. DLSS — это не мыльница с искусственным интеллектом и не костыль, а метод масштабирования кадра. Нейросеть берёт исходную картинку и на её основе создаёт изображение с большим количеством пикселей и сглаженными краями.
Лучше всего эти навороты показывают себя на разрешении 4К, потому на нём обычное сглаживание без зазрения совести пожирает ресурсы и родненькие фэпээсы. Пикселей больше, значит и площадь обработки тоже. Вот и уходят все лошадиные силы вашего ПК на обрисовку каждого из 4К ваших пикселей. А вот DLSS в этом случае пощадит ваше железо, сохранит частоту кадров и подойдёт к вопросу более интеллектуально.
Дело в том, что тензорные ядра слишком круты для того, чтобы заниматься обычным рендерингом — их используют в большинстве суперкомпьютеров с глубоким обучением. Вам же, на вашей домашней пекарне, они полезны тем, что умеют при рендере кадра в меньшем разрешении (например, в 1080р) «достраивать» нужные для повышения разрешения пиксели (и так добраться до желанных 4К). Эти пиксели не берутся с потолка, иначе бы картинка на выходе получалась маловнятной мешаниной. Нейросеть выбирает эти пиксели на основе предыдущего и следующего изображения, и достраивает кадр.
Первая и вторая попытки
Чтобы вы не подумали, что всё невероятно радужно, и это не технология, а сплошная магия, которая поможет вытянуть на 120 FPS в 4К Cyberpunk 2077 на ультрах, используя видеокарту из компа вашего дедушки, я скажу, что DLSS имеет и свои проблемы.
DLSS первой версии умела работать лишь с несколькими конкретными играми, для которых нейросеть специально муштровали. Nvidia тратила на это сотни человеко-часов. Кадры из совместимых игр загружались в суперкомпьютер с учётом всех режимов, которые мог выбрать игрок — со сглаживанием, без и в разных разрешениях. И на основе этой груды файлов нейросеть старалась выстроить самое лучшее изображение.
И помимо того, что выбор игр был очень ограничен, после DLSS-обработки в игре часто терялись какие-то детали, что-то замыливалось (например, как в случае с Metro Exodus, всё), появлялись мерцания и глитчи, а волосы и вовсе казались непосильной задачей. Всем, и в первую очередь Nvidia, было ясно, что дела так дальше не пойдут, и затраченное время не стоит результата. А значит, нужно улучшать алгоритмы и уменьшать количество кругов ада для создания одного кадра.
И вот в начале 2020 года пред геймерами предстаёт DLSS 2.0 — улучшенный и более самостоятельный. Теперь нейронная сеть более универсальна и работает для всех игр. Данные о нужных пикселях и векторах их движения она берёт из уже отрендеренных кадров. Кроме того, у второй версии появились три режима изображения — «Качество», «Баланс», «Производительность», которые управляют внутренним разрешением рендеринга.
Подгонять игры под технологию стало значительно проще, и это значит, что в будущем всё больше и больше игр будет к ней обращаться. Сейчас DLSS 2.0 всё ещё не поддерживает все тайтлы, и, по чесноку, до этого очень далеко. Однако рост в качестве по сравнению с ранней версией очевиден как визуально, так и технически. С помощью масштабирования кадра можно освободить огромное количество ресурсов вашего ПК и обеспечить вам фреймрейт круче, чем вы ожидали, глядя на системки игры. Это выгодно всем: и Nvidia, и разработчикам, и вам. Всё делается для того, чтобы как можно больше игроков смогло поиграть с приемлемыми настройками и FPS без крови из глаз и припадков.
Все к этому стремятся, но проблемы всё ещё есть, безусловно. И дело тут (как и всегда в ПК-гейминге) в огромной куче самых разных конфигураций. Какой бы умной ни была нейросеть, промашки бывают и у неё, и о глитчах и мыльных пятнах рано забывать. Например, у меня в Control с включённым DLSS по какой-то непонятной причине мылились картины на стенах. Именно они, и только они. И больше ни у кого о таких приколах я не слышала.
Кстати, персонально для Control существовала версия DLSS 1.9, на которой и прокатали на массовом пользователе новые методы работы. К тому же этот эксклюзивный DLSS в игре работал только на потоковых процессорах, а не тензорных ядрах.
Конечно же, Nvidia строит очень амбициозные планы на свою технологию. Например, тензорные ядра хотят применять для более качественного и простого в постобработке рейтрейсинга. ИИ планируют научить устранять шумы и повышать частоту кадров после применения трассировки. Кроме того, для видеокарт GeForce RTX тензорные ядра собираются научить улучшать анимации персонажей или симуляцию тканей.
Из того же, что уже точно подтверждено, следующая версия — DLSS 2.1 — сможет увеличить разрешение картинки девятикратно — она создана для игры в разрешении 8K на RTX 3090 с высоким FPS. Во время общения с пользователями на Reddit Ask Me Anything Nvidia рассказала, что эта версия, кроме прочего, будет поддерживать VR и динамическое разрешение. Для того, чтобы фреймрейт не скакал как ужаленный то вверх то вниз, исходная картинка будет динамически меняться в размерах.
Хуже все эти навороты явно не сделают, а Nvidia явно заинтересована в качестве технологии. Пусть пока что аналогов DLSS нет, AMD уже наступают «зелёным» на пятки. Но пока что они не торопятся делиться подробностями о своём аналоге DLSS, который будет носить имя FidelityFX Super Resolution. AMD пообещали, что технология будет генерировать кадры высокого разрешения на основе изображений с низким разрешением. То есть схожим с DLSS образом. Скорее всего, FidelityFX Super Resolution тоже будет построена на базе искусственного интеллекта, но о подробностях станет известно только в следующем году.
К чему дальше приведут эти технологии, и как их будут использовать, мы ещё увидим. Не единожды встречала мнение о том, что студии скоро станут делать игры с прицелом на DLSS и прочие суперсэмплинги, добавляя больше эффектов и других визуальных плюшек, и больше не боясь перегрузить компы аудитории и задрать системные требования до небес. Возможно, так оно и будет. А может быть, вскоре всё повернётся в другую сторону. Ну что ж, желаем инноваторам мира графония удачи, поменьше лесенок на пути, и ждём развития технологий интеллектуального суперсэмплинга, чтобы погружаться в новые потрясающие игровые миры гладко и с высоким FPS.
Технология NVIDIA DLSS в играх: что это такое и зачем нужна
Содержание
Содержание
Алгоритм улучшения изображений DLSS — визитная карточка компании NVidia. Его работа всегда вызывает особенный интерес у пользователей. С помощью DLSS игры стали быстрее — растет FPS, увеличиваются максимальные значения разрешений, что, в конечном итоге, непосредственно влияет на «играбельность» контента и способствует глубокому погружению в него. В материале рассмотрим суть технологии DLSS и области ее применения в игровой индустрии.
Технология трассировки лучей в гейминге, можно сказать, не дотягивает по производительности и скорости отрисовки кадров. Особенно сильно это заметно в линейке видеокарт семейства RTX 20. Рейтрейсинг вроде бы заявлен и фактически присутствует, но толком не работает — прорывной производительности в играх не наблюдается. Исправить ситуацию вроде должна новинка от NVIDIA — абсолютно новый графический процессор Ampere и видеокарты поколения RTX 30, построенные на его основе. Об архитектуре нового процессора очень подробно рассказано в статье блога Клуба DNS.
DLSS без купюр
Геймеру со стажем, особенно ценителю технических решений от «зеленого» лагеря, не нужно объяснять суть технологии суперсемплинга DLSS. Тем же, кто только делает первые шаги мире компьютерных игр и пока в поиске оптимальных настроек для своего «железа», нелишним будет знакомство с «механикой» алгоритма DLSS.
Дословно DLSS (Deep Learning Super Sampling) переводится как «сглаживание на основе глубокого обучения». На момент написания данного материала миру известны две версии алгоритма глубокого ресемплирования.
Разница между версиями алгоритма заключается не в логике его работы, а в его физической реализации.
В случае с DLSS 1.0 компания NVIDIA предложила производителям игрового контента «прогнать» графические сцены их игр через свой «суперкомпьютер», наделенный искусственным интеллектом. Такой подход требовал больших затрат времени, и, что называется, «не взлетел», поскольку разработчики игр, в большинстве своем, его просто игнорировали.
Вторая версия алгоритма DLSS 2.0 стала более «клиентоориентированной», ведь NVIDIA верила в успех технологии и включила в состав видеокарт тензорные ядра, тем самым наделив свои графические адаптеры искусственным интеллектом.
Основная суть работы алгоритма — получение качественного изображения (кадра) высокого разрешения на основе его уменьшенного аналога. Не вдаваясь в дебри тензорных вычислений и довольно сложных и громоздких математических операций с матрицами, упрощенно работу алгоритма DLSS можно описать так.
При рендеринге простых геометрических фигур (в примере используется треугольник) из исходных кадров малого размера определяющим фактором качества конечного результата является субпиксельная маска. К примеру, с использованием маски 4х4 при отрисовке треугольника конечный результат мало напоминает исходную фигуру. При увеличении же сетки ресемплирования всего в 4 раза — до размера 8х8 — конечное изображение уже больше напоминает исходник.
В этом и заключается основная «механика» работы алгоритма сглаживания.
Основной принцип DLSS — преобразование изображений с низким разрешением в кадры с более высокой разрешающей способностью, вплоть до 4К, без потери качества картинки игрового мира.
Такой подход к рендерингу игровых сцен дает конечному пользователю несколько очень важных преимуществ:
Искусственный интеллект на службе создания графических сцен
Работа алгоритма сглаживания DLSS невозможна без искусственного интеллекта, заложенного в каждый новый продукт NVIDIA. Именно он вырабатывает методику сглаживания определенных игровых сцен на основе многомиллионных «прогонов» эталонных изображений и полигонов. В первой версии DLSS предварительная обработка графических кадров велась на базе вычислительных мощностей компании NVIDIA под конкретные проекты: Metro: Exodus, Battlefield V.
Конечные «рекомендации» по улучшению сцен прописывались в обновленные версии драйверов к конкретной модели видеокарты.
Во втором поколении DLSS 2.0 львиная доля этой работы отдана тензорным ядрам самой графической карты. Это и есть принципиальное отличие между первым и вторым поколениями глубокого ресемплинга. Оно открывает просто безграничное поле для деятельности производителям игрового контента, которым не нужно теперь создавать уникальную нейронную сеть на серверах компании NVIDIA и «обкатывать» на ней полигоны своих игр. Вполне достаточно адаптировать свой код под тензорные вычисления и произвести расчет сцен силами «универсальной» нейронной сети. Такой подход существенно упрощает жизнь производителю контента и ускоряет выпуск новых продуктов.
Топология Ampere
Новая линейка видеокарт не останавливается на достигнутом предыдущими поколениями адаптеров. В основе каждой новой карточки от NVIDIA лежит процессор Ampere, произведенный по 8 нм технологии, которая позволяет разместить большее количество полупроводниковых компонентов на той же площади кристалла. Конечному пользователю это дает увеличенную производительность графического чипа при тех же размерах.
Если сравнить технические характеристики новых адаптеров, то можно увидеть уменьшение количества тензорных ядер в новых моделях в сравнении с предыдущим поколением. И может закрасться крамольная мысль: «А все ли так хорошо? И за счет чего возникает прирост производительности?».
Ответ на этот вопрос достаточно прост. В новой линейке используются тензорные ядра третьего поколения, вычислительная мощность которых в несколько десятков раз превышает возможности предшественников.
Если «в лоб» сравнить спецификации адаптеров RTX 20 и RTX 30, то можно заметить, что тензорных ядер в новой линейке видеокарт стало меньше. Но за счет их производительности вкупе с обновленным алгоритмом вычислений просчет каждой сцены ускорился в разы. ЧВ итоге это позволяет игроку получить высокие, а главное стабильные значения FPS, играть на высоких разрешениях и максимальных настройках графики, а производителям — всерьез задуматься о производстве контента в разрешении 8 К.
На следующей иллюстрации наглядно показан прирост производительности в актуальных играх (на момент написания статьи).
Из диаграмм видно, топовая видеокарта с использованием технологии DLSS дает двух-, а то и трехкратный прирост производительности в не самых «легких» с точки зрения графики играх.
Пока нет официальной информации можно предположить, что новые адаптеры рано или поздно обзаведутся обновленным алгоритмом DLSS версии 3.0, способным интеллектуально ресемплировать игровые сцены в реальном времени в разрешение 8К. Но говорить об этом пока рано. Для наступления эры DLSS 3.0 нужно, как минимум, чтобы у каждого второго-третьего геймера на столе красовался 8К-монитор.