
Nos últimos anos, a inteligência artificial se tornou cada vez mais popular. Basta perguntar e a Siri dirá o resultado da partida de futebol que você perdeu na noite passada. As recomendações do Spotify dirão o que adicionar à sua biblioteca de música e a Amazon tentará prever qual produto você comprará em seguida, mesmo que você ainda não saiba.
Ele também não passou pela indústria de jogos. Enquanto o ambiente de jogos está comparando os gráficos lançados no PC Death Stranding com e sem a tecnologia DLSS, outro dia soube-se que os processadores NVIDIA Ampere usarão DLSS 3.0. Porém, funcionará com qualquer jogo com TAA (Anti-Aliasing Temporal) e driver Game Ready. Isso significa que os desenvolvedores precisarão ajustar a tecnologia para seus jogos - no entanto, esse processo será muito mais fácil do que é agora.
Neste artigo, vamos dar uma olhada em como a NVIDIA usa o aprendizado de máquina para melhorar nossa experiência de jogo.
O que é DLSS?
A qualidade dos gráficos em jogos modernos só está aumentando e, com isso, a complexidade computacional das operações realizadas está crescendo. Devemos isso ao traçado de raios, que simula a iluminação real em tempo real, deixando assim os reflexos pré-cozidos uma relíquia do passado. A complexidade computacional do rastreamento de raios se deve ao fato de que a resolução dos jogos modernos ultrapassa os bons e velhos 1080p. Daí a necessidade de acelerar os cálculos durante a renderização.
Deep Learning Super Sampling (DLSS) é uma tecnologia NVIDIA que usa aprendizado de máquina profundo para melhorar as taxas de quadros em jogos com muitos gráficos. Com o DLSS, os jogadores podem usar configurações e resoluções mais altas sem se preocupar com a estabilidade do fps.
Em particular, o DLSS cumpre a tarefa de super resolução. Com ele, uma imagem com resolução de, digamos, 1080p pode ser aumentada para 4K com perda mínima de qualidade. Isso elimina a necessidade de jogar em 4K (e, portanto, provavelmente derreterá seu PC). A resolução ainda será 1080p, o que permite taxas de quadros mais altas, mas com o upscaling DLSS você dificilmente notará a diferença de 4K.

Arquitetura DLSS 2.0
Essencialmente, o DLSS é uma rede neural treinada em supercomputadores NVIDIA. A saída dessa rede neural é comparada a uma imagem de referência de 16K e o erro entre elas é retornado à rede por meio de um loop de feedback. Para evitar problemas de velocidade, o DLSS usa Tensor Cores, que são a espinha dorsal dos processadores RTX 2000 (e futuros RTX 3000). Isso pode acelerar significativamente as operações do tensor e melhorar a eficiência do treinamento de IA e tarefas relacionadas à computação de alto desempenho.

Evolução DLSS: de 1.0 a 2.0
O DLSS 1.0 foi treinado para cada jogo separadamente e, portanto, levou muito tempo para estudar. Ele também não suportava upsampling 4x, por exemplo de 1080p para 4K, e tinha uma série de outras imperfeições na qualidade de imagem que não valiam a melhoria da taxa de quadros.
O DLSS 2.0 é um algoritmo mais geral, desprovido de restrições de treinamento e upsampling, além de ter menor latência de saída devido ao uso de núcleos tensores: está na ordem de 1,5 ms a 4K no RTX 2080ti - e em alguns casos fornece um resultado ainda melhor que o original cenário. As imagens DLSS são 1080p finais

No DLSS 1.0, você pode atingir o máximo de 720p a 1080p, enquanto o DLSS 2.0 pode fazer upscale para 1080p mesmo em 540p. Como você pode ver no exemplo, a imagem em 540p parece completamente desbotada. Ao mesmo tempo, o resultado com DLSS 2.0 acabou sendo melhor do que com DLSS 1.0, e até um pouco melhor do que a imagem original. Ou seja, o DLSS 2.0 lida com o preenchimento de pixels com mais eficiência do que o DLSS 1.0, embora o último precise redimensionar uma diferença menor na resolução.
A capacidade do DLSS 2.0 de dimensionar imagens a 540p, combinada com a baixa latência do próprio método, fornece um aumento significativo de desempenho em relação ao seu antecessor.

Tempo de renderização com e sem DLSS 2.0 (em ms)
Saiba mais sobre como funciona o DLSS
Ao renderizar a geometria da cena em jogos (por exemplo, em um triângulo), o número de pixels usados (ou a taxa de amostragem - máscara de subpixel) determina a aparência da imagem.

Ao usar uma grade de amostragem 4x4 para renderizar o triângulo, podemos ver que o resultado deixa muito a desejar.

Ao ampliar a grade de amostragem em 4 vezes - até 8x8 - a imagem parece mais com o triângulo pretendido. É disso que se trata o DLSS: converter uma imagem de baixa resolução em uma imagem superior.

A essência do DLSS
Como resultado, com o mesmo custo de renderização de uma imagem de baixa qualidade, você obtém uma imagem de maior resolução.

