Intel недавно представила систему глубокого обучения, которая превращает 3D-графику в фотореалистичные изображения. Протестированная на Grand Theft Auto 5 нейронная сеть показала впечатляющие результаты. Разработчики игры уже проделали большую работу по детальному воссозданию Лос-Анджелеса и Южной Калифорнии. Но с новой системой машинного обучения Intel графика превращается из высококачественного синтетического 3D в реальные изображения (с очень незначительными глюками).

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

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

Глубокое обучение для улучшения изображения

Прежде чем мы сможем оценить возможность запуска улучшения изображений в реальном времени, давайте посмотрим на систему глубокого обучения, которую использует Intel.

Исследователи из Intel не предоставили полной информации о реализации разработанной ими системы глубокого обучения. Но они опубликовали статью на arXiv и видео на YouTube, которые дают полезные подсказки о том, какая вычислительная мощность вам понадобится для запуска этой модели.

Полная система, показанная ниже, состоит из нескольких взаимосвязанных нейронных сетей.

Intel deep learning photorealistic enhancement полная архитектура

Кодер G-буфера преобразует различные карты рендеринга (G-буферы) в набор числовых объектов. G-буферы — это карты для информации о нормали поверхности, глубине, альбедо, блеске, атмосфере и сегментации объектов. Нейронная сеть использует слои свертки для обработки этой информации и вывода вектора из 128 признаков, которые улучшают производительность сети, качество изображений и избегают артефактов, создаваемых другими аналогичными методами. G-буферы получаются непосредственно из игрового движка.

intel ai photorealistic image enhancement g-buffers

Сеть улучшения изображения принимает в качестве входных данных отрисованный кадр игры и функции из кодера G-buffer и генерирует фотореалистичную версию изображения.

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

Затраты на вывод для улучшения изображения

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

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

Как сообщает Intel, “HRNet обрабатывает изображение через несколько ветвей, которые работают с разными разрешениями. Важно отметить, что один поток объектов поддерживается в относительно высоком разрешении (1/4 входного разрешения) для сохранения тонкой структуры изображения”.

Это означает, что если вы запускаете игру в Full HD (1920×1080), то верхние слои строк будут обрабатывать входные данные с разрешением 480×270 пикселей. Разрешение делится пополам на каждом из нижних рядов. Исследователи изменили структуру каждого блока в нейронной сети, чтобы также вычислить входные данные от кодера G-буфера (слои RAD).

intel photorealistic deep learning image enhancement network

Согласно статье Intel, входные данные G-буфера включают “однократные кодировки для материальной информации, плотные непрерывные значения для нормалей, глубины и цвета и разреженную непрерывную информацию для буферов bloom и sky”.

Исследователи также отмечают в своей статье, что модель глубокого обучения все еще может хорошо работать с подмножеством G-буферов.

Итак, сколько же памяти требуется модели? В статье Intel не указан размер памяти, но, согласно статье HRNetV2, полная сеть требует 1,79 гигабайта памяти для ввода 1024×2048. Сеть улучшения изображения, используемая Intel, имеет меньший входной размер, но мы также должны учитывать дополнительные параметры, вводимые слоями RAD и кодером G-буфера. Поэтому было бы справедливо предположить, что вам понадобится по крайней мере один гигабайт видеопамяти для запуска глубокого обучения на основе улучшения изображения для игр full HD и, вероятно, более двух гигабайт, если вы хотите разрешение 4K.

Требования к памяти HRNet

Один гигабайт памяти — это не так уж много, учитывая, что игровые компьютеры обычно имеют видеокарты с 4-8 ГБ видеопамяти. А высококлассные видеокарты, такие как серия GeForce RTX, могут иметь до 24 ГБ видеопамяти.

Но стоит также отметить, что 3D-игры потребляют большую часть ресурсов видеокарты. Игры хранят как можно больше данных в видеопамяти, чтобы ускорить время рендеринга и избежать обмена между ОЗУ и VRAM, что влечет за собой огромный штраф за скорость. По одной из оценок, GTA 5 потребляет до 3,5 ГБ видеопамяти в разрешении full HD. А GTA была выпущена в 2013 году. Новые игры, такие как Cyberpunk 2077, которые имеют гораздо большие 3D-миры и более детализированные объекты, могут легко сожрать до 7-8 ГБ VRAM. А если вы хотите играть в высоком разрешении, то вам понадобится еще больше памяти.

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

