CN115546373A - 一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法 - Google Patents
一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法 Download PDFInfo
- Publication number
- CN115546373A CN115546373A CN202211304570.0A CN202211304570A CN115546373A CN 115546373 A CN115546373 A CN 115546373A CN 202211304570 A CN202211304570 A CN 202211304570A CN 115546373 A CN115546373 A CN 115546373A
- Authority
- CN
- China
- Prior art keywords
- light
- opacity
- distance
- color
- renderer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computer Graphics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法,涉及图像渲染技术领域,将NeRF渲染器部署到FPGA上,NeRF渲染器包括特征读取器、颜色与不透明度推理器、光线渲染器、内存;特征读取器根据输入的参数,计算得到采样点的光线方向、采样点之间的距离并分别发送给颜色与不透明度推理器、光线渲染器;根据计算得到的采样点的坐标计算所需特征在内存中的地址并读取特征后进行插值处理并发送给颜色与不透明度推理器;颜色与不透明度推理器计算出采样点的颜色、采样点的不透明度并发送到光线渲染器;光线渲染器根据采样点之间的距离、采样点的颜色、不透明度信息计算出渲染结果;对目标特征进行区分,减小了内存的占用,简化渲染步骤。
Description
技术领域
本发明涉及图像渲染技术领域,更具体的,涉及一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法。
背景技术
神经辐射场(NeRF)是一种以少量的二维图像构建完整的三维场景的技术,自提出以来便受到广泛关注,该技术可以有效提取二维图像中包含的三维场景的信息,并将这些信息用于三维场景的构建。可以预见到该技术未来在三维重构、图像渲染等领域将会大展拳脚,得到广泛应用。
早期的NeRF场景构建完全依赖于神经网络,即将采样到的点和穿过点的光线的方向经过升维处理后直接送入神经网络,并在神经网络的输出端得到该点的颜色和不透明度信息。该方法有以下缺点:1.神经网络规模大,训练时间长,计算缓慢;2.如果需要增加场景的分辨率,则需要进一步扩大神经网络的规模,并使用更长的训练时间;3.即使在训练完成后,渲染一张图像所需的时间也是很长的。
后来,以查表法为代表的一些速度更高的NeRF场景构建技术出现,该方法完全不使用神经网络,而是直接将空间中的采样点的不透明度以及颜色的球谐函数系数储存在一个表中,在计算某个点的颜色时,直接根据该点的位置去表中读取相应的特征进行插值,然后使用光线方向与球谐函数系数计算出该点的颜色。该方法无论是在训练还是在渲染上的速度都远远高于早期的NeRF,但该方法的缺点也十分明显,即会消耗巨量的内存来储存这张表,且随着场景分辨率的提高,这张表的大小也会不断增长,因此该方法不适合构建太过精细的场景。
为了解决这些问题,多分辨率查表法应运而生。该方法的原理是考虑到对于一个点而言,有些特征不会有太高的频率,而有些特征则会有较高的频率,那么将那些频率低的特征的表的分辨率做低一些,将那些频率高的特征的表的分辨率做高一些,就可以在保证整体场景分辨率的同时降低内存的占用。该方法需要重新将神经网络引入,在不同分辨率的表中读取到某一个点的特征后,将这些特征以及穿过该点的光线的方向送入神经网络就可以得到对应的颜色与不透明度信息。该方法所使用的神经网络规模比早期NeRF所使用的神经网络规模要小得多,更重要的是,其规模不需要随着场景分辨率的提升而提升,因此其内存占用相较于表可以忽略不计。
多分辨率查表法虽然有效降低了内存占用,但高分辨率特征表的存储依然需要消耗巨量的内存。
现有技术公开了一种基于深度引导采样的高效神经辐射场渲染方法,该方法具体的步骤如下:(1)获取N张待渲染视角附近的图片,通过深度神经网络提取得到N张图片特征{Fi|i=1,...,N},其中Fi为第i张图片的特征;记待渲染视角的图片为目标视图,获取的待渲染视角附近的图片为给定视图;(2)利用给定视图计算目标视图的深度图像D,用D(u,v)表示目标视图上像素点(u,v)的深度值;(3)对于目标视图上的一个像素点(u,v),在其深度可能所处的区间[D(u,v)-ΔD(u,v),D(u,v)+ΔD(u,v)],采样Nk个点{xk|k=1,...,Nk},其中ΔD(u,v)为真实深度值与步骤(2)计算得到的深度值的最大误差,xk为从相机中心穿过像素点(u,v)的射线在上述深度区间上均匀采样的点;(4)对于步骤(3)采样的点xk,利用神经网络Φ计算采样点的神经辐射场(c,σ)=Φ(d,f);其中,c和σ分别是点xk的辐射和体密度,d是相机中心穿过像素点(u,v)的射线在3D空间中的方向;f是xk投影在步骤(1)深度神经网络输入图片上的对应的图像特征的聚合;(5)利用体渲染的公式聚合每一个像素点上所有采样点的神经辐射场(c,σ),得到最终渲染出来的图片;现有技术不足之处在于提取的目标特征以及相关参数占用较大内存容量,对目标特征没有进行区分,且需要构建代价体,加大处理信息的工作量。
发明内容
本发明为了解决现有技术对目标特征的提取占用较大内存、对目标特征没有进行区分,图像渲染的步骤繁琐的问题,提出了一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法,通过特征读取器提取对应的特征,在内存找到对应特征存放位置并读取,完成对目标特征的区分,通过采样点之间的距离、采样点的颜色和不透明度信息计算出渲染结果,简化了图像渲染的步骤。
为解决上述技术问题,本发明采用的技术方案是:
一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,将NeRF渲染器部署到FPGA上,其中NeRF渲染器包括特征读取器、颜色与不透明度推理器、光线渲染器、预先存储有不同分辨率的表的内存;所述的不同分辨率的表中对应存储有特征点不同频率的特征;
所述的特征读取器根据输入需要渲染的图像的相机参数和图像参数,计算得到采样点的光线方向、将采样点之间的距离;
所述的特征读取器将计算得到的采样点的光线方向发送给所述的颜色与不透明度推理器,将计算得到的采样点之间的距离发送给所述的光线渲染器;根据计算得到的采样点的坐标计算所需特征,基于多分辨率哈希编码查表法读取内存中的不同频率的表,获得相应的特征;并将获得的特征进行插值处理后发送给所述的颜色与不透明度推理器;
所述的颜色与不透明度推理器根据得到的采样点的光线方向和插值处理后的特征计算出采样点的颜色、采样点的不透明度,发送到所述的光线渲染器;
所述的光线渲染器根据得到的采样点之间的距离、采样点的颜色和不透明度信息计算出渲染结果。
本发明的工作原理如下:
通过特征读取器计算得到采样点的光线方向、将采样点之间的距离、插值处理后的特征;通过颜色与不透明度推理器计算出采样点的颜色、采样点的不透明度;通过的光线渲染器根据采样点之间的距离、采样点的颜色和不透明度信息使用一个渲染方程计算出渲染结果。
优选地,基于多分辨率哈希编码查表法读取内存中的不同分辨率的表,具体如下:
设置一个表的尺寸的限制值,判断所有表的尺寸是否大于限制值,若表的尺寸小于限制值时,则在对表的内容寻址时采用三维坐标直接寻址;若表的尺寸大于限制值时,则使用哈希函数通过三维坐标的哈希编码结果进行寻址,并使用哈希算法对表进行压缩。
进一步地,所述的特征读取器包括光线参数计算器、光线采样器、地址生成器、内存控制器、插值器;
所述的光线参数计算器根据输入需要渲染的图像的相机参数和图像参数,得到采样点的光线方向、光线起点、近端距离、远端距离;并根据近端距离与远端距离之间的大小关系判断是否需要渲染;
所述的光线参数计算器将所述的采样点的光线方向发送给所述的颜色与不透明度推理器;在确定需要渲染后,将采样点的光线方向、光线起点、近端距离、远端距离发送给所述的光线采样器;
所述的光线采样器计算出采样点之间的距离发送给光线渲染器,计算出采样点的坐标发送给所述的地址生成器;
所述的地址生成器计算出采样点的坐标在内存中的地址,并发送到内存控制器;
所述的内存控制器从内存中读取到相应的特征,并发送到插值器中;
所述的插值器进行插值处理后将插值后的特征发送到所述的颜色与不透明度推理器。
更进一步地,所述的光线参数计算器计算采样点的光线方向、光线起点、近端距离、远端距离的具体步骤如下:
S101:将相机位置视为光线起点;
S102:计算像素点在相机坐标系下的方向;
S103:使用矩阵乘法,将该方向变换为真实空间中的方向;
S104:变换后的结果经归一化得到采样点的光线方向;
S105:计算光线起点在光线方向上到采样区域边界所在的六个平面的距离;
S106:将相对的三组平面中,距离小的三个分入近端组,距离大的三个分入远端组;
S107:近端组中的距离与0之间的最大值即为近端距离,远端组中的距离中的最小值即为远端距离;
S108:通过判断近端距离与远端距离的大小关系来判断采集的光线是否需要渲染;若近端距离大于远端距离,表明该光线需要渲染;若远端距离大于近端距离,表明该光线不需要渲染。
进一步地,所述的地址生成器计算出采样点的坐标后,从内存中读取到距离该采样点距离最近的八个存在于表中的特征点的特征,使用三线性插值法得到该采样点的特征。
优选地,所述的颜色与不透明度推理器包括方向缓存模块、球谐函数编码器、全连接神经网络模块;
所述的方向缓存模块接收从特征读取器发送的采样点的光线方向;
所述的球谐函数编码器从方向缓存模块取出最早存入方向缓存模块的采样点的光线方向,进行球谐函数编码,然后发送到所述的全连接神经网络模块;
所述的全连接神经网络模块根据所述的特征读取器发送的插值处理后的特征和通过球谐函数编码器编码后的采样点的光线方向,计算出采样点的颜色、采样点的不透明度,并发送给所述的光线渲染器。
进一步地,所述的全连接神经网络模块的计算基于FPGA上的DSP所构建的乘累加器完成;所述的全连接神经网络模块为可选并行度结构。
所述的全连接神经网络模块包括输入层、输出层、第一隐藏层、第二隐藏层、第三隐藏层、第四隐藏层;输入层的输入特征数量为32,第一隐藏层的隐藏特征数量为64,激活函数为ReLU;第二隐藏层的特征数量为16,激活函数为ReLU,取其中的第一个特征作为不透明度输出,剩下15个特征;
所述的全连接神经网络模块使用的分辨率级数为16,每个分辨率提供两个特征,所以输入特征维度为32;所使用的球谐函数编码为4阶,所以输入编码后的方向维度为16;除输出层外,每一层都会使用ReLU函数提供非线性;
采样点的不透明度在输出前使用ReLU函数使其范围在[0,+∞),所述的采样点的颜色范围在输出前使用分段折线函数保证范围在[0,1];所述的分段折线函数如下:
式中,x为分段折线函数的自变量,f(x)为分段折线函数的函数值;所述的分段折线函数将-8~8之间的值先行压缩至0~1,将小于-8的值压缩到0,将大于8的值压缩到1。
优选地,所述的光线渲染器包括距离缓存模块、权重计算器、权重缓存模块、乘累加器;
所述的距离缓存接受所述的特征读取器发送的采样点之间的距离;
所述的权重计算器从距离缓存模块中取出最早存入距离缓存模块的距离,所述的权重计算器接受从颜色与不透明度推理器发送的采样点的不透明度,所述的权重计算器将最早存入距离缓存模块的距离与采样点的不透明度计算后得到权重,发送给权重缓存模块;
所述的乘累加器从权重缓存模块取出最早存入乘累加器的权重,和颜色与不透明度推理器发送的采样点的颜色进行累加,将累加的结果作为渲染结果输出。
进一步地,所述的光线渲染器通过以下公式完成对光线的渲染:
式中,Ci为所述的颜色与不透明度推理器发送的采样点的颜色,σi为所述的颜色与不透明度推理器发送的不透明度,δi为所述特征读取器发送的采样点之间的距离,C(r)为光线r的颜色,i和j是累加过程的下标,Ti为过程量无实际含义。
一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器的渲染方法,所述的方法如下:
根据输入需要渲染的图像的相机参数和图像参数,计算得到采样点的光线方向、将采样点之间的距离;
根据计算得到的采样点的坐标计算所需特征,基于多分辨率哈希编码查表法读取内存中的不同频率的表,获得相应的特征;并将获得的特征进行插值处理所述的内存预先存储有不同分辨率的表;所述的不同分辨率的表中对应存储有特征点不同频率的特征;
根据得到的采样点的光线方向和插值处理后的特征计算出采样点的颜色、采样点的不透明度;
根据得到的采样点之间的距离、采样点的颜色和不透明度信息计算出渲染结果。
与现有技术相比,本发明的有益效果是:
1.使用多分辨率哈希编码查表法读取不同频率的表,采用多分辨率哈希编码查表法读取有利于减少内存的占用量,并取得良好的渲染效果。
2.将NeRF模型部署到FPGA上,解决了基于NeRF的三维重构和图像渲染脱离GPU的问题,使得NeRF的部署不再局限于GPU,在轻量级计算设备上得以应用。
附图说明
图1为所述的基于FPGA和多分辨率哈希编码算法的NeRF渲染器的结构示意图。
图2为实施例中所述的全连接神经网络模块的结构示意图。
图3为所述的乘累加器的结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明做详细描述。
实施例1
在本实施例中,如图1所示,一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,将NeRF渲染器部署到FPGA上,其中NeRF渲染器包括特征读取器、颜色与不透明度推理器、光线渲染器、预先存储有不同分辨率的表的内存;所述的不同分辨率的表中对应存储有特征点不同频率的特征;
所述的特征读取器根据输入需要渲染的图像的相机参数和图像参数,计算得到采样点的光线方向、将采样点之间的距离;
所述的特征读取器将计算得到的采样点的光线方向发送给所述的颜色与不透明度推理器,将计算得到的采样点之间的距离发送给所述的光线渲染器;根据计算得到的采样点的坐标计算所需特征,基于多分辨率哈希编码查表法读取内存中的不同频率的表,获得相应的特征;并将获得的特征进行插值处理后发送给所述的颜色与不透明度推理器;
所述的颜色与不透明度推理器根据得到的采样点的光线方向和插值处理后的特征计算出采样点的颜色、采样点的不透明度,发送到所述的光线渲染器;
所述的光线渲染器根据得到的采样点之间的距离、采样点的颜色和不透明度信息计算出渲染结果。
本发明的工作原理如下:
通过特征读取器计算得到采样点的光线方向、将采样点之间的距离、插值处理后的特征;通过颜色与不透明度推理器计算出采样点的颜色、采样点的不透明度;通过的光线渲染器根据采样点之间的距离、采样点的颜色和不透明度信息使用一个渲染方程计算出渲染结果。
在本实施例中,基于多分辨率哈希编码查表法读取内存中的不同分辨率的表,具体如下:
设置一个表的尺寸的限制值,判断所有表的尺寸是否大于限制值,若表的尺寸小于限制值时,则在对表的内容寻址时采用三维坐标直接寻址;若表的尺寸大于限制值时,则使用哈希函数通过三维坐标的哈希编码结果进行寻址,并使用哈希算法对表进行压缩。
更具体的,所述的特征读取器包括光线参数计算器、光线采样器、地址生成器、内存控制器、插值器;
所述的光线参数计算器根据输入需要渲染的图像的相机参数和图像参数,得到采样点的光线方向、光线起点、近端距离、远端距离;并根据近端距离与远端距离之间的大小关系判断是否需要渲染;
所述的光线参数计算器将所述的采样点的光线方向发送给所述的颜色与不透明度推理器;在确定需要渲染后,将采样点的光线方向、光线起点、近端距离、远端距离发送给所述的光线采样器;
所述的光线采样器计算出采样点之间的距离发送给光线渲染器,计算出采样点的坐标发送给所述的地址生成器;
所述的地址生成器计算出采样点的坐标在内存中的地址,并发送到内存控制器;
所述的内存控制器从内存中读取到相应的特征,并发送到插值器中;
所述的插值器进行插值处理后将插值后的特征发送到所述的颜色与不透明度推理器。
更具体的,所述的光线参数计算器计算采样点的光线方向、光线起点、近端距离、远端距离的具体步骤如下:
S101:将相机位置视为光线起点;
S102:计算像素点在相机坐标系下的方向;
S103:使用矩阵乘法,将该方向变换为真实空间中的方向;
S104:变换后的结果经归一化得到采样点的光线方向;
S105:计算光线起点在光线方向上到采样区域边界所在的六个平面的距离;
S106:将相对的三组平面中,距离小的三个分入近端组,距离大的三个分入远端组;
S107:近端组中的距离与0之间的最大值即为近端距离,远端组中的距离中的最小值即为远端距离;
S108:通过判断近端距离与远端距离的大小关系来判断采集的光线是否需要渲染;若近端距离大于远端距离,表明该光线需要渲染;若远端距离大于近端距离,表明该光线不需要渲染。
更具体的,所述的地址生成器计算出采样点的坐标后,从内存中读取到距离该采样点距离最近的八个存在于表中的特征点的特征,使用三线性插值法得到该采样点的特征。
更具体的,所述的颜色与不透明度推理器包括方向缓存模块、球谐函数编码器、全连接神经网络模块;
所述的方向缓存模块接收从特征读取器发送的采样点的光线方向;
所述的球谐函数编码器从方向缓存模块取出最早存入方向缓存模块的采样点的光线方向,进行球谐函数编码,然后发送到所述的全连接神经网络模块;
所述的全连接神经网络模块根据所述的特征读取器发送的插值处理后的特征和通过球谐函数编码器编码后的采样点的光线方向,计算出采样点的颜色、采样点的不透明度,并发送给所述的光线渲染器。
更具体的,所述的全连接神经网络模块的计算基于FPGA上的DSP所构建的乘累加器完成;所述的全连接神经网络模块为可选并行度结构,适应不同型号、不同可用资源数量的FPGA。
更具体的,所述的光线渲染器包括距离缓存模块、权重计算器、权重缓存模块、乘累加器;
所述的距离缓存接受所述的特征读取器发送的采样点之间的距离;
所述的权重计算器从距离缓存模块中取出最早存入距离缓存模块的距离,所述的权重计算器接受从颜色与不透明度推理器发送的采样点的不透明度,所述的权重计算器将最早存入距离缓存模块的距离与采样点的不透明度计算后得到权重,发送给权重缓存模块;
所述的乘累加器从权重缓存模块取出最早存入乘累加器的权重,和颜色与不透明度推理器发送的采样点的颜色进行累加,将累加的结果作为渲染结果输出。
所述的光线渲染器通过以下公式完成对光线的渲染:
式中,Ci为所述的颜色与不透明度推理器发送的采样点的颜色,σi为所述的颜色与不透明度推理器发送的不透明度,δi为所述特征读取器发送的采样点之间的距离,C(r)为光线r的颜色i和j是累加过程的下标,Ti为过程量无实际含义。
实施例2
基于实施例1所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,在本实施例中,所述的光线参数计算器根据需要渲染的图像的相机位置、方向、角度、镜头焦距、感光元件尺寸以及图像分辨率的信息,计算出所有可能需要渲染的像素点的光线起点、光线方向、近端距离、远端距离。
所涉及的所有计算均为定点计算,使用定点计算可以在保证精度的同时有效地利用FPGA上的DSP资源,在特殊的计算场景下,提前确认某些值的动态范围时,通过修改定点数小数点位置的方法来提高精度,从而获得更加精准的计算结果。
在本实施例中,如图2所示,所述的全连接神经网络模块包括输入层、输出层、第一隐藏层、第二隐藏层、第三隐藏层、第四隐藏层;输入层的输入特征数量为32,第一隐藏层的隐藏特征数量为64,激活函数为ReLU;第二隐藏层的特征数量为16,激活函数为ReLU,取其中的第一个特征作为不透明度输出,剩下15个特征;
所述的全连接神经网络模块使用的分辨率级数为16,每个分辨率提供两个特征,所以输入特征维度为32;所使用的球谐函数编码为4阶,所以输入编码后的方向维度为16;除输出层外,每一层都会使用ReLU函数提供非线性;
采样点的不透明度在输出前使用ReLU函数使其范围在[0,+∞),所述的采样点的颜色范围在输出前使用分段折线函数保证范围在[0,1];所述的分段折线函数如下:
式中,x为分段折线函数的自变量,f(x)为分段折线函数的函数值;所述的分段折线函数将-8~8之间的值先行压缩至0~1,将小于-8的值压缩到0,将大于8的值压缩到1。
在本实施例中,所述的全连接神经网络模块的计算是基于DSP的乘累加器完成的,此结构可以完全由DSP的内部电路实现;全连接神经网络模块内的乘累加器和光线渲染中的乘累加器是一样的,都是将多次乘法的结果进行累加的电路。
在本实施例中,如图3所示,a与b是需要进行累加的一组乘积的两个因数,在经过乘法和一级寄存器缓存后,参与累加。如果该乘积是参与累加的第一个数,则将first拉高,让该乘积与0做加法,否则将first拉低,让该乘积与之前的累加结果做加法,从而达到累加的效果。
使用此结构实现全连接神经网络模块时,首先假定每一层的计算时间为64个周期,那么对于第一层而言,可以使用32个乘累加器,在64个周期内进行两轮计算,每轮计算进行32对数的乘累加,并输出隐藏层的32个结果,共64个结果。从而将32个乘累加器的工作排满。对于第二层而言,可以使用16个乘累加器,将上一层计算好的两轮结果共64个值分两次取出,并在64个周期内完成一轮计算,从而得到第二层所需的16个结果。后面的层也使用这样的方法进行计算,从而达成每64个周期计算一个点的流水线。层与层之间传递结果时使用饱和溢出,向下舍入,从而使电路最简化。对于每条流水线,每层的累加器数量是固定的,因为在这个模型中的全连接神经网络模块就是固定的
在这样的结构下,方向的输入比特征的输入晚了约一级流水,所以才有了方向缓存模块;不透明度的输出比颜色的输出早了三级流水,所以才有了权重缓存模块。一级流水指的是从某一层的输入开始,至其输出到下一层所需的时间;根据该设计结构可知,一级流水的具体周期数对于每一层而言都是不同的,输入层到第一隐藏层之间的流水是32个周期,第一隐藏层到第二隐藏层之间的流水是64个周期;第二隐藏层到第三隐藏层之间的流水是32个周期;第三隐藏层到第四隐藏层之间的流水是64个周期;第四隐藏层到输出层之间的流水是64个周期;总体上说,方向的输入是晚于特征的输入的,不透明度的输出是早于颜色的输出的。
吞吐率指的是平均每个点的处理所需要消耗的时钟周期;每条流水线的平均处理周期是64个周期,即每64个周期可以完成一个点的计算,同时复制64条流水线,就可以达到平均每个周期完成一个点的计算,从而匹配其前后端的处理速度。
流水线指的是将一份大工作按阶段分为多个组成部分,并分配给不同的模块,模块与模块之间***寄存器从而实现让电路可以一次处理多个工作,且每一个工作在每个时钟周期都处于不同的处理阶段或模块中。
当通过复制流水线的方式来增加吞吐量时,不同的流水线可以同时使用一套控制逻辑,享用一套网络参数,降低对网络参数的带宽需求,同时简化电路,本设计中的可选并行度结构即由此得来。根据上下级所能提供的最大吞吐量,该流水线最多可以被复制64份,从而达到每周期计算一个点的吞吐量。
实施例3
在本实施例中,所述的权重计算器计算权重的公式如下:
wi=Ti(1-exp(-σiδi))
式中,σi为所述的颜色与不透明度推理器发送的不透明度,δi为所述特征读取器发送的采样点之间的距离,wi为权重;将权重与颜色累加得到渲染的结果;权重计算过程需要用到exp函数,定义域在(-∞,0];在函数的硬件实现方式为累乘法,通过计算的值,在16位小数的定点数情况下,e-2^n中的n的有效精度范围为[-16,3],即取所需计算数字的这些位,根据该位是否为1判断是否需要参与累乘,并最终完成exp函数的计算;实际设计中,为了保证电路高速运行,将该电路设计为全流水结构;拥有exp计算电路后权重的计算步骤如下:
S301:在全连接神经网络模块发送不透明度后,从距离缓存模块中取出一个最早存入距离缓存模块中的距离,并与之相乘;
S302:使用exp计算电路来计算其指数函数值;
S303:用1减去计算的指数函数值并与T寄存器中的值相乘,得到权重,放入权重缓存;
S304:更新T寄存器,若该点位一条光线上最后一个点,将T寄存器更新为1,否则更新为T寄存器的值乘exp计算电路输出的结果;
整个计算过程设计为全流水,从而为最高64个全连接神经网络流水线提供下级电路。
基于上述FPGA和多分辨率哈希编码算法的NeRF渲染器的渲染方法,所述的方法如下:根据输入需要渲染的图像的相机参数和图像参数,计算得到采样点的光线方向、将采样点之间的距离;
根据计算得到的采样点的坐标计算所需特征,基于多分辨率哈希编码查表法读取内存中的不同频率的表,获得相应的特征;并将获得的特征进行插值处理所述的内存预先存储有不同分辨率的表;所述的不同分辨率的表中对应存储有特征点不同频率的特征;
根据得到的采样点的光线方向和插值处理后的特征计算出采样点的颜色、采样点的不透明度;
根据得到的采样点之间的距离、采样点的颜色和不透明度信息计算出渲染结果。
基于实施例1和实施例2所述的基于FPGA和多分辨率哈希编码算法的NeRF渲染器,可以在zynq-7000的FPGA上完成部署,例如在xc7z020clg484-2芯片上,可以实现1条全连接神经网络流水线并运行在2000MHz下。在该部署条件下,若每条光线采集128个点,那么渲染一张大小为400×300的图像需要的时间约为5s;若每条光线采集512个点,那么渲染一张1920×1080的图像需要的时间约为5min40s;64条全连接神经网络流水线在200MHz下可以达到每条光线采集512个点,渲染一张1920×1080的图像需要的时间约为5s。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,将NeRF渲染器部署到FPGA上,其中NeRF渲染器包括特征读取器、颜色与不透明度推理器、光线渲染器、预先存储有不同分辨率的表的内存;所述的不同分辨率的表中对应存储有特征点不同频率的特征;
所述的特征读取器根据输入需要渲染的图像的相机参数和图像参数,计算得到采样点的光线方向、将采样点之间的距离;
所述的特征读取器将计算得到的采样点的光线方向发送给所述的颜色与不透明度推理器,将计算得到的采样点之间的距离发送给所述的光线渲染器;根据计算得到的采样点的坐标计算所需特征,基于多分辨率哈希编码查表法读取内存中的不同频率的表,获得相应的特征;并将获得的特征进行插值处理后发送给所述的颜色与不透明度推理器;
所述的颜色与不透明度推理器根据得到的采样点的光线方向和插值处理后的特征计算出采样点的颜色、采样点的不透明度,发送到所述的光线渲染器;
所述的光线渲染器根据得到的采样点之间的距离、采样点的颜色和不透明度信息计算出渲染结果。
2.根据权利要求1所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,基于多分辨率哈希编码查表法读取内存中的不同分辨率的表,具体如下:
设置一个表的尺寸的限制值,判断所有表的尺寸是否大于限制值,若表的尺寸小于限制值时,则在对表的内容寻址时采用三维坐标直接寻址;若表的尺寸大于限制值时,则使用哈希函数通过三维坐标的哈希编码结果进行寻址,并使用哈希算法对表进行压缩。
3.根据权利要求2所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,所述的特征读取器包括光线参数计算器、光线采样器、地址生成器、内存控制器、插值器;
所述的光线参数计算器根据输入需要渲染的图像的相机参数和图像参数,得到采样点的光线方向、光线起点、近端距离、远端距离;并根据近端距离与远端距离之间的大小关系判断是否需要渲染;
所述的光线参数计算器将所述的采样点的光线方向发送给所述的颜色与不透明度推理器;在确定需要渲染后,将采样点的光线方向、光线起点、近端距离、远端距离发送给所述的光线采样器;
所述的光线采样器计算出采样点之间的距离发送给光线渲染器,计算出采样点的坐标发送给所述的地址生成器;
所述的地址生成器计算出采样点的坐标在内存中的地址,并发送到内存控制器;
所述的内存控制器从内存中读取到相应的特征,并发送到插值器中;
所述的插值器进行插值处理后将插值后的特征发送到所述的颜色与不透明度推理器。
4.根据权利要求3所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,所述的光线参数计算器计算采样点的光线方向、光线起点、近端距离、远端距离的具体步骤如下:
S101:将相机位置视为光线起点;
S102:计算像素点在相机坐标系下的方向;
S103:使用矩阵乘法,将该方向变换为真实空间中的方向;
S104:变换后的结果经归一化得到采样点的光线方向;
S105:计算光线起点在光线方向上到采样区域边界所在的六个平面的距离;
S106:将相对的三组平面中,距离小的三个分入近端组,距离大的三个分入远端组;
S107:近端组中的距离与0之间的最大值即为近端距离,远端组中的距离中的最小值即为远端距离;
S108:通过判断近端距离与远端距离的大小关系来判断采集的光线是否需要渲染;若近端距离大于远端距离,表明该光线需要渲染;若远端距离大于近端距离,表明该光线不需要渲染。
5.根据权利要求3所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,所述的地址生成器计算出采样点的坐标后,从内存中读取到距离该采样点距离最近的八个存在于表中的特征点的特征,使用三线性插值法得到该采样点的特征。
6.根据权利要求1所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,所述的颜色与不透明度推理器包括方向缓存模块、球谐函数编码器、全连接神经网络模块;
所述的方向缓存模块接收从特征读取器发送的采样点的光线方向;
所述的球谐函数编码器从方向缓存模块取出最早存入方向缓存模块的采样点的光线方向,进行球谐函数编码,然后发送到所述的全连接神经网络模块;
所述的全连接神经网络模块根据所述的特征读取器发送的插值处理后的特征和通过球谐函数编码器编码后的采样点的光线方向,计算出采样点的颜色、采样点的不透明度,并发送给所述的光线渲染器。
7.根据权利要求6所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,所述的全连接神经网络模块的计算基于FPGA上的DSP所构建的乘累加器完成;所述的全连接神经网络模块为可选并行度结构;
所述的全连接神经网络模块包括输入层、输出层、第一隐藏层、第二隐藏层、第三隐藏层、第四隐藏层;输入层的输入特征数量为32,第一隐藏层的隐藏特征数量为64,激活函数为ReLU;第二隐藏层的特征数量为16,激活函数为ReLU,取其中的第一个特征作为不透明度输出,剩下15个特征;
所述的全连接神经网络模块使用的分辨率级数为16,每个分辨率提供两个特征,所以输入特征维度为32;所使用的球谐函数编码为4阶,所以输入编码后的方向维度为16;除输出层外,每一层都会使用ReLU函数提供非线性;
采样点的不透明度在输出前使用ReLU函数使其范围在[0,+∞),所述的采样点的颜色范围在输出前使用分段折线函数保证范围在[0,1];所述的分段折线函数如下:
式中,x为分段折线函数的自变量,f(x)为分段折线函数的函数值;所述的分段折线函数将-8~8之间的值先行压缩至0~1,将小于-8的值压缩到0,将大于8的值压缩到1。
8.根据权利要求1所述的一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器,其特征在于,所述的光线渲染器包括距离缓存模块、权重计算器、权重缓存模块、乘累加器;
所述的距离缓存接受所述的特征读取器发送的采样点之间的距离;
所述的权重计算器从距离缓存模块中取出最早存入距离缓存模块的距离,所述的权重计算器接受从颜色与不透明度推理器发送的采样点的不透明度,所述的权重计算器将最早存入距离缓存模块的距离与采样点的不透明度计算后得到权重,发送给权重缓存模块;
所述的乘累加器从权重缓存模块取出最早存入乘累加器的权重,和颜色与不透明度推理器发送的采样点的颜色进行累加,将累加的结果作为渲染结果输出。
10.基于权利要求1~9任一项所述的基于FPGA和多分辨率哈希编码算法的NeRF渲染器的渲染方法,其特征在于:所述的方法如下:
根据输入需要渲染的图像的相机参数和图像参数,计算得到采样点的光线方向、将采样点之间的距离;
根据计算得到的采样点的坐标计算所需特征,基于多分辨率哈希编码查表法读取内存中的不同频率的表,获得相应的特征;并将获得的特征进行插值处理所述的内存预先存储有不同分辨率的表;所述的不同分辨率的表中对应存储有特征点不同频率的特征;
根据得到的采样点的光线方向和插值处理后的特征计算出采样点的颜色、采样点的不透明度;
根据得到的采样点之间的距离、采样点的颜色和不透明度信息计算出渲染结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211304570.0A CN115546373A (zh) | 2022-10-24 | 2022-10-24 | 一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211304570.0A CN115546373A (zh) | 2022-10-24 | 2022-10-24 | 一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115546373A true CN115546373A (zh) | 2022-12-30 |
Family
ID=84718108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211304570.0A Pending CN115546373A (zh) | 2022-10-24 | 2022-10-24 | 一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115546373A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117611727A (zh) * | 2024-01-24 | 2024-02-27 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、设备以及介质 |
-
2022
- 2022-10-24 CN CN202211304570.0A patent/CN115546373A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117611727A (zh) * | 2024-01-24 | 2024-02-27 | 腾讯科技(深圳)有限公司 | 渲染处理方法、装置、设备以及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11847550B2 (en) | Sparse convolutional neural network accelerator | |
US9984498B2 (en) | Sparse GPU voxelization for 3D surface reconstruction | |
CN112396645B (zh) | 一种基于卷积残差学习的单目图像深度估计方法和*** | |
CN112104830A (zh) | 视频插帧方法、模型训练方法及对应装置 | |
KR20190062129A (ko) | 컨볼루션 신경망 계산을 위한 저전력 하드웨어 가속 방법 및 시스템 | |
CN107274362B (zh) | 硬件实现导向滤波的优化***和方法 | |
CN111079764A (zh) | 一种基于深度学习的低照度车牌图像识别方法及装置 | |
EP2804144A1 (en) | Method and device for processing input image data | |
WO2023160426A1 (zh) | 视频插帧方法、训练方法、装置和电子设备 | |
CN115546373A (zh) | 一种基于FPGA和多分辨率哈希编码算法的NeRF渲染器及渲染方法 | |
CN108537872B (zh) | 一种图像渲染方法、移动设备和云端设备 | |
CN115205463A (zh) | 基于多球面场景表达的新视角图像生成方法、装置和设备 | |
CN116503551A (zh) | 一种三维重建方法及装置 | |
CN109416743B (zh) | 一种用于识别人为动作的三维卷积装置 | |
CN112541972A (zh) | 一种视点图像处理方法及相关设备 | |
CN116167425B (zh) | 一种神经网络加速方法、装置、设备及介质 | |
Shahnovich et al. | Hardware implementation of a real-time tone mapping algorithm based on a mantissa-exponent representation | |
CN109087257B (zh) | 一种基于参数估计框架的空域增量图像滤波方法 | |
CN112115786A (zh) | 基于注意力U-net的单目视觉里程计方法 | |
Zhang et al. | Lookup table meets local laplacian filter: pyramid reconstruction network for tone mapping | |
CN116611488A (zh) | 一种矢量处理单元、神经网络处理器及深度相机 | |
CN115631223A (zh) | 基于自适应学习和聚合的多视图立体重建方法 | |
CN111738904B (zh) | 一种图像中目标物体的几何矩的计算方法和计算装置 | |
CN115797236A (zh) | 一种图像和谐化处理的方法及设备 | |
CN112802075A (zh) | 纹理生成模型的训练方法、图像处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Huang Yihua Inventor after: Zhao Baoze Inventor before: Huang Yihua Inventor before: Xu Xiangzhi |
|
CB03 | Change of inventor or designer information |