Компания Intel представила (https://openimagedenoise.github.io/news.html) первый экспериментальный выпуск библиотеки oidn (http://www.openimagedenoise.org/) (Open Image Denoise), предлагающей коллекцию фильтров для устранения шумов на изображениях, подготовленных с использованием систем рендеринга на основе трассировки лучей. Библиотека развивается как часть более крупного проекта Intel Rendering Framework (https://software.intel.com/en-us/rendering-framework), нацеленного на разработку средств программной визуализации научных расчётов (SDVis (http://sdvis.org/) (Software Defined Visualization), включающих библиотеку трассировки лучей Embree (https://embree.github.io/), систему фотореалистичной отрисовки GLuRay (https://github.com/TACC/GLuRay), платформу распределённой трассировки лучей OSPRay (http://ospray.org/) и систему программной растеризации OpenSWR (https://www.opennet.me/opennews/art.shtml?num=43176). Код написан на языке С++ и опубликован (https://github.com/OpenImageDenoise/oidn) под лицензией Apache 2.0.
Целью библиотеки Open Image Denoise является предоставление высококачественных, эффективных и простых в использовании функций шумоподавления, которые можно применять для повышения качества результатов трассировки лучей. Предложенные фильтры позволяют на основании результата сокращённого цикла трассировки лучей получить итоговый уровень качества, сопоставимый с результатом более затратного
и длительного процесса детализированного рендеринга.
Предложенные алгоритмы обеспечивают отсеивание случайного шума, моделируемого методом Монте-Карло (https://ru.wikipedia.org/wiki/%D0%9C%D0%... свойственного стохастическим алгоритмам трассировки лучей, таким как рендеринг на основе трассировки пути (https://ru.wikipedia.org/wiki/%D0%A2%D1%.... Для достижения высокого качества рендеринга в подобных алгоритмах требуется проведение трассировки очень большого числа лучей, иначе на результирующем изображении появляются заметные артефакты в виде случайного шума.Применение Open Image Denoise позволяет на несколько порядков сократить количество необходимых вычислений при расчёте каждого пикселя. В итоге можно значительно быстрее сгенерировать изначально зашумлённое изображения и довести его до приемлемого качества при помощи быстрых алгортимов подавления шумов. В зависимости от применяемого оборудования данный подход можно применять даже для интерактивной трассировки лучей c формированием изображений на лету.
Предложенная реализация оптимизирована для различных классов 64-разрядных CPU Intel с поддержкой инструкций SSE4, AVX2 и AVX-512. В качестве минимального требования заявлена поддержка SSE4.2. Для вычислений используется MKL-DNN (https://github.com/intel/mkl-dnn), вариант библиотеки MKL (https://software.intel.com/en-us/mkl) (Intel Math Kernel Library) с векторизированными и многопоточными математическими функциями, оптимизированными для решения задач машинного обучения.URL: https://openimagedenoise.github.io/news.html
Новость: https://www.opennet.me/opennews/art.shtml?num=50048
Картинка впечатляет.
а мне что-то и вовсе не верится - в центре сверху, где кирпичи, там где зашумлено никакой алгоритм "подавления шума" не справился бы, потому что даже человек там не разобрал бы отдельные кирпичи. Но справа они нам показывают почти идеальные кирпичики - либо у них снова че-то на основе нейронных сетей и предсказывания, либо картинка рекламный трюк и не более.
обученная нейросеть уже обгоняет человека в таких узкоспецифичных задачах, но тут главный вопрос как оно себя в динамике ведёт и не съедаются ли мелкие быстродвижущиеся детали..
Ага. Остался "нюанс", который разработчики нейросетевых улучшайзеров изображений стараются обходить стороной: нейросеть не восстанавливает исходное изображение, вычисляя шум и вычитая его из данной картинки, а дорисовывает картинку на основе того материала, на котором проходила обучение. Обучите нейросеть на фотографиях африканцев, а потом дайте восстановить замыленный портрет - у "восстановленного" оригинала будут толстые губы и расплющенный нос.
Такая проблема может быть решена обычным статистическим анализом на предмет равномерности распределения. Вы, видимо, математику пока не выучили.
Сейчас, когда кто-то ругается, что ему реклама на сайте предлагает какие-нибудь анальные фетиши, над ним ржут и объясняют, что это персонализированная реклама, основанная на анализе его посещений.А теперь, по ходу, если кто-то пожалуется: «А чего это ваш шумоподавитель мне везде рисует сиськи и бобры?», ему скажут: «Ну не знаем, на чём она у вас там обучена!»
И здесь "сискьки и бобры"...
> основанная на анализе
> предлагает какие-нибудь анальныеТак что лучше видна причинно-следственная связь.
Сеть можно тренеровать на полном рендере, а запускать улучшайзер на урезанном.
> кирпичи, там где зашумлено никакой алгоритм "подавления шума" не справился бы,Оно и не подавляет любой шум - просто обнаруживает пустоты (чистый черный) и заполняет их тем, что находится в промежутках между ними.
а, понял, ну тогда да
нет, не заполняет. я ниже пример привел.
А в восстановление лица из картинок 6х6 пикселей верится?
Они фильмов насмотрелись про шпийонов )
Можно сравнивать фотографии нормального разрешения с картинкой 6х6 и так опознать.
Просто Вы полагаете, что результат шумоподавления на правой картинке. :)
А результат слева это же Intel ;)
Рейтрейсинг нвидии так-же рассчитывает на нейронку-шумоподавлялку, что в общем-то и является основной инновацией в недавних баснословностоящих RTX
Кирпичи справа лучше освещены чем слева, так-что на них и шума было меньше. На других примерах (по ссылке) тоже создалось впечатление что заденойзили более простую половину изображения. Но даже с учётом этого результат выглядит впечатляющим
по ссыдке можно двигать полузнок
Видимо вы вообще в триде не шарите. Помимо основной картинки шумодав читает 3д сетку и текстуры😃.
Тоже так думаю, что этот результат - это не обработка фотки.
А некая апроксимация трассировки лучей с учетом трехмерной модели.
Все равно что обрабатывать отдельно Y канал в видео файле.
Надо тестить. Похоже, заточено под какой-то особый тип шумов.
Картинка фейк.Я забрал, собрал и обработал левую часть картинки (в left.png). Инструкции:
apt install libtbb-dev
git clone --recursive --depth 1 https://github.com/OpenImageDenoise/oidn.git .
mkdir build
cd build
cmake ..
ccmake .. #press q
makeconvert left.png -endian LSB left.pfm
LD_LIBRARY_PATH=. ./denoise -ldr left.pfm -o right.pfm
convert right.pfm right.pngи слил обе картинки в одну. Вот результат, думаю именно его стоит добавить в новость:
А можно вас попросить попробовать прогнать итеративно несколько раз?
$ ./denoise -ldr left.pfm -o left1.pfm
$ ./denoise -ldr left1.pfm -o left2.pfm
$ ./denoise -ldr left2.pfm -o left3.pfm
$ ./denoise -ldr left3.pfm -o left4.pfm
$ ./denoise -ldr left4.pfm -o left5.pfm
$ ./denoise -ldr left5.pfm -o left6.pfm
$ ./denoise -ldr left6.pfm -o left7.pfm
$ ./denoise -ldr left7.pfm -o left8.pfm
$ ./denoise -ldr left8.pfm -o left9.pfm
Спасибо.
> Картинка фейк.
> Я забрал, собрал и обработал левую часть картинки (в left.png). Инструкции:1. Откуда вы взяли png?
На официальном сайте только jpeg, и на нем видны характерные блочные дефекты от jpeg на структуре шума. Вероятно алгоритм не может распознать/удалить корректно шум после упаковки в jpeg.
2. Для работы алгоритма в полную силу нужны еще два файла, с дополнительной информацией о рендиренге.
1. Из новости.
Если алгоритм не может удалить дефекты от перепаковки jpg - то алгоритм вообще никак не может работать с зашумлением.2. Вы имеете в виду файлы "вот тут у нас черная необработанная рейтрейсингом точка" и "вот в этой точке должен быть цвет такой-то, но мы его не успели отрейтрейсить"? С такими файлами я вам за 5 минут напишу "библиотеку", восстанавливающую незашумленную картинку.
> 1. Из новости.
> Если алгоритм не может удалить дефекты от перепаковки jpg - то алгоритм
> вообще никак не может работать с зашумлением.https://blenderartists.org/t/intel-open-image-denoise-releas...
там есть оригиналы рендеров, можете проверить
Где? Я заинтересовался, думаю дай проверю, но не могу найти ни одного исходного рендера в loseless формате. Сплошные png и jpg.
PNG может в loseless
> PNG может в loselessЯ не умеют различать, когда он loseless, а когда нет. Поэтому он не пригоден в данном случае.
>> PNG может в loseless
> Я не умеют различать, когда он loseless, а когда нет.Сам по себе png всегда lossless - грубо говоря это zip.
> Если алгоритм не может удалить дефекты от перепаковки jpg
> то алгоритм вообще никак не может работать с зашумлением.Алгоритм "интерполирует" промежуточный результат рейтрейсера (по сути оптимизирует последний). Для устранения дефектов изображения иной природы не предназначен.
> 2. Вы имеете в виду файлы "вот тут у нас черная необработанная
> рейтрейсингом точка" и "вот в этой точке должен быть цвет такой-то,
> но мы его не успели отрейтрейсить"? С такими файлами я вам
> за 5 минут напишу "библиотеку", восстанавливающую незашумленную картинку.Примерно так. Кажется оно и работает :-)
И за 5 минут не получится что-то подобное сделать.
Да, и дополню свой ответ выше:Я не утверждаю, что билиотека не работает. Я утверждаю, что картинка из новости - маркетологический ФЕЙК. По ссылке самой новости есть интерактивная картинка "до|после" (пальмы на берегу моря), на которой отлично видны дефекты работы алгоритма; которые вполне неплохо объясняются теми или иными особенностями самой картинки.
В то же время на кдпв мы видим "восстановленную" информацию там, где она в принципе не может быть восстановлена с учетом имеющихся даных (даже включая нормали и альбедо, с которыми алгоритм может работать). Вы видите на моем примере, что места зашумленной картинки, у которых одинаковые альбедо и нормали (а при отсутствии оный файлов считается, что вся поверхность однородная и плоская) все равно не восстановлены.
> Я не утверждаю, что билиотека не работает. Я утверждаю, что картинка из новости -
> маркетологический ФЕЙК.абсолютно согласен. Обратите внимание на кирпичную кладку слева - в оригинале там НЕТ деталей - темно там. Не шумно, а просто недосвечено - чорное оно. Честный алгоритм просто убрал бы цветные пятна, оставив едва различимое или совсем неразличимое черное (кстати, глазами мы так примерно и видим, если специально не косим в ту сторону).
Обратите еще внимание на остальные картинки - первые пальмы очень удачны - как _портит_ картинку с мелкими деталями denoising. Прямо вот как мылом залило. Тут верю - они всегда так портят. На пепельнице тоже видно, но там нет мелких деталей и картинка не очень портится (хотя обычный descpecle сделал бы лучше и не размазал бы резких краев)
На той же что в новости - ничего подобного нет. Явно взят другой снимок, менее недосвеченный (или взято вообще что-то отhdr'енное).
логично, что когда давится шум, теряются деталиа детали это не что иное как тени, то канал яркости
который как раз и слизывают чтобы не просчитывать там всё
Почему шумы на "Original" картинках выглядят так, словно взяли фотку, а потом в гимпе пририсовали неестественный шум?
Потому что в новости так и написано: библиотека успешно подавляет искусственный шум, созданный по известному алгоритму.
Точнее, просто латает дыры рендеринга (каковыми тот шум и является).
\\В итоге можно значительно быстрее сгенерировать изначально зашумлённое изображения и довести его до приемлемого качества при помощи быстрых алгортимов подавления шумов.И на фига этот онанизм? Библиотеку даже придумали. 0_0
шоб пускать вместо миллиардов лучиков всего тысячи лучиков и получать картинку трудноотличимую от идеальной.
Получается имитация расчетов трассировки?
Скорее постобработка - алгоритм откидывает лучи, результаты которых считает недостоверными, а точки, для которых нет лучей вообще, заполняет сам интерполяцией из соседних. Но исходные данные - трассировка. Просто чем больше было лучей тем достовернее картинка.
Раньше было так - чем быстрее у тебя видеокарта, тем меньше лагает. Теперь будет так - чем быстрее у тебя видеокарта, тем четче изображение.
Вопрос "нафига" применительно к рендерингу, как всегда имеет очевидный ответ: для игроделов.Вот например Q2 через ray tracing: http://brechpunkt.de/q2vkpt/
Что все молятся на эти лучи? Я ничего не заметил. Да, картинка красивая, тени, всполохи огня. Ну и что? Что с трейсингом, что без.
Последи за ракетами и прочими светящимися двигающимися объектами. Ну и за тем, как они освещают своё окружение.
> Что все молятся на эти лучи?На рейтрейсинг "молились" до появления 3dfx Voodoo, задавшей иное направление для развития. Ныне, похоже, достигнут очередной предел, а значит пора вспоминать хорошо забытое старое -- для передела рынка.
У игроделов и так предостаточно методов получить визуально близкие к реальности результаты. Алгоритмы рейтрейсинга имеют экспоненциальную сложность. Попытка запихнуть, ограничить, упростить и снизить точность не обоснована, когда есть другие рабочие алгоритмы.Вон невидия выкатила RTX-серию для игроков с качеством рейтресинга неотличимым от того, что получается у альтернативных дешевых алгоритмов и была освистана. Хотела продать тензорные ядра изначально предназначенные для построения этих нейросетей игрокам, которым начхать на точность света и теней. Они в игрушки играют.
При этом, чтобы дизайнеры тех же интерьеров не могли дешево пользоваться этими RTX-функциями, она заблокировала этот функционал, привязав включение этих ядер к проприетарному драйверу. Мерзость.
Не надо распространять ложь, будто в играх кому-то нужен рейтрейсинг. Он настоящий-то не упёрся, не то что урезанный. Вон только пара игр его сделала для поддержки RTX по заказу самой невидии. Голосуют же за такие вещи не на форумах комментариями, а кошельком в магазине. Так или иначе мы увидим к чему это всё придёт.
Проголосовал покупкой двух 2080
И как оно там в 2080? Работает? Ренедрит? Обычный OpenGL приобретает какие-то крутые свойства или нужно пользовать API другой?
Tux racing теперь без тормозов заработал. Рекомендую
> Не надо распространять ложь, будто в играх кому-то нужен рейтрейсинг.Когда-то те алгоритмы, которые сейчас везде используют, выглядели для девелоперов такой же теоретической хренью, которую академия непонятно зачем двигает. Не, ну понятно, что можно красивую картинку отрендерить, но в реалтайме рендерить? Не получится же?! Абраш описывал это отношение ко всем этим векторам, и потом он же с Кармаком запилил кваку. На этих самых алгоритмах, которые выглядели столь непрактичными.
Я не знаю, при этом, чем рейтрейсинг такой интересный с технической точки зрения -- я никогда не реализовывал ни алгоритмов рендеринга полигонами, ни рейтрейсинга. Теоретически я знаю как они работают, представляю как это на железо ложится, но на уровне "дело было вечером, делать было нечего, я написал какую-то хрень поверх OpenGL". Поэтому мне сложно судить о том зачем же нужен рейтрейсинг, но я могу предположить. Рейтрейсинг выглядит проще алгоритмически. Рейтрейсингу не надо обрабатывать тысячи специальных случаев, на каждый из которых свои шейдеры. Освещение, тени, отражения -- это штуки, которые при рейтрейсинге возникают сами по себе, не в результате того, что пара программистов сидела и пару недель писала код. Рейтрейсинг делает программу проще. А что до экспоненциальной сложности -- это же не беда нисколько, поскольку сложность вся эта очень хорошо параллелится. Последние лет тридцать как -- это нормальное состояние дел: если стоит выбор между временем программиста и вычислительной сложностью, время программиста оказывается важнее.
Ну да, хомячку придётся видяшку новую покупать, но это ведь даже круто, причём для всех вовлечённых сторон. Хомячок получит новую крутую технологию "ray tracing", ему скажут что это круто, и он поверит. Nvidia получит бабки за видяшку. А девелоперы будут на диски печатать рекламную надпись "Ray Tracing Inside", с тем чтобы повысить свои шансы в конкуренции с теми, кто не успел освоить новую технологию. И на фоне этого, уже не столь важно, действительно ли ray tracing лучше или не очень.
Так что ложь или не ложь, но пройдёт лет пять-десять, и все эти игроделы как миленькие будут рендерить рейтрейсингом. Хотя не, пять-десять это может быть излишне оптимистичной оценкой: я не знаю насколько реально технологии рейтрейсинга готовы для real-time трейсинга. Может быть там не хватает каких-то ключевых алгоритмов, которые ещё предстоит изобрести. Впрочем, десяти лет должно хватить за глаза и за уши.
> Так или иначе мы увидим к чему это всё придёт.
Несомненно.
Идея с рейтрейсингом в играх довольно тухлая, ибо сейчас игры отбрасывают все, что не видно на экране, а при рейтресинге чтобы нарисовать пиксель надо просмотреть весь мир
Это не к рейтресингу, это к патчам света алгоритма Radiosity относится(ознакомьтесь). Рейтрейсинг считает только те отражения что видны.
>привязав включение этих ядер к проприетарному драйверу.Они точно "включение ядер" привязали? Или только эти свои специфические программы по "рейтрейсингу" для них?
Вроде красивше выходит. Но это специально подобранные примеры, интересно есть ли случаи ухудшения?
Там есть сорцы и исполняемые файлы. Скачай, побегай, посмотри. Меня бесполезно спрашивать, я в эти новые крутые современные игры не играю, как они выглядят знаю по случайно увиденным скриншотам, и для меня всё что круче Q2 уже неплохо нарисовано.
Так я тоже не играю, спрашиваю - может кто скажет, есть люди интересующиеся, просветят до чего дошел прогресс.
не хотел бы вас огорчать, но у вас существенные проблемы со зрением.
"Случаи ухудшения" видны абсолютно на всех картинках, кроме той что в заголовке новости и, как мы уже определили, наверняка является подделкой.
судя по примерам, это какой-то desharper, а не denoiser
Скорее deartifactor, так как устраняет характерные дефекты unbiased рендеров - тех же "светлячков" (яркие отдельные точки) хорошо давит. Но вот на рендерах с малым количеством шумов, действительно немного убивает микроконтраст и хочется после него легкий шарп сделать.
Рей трейсинг в массы?
короче генерит картинку используя неполный рендеринг (на картинке слева) и таким образом вместо трассировки в 3д обрабатывается 2двряд ли это применимо в играх тк там уже готовые обьекты с текстурами и координатами зато порадует 3д моделлеров
>вряд ли это применимо в играхА где еще понадобится не дожидаться полного рендеринга?
RT и пытается расчитать сумму лучей прешедших в каждую точку экрана от "готовых обьектов с текстурами и координатами". Тут и предлагают финт ушами - типа упели рассчитать 30% точек - восстанови ка что там должно было быть на остальных. М.б. даже за счет предыдущего кадра, гре начали считать с других 30%. :)
> А где еще понадобится не дожидаться полного рендеринга?Везде. Время рендеринга увеличивается по экспоненте, за несколько минут уже получается шумная картинка приемлемого качества, но чтобы полностью избавиться от шума не хватит и часа
> вряд ли это применимо в играхпогугли про NVIDIA GeForce RTX, там то же самое, но на железке
Статья про алгоритм шумоподавления. При рендеринге, полагаю, можно улучшить детализацию используя данные дополнительной классической упрощенной отрисовки.
Требовать SSE4.2 - значит закопать довольно большой парк ещё живых коредуо.
На коре2дуо никто ничего не рендерит. Использовать SSE4.2 это значит ускорить процесс, на нормальных процессарах и не заниматься всяким легаси.
Между 4.1 и 4.2 разница не большая, часть 4.2 можно заменить на 1-10 инструкций которые есть в 4.1 и меньше.
SSE можно заменить на 1-10 простых вызовов FPU, а FPU можнозаменить на эмуляцию на базе строк ;)
По словам автора проекта, SSE 4.2 желателен, но не обязателен.
да что там core-duo, это не заработает на Phenom II X6, который делает многие i7...
Картинка чистый маркетинг, правая сторона и так освещена хорошо, там подавлять ничего не надо.
> Картинка чистый маркетинг, правая сторона и так освещена хорошо, там подавлять ничего
> не надо.Кликните по ссылке на картинге и посмотрите полное исходное изображение (там ползунок можно перемещать). Качество правой части не лучше.
PS. Если очень быстро двигать ползунок по картинге отчётливо виден характер проступления деталей через шум.
Вообще сама идея не нова и аналогичный denoiser уже встроили в luxrender:http://forums.luxcorerender.org/viewtopic.php?f=5&t=220
https://perso.telecom-paristech.fr/boubek/papers/BCD/
Жаль в примерах ни одной ночной фото. Тот случай, когда камера при выдержки сильно шумит.
Это не для фотографий, а для рендеров. Там шум другой. Хотя какие-то извращенцы уже попробовали сконвертировать фото в pfm и скормить его денойзеру.
> Хотя какие-то извращенцы уже попробовали сконвертировать фото в pfm и скормить его денойзеру.А где можно на эти извращения посмотреть?
Давайте ближе к делу.Когда там VLC сможет выжимать блюрей-качество из камрипа ?)
Давно может. Только очень мыльненько получается.
Для видео одни алгоритмы нужны, для статических изображений - другие. Иначе на видео будут слишком заметны скачки в изображении, вносимые шумодавом
Тихой сапой вкрадываются, молодцы.
Вот именно Intel нужно называть "корпорацией добра", а не андроидостроителя, фуфлометателя.
С чего бы? Это способ заменить дорогие видеокарты AMD и Nvidia на дорогие процессоры Intel, раз уж интел не осилил высокопроизводительный видеочип.