Но использование памяти – не единственная проблема, с которой сталкивается глубокое обучение на основе улучшения изображений.

Задержки, вызванные нелинейной обработкой

Гораздо более серьезной проблемой, на мой взгляд, является последовательный и нелинейный характер операций глубокого обучения. Чтобы понять эту проблему, мы должны сначала сравнить обработку 3D-графики с выводом глубокого обучения.

Трехмерная графика опирается на очень большое число умножений матриц. Визуализированный кадр 3D-графики начинается с набора вершин, которые в основном представляют собой набор чисел, представляющих свойства (например, координаты, цвет, материал, нормальное направление и т. д.) точек на 3D-объекте. Перед визуализацией каждого кадра вершины должны пройти серию матричных умножений, которые сопоставляют их локальные координаты с мировыми координатами, пространственные координаты камеры-с координатами кадра изображения. Индексный буфер связывает вершины в группы по три, образуя треугольники. Эти треугольники растеризуются — или преобразуются в пиксели — и каждый пиксель затем проходит через свой собственный набор матричных операций для определения своего цвета на основе цвета материала, текстур, карт отражения и преломления, уровней прозрачности и т. Д.Конвейер 3D-рендеринга

Конвейер 3D-рендеринга (Источник: LearnEveryone)

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

Во-вторых, графические преобразования в основном линейны. И линейные преобразования могут быть объединены вместе. Например, если у вас есть отдельные матрицы для преобразования мира, представления и проекции, вы можете умножить их вместе, чтобы создать одну матрицу, которая выполняет все три операции. Это сокращает ваши операции на две трети. Графические движки также используют множество трюков для дальнейшего сокращения операций. Скажем, если ограничивающий прямоугольник объекта выпадает из фрустума вида (пирамиды, представляющей перспективу камеры), он будет полностью исключен из конвейера визуализации. А треугольники, которые закрываются другими, автоматически удаляются из процесса рендеринга пикселей.

Глубокое обучение также опирается на матричные умножения. Каждая нейронная сеть состоит из слоев матричных вычислений. Вот почему видеокарты стали очень популярны среди сообщества глубокого обучения в последнее десятилетие.

Но в отличие от 3D-графики операции глубокого обучения не могут быть объединены. Слои в нейронных сетях полагаются на нелинейные функции активации для выполнения сложных задач. В принципе, это означает, что вы не можете сжать преобразования нескольких слоев в одну операцию.

Например, предположим, что у вас есть глубокая нейронная сеть, которая берет входное изображение размером 100×100 пикселей (10 000 объектов) и пропускает его через семь слоев. Видеокарта с несколькими тысячами ядер может обрабатывать все пиксели параллельно. Но ему все равно придется последовательно выполнять семь уровней нейросетевых операций, что может затруднить обработку изображений в реальном времени, особенно на младших видеокартах.

Поэтому еще одним узким местом, которое мы должны рассмотреть, является количество последовательных операций, которые должны выполняться. Если мы рассмотрим верхний слой сети улучшения изображения, то обнаружим 16 остаточных блоков, которые последовательно связаны. В каждом остаточном блоке есть два слоя свертки, блоки RAD и операции ReLU, которые последовательно связаны. Это составляет 96 уровней последовательных операций. И сеть улучшения изображения не может начать свою работу до того, как кодер G-буфера выведет свои кодировки функций. Поэтому мы должны добавить по крайней мере два остаточных блока, которые обрабатывают первый набор объектов с высоким разрешением. Это еще восемь слоев, добавленных к последовательности, что приводит нас по крайней мере к 108 слоям операций по улучшению изображения.

Это означает, что в дополнение к памяти вам нужны высокие тактовые частоты для выполнения всех этих операций вовремя. Вот интересная цитата из статьи Intel: “Вывод с нашим подходом в его текущей неоптимизированной реализации занимает полсекунды на графическом процессоре GeForce RTX 3090”.