Objetivo do DLSS
Isso realmente resolve o não novo problema de super resolução.
Vamos dar uma olhada rápida em como as técnicas de aprimoramento de resolução assistida por IA evoluíram.
Super-resolução de imagem única
Esta técnica permite a obtenção de imagens de alta resolução a partir de um inferior utilizando técnicas de interpolação como filtros bilineares, bicúbicos e Lanczos. Você também pode implementá-lo usando redes neurais profundas, mas então há um problema de distorção de novos pixels obtidos a partir dos dados de treinamento. Isso faz com que a imagem pareça crível, mas não muito semelhante ao original. O método produz uma imagem excessivamente suave, não detalhada e instável no tempo, o que leva à inconsistência e tremulação dos quadros.

Super-resolução
de imagem única Vamos comparar alguns dos resultados dessas técnicas de super-resolução de imagem única com o que o DLSS 2.0 oferece. Resolução alvo - 1080p

Obviamente, o DLSS 2.0 é melhor do que a interpolação bicúbica e o ESRGAN , uma arquitetura de rede neural que usa uma rede adversária geradora para atingir super-resolução. Como resultado, as samambaias no caso do DLSS 2.0 parecem ainda mais detalhadas do que na imagem original.
Super-resolução de vários quadros
Este método usa várias imagens de baixa resolução para produzir uma imagem de alta resolução. Ajuda a recuperar detalhes melhor do que a abordagem anterior. Ele foi projetado principalmente para vídeo e fotografia burst e, portanto, não usa informações específicas de renderização. Um exemplo de seu uso é o alinhamento de quadros usando fluxo óptico em vez de vetores de movimento geométrico. Nesse caso, os cálculos são mais baratos e os resultados mais precisos. Esta abordagem parece mais promissora do que a anterior e nos leva à próxima técnica.
Super Amostragem Espacial-Temporal
Este método usa vários quadros para imagens de superamostra.

Temos o quadro atual. Digamos que o anterior se pareça com isso. Usando uma taxa de amostragem mais baixa, podemos aumentar o número total de amostras necessárias para reconstruir a imagem.

Histograma de Super Sampling Espacial-Temporal
O problema é que, nos jogos, tudo está em constante movimento. Portanto, para corrigir o histórico de quadros, este método de superamostragem é forçado a realizar uma pesquisa heurística, por exemplo, de acordo com o princípio de Neighbour Clamping. Essas heurísticas contribuem para desfoque, instabilidade temporal, moiré, atraso e fantasma. Efeitos adversos do Neighbour Clamping Cintilação e moiré temporários em imagens com Neighbour Clamping


DLSS 2.0: Deep Learning-based multi-frame reconstruction
A rede neural DLSS aprende com dezenas de milhares de imagens de treinamento projetadas para realizar uma reconstrução melhor do que a heurística pode oferecer, eliminando assim seus efeitos. Isso leva a um resultado muito melhor usando dados de vários quadros.

Implementando DLSS no motor, antes de mais nada, é necessário renderizar a cena em baixa resolução: toda a sua geometria, iluminação dinâmica, efeitos no espaço da tela e traçado de raios. Depois disso, o DLSS pode ser aplicado no estágio em que normalmente ocorre o anti-aliasing - afinal, a tecnologia executa exatamente a mesma função, apenas com superamostragem. Em seguida, o pós-processamento da imagem ocorre, incluindo desfoque de movimento, flor, aberração cromática, mapeamento de tons e outros efeitos.

DLSS não é apenas um algoritmo de processamento de imagem. Geralmente funciona em conjunto com a renderização, portanto, seu processo também precisa ser revisitado. No entanto, no caso do DLSS 2.0, essas mudanças não são tão difíceis de implementar como eram antes.
Testes de performance

O mais recente título Remedy Control suporta traçado de raio e DLSS. Como você pode ver no gráfico acima, o RTX 2060 recebeu um aumento de desempenho de 8 fps para cerca de 36,8 fps por meio de DLSS, o que aumentou significativamente a jogabilidade do projeto. Este resultado é ainda melhor do que o RTX 2080ti sem DLSS, o que prova ainda mais a eficácia desta tecnologia.
A Digital Foundry comparou a qualidade da imagem usando DLSS 1.9 e 2.0 neste vídeo.

Esquerda - Controle com DLSS 1.9, direita - com DLSS 2.0. Imagens capturadas em um RTX 2060 a 1080p e depois aumentadas para 4K
Na comparação acima, podemos ver como o DLSS 2.0 renderiza fios de cabelo distorcidos no caso do DLSS 1.9.
Conclusão
O DLSS está disponível apenas para GPUs baseadas em RTX 2000 e Turing (e nas próximas GPUs RTX 3000 baseadas em Ampere) e atualmente suporta apenas alguns jogos. DLSS 2.0 é suportado por ainda menos títulos, mas o nível de detalhe pode superar até mesmo a imagem original, enquanto a taxa de quadros permanece alta. Esta é uma conquista muito legal para a NVIDIA, e a tecnologia definitivamente tem um futuro promissor.