Neural Texture Compression
Нейросетевое сжатие текстур хранит текстуры в виде обученных признаков и восстанавливает их по запросу, сокращая потребление графической памяти и сохраняя мелкие детали.
Нейросетевое сжатие текстур (NTC) — это метод сжатия с потерями, который хранит текстуры материалов в виде компактных обученных признаков и небольшой нейросетевого декодера. Декодер восстанавливает значения текстур, когда они нужны рендереру. Проще говоря, он заменяет большие наборы изображений с деталями поверхностей компактным обученным представлением, уменьшая требования к хранилищу и графической памяти и сохраняя мелкие визуальные детали.
Картик Вайдьянатан, Марко Сальви, Бартломей Вроньски, Томас Акенине-Мёллер, Понтус Эбелин и Аарон Лефон из NVIDIA представили в 2023 году влиятельный метод NTC с произвольным доступом в работе Random-Access Neural Compression of Material Textures. Метод совместно сжимает текстуры материала и их mip-уровни — постепенно уменьшающиеся версии текстуры, используемые, когда поверхности находятся дальше.
Как работает нейросетевое сжатие текстур#
Материал с физически корректным рендерингом использует несколько согласованных карт текстур: базовый цвет описывает цвет поверхности, карты нормалей — небольшие изменения ориентации поверхности, а шероховатость управляет резкостью бликов. Эти карты имеют общую структуру. Например, царапина может влиять на несколько каналов в одном и том же месте. NTC использует эти корреляции, представляя карты вместе в общем латентном пространстве с компактными векторами признаков, распределёнными по пространственным сеткам. Небольшая нейронная сеть, обычно многослойный перцептрон, декодирует признаки в значения материала.
При сжатии сетки признаков и веса модели декодера оптимизируются для конкретного материала. Функция потерь восстановления измеряет отличия от исходных текстур, а обратное распространение ошибки передаёт градиенты для оптимизации. В исходном методе используется оптимизатор Adam, который объединяет выбранные признаки с позиционной информацией и запрошенным уровнем mip. Во время рендеринга запрос по координатам восстанавливает соответствующий тексель — аналог пикселя в текстуре.
Эта гибридная структура связывает NTC с неявными нейросетевыми представлениями, которые представляют сигналы с помощью обученных функций, зависящих от координат. Их ключевая возможность в графике — произвольный доступ: рендерер по запросу восстанавливает нужные участки текстуры, обеспечивая инференс в реальном времени во время шейдинга.
Компромисс между экономией памяти и скоростью рендеринга#
NTC позволяет сократить объём памяти, выделяемой под текстуры, ценой дополнительных вычислений декодера на GPU. Этот компромисс особенно наглядно проявляется в двух режимах развертывания:
- Декодирование при загрузке: текстуры декодируются при загрузке ресурса и могут быть преобразованы в обычные текстуры, сжатые блочным форматом BCn. Это уменьшает объём ресурсов при хранении и передаче, сохраняя объём памяти, занимаемый ими после загрузки, на уровне целевого формата.
- Инференс при выборке: Шейдеры декодируют запрошенные тексели во время рендеринга, благодаря чему нейросетевое представление остается в графической памяти, а при выборке текстур добавляются операции декодирования.
Третий режим — инференс по запросу обратной связи — декодирует запрошенные тайлы текстуры в разреженный кэш текстур. Эти варианты определяют, где сохраняется экономия памяти за счет сжатия и где выполняется декомпрессия.
В исходной демонстрации с чернильницей использовались текстуры NTC размером 4096 x 4096 и текстуры с блочным сжатием размером 1024 x 1024: в 16 раз больше текселей при на 30% меньшем объеме памяти для текстур. Это сравнение демонстрирует, как можно сохранить больше деталей поверхности при более высоком разрешении, используя меньше памяти для текстур.
Применение и связанные понятия#
Интерактивный 3D-рендеринг — прямой пример применения. Разработчики сжимают ресурсы материалов на этапе подготовки контента и встраивают декодирование в рендерер. С помощью SDK NVIDIA RTX Neural Texture Compression ntc-cli сжимает наборы текстур, NTC Explorer сравнивает настройки, а демонстрационный рендерер отображает ресурсы glTF. В комплект входит модель FlightHelmet с предварительно сжатыми материалами для тестирования режимов рендеринга.
Нейросетевой рендеринг — более широкое понятие, обозначающее использование обучаемых компонентов при синтезе изображений. NTC восстанавливает хранящиеся текстуры материалов, а сверхвысокое разрешение позволяет получать изображения с более высоким разрешением из изображений с более низким разрешением. Эти методы применяются на разных этапах графического конвейера.
Квантование модели снижает числовую точность параметров и активаций сети. Ultralytics YOLO применяет этот связанный метод низкой точности через экспорт в TensorRT, создавая движки INT8 YOLO26, которые уменьшают требования модели к памяти и ускоряют поддерживаемые задачи инференса.
Качество реконструкции и артефакты#
Качество NTC зависит от битового бюджета и сложности материала. Чем больше бит на тексель, тем больше возможностей для восстановления деталей; добавление каналов при неизменном бюджете усиливает сжатие. Пиковое отношение сигнал/шум (PSNR), измеряемое в децибелах, характеризует точность реконструкции: чем выше значение, тем меньше ошибка. Совместное декодирование также может приводить к утечке признаков между каналами и менять восстановленные свойства материала. В реализации NVIDIA канал альфа-маски, назначенный явно, обрабатывается особым образом, чтобы точнее сохранять значения, близкие к 0 и 1.