RTX 3090 имеет 24 ГБ видеопамяти, что означает медленную скорость рендеринга в 2 кадра в секунду не из-за ограничений памяти, а скорее из-за времени, необходимого для последовательной обработки всех слоев сети image enhancer. И эта проблема будет решена не добавлением большего количества памяти или ядер CUDA, а наличием более быстрых процессоров.

“Поскольку G-буферы, используемые в качестве входных данных, изначально создаются на графическом процессоре, наш метод может быть более глубоко интегрирован в игровые движки, повышая эффективность и, возможно, еще больше повышая уровень реализма”.

Интеграция сети image enhancer в игровой движок, вероятно, даст хороший прирост скорости, но это не приведет к воспроизводимым кадрам.

Для справки мы можем вернуться к статье HRNet. Исследователи использовали специальный Nvidia V100, массивный и чрезвычайно дорогой графический процессор, специально разработанный для вывода данных глубокого обучения. При отсутствии ограничений памяти и помех со стороны других внутриигровых вычислений время вывода для V100 составляло 150 миллисекунд на вход, что составляет ~7 кадров в секунду, что почти недостаточно для плавной игры.

Разработка и обучение нейронных сетей

Еще одна неприятная проблема-это затраты на разработку и обучение нейронной сети, улучшающей изображение. Любой компании, которая захочет воспроизвести модели глубокого обучения Intel, понадобятся три вещи: данные, вычислительные ресурсы и талант к машинному обучению.

Сбор тренировочных данных может быть очень проблематичным. К счастью для Intel, кто-то решил это за них. Они использовали набор данных Cityscapes-богатую коллекцию аннотированных изображений , снятых в 50 городах Германии. Набор данных содержит 5000 мелко аннотированных изображений. Согласно па набора данных на каждое из аннотированных изображений требовалось в среднем 1,5 часа ручного труда, чтобы точно определить границы и типы объектов, содержащихся на изображении. Эти мелкозернистые аннотации позволяют усилителю изображения отображать правильные фотореалистичные текстуры на игровую графику. Городские пейзажи были результатом огромных усилий, поддерживаемых государственными грантами, коммерческими компаниями и академическими институтами. Это может оказаться полезным для других игр, которые, как и Grand Theft Auto, происходят в городских условиях.сегментация изображений городских пейзажей

Набор данных Cityscapes представляет собой набор точно аннотированных изображений городских условий

Но что, если вы хотите использовать ту же технику в игре, у которой нет соответствующего набора данных? В этом случае разработчикам игры придется собирать данные и добавлять необходимые аннотации (фотореалистичная версия Rise of the Tomb Raider, может быть?).

Вычислительные ресурсы также будут представлять собой проблему. Обучение сети размера усилителя изображения для таких задач, как сегментация изображения было бы осуществимо с несколькими тысячами долларов — не проблема для крупных игровых компаний. Но когда вы хотите сделать генеративную задачу, такую как фотореалистическое усиление, обучение становится гораздо более сложным. Это требует много тестирования и настройки гиперпараметров, и еще много эпох обучения, которые могут взорвать затраты. Intel настроила и обучила свою модель исключительно для GTA 5. Игры, похожие на GTA 5, могут сократить расходы на обучение, доработав обученную модель Intel в новой игре. Другим, возможно, потребуется протестировать совершенно новые архитектуры. Модель глубокого обучения Intel хорошо работает в городских условиях, где объекты и люди легко разделимы. Но неясно, как он будет работать в естественных условиях, таких как джунгли и пещеры.

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

Фотореалистичный усилитель изображений Intel показывает, как далеко можно продвинуть алгоритмы машинного обучения для выполнения интересных трюков. Но пройдет еще несколько лет, прежде чем аппаратное обеспечение, компании и рынок будут готовы к фотореалистичному рендерингу на основе искусственного интеллекта в реальном времени.

Автор статьи: Бен Диксон — инженер-программист и основатель компании TechTalks. Он пишет о технологиях, бизнесе и политике.

Источник: https://venturebeat.com/2021/05/31/intels-image-enhancing-ai-is-a-step-forward-for-photorealistic-game-engines/

от AI_NEWS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *