大家好,我基于WebNN在浏览器上实现了2020年Facebook提出的Neural-Supersampling-for-Real-time-Rendering算法。它是一个用于实时渲染的神经网络超采样算法,能够把低分辨率的图片超采样为高分辨率的图片

本课程系列文章可进入合集查看:

实时渲染前沿研究系列文章合集

介绍DLSS算法整体思想

算法的整体介绍可参考:毫秒级时间使图像清晰16倍,Facebook提出的DLSS算法介绍

算法的pytorch实现请见:Github

介绍整体实现思路

1.使用pytorch实现训练,保存weight、bias

2.使用WebNN实现推理,读取weight、bias

实现的重点记录

1.后面需要加入Motion Vector input,并实现Backward Warp

2.zero upsampling的实现参考了:https://github.com/pytorch/pytorch/issues/7911#issuecomment-392835113

3.应该可以使用Typescript dependent type来实现Tensor维度的编译检查。不过目前没有完全实现

4.等webnn issue实现后,就可以直接获得MLOperand的dimensions了。这样可方便简化代码,如在builder.slice时直接获得dimensions

在浏览器上推理的结果

使用webgl后端,场景大小为180*120,推理后为720*480

耗时为:

2015年的macbook pro:6000ms

后续优化点

现在的主要问题是推理太慢了,可以从下面几个方面来加快速度:

  • 测试每个Module耗费的时间,找到性能热点

  • 减少推理中的数据拷贝,如减少builder.slice、builder.concat的使用

  • 减少previous frame的个数

    目前我用的是5个,可以减少为4个

  • 减半Reconstruction网络的参数

  • 等待WebNN成熟,从而可以使用WebGPU后端、甚至是硬件推理后端

改进方向

对颜色rgb进行处理

进入神经网络前先除以albedo;神经网络输出后再乘以它

可以结合Neural Supersampling for Real-time Rendering、High-Quality Supersampling via Mask-reinforced Deep Learning for Real-time Rendering论文提出的神经网络,从而获得16*4=64倍的像素提升!

具体方法是:

1.渲染512*256的1/4的像素(也就是256*128)

2.使用该论文提出的神经网络,将其超采样为512*256的分辨率

3.使用本文实现的DLSS算法的神经网络,再将其超采样为512*256*16的分辨率

不使用Motion Vector来做Backward Warp?

参考Fast Temporal Reprojection without Motion Vectors

移动端的改进

参考MNSS: Neural Supersampling Framework for Real-Time Rendering on Mobile Devices

