Глубокое обучение суперсэмплинга ( DLSS ) представляет собой семейство технологий глубокого обучения в реальном времени для улучшения и масштабирования изображений , разработанных Nvidia , которые доступны в ряде видеоигр . Цель этих технологий — позволить большей части графического конвейера работать с более низким разрешением для повышения производительности, а затем вывести из этого изображение с более высоким разрешением, которое приблизительно соответствует тому же уровню детализации, как если бы изображение было отрисовано с этим более высоким разрешением. Это позволяет использовать более высокие графические настройки и/или частоту кадров для заданного выходного разрешения в зависимости от предпочтений пользователя. [1]
По состоянию на сентябрь 2022 года первое и второе поколения DLSS доступны на всех видеокартах под брендом RTX от Nvidia в поддерживаемых играх, в то время как третье поколение, представленное на мероприятии Nvidia GTC 2022, является эксклюзивным для видеокарт серии RTX 40 поколения Ada Lovelace . [2] Nvidia также представила динамическое суперразрешение с глубоким обучением ( DLDSR ), родственную и противоположную технологию, при которой графика визуализируется с более высоким разрешением, а затем понижается до собственного разрешения дисплея с помощью алгоритма понижающей дискретизации с помощью искусственного интеллекта для достижения более высокого качества изображения, чем при визуализации с собственным разрешением. [3]
Nvidia рекламировала DLSS как ключевую функцию видеокарт серии GeForce 20 , когда они были выпущены в сентябре 2018 года. [4] В то время результаты были ограничены несколькими видеоиграми (а именно Battlefield V [5] и Metro Exodus ), поскольку алгоритм приходилось обучать специально для каждой игры, к которой он применялся, и результаты обычно были не такими хорошими, как простое масштабирование разрешения. [6] [7]
В 2019 году видеоигра Control вышла с трассировкой лучей в реальном времени и улучшенной версией DLSS, которая не использовала тензорные ядра. [8] [9]
В апреле 2020 года Nvidia анонсировала и выпустила улучшенную версию DLSS под названием DLSS 2.0 с версией драйвера 445.75. DLSS 2.0 был доступен для нескольких существующих игр, включая Control и Wolfenstein: Youngblood , и позже будет добавлен во многие недавно выпущенные игры и игровые движки, такие как Unreal Engine [10] и Unity . [11] На этот раз Nvidia заявила, что снова использует тензорные ядра и что ИИ не нужно обучать специально для каждой игры. [4] [12] Несмотря на общий бренд DLSS, две итерации DLSS существенно различаются и не имеют обратной совместимости. [13] [14]
При использовании DLSS, в зависимости от игры, пользователи получают доступ к различным предустановкам качества в дополнение к возможности вручную устанавливать внутренне рендеренное, масштабированное разрешение:
Первая итерация DLSS — это преимущественно пространственный апскейлер изображений с двумя этапами, оба из которых опираются на сверточные нейронные сети автокодировщика . [21] Первый этап — это сеть улучшения изображения, которая использует текущий кадр и векторы движения для выполнения улучшения краев и пространственного сглаживания . Второй этап — это шаг масштабирования изображения, который использует один необработанный кадр с низким разрешением для масштабирования изображения до желаемого выходного разрешения. Использование только одного кадра для масштабирования означает, что сама нейронная сеть должна генерировать большой объем новой информации для создания выходного сигнала с высоким разрешением, это может привести к небольшим галлюцинациям, таким как листья, которые по стилю отличаются от исходного контента. [13]
Нейронные сети обучаются на основе игры путем генерации «идеального кадра» с использованием традиционного суперсэмплинга до 64 образцов на пиксель, а также векторов движения для каждого кадра. Собранные данные должны быть максимально полными, включая как можно больше уровней, времени суток, графических настроек, разрешений и т. д. Эти данные также дополняются с помощью общих дополнений, таких как вращения, изменения цвета и случайный шум, чтобы помочь обобщить тестовые данные. Обучение выполняется на суперкомпьютере Nvidia Saturn V. [14] [22]
Эта первая итерация получила неоднозначную реакцию, многие критиковали зачастую мягкий внешний вид и артефакты в определенных ситуациях; [23] [6] [5] вероятно, это побочный эффект ограниченных данных из-за использования только одного кадра на входе в нейронные сети, которые не могли быть обучены для оптимальной работы во всех сценариях и пограничных случаях . [13] [14]
Nvidia также продемонстрировала способность сетей автокодировщиков обучаться воссоздавать глубину резкости и размытость изображения при движении [14] , хотя эта функциональность никогда не была включена в публично выпущенный продукт. [ необходима ссылка ]
DLSS 2.0 — это реализация временного сглаживания с повышением частоты дискретизации (TAAU), которая широко использует данные из предыдущих кадров через субпиксельное дрожание для разрешения мелких деталей и уменьшения сглаживания. Данные, которые собирает DLSS 2.0, включают: необработанный ввод с низким разрешением, векторы движения , буферы глубины и информацию об экспозиции /яркости. [13] Его также можно использовать как более простую реализацию TAA, где изображение визуализируется с разрешением 100%, а не подвергается повышению частоты дискретизации DLSS, Nvidia называет это DLAA (сглаживание с глубоким обучением). [24]
TAA(U) используется во многих современных видеоиграх и игровых движках , [25] однако все предыдущие реализации использовали некоторую форму вручную написанных эвристик для предотвращения временных артефактов, таких как ореолы и мерцание . Одним из примеров этого является ограничение соседства, которое принудительно предотвращает слишком большое отклонение образцов, собранных в предыдущих кадрах, по сравнению с соседними пикселями в новых кадрах. Это помогает идентифицировать и исправить многие временные артефакты, но преднамеренное удаление мелких деталей таким образом аналогично применению фильтра размытия , и поэтому конечное изображение может выглядеть размытым при использовании этого метода. [13]
DLSS 2.0 использует сверточную нейронную сеть автокодировщика [23], обученную определять и устранять временные артефакты, вместо вручную запрограммированных эвристик, как упоминалось выше. Благодаря этому DLSS 2.0 в целом может лучше разрешать детали, чем другие реализации TAA и TAAU, а также удалять большинство временных артефактов. Вот почему DLSS 2.0 иногда может создавать более четкое изображение, чем рендеринг в более высоких или даже собственных разрешениях с использованием традиционного TAA. Однако ни одно временное решение не является идеальным, и артефакты (в частности, ореолы) все еще видны в некоторых сценариях при использовании DLSS 2.0.
Поскольку временные артефакты возникают в большинстве стилей и сред искусства примерно одинаково, нейронная сеть, которая поддерживает DLSS 2.0, не нуждается в переобучении при использовании в разных играх. Несмотря на это, Nvidia часто поставляет новые незначительные ревизии DLSS 2.0 с новыми играми, [26] поэтому это может означать, что некоторые незначительные оптимизации обучения могут выполняться по мере выпуска игр, хотя Nvidia не предоставляет журналы изменений для этих незначительных ревизий, чтобы подтвердить это.
Основные улучшения по сравнению с DLSS 1.0 включают в себя: значительно улучшенное сохранение деталей, обобщенную нейронную сеть, которую не нужно повторно обучать для каждой игры, и примерно в 2 раза меньшие накладные расходы (~1-2 мс против ~2-4 мс). [13]
Следует также отметить, что формы TAAU, такие как DLSS 2.0, не являются апскейлерами в том же смысле, что и такие методы, как ESRGAN или DLSS 1.0, которые пытаются создать новую информацию из источника с низким разрешением; вместо этого TAAU работает над восстановлением данных из предыдущих кадров, а не над созданием новых данных. На практике это означает, что текстуры с низким разрешением в играх будут по-прежнему выглядеть с низким разрешением при использовании текущих методов TAAU. Вот почему Nvidia рекомендует разработчикам игр использовать текстуры с более высоким разрешением, чем они обычно используют для данного разрешения рендеринга, применяя смещение mip-карты при включении DLSS 2.0. [13]
Дополняет DLSS 2.0, используя интерполяцию движения . Алгоритм генерации кадров DLSS берет два отрендеренных кадра из конвейера рендеринга и генерирует новый кадр, который плавно переходит между ними. Таким образом, для каждого отрендеренного кадра генерируется один дополнительный кадр. [2]
DLSS 3.0 использует новое поколение Optical Flow Accelerator (OFA), включенное в графические процессоры поколения Ada Lovelace RTX. Новый OFA быстрее и точнее, чем OFA, уже доступный в предыдущих графических процессорах Turing и Ampere RTX. [27] Это приводит к тому, что DLSS 3.0 является эксклюзивным для серии RTX 40.
На момент выпуска DLSS 3.0 не работал на дисплеях виртуальной реальности. [ необходима ссылка ]
DLSS 3.5 добавляет реконструкцию лучей, заменяя несколько алгоритмов шумоподавления единой моделью ИИ, обученной на в пять раз большем объеме данных, чем DLSS 3. Реконструкция лучей доступна на всех графических процессорах RTX и первых целевых играх с трассировкой пути (также известной как «полная трассировка лучей»), включая DLC Phantom Liberty для Cyberpunk 2077 , Portal с RTX и Alan Wake 2. [ 18] [17]
DLSS требует и применяет свой собственный метод сглаживания . Таким образом, в зависимости от игры и используемых настроек качества, использование DLSS может улучшить качество изображения даже по сравнению с рендерингом с собственным разрешением. [28]
Он работает по схожим принципам с TAA . Как и TAA, он использует информацию из прошлых кадров для создания текущего кадра. В отличие от TAA, DLSS не делает выборку каждого пикселя в каждом кадре. Вместо этого он делает выборку разных пикселей в разных кадрах и использует пиксели, выбранные из прошлых кадров, для заполнения невыбранных пикселей в текущем кадре. DLSS использует машинное обучение для объединения выборок в текущем кадре и прошлых кадрах, и его можно рассматривать как усовершенствованную и превосходную реализацию TAA, которая стала возможной благодаря доступным тензорным ядрам. [13]
Nvidia также предлагает сглаживание с глубоким обучением (DLAA). DLAA обеспечивает то же самое сглаживание на основе ИИ, которое использует DLSS, но без какой-либо функциональности масштабирования вверх или вниз. [24]
За исключением версии shader-core, реализованной в Control , DLSS доступен только на видеокартах серий GeForce RTX 20 , GeForce RTX 30 , GeForce RTX 40 и Quadro RTX , использующих выделенные ускорители искусственного интеллекта , называемые Tensor Cores . [23] [ проверка не удалась ] Тензорные ядра доступны с момента появления микроархитектуры графического процессора Nvidia Volta , которая впервые была использована в линейке продуктов Tesla V100 . [29] Они используются для выполнения операций fusion multiply-add (FMA), которые широко используются в вычислениях нейронных сетей для применения большой серии умножений весов с последующим добавлением смещения. Тензорные ядра могут работать с типами данных FP16, INT8, INT4 и INT1. Каждое ядро может выполнять 1024 бит операций FMA за такт, то есть 1024 операций INT1, 256 операций INT4, 128 операций INT8 и 64 операции FP16 за такт на тензорное ядро, а большинство графических процессоров Turing имеют несколько сотен тензорных ядер. [30]
Ядра Tensor используют примитивы CUDA Warp -уровня в 32 параллельных потоках, чтобы воспользоваться преимуществами своей параллельной архитектуры. [31] Warp — это набор из 32 потоков , настроенных на выполнение одной и той же инструкции.
Начиная с Windows 10 версии 1903 , Microsoft Windows предоставляет DirectML как часть DirectX для поддержки тензорных ядер.
Особенно в ранних версиях DLSS пользователи сообщали о размытых кадрах. Эндрю Эдельстен, сотрудник Nvidia, поэтому прокомментировал проблему в сообщении в блоге в 2019 году и пообещал, что они работают над улучшением технологии, и пояснил, что алгоритм DLSS AI в основном обучался на материале изображения 4K. То, что использование DLSS приводит к особенно размытым изображениям при более низких разрешениях, таких как Full HD , связано с тем, что алгоритм имеет гораздо меньше информации об изображении, доступной для расчета соответствующего изображения по сравнению с более высокими разрешениями, такими как 4K. [32]
Критике подвергалось то, что, внедряя DLSS в свои игры, разработчики игр больше не имеют стимула оптимизировать их так, чтобы они также работали плавно в собственном разрешении на современном оборудовании ПК. Например, для игры Alan Wake 2 в разрешении 4K при самых высоких настройках графики с включенной трассировкой лучей рекомендуется использовать DLSS в режиме производительности даже с видеокартами текущего поколения, такими как Nvidia GeForce RTX 4080, чтобы достичь 60 кадров в секунду. [33]
Кроме того, использование генерации кадров DLSS может привести к увеличению задержки ввода [34] и визуальным артефактам . [35]
Глубокое обучение суперсэмплинга использует искусственный интеллект и машинное обучение для создания изображения, которое выглядит как изображение с более высоким разрешением, без накладных расходов на рендеринг. Алгоритм Nvidia учится на десятках тысяч отрендеренных последовательностей изображений, которые были созданы с помощью суперкомпьютера. Это обучает алгоритм, чтобы он мог создавать такие же красивые изображения, но без необходимости для этого видеокарте работать так же усердно.
Конечно, этого следовало ожидать. DLSS никогда не обеспечивал того же качества изображения, что и нативное 4K, обеспечивая при этом 37%-ный прирост производительности. Это было бы черной магией. Но разница в качестве при сравнении этих двух вариантов почти смехотворна, учитывая, насколько DLSS далек от нативного представления в этих стрессовых областях.
Недавно две крупные игры получили поддержку NVIDIA DLSS, а именно Metro Exodus и Battlefield V. Обе эти игры поставляются с реализацией NVIDIA DXR (DirectX Raytracing), которая на данный момент поддерживается только картами GeForce RTX. DLSS позволяет играть в эти игры в более высоких разрешениях с гораздо лучшей частотой кадров, хотя наблюдается заметное снижение четкости изображения. Теперь AMD нанесла удар по DLSS, заявив, что традиционные методы сглаживания, такие как SMAA и TAA, "предлагают превосходные комбинации качества изображения и производительности".
Преимущество для большинства людей в том, что, как правило, DLSS дает значительное улучшение FPS. Насколько это зависит от игры. В Metro Exodus скачок FPS был едва заметен и, конечно, не стоил странного удара по качеству изображения.
Конечно, это не первая реализация DLSS, которую мы видели в Control. Игра поставляется с достаточно приличной реализацией технологии, которая на самом деле не использовала машинное обучение
Как и было обещано, NVIDIA обновила сеть DLSS в новом обновлении GeForce, которое обеспечивает лучшее, более четкое качество изображения, сохраняя при этом более высокую частоту кадров в играх с трассировкой лучей. Хотя эта функция не использовалась в первой итерации, теперь NVIDIA уверена, что они успешно исправили все проблемы, которые у нее были раньше
Оригинальный DLSS требовал обучения сети ИИ для каждой новой игры. DLSS 2.0 обучается с использованием неспецифического для игры контента, предоставляя обобщенную сеть, которая работает во всех играх. Это означает более быструю интеграцию игр и, в конечном итоге, больше игр DLSS.
мы разработали новый алгоритм обработки изображений, который аппроксимировал нашу модель исследования ИИ и соответствовал нашему бюджету производительности. Этот подход к обработке изображений в DLSS интегрирован в Control
Команда DLSS сначала извлекает множество алиасированных кадров из целевой игры, а затем для каждого из них мы генерируем соответствующий "идеальный кадр" с помощью либо суперсэмплинга, либо рендеринга с накоплением. Эти парные кадры подаются на суперкомпьютер NVIDIA. Суперкомпьютер обучает модель DLSS распознавать алиасированные входные данные и генерировать высококачественные сглаженные изображения, которые максимально соответствуют "идеальному кадру". Затем мы повторяем процесс, но на этот раз мы обучаем модель генерировать дополнительные пиксели, а не применять AA. Это приводит к увеличению разрешения входных данных. Объединение обоих методов позволяет графическому процессору визуализировать полное разрешение монитора с более высокой частотой кадров.
Графические процессоры NVIDIA выполняют группы потоков, известных как варпы, в стиле SIMT (Single Instruction, Multiple Thread)