实时渲染前沿研究:在浏览器上实现了Facebook提出的DLSS算法的更多相关文章

  1. 【实时渲染】实时3D渲染如何加速汽车线上体验应用推广

    在过去,一支优秀的广告片足以让消费者对一辆汽车产生兴趣.完美的底盘线条或引擎的轰鸣声便会让潜在买家跑到经销商那里试驾.现在,广告还是和往常一样,并没有失去其特性,但86%的买家在与销售交流之前会在网上 ...

  2. 在web浏览器上显示室内温度(nodeJs+arduino+socket.io)

    上次的nodejs操作arduino入门篇中实现了如何连接arduino.这次我们来实现通过arduino测量室内温度并在浏览器上显示出来. [所需材料] 硬件:LM35温度传感器,arduino u ...

  3. 【原】实时渲染中常用的几种Rendering Path

    [原]实时渲染中常用的几种Rendering Path 本文转载请注明出处 —— polobymulberry-博客园 本文为我的图形学大作业的论文部分,介绍了一些Rendering Path,比较简 ...

  4. css3在不同型号手机浏览器上的兼容一览表

    网上搜集了css3对不同系统手机浏览器的支持情况(ios/android/winphone)备份一下以便查看.  以下资料由微信产品部"白树"整理, 转载请注明. √:完全支持   ...

  5. 利用GPU实现无尽草地的实时渲染

    0x00 前言 在游戏中展现一个写实的田园场景时,草地的渲染是必不可少的,而一提到高效率的渲染草地,很多人都会想起GPU Gems第七章 <Chapter 7. Rendering Countl ...

  6. 画面渲染:实时渲染(Real-time Rendering)、离线渲染(Offline Rendering)[转]

    实时渲染(Real-time Rendering) 实时渲染的本质就是图形数据的实时计算和输出.最典型的图形数据源是顶点.顶点包括了位置.法向.颜色.纹理坐标.顶点的权重等.在第一代渲染技术中(198 ...

  7. 封装CIImage实现实时渲染

    封装CIImage实现实时渲染 CIImage属于CoreImage里面的东东,用来渲染图片的,为什么要封装它呢?其实很简单,封装好之后使用更加方便. 如果直接使用CIImage渲染图片,使用的流程如 ...

  8. 如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染

    7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. Unity大中华区技术经理 ...

  9. h5页面在浏览器上好好的,到手机上熄火了又看不到报错信息怎么办?

    背景 最近小编接了一个新需求,用h5开发页面,通过webview嵌入原生APP中,自己在浏览器上开发爽歪歪,什么信息都能看到,可是一嵌入原生app中,瞬间就熄火了,啥也看不到了,不知道为什么,反正就是 ...

  10. 如何优化大场景实时渲染?HMS Core 3D Engine这么做

    在先前举办的华为开发者大会2022(HDC)上,华为通过3D数字溪村展示了自有3D引擎"HMS Core 3D Engine"(以下简称3D Engine)的强大能力.作为一款高性 ...

随机推荐

  1. MySQL运维5-Mycat配置

    一.schema.xml 1.1 简介 schema.xml作为Mycat中最重要的配置文件之一,涵盖了Mycat的逻辑库.逻辑表.分片规则.分片节点即数据源的配置.主要包括一下三组标签 schema ...

  2. HDU 1108

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  3. 生产升级JDK 17 必读手册

    原文点这里,查看更多优质文章 DK 17 在 2021 年 9 月 14 号正式发布了!根据发布的规划,这次发布的 JDK 17 是一个长期维护的版本(LTS). Java 17 提供了数千个性能.稳 ...

  4. 从零玩转前后端加解密之SM2-sm2

    title: 从零玩转前后端加解密之SM2 date: 2022-08-21 19:42:00.907 updated: 2023-03-30 13:28:48.866 url: https://ww ...

  5. 红日靶场4-wp

    红日靶场4 环境搭建 注:130网段为模拟外网网段,111网段为内网网段 机器 用户 密码 网卡 kali root / 192.168.130.19 web(ubuntu) ubuntu ubunt ...

  6. SQL优化案例(1):隐式转换

    MySQL是当下最流行的关系型数据库之一,互联网高速发展的今天,MySQL数据库在电商.金融等诸多行业的生产系统中被广泛使用. 在实际的开发运维过程中,想必大家也常常会碰到慢SQL的困扰.一条性能不好 ...

  7. C# 多线程 progressbar 界面不卡顿简单用法

    多线程进度条的简单使用,界面不卡顿.如下图: 简单源码如下: using System; using System.Collections.Generic; using System.Componen ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (60)-- 算法导论6.4 4题

    文心一言 VS 讯飞星火 VS chatgpt (60)-- 算法导论6.4 4题 四.证明:在最坏情况下,HEAPSORT 的时间复杂度是Ω (nlgn). 文心一言: 要证明在最坏情况下,HEAP ...

  9. 2021-01-26:mysql8.0做了什么改进?

    福哥答案2021-01-26: 2020-01-26:mysql8.0做了什么改进? 帐户管理增加了对角色的支持. 支持原子数据定义语句(atomic DDL). 支持utf8mb4字符集. Inno ...

  10. TextCNN和TextRNN:原理与实践

    1.TextCNN原理 CNN的核心点在于可以捕获信息的局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似N-Gram的关键信息. (1)一维卷积:使用不同尺寸的kernel_size来模 ...