CN118052920A - 渲染方法及装置、训练方法 - Google Patents

渲染方法及装置、训练方法 Download PDF

Info

Publication number
CN118052920A
CN118052920A CN202310807760.2A CN202310807760A CN118052920A CN 118052920 A CN118052920 A CN 118052920A CN 202310807760 A CN202310807760 A CN 202310807760A CN 118052920 A CN118052920 A CN 118052920A
Authority
CN
China
Prior art keywords
rendering
image
resolution
module
preset
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
Application number
CN202310807760.2A
Other languages
English (en)
Inventor
廖依伊
李思成
虞露
曹潇然
涂晨曦
蔡康颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Zhejiang University ZJU
Original Assignee
Huawei Technologies Co Ltd
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Zhejiang University ZJU filed Critical Huawei Technologies Co Ltd
Publication of CN118052920A publication Critical patent/CN118052920A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

本申请实施例提供了一种渲染方法及装置、训练方法,涉及图像处理技术领域,该方法包括:先通过神经渲染得到较低分辨率的任意视角下预设三维对象的特征图,再对该特征图进行超分辨率处理,得到所需的较高分辨率的该预设三维对象在该任意视角下的渲染图像。由于神经渲染的特征图的分辨率较低,且图像超分辨率处理的复杂度也较低,从而降低算法复杂度,以提升对图像的渲染速度,满足实时地以自由视角来观看三维内容的图像需求。

Description

渲染方法及装置、训练方法
本申请要求于2022年11月11日提交中国国家知识产权局、申请号为202211409488.4、申请名称为“神经渲染方法及训练方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及图像处理技术领域,尤其涉及一种渲染方法及装置、训练方法。
背景技术
神经渲染(Neural Rendering)是一种对三维内容的渲染方法,神经渲染可对输入的任意视角,生成该三维内容在该视角下的图像。
但是,目前现有技术中的神经渲染方法的渲染速度较慢,无法满足实时地自由视角来观看三维内容的图像的需求。
发明内容
为了解决上述技术问题,本申请提供一种渲染方法及装置、训练方法。在该方法中,先通过神经渲染得到较低分辨率的任意视角下预设三维对象的特征图,再对该特征图进行超分辨率处理,得到所需的较高分辨率的该预设三维对象在该任意视角下的渲染图像。由于神经渲染的特征图的分辨率较低,且图像超分辨率处理的复杂度也较低,从而降低算法复杂度,以提升对图像的渲染速度,满足实时地以自由视角来观看三维内容的图像需求。
在一种可能的实施方式中,本申请提供一种渲染方法。该方法包括:获取第一视角;基于所述第一视角对预设三维对象进行神经渲染处理,得到第一分辨率的第一特征图;对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像;其中,所述第一分辨率低于所述第二分辨率。
其中,第一视角可以是外部输入的,例如通过响应于用户输入而获取的第一视角。
此外,第一视角也可以是预设的视角。
视角为对3D对象的观察视角,包括观察点的3维坐标位置和观察角度。
此外,第一视角的数量可以是一个或多个,在第一视角的数量为多个时,该多个第一视角可以是连续的多个视角(例如视角轨迹),也可以是不连续的多个视角,这里不作限制。
本申请的渲染方法针对每个第一视角都可以得到一张第二分辨率的第一图像。那么在该第一视角的数量为多个时,则可得到由多帧该第一图像构成的视频。
现有技术中的神经渲染方法对一个视角得到的渲染结果为包括颜色信息的可视化图像,例如RGB、YUV图像等。以及现有技术对图像进行超分辨率处理时,输入的图像也是可视化图像。
但是在本申请实施例中,基于第一视角渲染得到的结果为特征图,而非可视化图像,以及将该特征图作为进行超分辨率处理的数据源。相比于可视化图像,特征图的信息容易更多,从而可提升图像的超分效果,以提升得到的第一图像的图像质量。
以及,本申请实施例先通过对预设三维图像进行神经渲染处理,得到在第一视角下,较低分辨率的渲染结果,这里的第一特征图,然后再对该第一特征图进行超分辨率处理以提高其分辨率,从而得到第二分辨率(也可以表述为目标分辨率)的第一图像(也可以表述为渲染图像)。
那么在渲染相同的第二分辨率的图像的场景下,由于通过神经渲染处理后得到的渲染结果的第一分辨率相比于现有技术中的神经渲染方法直接神经渲染得到渲染图像的第二分辨率更低,以此可降低算法的复杂度,以及对特征图进行超分辨率处理的复杂度也较低,从而可提高对预设三维对象的任意自由视角的渲染图像的渲染速度,以实现对自由视角的渲染图像的实时渲染。
在一种可能的实施方式中,所述方法还包括:基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,其中,所述候选渲染结果包括所述第一渲染结果,所述候选视角包括所述第二视角;基于所述第一渲染结果,获取与所述第一视角相关的参考图像;基于所述参考图像对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像。
其中,候选视角可以是一个或多个。
候选视角可以包括预设视角,也可以是在生成该第一视角的特征图或第一图像之前生成的已渲染帧的视角。
上述第一视角也可以称为待渲染的当前帧的第一视角。
其中,所述候选渲染结果可表示为可作为参考帧的渲染结果。
已渲染帧表示在当前帧之前已生成的相应视角的第二分辨率的图像。
本申请各个实施方式所述的渲染结果可以是通过神经渲染处理得到的相应特征图,也可以是通过超分辨率处理得到的相应图像,该图像为可显示图像,例如RGB图像或YUV图像等。
在对当前帧的第一特征图进行超分辨率处理时,可利用该当前帧的参考图像,从而提升对当前帧的第一特征图的超分辨率效果,以提升第一图像的图像质量。
为了得到该当前帧的参考图像,可以在保存的候选视角的候选渲染结果中,获取与该当前帧的第一视角相关的第二视角的候选渲染结果,这里以第一候选结果表示,并利用该第一候选结果来获取当前帧的参考图像,以提升参考图像的准确度。
在一种可能的实施方式中,保存所述预设三维对象在候选视角下的候选渲染结果,包括:预先生成所述预设三维对象在第一预设视角下的候选渲染结果并保存,所述候选视角包括所述第一预设视角;和/或,预先接收所述预设三维对象在第二预设视角下的候选渲染结果并保存,所述候选视角包括所述第二预设视角。
本实施例所保存的候选渲染结果可包括预渲染帧的候选渲染结果,和/或,预下载帧的候选渲染结果。
其中,预渲染帧的候选渲染结果为本申请的方法预先生成并预先保存的一个或多个预设的视角下,该预设三维对象的渲染结果。
该预下载帧的候选渲染结果为本申请预先接收(例如从云端下载等方式)的一个或多个预设的视角下,该预设三维对象的渲染结果。
其中,预渲染帧和预下载帧各自对应的视角可以存在相同的视角,或者二者之间的视角不同,这里不作限制。
其中,已渲染帧在本次的渲染任务结束后,缓存的该已渲染帧会清空。那么在下一次渲染任务开始时,则未缓存有已渲染帧,在本实施例中,可在渲染任务开始之前,即开始渲染任意视角的预设三维图像的图像之前,通过预先生成或预先下载对预设三维对象的候选渲染结果(例如特征图或渲染图像),并可在该候选渲染结果中选择作为当前帧的参考帧的第一渲染结果,以得到第一视角的参考图像,以用于参考该参考图像来得到当前第一视角的渲染图像,这里为第一图像。这样,在开始渲染预设三维对象的起始的一帧或多帧的图像时,能够存储有预下载帧和/预渲染帧以可作为当前渲染的当前帧的参考帧,从而能够保存有有足够的可作为参考帧的渲染结果,以提高开始渲染的几个视角的帧图的图像质量。
在一种可能的实施方式中,所述方法还包括:将生成的所述第一特征图或所述第一图像作为所述预设三维对象在所述第一视角下的一个候选渲染结果进行保存。
在本实施例中,每次渲染得到的第一特征图或第一图像可作为该第一视角下的一个候选渲染结果进行保存,这里的候选渲染结果为已渲染帧的渲染结果。
在一种可能的实施方式中,所述候选渲染结果包括所述预设三维对象在同一候选视角下的目标特征图或目标图像;其中,所述目标特征图为通过所述神经渲染处理而得到的所述第一分辨率的特征图;所述目标图像为通过对所述目标特征图进行所述超分辨率处理而得到的所述第二分辨率的图像。
其中,可作为参考帧的候选渲染结果可以是通过上述方法得到的第一分辨率的特征图,其分辨率较低,则可降低缓存量,以及降低算法复杂度,且利用特征图来渲染当前帧的渲染速度更快。
此外,可作为参考帧的候选渲染结果也可以是通过上述超分辨率处理而得到的第二分辨率的图像,这样,利用相应超分后的图像作为当前帧的参考帧以得到相应的参考图像,可提升当前帧的图像质量。
在一种可能的实施方式中,所述基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,包括:在保存的所述预设三维对象在候选视角下的候选渲染结果中,获取视角与所述第一视角的差值小于预设视角阈值的第二视角的第一渲染结果。
在缓存的候选渲染结果中,可选择视角与当前的第一视角接近或相同的第二视角的候选渲染结果,以作为第一渲染结果。其中,第二视角的数量可以是一个或多个,相应的,第一渲染结果的数量也可以是一个或多个,并且第一渲染结果可以是特征图,或者经过上述超分辨率处理后的图像。
在一种可能的实施方式中,所述第一特征图的通道数大于3。
现有技术中的神经渲染方法输出的可视化图像(例如RGB图像)的通道数是3,本申请的神经渲染处理后得到的特征图的通道数大于3,该特征图相比于该可视化图像可提供更多的信息量,那么在利用特征图进行超分辨率处理时,可提升图像的超分辨率效果,以提升第一图像的图像质量。
在一种可能的实施方式中,所述预设三维对象为虚拟三维对象或真实三维对象。
在一种可能的实施方式中,本申请提供一种渲染装置。该装置包括:神经渲染模块和超分辨率模块;所述神经渲染模块,用于接收第一视角,并基于所述第一视角对预设三维对象进行神经渲染处理,输出第一分辨率的第一特征图;所述超分辨率模块,用于对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像并输出所述第一图像;其中,所述第一分辨率低于所述第二分辨率。
不同于现有技术,本申请的渲染装置中的神经渲染模块和超分辨率模块为一套整体的装置中的模块,而非两个单独的产品或装置。
在一种可能的实施方式中,所述神经渲染模块包括第一模块,所述第一模块的输出结果的通道数大于3。
该神经渲染模块可包括第一模块,该第一模块为经过训练后的模块,该第一模块的输出结果的通道数与神经渲染模块输出结果的通道数相同,该通道数大于3。
在一种可能的实施方式中,所述第一模块为第一网络,所述第一网络中的最后一层网络的通道数大于4。
例如,在该神经渲染模块基于NeRF来进行神经渲染处理时,该第一模块可为第一网络,例如MLP(多层感知器)网络,该MLP网络由多个全连接层构成,那么MLP网络的最后一个全连接层的通道数或者说通道宽度大于4。
而现有技术中的NeRF的MLP网络输出结果为体素的颜色(通道数为3)和密度(通道数为1),因此,现有技术中的MLP网络最后一层网络的通道数为4,而本申请通过神经渲染模块中的第一网络,来得到的最终的第一特征图的通道数大于4,使得第一特征图的信息量更大,利于提升图像的超分辨率处理效果。
在一种可能的实施方式中,所述第一模块为体表达模块,所述体表达模块存储的每个体素信息的通道数大于4。
例如,在该神经渲染模块基于PlenOctrees来进行神经渲染处理时,该第一模块可为体表达模块。
现有的PlenOctrees中的体表达模块可存储体素信息,该体素的分辨率与输出的图像的第二分辨率正相关,以及存储的体素信息可包括体素的颜色和密度,因此,现有技术中体表达模块存储的体素的信息的维度为4,即每个体素信息的通道数为4。
但是,本申请的体表达模块存储的每个体素的信息中,每个体素的信息的维度(或者说通道数)大于4,从而通过体表达模块输出的体素的信息的维度大于4,来提升了神经渲染模块输出的第一特征图的通道数。以及体表达模块存储的体素信息对应的体素数量是与神经渲染模块输出的图像的分辨率正相关的。本申请的神经渲染模块输出的第一特征图的第一分辨率小于所需要的图像的第二分辨率,使得本申请的神经渲染模块输出的第一特征图的第一分辨率小于现有技术中的神经渲染模块所输出的可视化图像的第二分辨率,由于上述正相关的关系,使得本申请的神经渲染模块中的体表达模块所存储的体素的信息相关的体素数量也小于现有技术中神经渲染模块中的体表达模块所存储的体素的数量,可降低对存储、内存的占用。
在一种可能的实施方式中,所述神经渲染模块包括与所述第一模块连接的体渲染模块;所述第一模块,用于输出与所述第一视角相关的每个体素的体素信息;所述体渲染模块,用于对来自所述第一模块的体素信息进行处理,得到通道数大于4的所述第一分辨率的所述第一特征图并输出所述第一特征图;所述超分辨率模块,具体用于从所述体渲染模块接收所述第一特征图。
在一种可能的实施方式中,所述渲染装置还包括:帧缓存模块,用于保存所述预设三维对象在候选视角下的候选渲染结果;映射模块,用于基于所述帧缓存模块保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,其中,所述候选渲染结果包括所述第一渲染结果,所述候选视角包括所述第二视角;所述映射模块,还用于基于所述第一渲染结果,获取与所述第一视角相关的参考图像并输出所述参考图像;所述超分辨率模块,具体用于基于来自所述映射模块的所述参考图像对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像。
在一种可能的实施方式中,所述渲染装置,还用于预先生成所述预设三维对象在第一预设视角下的候选渲染结果;所述帧缓存模块,具体用于保存预先生成的所述候选渲染结果,所述候选视角包括所述第一预设视角;所述渲染装置,还用于预先接收所述预设三维对象在第二预设视角下的候选渲染结果;所述帧缓存模块,具体用于保存预先接收的候选渲染结果,所述候选视角包括所述第二预设视角。
在一种可能的实施方式中,所述帧缓存模块,还用于将所述神经渲染模块输出的所述第一特征图、或所述超分辨率模块输出的所述第一图像保存为所述预设三维对象在所述第一视角下的一个候选渲染结果。
在一种可能的实施方式中,所述候选渲染结果包括所述预设三维对象在同一候选视角下的目标特征图或目标图像;所述神经渲染模块,用于基于该候选视角对所述预设三维对象进行神经渲染处理,得到所述第一分辨率的所述目标特征图;所述超分辨率模块,用于对所述目标特征图进行超分辨率处理,得到所述第二分辨率的目标图像。
在一种可能的实施方式中,所述映射模块,具体用于在所述帧缓存模块保存的所述预设三维对象在候选视角下的候选渲染结果中,获取视角与所述第一视角的差值小于预设视角阈值的第二视角的第一渲染结果。
在一种可能的实施方式中,所述第一特征图的通道数大于3。
本申请实施例通过对神经渲染模块的最后一层网络的通道数进行预先配置为通道数大于3的通道数,例如16或32,从而可使神经渲染模块输出的通道数大于3。
在一种可能的实施方式中,所述预设三维对象为虚拟三维对象或真实三维对象。
上述各实施方式的渲染装置的效果,与上述各实施方式的渲染方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种训练方法。该方法用于对渲染装置进行训练,所述渲染装置包括超分辨率模块和神经渲染模块,所述方法包括:获取第一训练数据,第一训练数据包括预设三维对象的第一监督图像和所述第一监督图像中所述预设三维对象的第一视角;将所述第一视角输入至所述神经渲染模块,由所述神经渲染模块基于所述第一视角对所述预设三维对象进行神经渲染处理,输出第一分辨率的第一特征图至所述超分辨率模块;由所述超分辨率模块对所述第一特征图进行超分辨率处理,输出所述预设三维对象在所述第一视角下的第二分辨率的第一图像,其中,所述第一监督图像的分辨率为所述第二分辨率,且所述第一分辨率低于所述第二分辨率;基于所述第一监督图像和所述第一图像,对所述神经渲染模块中的第一模块和所述超分辨率模块分别进行反向传播。
本申请的超分辨率模块和神经渲染模块是基于预设三维对象进行联合训练得到的,使得该超分辨率模块并非通用的超分辨率网络模块,而是针对预设三维对象进行优化后的超分辨率网络,那么训练后的超分辨率模块相比于通用的超分辨率网络,能够对该预设三维对象的任意视角的图像进行较好的超分效果,以提升输出的第二分辨率的图像的图像质量。并且联合优化后的渲染装置所输出的图像质量更高。
另外,在对该渲染装置进行训练时,是使用该渲染装置的输出结果,即超分辨率模块的输出结果(第一分辨率的第一图像)来与监督图像图像进行损失计算,以用于对神经渲染模块和超分辨率模块进行联合训练优化。而不是使用该渲染装置的中间结果(这里为神经渲染模块的输出结果,具体为第一分辨率的第一特征图)来与监督图像进行损失计算,从而可使神经渲染模块的输出结果(这里为第一分辨率的第一特征图)只是作为中间结果的特征图,不具备任何物理意义,而非RGB图像。而特征图相比于可视化图像可提供更多的信息,从而可用于提升输出的第一图像的图像质量。
这样训练后的渲染装置则可根据预设三维对象的现有场景的图像或视频,来创建该预设三维对象的新视角的图像或者视频片段。
在一种可能的实施方式中,所述第一监督图像为拍摄图像,所述获取第一训练数据,包括:获取通过对所述预设三维对象进行多个视角的拍摄,而得到的多个拍摄图像及每张所述拍摄图像的第一视角;和/或,获取通过对所述预设三维对象进行连续视角的视频拍摄,而得到的第一视频数据及所述第一视频数据的第一视角,其中,所述第一视频数据包括所述连续视角中每个视角的拍摄图像。
本实施例通过对特定3D对象进行多视角的照片或视频拍摄,来得到训练数据,以得到本申请的渲染装置,使得训练后的渲染装置可对该特定3D对象进行任意视角的图像的实时展示。
在一种可能的实施方式中,所述预设三维对象为虚拟三维对象,所述第一监督图像为渲染图像,所述获取第一训练数据,包括:获取通过三维图形引擎对所述虚拟三维对象进行多个视角的渲染而得到多张渲染图像,及每张所述渲染图像的第一视角;和/或,获取通过所述三维图形引擎对所述虚拟三维对象进行连续视角的渲染而得到的第二视频数据,及所述第二视频数据的第一视角,其中,所述第二视频数据包括所述连续视角中每个视角的渲染图像。
三维图形引擎可具有渲染高质量图像的渲染算法,而渲染高质量图像的渲染算法往往是极为消耗算力、并且无法完成对图像的实时渲染地。那么在本实施例中,通过将高质量渲染算法得到的多视角的渲染图像或一段视角轨迹下的一段视频作为训练数据进行神经渲染装置的训练,可使本申请训练后的神经渲染模块能够构建该虚拟3D对象的表达,从而可以在不执行高质量渲染算法的情况下,训练后的神经渲染装置能够对该特定虚拟3D对象进行高质量图像的自由视角的观看。
在一种可能的实施方式中,所述第一特征图的通道数大于3。
在一种可能的实施方式中,所述第一模块为第一网络,所述第一网络中的最后一层网络的通道数大于4。
在一种可能的实施方式中,所述第一模块为体表达模块,所述体表达模块存储的每个体素信息的通道数大于4。
在一种可能的实施方式中,所述神经渲染模块包括与所述第一模块连接的体渲染模块,所述第一特征图为由所述体渲染模块对来自所述第一模块的与所述第一视角相关的体素信息进行处理,而得到的通道数大于4的特征图。
在一种可能的实施方式中,所述方法还包括:基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,其中,所述候选渲染结果包括所述第一渲染结果,所述候选视角包括所述第二视角;基于所述第一渲染结果,获取与所述第一视角相关的参考图像;将所述参考图像输入至所述超分辨率模块,由所述超分辨率模块基于所述参考图像对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像并输出所述第一图像。
在一种可能的实施方式中,保存所述预设三维对象在候选视角下的候选渲染结果,包括:预先生成所述预设三维对象在第一预设视角下的候选渲染结果并保存,所述候选视角包括所述第一预设视角;和/或,预先接收所述预设三维对象在第二预设视角下的候选渲染结果并保存,所述候选视角包括所述第二预设视角。
在一种可能的实施方式中,所述方法还包括:将生成的所述第一特征图或所述第一图像作为所述预设三维对象在所述第一视角下的一个候选渲染结果进行保存。
在一种可能的实施方式中,所述候选渲染结果包括所述预设三维对象在同一候选视角下的目标特征图或目标图像;其中,所述目标特征图为将所述候选视角输入至所述神经渲染模块而由所述神经渲染模块输出得到的所述第一分辨率的特征图;所述目标图像为将所述目标特征图输入至所述超分辨率模块而由所述超分辨率模块输出得到的所述第二分辨率的图像。
在一种可能的实施方式中,所述基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,包括:在保存的所述预设三维对象在候选视角下的候选渲染结果中,获取视角与所述第一视角的差值小于预设视角阈值的第二视角的第一渲染结果。
上述各实施方式的训练方法的效果,与上述各实施方式的渲染方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种电子设备。该电子设备包括:存储器和处理器,所述存储器与所述处理器耦合;所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行上述任意一种实施方式所述的渲染方法,或执行上述任意一种实施方式所述的训练方法。
本实施方式的电子设备执行的渲染方法的效果,与上述各实施方式的渲染方法的效果类似。以及本实施方式的电子设备执行的训练方法的效果,与上述各实施方式的训练方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种服务器。该服务器包括:存储器和处理器,所述存储器与所述处理器耦合;所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述服务器执行执行上述任意一种实施方式所述的渲染方法,或执行上述任意一种实施方式所述的训练方法。
本实施方式的服务器执行的渲染方法的效果,与上述各实施方式的渲染方法的效果类似。以及本实施方式的服务器执行的训练方法的效果,与上述各实施方式的训练方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种计算机可读存储介质。该介质包括计算机程序,当所述计算机程序运行在计算机或处理器上时,使得所述计算机或所述处理器执行上述任意一种实施方式所述的渲染方法,或执行上述任意一种实施方式所述的训练方法。
本实施方式的中渲染方法的效果,与上述各实施方式的渲染方法的效果类似。以及本实施方式中的训练方法的效果,与上述各实施方式的训练方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种渲染装置。该装置包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器用于执行上述任意一种实施方式所述的渲染方法。
其中,该渲染装置可以是电子设备、服务器、芯片等。
本实施方式的渲染装置的效果,与上述各实施方式的渲染方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种训练装置。该装置包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器用于执行上述任意一种实施方式所述的训练方法。
其中,该训练装置可以是电子设备、服务器、芯片等。
本实施方式的训练装置的效果,与上述各实施方式的训练方法的效果类似,这里不再赘述。
在一种可能的实施方式中,本申请提供一种计算机程序产品。计算机程序产品包含软件程序,当软件程序被计算机或处理器执行时,使得上述任意一个实施方式中的渲染方法或任意一个实施方式的训练方法被执行。
本实施方式的计算机程序产品的效果,与上述各实施方式的渲染方法或训练方法的效果类似,这里不再赘述。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为示例性示出的人工智能主体框架示意图;
图2a为示例性示出的现有技术的神经渲染过程的示意图;
图2b为示例性示出的现有技术的神经渲染过程的示意图;
图3a为示例性示出的渲染装置的结构示意图;
图3b为示例性示出的渲染方法的过程示意图;
图4为示例性示出的训练过程的场景示意图;
图5a为示例性示出的渲染过程的场景示意图;
图5b为示例性示出的渲染过程的场景示意图;
图5c为示例性示出的渲染过程的场景示意图;
图6为示例性示出的电子设备的硬件结构示意图;
图7为示例性示出的映射处理过程的场景示意图;
图8为示例性示出的训练过程的示意图;
图9为本申请实施例提供的一种装置的结构示意图;
图10为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
图1为示例性示出的人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。
“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
“IT价值链”从人工智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施:
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片提供,其中,该智能芯片可为中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、网络处理器(Neural-Network Processing Units,NPU)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程逻辑门阵列(FieldProgrammable Gate Array,FPGA)等硬件加速芯片);基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储节点和计算节点、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别,神经渲染等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
神经渲染(Neural Rendering)是一种对三维(3D)内容的渲染方法。
神经渲染网络的训练阶段:
获取训练数据,训练数据为一个预定三维内容的多个视角的图像;通过该训练数据,训练神经网络得到一个神经渲染网络,使得神经渲染网络可理解该预定三维内容在三维空间中的实际形状和物理状态(例如材质、光照)等。
神经渲染网络的渲染阶段:
输入任意视角至该神经渲染网络,该神经渲染网络可渲染输出上述预定三维内容在该视角下的图像。
上述视角可包括三维空间的三维坐标(x,y,z)以及对上述预定三维内容的观察角度。换言之,该是视角可表达在三维空间的上述三维坐标的位置、以上述观察角度来观看该预定三维内容的场景。那么神经渲染网络可渲染得到该预定三维内容在该视角下的图像。
通过神经渲染方法,可以对给定的一个三维内容生成新视角图像。相比传统的基于三维重建、或是视角插值的方法,神经渲染方法可以显著地提升生成的新视角图像的质量。
下面介绍现有技术中的两种神经渲染方法,在介绍之前,首先对图像处理领域的以下技术名称进行解释和说明:
体素:用于描述三维空间中的每个点。
其中,体素具有位置信息、密度信息、颜色信息等,其中,该位置为三维坐标。
其中,体素的颜色信息可与视角相关,例如对于不同的视角,体素具有不同的颜色值。
现有技术1:
神经辐射场(Neural Radiance Fields,NeRF)是一种现有的神经渲染方法,图2a为示例性示出的NeRF的神经渲染过程的示意图。
如图2a所示,NeRF的神经渲染流程涉及以下三个模块的处理过程,该三个模块分别为:体素位置计算模块、MLP网络、体渲染模块。
体素位置计算模块,可用于对于输入的视角,计算最终的渲染图像中的每个像素所对应的光线角度,以及计算该光线角度的该条光线与三维立体对象的体素体内相交的多个体素的体素位置。
其中,该三维立体对象为训练后的NeRF所支持的进行神经渲染的给定三维内容。
换言之,渲染图像中的每个像素都对应于一个光线角度,以及对应于该光线角度的光线在其光线路径上所经过的该三维立体对象的多个体素。
多层感知器(Multilayer Perceptron,MLP)网络,可用于对每个体素的体素位置以及经过这个体素的光线角度进行处理,得到该体素的颜色和密度。
由于从不同视角观看同一体素,该体素的颜色是不同的,因此,MLP网络的输入数据需要包括该光线角度。
这样,对于最终的渲染图像的每个像素,MLP网络可得到该像素对应的光线角度的一条光线,所经过的上述三维立体对象的所有体素的颜色以及所有体素的密度。
该MLP网络中的参数是可学习的。
体渲染模块,可用于对相应光线角度的光线所经过的上述三维立体对象的的所有体素的颜色及所有体素的密度,计算在最终的渲染图像中对应该光线角度的一个像素的颜色。
这样,体渲染模块可得到上述三维立体对象在该输入的视角下的渲染图像中每个像素的颜色,以输出渲染图像。
其中,体渲染模块计算像素的颜色的方式可为积分。
上述神经渲染过程中的MLP网络预先经过训练。
下面继续结合图2a来描述MLP网络的训练过程。
在对NeRF中的MLP网络进行训练时,该过程可包括如图2a的虚线框所示的损失计算模块和梯度反向传播的步骤。
在对图2a所示的MLP网络进行训练时,可给定一个3D内容,并获取该3D内容的多视角图像,每个视角的图像可作为图2a所示的监督图像。
例如,监督图像为在相应视角下对该3D内容的拍摄图像。
训练过程的输入数据可包括监督图像的视角以及监督图像。
首先,可将监督图像的视角输入至体素位置计算模块,与上面介绍的神经渲染的过程相同,对于该视角经过体素位置计算模块、MLP网络、体渲染模块的处理后,可渲染得到该视角下上述3D内容的二维图像,这里描述为渲染图像。
然后,损失计算模块,可用于将该视角下的渲染图像与该视角下的监督图像进行损失计算,基于该损失来进行梯度反向传播,以优化MLP网络的参数。
考虑到最终得到的渲染图像上的每个像素,其都对应于光线路径上该三维立体对象的上百个体素。而在现有技术1中,对于渲染图像中的每个像素所对应的上百个体素,每个体素都需要通过MLP网络来计算体素的颜色和密度,以及每个体素都需要通过体渲染模块进行积分处理来得到相应像素的颜色。
那么为了得到目标分辨率的渲染图像,现有技术1中的MLP网络和体渲染模块的两个模块的操作过程的复杂度都很高,从而导致整个渲染流程的复杂度极高,一帧渲染图像的渲染时长较长。
现有技术2
为了降低神经渲染方法的复杂度,现有技术中提供了PlenOctrees,图2b为示例性示出的PlenOctrees的神经渲染过程的示意图。
如图2b所示,PlenOctrees的神经渲染流程涉及以下三个模块的处理过程,该三个模块分别为:体素位置计算模块、体表达模块、体渲染模块。
现有技术2与图2a所示的现有技术1之间的区别之处在于,图2a所示的MLP网络替换为图2b所示的体表达模块,其他模块的功能及处理流程与现有技术1相同,以及图2b所示的体表达模块的训练过程,与图2a所示的MLP网络的训练过程的原理类似,具体可参照图2a的相应介绍,这里不再赘述。
在图2b中,体表达模块可存储N*N*N的体(volume)中的每个体素(voxel)的值,体素的值包括体素的颜色信息和体素的密度信息,其中,体素的颜色信息可以是视角相关的,例如对于不同的视角,体素具有不同的颜色值。
对输入的体素位置和光线角度,在现有技术2中,只需通过体表达模块来查询,该体素位置和光线角度所对应的体素的颜色和密度即可,而无需通过现有技术1中MLP网络的复杂计算,来得到体素的颜色和密度。这样,相比于现有技术1,现有技术2可显著的降低整个渲染流程的复杂度。
但是,现有技术2中的体表达模块需要存储一个N*N*N的体(例如针对给定的一个三维对象得到的体)中每个体素的颜色和密度,即便通过压缩算法来对存储的体的数据进行压缩,但是压缩后的数据量仍然较大,一般在100MB量级。因此,体表达模块中存储的大量数据,会给数据的存储、传输、或是电子设备侧在渲染过程中的内存占用,带来较大的压力。
此外,与现有技术1相同,现有技术2仍旧需要使用体渲染模块来计算渲染图像中每个像素的颜色,该体渲染模块的复杂度较高,因此,现有技术2的渲染速度仍旧较低,难以在电子设备上实现实时地图像渲染,渲染延迟较高。
因此,为了得到目标分辨率的渲染图像,现有技术2需要存储的体素数据的数据量较大,从而会对数据的存储、传输以及内存的占用带来较大的压力,并且仍旧存在渲染复杂度高的问题。
针对现有技术1和现有技术2的神经渲染方法所存在的图像渲染复杂度高、图像渲染速度慢以及存储的体素数据的数据量较大的问题,本申请提供了一种渲染方法及渲染装置。该方法及装置可针对特定三维内容,渲染得到任意视角下该特定三维内容的二维图像(也称渲染图像)。
图3a为示例性示出的该渲染装置的结构示意图。
如图3a所示,该渲染装置100可包括神经渲染模块101和超分辨率网络102。
为了实现该渲染方法,以得到相应视角下目标分辨率的渲染图像,该渲染装置100可首先通过神经渲染模块101来渲染得到输入视角下的低于该目标分辨率的低分辨率渲染图像。这样,本申请通过神经渲染模块101渲染出给定三维内容的低分辨率渲染图像,相比于通过现有技术1或现有技术2的渲染方法来直接渲染得到目标分辨率的渲染图像,使得该神经渲染模101块所需要的算力或所存储的体素数据的数据量均大幅降低。
然后,本申请再由超分辨率网络102来对该低分辨率图像进行超分辨率(Super-Resolution)处理,得到高分辨率渲染图像,该高分辨率渲染图像为该视角下的目标分辨率的渲染图像。其中,本申请的超分辨率网络102的复杂度很低,这样,本申请的神经渲染模块101和超分辨率网络102的整体复杂度相较于现有技术1或现有技术2中的渲染方法的复杂度更低,以此不仅可满足渲染得到目标分辨率的渲染图像的需求,而且能够降低算法的复杂度。
那么在渲染相同的目标分辨率的渲染图像的情况下,通过该渲染装置100所实现的本申请的渲染方法的操作复杂度更低、存储的体素的数据量也较低,从而降低了算力和数据存储量,以提升对给定三维对象的渲染图像的渲染速度,满足在电子设备上进行三维对象的图像渲染的实时性要求,降低渲染延迟和功耗。
此外,相关技术中的超分辨率网络为预先通过海量的多种对象的图像进行训练得到的、通用于任意对象的超分辨率处理的网络,该通用的超分辨率网络在训练完成后可固化到电子设备的显卡中。在应用时,固化在显卡中的超分辨率网络可对第三方渲染引擎渲染的图像进行超分辨率处理,以得到高分辨率的图像。由于相关技术中的超分辨率网络是一个通用网络,与第三方渲染引擎所渲染的图像内容并不相关,导致该超分辨率网络并非针对输入至该超分辨率网络的图像内的对象进行定制的网络,从而在一定程度上影响了超分辨率网络的性能,使得对于某些对象内容的图像,无法实现较好的超分效果,影响图像质量。
那么本申请的渲染装置100中的神经渲染模块101以及超分辨率网络102可针对特定的三维对象进行联合训练。其中,本申请的装置中的超分辨率网络102是针对特定的三维对象进行训练的,使得该超分辨率网络102可专门用于对该特定三维对象的图像进行超分辨率处理,而不是通用的超分辨率网络,这样可使超分辨率网络102的处理对象与其网络参数相匹配,从而能够提升对该特定三维对象的图像的超分辨率处理性能和效果,提升目标分辨率的渲染图像的图像质量。以及本申请通过联合训练神经渲染模块101和超分辨率网络102,可使超分辨率网络102进行超分辨率处理的图像与神经渲染模块101所渲染的图像强相关,进而可以进一步提升对特定三维对象的图像的超分辨率处理效果和得到的渲染图像的质量。
图3a为示例性示出装置的结构示意图。应该理解的是,图3a所示装置仅是一个范例,本申请的装置可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图3a中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面分别对本申请的渲染装置100的网络训练过程和图像渲染过程的应用场景进行介绍。
图4为示例性示出的渲染装置100的训练过程的示意图。
如图4所示,云端200可接收到特定3D对象的多视角图像(或视频)及对应的视角信息(三维坐标位置以及观察角度),并对渲染装置内的神经网络通过反向传播的方式进行训练,以得到用于渲染该3D对象的该渲染装置100。其中,该渲染装置100可包括神经渲染模块和高分辨率网络。这样,如图3a所示的渲染装置100中的神经渲染模块101和高分辨率网络102得到了联合训练。
上述特定3D对象可以是任何对象内容。该对象内容可以是真实3D对象,例如人、物体、景色、真实场景等。此外,该对象内容也可以是虚拟3D对象,例如虚拟的游戏场景、虚拟的户型图等,这里不作限制。
其中,作为训练数据的上述多视角图像可包括该特定3D对象在不同视角下的多张图像。
在一种可能的实施方式中,例如,该特定3D对象为真实3D对象,用户可使用电子设备拍摄特定3D对象的多个视角的多张图片,或者在一定视角轨迹下的一段视频,然后,可将该多张图片或该段视频上传至云端200,使得云端200可利用电子设备上传的图片或视频作为训练数据以对渲染装置内的神经网络(也称预设网络)进行训练。
其中,将该多张图片或该段视频上传至云端200的设备可以是拍摄该多张图片或该段视频的电子设备,也可以是其他能够获取该多张图片或该段视频的电子设备,这里不作限制。
在另一种可能的实施方式中,例如该特定3D对象为虚拟3D对象,可使用3D图形引擎对一个特定的虚拟3D对象进行渲染,以得到该虚拟3D对象的多个视角下的多张渲染图像,或在一段视角轨迹下的一段视频,其中,该视频中的帧为该虚拟3D对象的渲染图像;然后,可将多视角的多张渲染图像或者一段视角轨迹下的一段视频上传至云端200,使得云端200可利用上传的渲染图像或该视频作为训练数据以对渲染装置内的神经网络进行训练,以得到用于对该虚拟3D对象进行任意视角的图像的渲染的渲染装置100。
其中,上传该训练数据和生成该训练数据的电子设备可以相同或不同,这里不作限制。
在本实施例中,3D图形引擎可具有渲染高质量图像的渲染算法,而渲染高质量图像的渲染算法往往是极为消耗算力、并且无法完成对图像的实时渲染地。那么在本实施例中,通过将高质量渲染算法得到的多视角的渲染图像或一段视角轨迹下的一段视频进行记录并上传到云端200。然后,云端200利用高质量渲染算法得到的多视角的渲染图像或一段视角轨迹下的一段视频作为训练数据进行渲染装置内的神经网络的训练,可使本申请训练后的神经渲染模块101能够构建该虚拟3D对象的表达,从而可以在不执行高质量渲染算法的情况下,利用训练后的渲染装置100能够对该特定虚拟3D对象进行高质量图像的自由视角的观看。
应理解,本申请对于提供训练数据的设备不作限制,可以是电子设备,也可以是云端。
其中,云端200可以是云端的服务器(例如计算服务器),也可以是云端的服务器上的虚拟实例,该虚拟实例可以是虚拟机或容器,这里不作限制。
在一种可能的实施方式中,在电子设备的配置较高、性能较强的情况下,训练渲染装置100内的神经网络的过程也可以由电子设备(例如下述电子设备400)来实现,其原理相同,这里不再赘述。
图5a为示例性示出的渲染装置100的图像渲染过程的应用场景之一。
如图5a所示,云端300可根据预先设定的视角(或是视角轨迹),使用渲染装置100渲染出上述特定3D对象在该预设视角下的渲染图像(或在该视角轨迹下的视频),其中,该视频由视角轨迹下的各视角的渲染图像组成。然后,云端300可将渲染图像(或在该视角轨迹下的视频)下发给电子设备400。电子设备400可对接收的预设视角下的渲染图像(或在该视角轨迹下的视频)进行显示(或播放)。
其中,该预设视角的数量可以是一个或多个,这里不作限制。在该预设视角为多个时,多个预设视角是否为角度连续的视角,这里不作限制。其中,云端300可通过渲染装置100渲染得到该各预设角度的渲染图像所构成的该特定3D对象的多角度的视频。
而上述视角轨迹为角度连续的多个视角,从而可以使得生成的该视角轨迹下的视频中该3D对象的画面更加连续。
在本应用场景下,在需要展示该3D对象的特定角度的图像或视频时,可通过图5a的过程来使云端300配置输入至渲染装置100的预设角度。以及通过云端300来使用渲染装置100来对特定3D对象进行预设角度的图像渲染,电子设备400只需对渲染后的图像或图像构成的视频进行显示即可,可在电子设备400的配置较低或性能较差的情况下,来实现电子设备400侧对特定3D对象的特定视角的图像的显示。
图5b为示例性示出的渲染装置100的图像渲染过程的应用场景之一。
如图5b所示,电子设备400可响应于接收到的用户输入来确定视角信息,并将该视角信息实时地上传至云端300。
例如,电子设备400为手机,游戏用户可通过对电子设备400的显示屏进行滑动输入或调整虚拟摇杆等用户输入方式,以改变输入的视角信息。
再如,当电子设备400为虚拟现实(VR)的可穿戴设备时,例如VR头盔或VR眼镜等,游戏用户可通过运动或头部转动等方式来改变输入的视角信息。
其中,上述视角信息可以是单个视角,也可以是角度不连续的多个视角,还可以是角度连续的视角轨迹。电子设备400可向云端300实时地传输基于用户输入所确定的视角信息。
继续参照图5b,云端300可根据电子设备400实时传输的视角信息,来使用渲染装置100渲染出上述特定3D对象在该视角信息下的渲染图像(或在该视角轨迹下由渲染图像构成的视频)。
接着,云端300可将渲染图像(或由渲染图像组成的视频)下发至电子设备400。
最后,电子设备400可对接收的相应视角下的渲染图像(或在视角轨迹下的视频)进行显示(或播放)。
在本应用场景下,可由电子设备400实时地传输对特定3D内容的待显示图像的视角信息,并由图5b所示的云端300来使用渲染装置100来对特定3D对象进行相应视角的图像渲染,这样,电子设备400所显示的渲染后的图像或图像构成的视频中关于该特定3D对象的视角是由该电子设备400请求显示的视角,能够使电子设备400灵活地控制对该特定3D对象的图像的显示视角。以及能够在电子设备400的配置较低或性能较差的情况下,由云端300来对3D对象进行图像渲染,以实现电子设备400侧对特定3D对象的任意视角的图像的显示。
图5c为示例性示出的渲染装置100的图像渲染过程的应用场景之一。
如图5c所示,电子设备400可基于响应于用户输入所确定的视角信息,来使用本地的渲染装置100,渲染得到上述特定3D对象在该视角信息下的渲染图像(或在视角轨迹下由渲染图像构成的视频),并对该渲染图像(或在视角轨迹下的视频)进行显示(或播放)。
其中,电子设备400的本地的渲染装置100可以是电子设备400从图4所示的云端200预先下载的用以渲染该特定3D对象的渲染装置100,例如下载的内容可以是图3a所示的神经渲染模块101以及超分辨率网络102的参数信息。
或者,电子设备400的本地的渲染装置100可以是电子设备400从其他电子设备预先下载的用以渲染该特定3D对象的渲染装置100,例如下载的内容可以是图3a所示的神经渲染模块101以及超分辨率网络102的参数信息。
或者,电子设备400的本地的渲染装置100也可以是电子设备400预先按照图4的训练过程的原理,来进行渲染装置的训练,以得到该渲染装置100,这里不作限制。
在本应用场景下,电子设备400可使用本地的渲染装置100来对特定3D对象渲染任意视角的图像并进行显示,而无需按照图5a或图5b的过程来从云端300来实时地获取相应视角的渲染图像,在电子设备400侧使用本申请的渲染装置100按照本申请的渲染方法进行图像渲染,由于本申请的渲染方法相比于现有技术其渲染速度得到了大幅提升,从而能够满足在电子设备400侧进行图像地实时渲染的需求。
在上述图5a至图5c中,云端300可以是云端的服务器(例如计算服务器),也可以是云端的服务器上的虚拟实例,该虚拟实例可以是虚拟机或容器,这里不作限制。
以及用于渲染装置100训练的云端200,与用于使用该训练后的渲染装置100来渲染相应视角下的图像的云端300,可以是同一台物理服务器,也可以是不同的物理服务器,这里不作限制。
同理,用于渲染装置100训练的电子设备,与用于显示该训练后的渲染装置100所渲染的相应视角下的图像的电子设备400,可以是同一个电子设备,也可以是不同的电子设备,这里不作限制。
以及提供特定3D对象的训练数据的电子设备,与用于显示该特定3D对象的任意视角的电子设备可以相同或不同。
图6为示例性示出的上述电子设备400的硬件结构示意图。
图6所示的电子设备400,可以是图1对应的一种智能设备,该智能设备例如可以是个人计算机、计算机工作站、智能手机、平板电脑、服务器、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备(例如VR眼镜、VR头盔、智能手环等)、机顶盒、游戏机等。
参照图6,电子设备400包括传感器单元、计算单元、存储单元、交互显示单元。
示例性的,传感器单元可以包括视觉传感器(如相机),用于获取2D图像信息。惯性传感器(Inertial Measurement Unit,IMU),用于获取电子设备400的运动信息,如线加速度、角速度等。磁力计,用于获得电子设备400的偏航角。深度传感器(如雷达(Lidar)),用于获取场景的深度信息。应该理解的,传感器单元还可以包括其他传感器,如全球定位系统(Global Positioning System,GPS),用于获取电子设备400的经纬度地理位置信息;激光传感器,陀螺仪等等,本申请对此不作限制。
示例性的,计算单元可以包括CPU、GPU、NPU、缓存、寄存器等,主要用于运行电子设备400的操作系统,并执行渲染装置的训练方法,和/或,执行渲染方法等等。
示例性的,存储单元可以包括内存和外部存储,可以用于算法数据、用户本地和临时数据的读写等。
示例性的,交互单元主要包括显示屏、触摸板、扬声器、麦克风等,可以用于和用户进行交互,获取用于输入并展示交互信息等。
应该理解的是,图6中的传感器单元、计算单元、存储单元和交互显示单元仅是一个示例,本申请的电子设备400中传感器单元、计算单元、存储单元和交互显示单元,可以包括比图6所示的更多或更少的传感器,本申请对此不作限制。
图3b为示例性示出的本申请的渲染装置100实现本申请的渲染方法的过程示意图。
图5a至图5c示例性示出了该渲染装置100实现渲染方法的多个应用场景,下面以图3b应用于图5c所示的应用场景为例,来说明电子设备400使用渲染装置100来实现本申请的渲染方法的过程,以在电子设备400上实现对3D对象的图像的快速渲染。在图3b所示的过程应用于图5a、图5b等其他应用场景时,其实现原理类似,这里不再赘述。
区别于图3a实施例,在本实施例中,如图3b所示,该渲染装置100不仅可包括如图3a所示的神经渲染模块101和超分辨率网络102,该渲染装置100还可包括帧缓存模块103以及映射模块104。其中,映射模块104可利用帧缓存模块103的参考帧的信息,来得到当前帧的映射图像(一种参考图像)并输入至超分辨率网络102,这样,超分辨率网络102可利用该映射图像来对神经渲染模块101输入的当前帧的低分辨率渲染图像进行超分辨率处理,以提升得到的高分辨率渲染图像(也即当前帧)的图像质量。
下面结合图5c来对图3b所示的神经渲染过程进行描述。
以运行有该渲染装置100的电子设备400为手机为例,以应用场景为该特定3D对象的任意视角的视频播放场景为例来说明图3b的神经渲染过程。
如图3b所示,首先,渲染装置100可获取待渲染的当前帧的第一视角信息。
参照图5c,在本实施例中,该第一视角信息为响应于用户输入所确定的视角信息。
在其他实施例中,该第一视角信息也可以是预设视角。
其中,该当前帧为特定3D对象在该第一视角下的二维图像的图像画面。
例如,在图3b中,该当前帧为图3b所示的渲染装置100基于该第一视角待渲染的图像(例如图3b所示的高分辨率渲染图像)。
如图3b所示,该方法可将该当前帧的第一视角信息分别输入至渲染装置100中的神经渲染模块101和映射模块104。
然后,该渲染装置100可利用获取的该第一视角信息来对特定3D对象进行二维图像的渲染,以得到该特定3D对象的高分辨率渲染图像,也即这里描述的当前帧。
下面对该神经渲染过程进行详细介绍:
S201,神经渲染模块101可根据当前帧的第一视角,渲染得到上述特定3D对象在该第一视角下的第一分辨率的渲染图像,以及可选地确定当前帧的深度信息。
其中,渲染装置100所需要输出的渲染图像的分辨率为目标分辨率(例如800*800,具体不作限制,可根据应用场景而灵活配置),这里的第一分辨率低于该目标分辨率,例如第一分辨率为200*200。
其中,该神经渲染模块101可以是采用上述现有技术1或采用上述现有技术2或其他已有(例如InstantNGP)或未来开发的一些渲染方法,来依据当前帧的第一视角,来渲染该第一视角下特定3D对象的第一分辨率的渲染图像。
换言之,本申请的神经渲染模块101对第一视角的处理过程,以及神经渲染模块101的内部结构可与现有的渲染方法(例如上述现有技术1、上述现有技术2)的处理过程和模块结构类似,区别之处在于:
区别1:
现有技术(例如上述现有技术1、现有技术2)中的渲染方法所渲染输出的渲染图像为可视化图像,换言之,该渲染图像在上屏显示时,可显示出该特定3D对象在该第一视角下的二维画面。该渲染图像中每个像素的值为颜色信息,使得每个像素的值具有物理意义。例如该渲染图像可为RGB(Red Green Blue,红绿蓝)图像或YUV图像,其中,“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma)。
因为,在图2a和图2b所示的现有技术中,用于神经网络训练的监督图像为RGB图像或YUV图像等可视化图像,使得图2a和图2b的渲染方法所渲染得到的渲染图像为可视化图像。
而本申请的神经渲染模块101利用该第一视角,渲染输出的第一分辨率的渲染图像不是该渲染装置100内的神经网络的最终输出结果,而是中间结果,具体的,该第一分辨率的渲染图像为特征图,其中,该特征图中的每个像素的值,是一个多维矢量,而非颜色信息,使得每个像素的值不具有任何物理意义。
该特征图中每个像素点的值以多个通道来描述,每个像素点的值的通道数大于或等于3。也就是说,上述多维矢量的维度大于或等于3,例如该多维矢量的维度为16或32。
为了使神经渲染模块101输出的第一分辨率的特征图中每个像素的值的通道数较高,可预先对神经渲染模块101设置其输出结果的通道数。
在一种可能的实施方式中,以通过如图2a所示的现有技术1的过程来实现该神经渲染模块101为例,MLP网络可由多个全连接层(fully connected layer)组成,可预先对神经渲染模块101内的MLP网络中最后一个全连接层的结构进行配置,具体配置该最后一个全连接层的通道宽度或通道数量的参数为大于3的指定通道数,使得神经渲染模块101内的MLP网络的输出结果(例如上述特征图)的通道数为指定通道数(例如16或32)。而在图2a中,现有技术1中MLP网络的输出结果为体素的颜色和密度,使得其输出结果的通道数为4。本申请的神经渲染模块101的网络结构与图2a的网络结构存在输出结果的通道数的区别,并且,该神经渲染模块101的输出结果的通道数大于4。这样,神经渲染模块101输出的第一分辨率的特征图可以提供更多的信息,以用于超分辨率处理,可提升最终输出的目标分辨率的渲染图像的图像质量。
应理解,该神经渲染模块101的训练不会改变神经渲染模块101的输出结果中每个像素的通道数。
在一种可能的实施方式中,以通过如图2b所示的现有技术2的过程来实现该神经渲染模块101为例,在神经渲染模块101中,体表达模块所存储的每个体素的信息可以是维度高于4的矢量,例如体表达模块中每个体素的维度为16或32。而图2b所示的现有技术2中的体表达模块存储的每个体素的维度为4(具体为体素的颜色和密度)。这样,神经渲染模块101输出的第一分辨率的特征图可以提供更多的信息,以用于超分辨率处理,可提升最终输出的目标分辨率的渲染图像的图像质量。
以及,如上文所述,体表达模块可存储有一个N*N*N的体中每个体素的信息(这里为维度高于4的矢量)。其中,该体的分辨率与神经渲染模块输出的渲染图像的分辨率正相关。
在现有技术2中所输出的渲染图像的分辨率为目标分辨率,例如800*800,为了保证现有技术2输出的渲染图像在800*800分辨率时仍能够足够清晰,现有技术2中体表达模块存储的该体的分辨率需要是512*512*512以上,即N大于或等于512。
而本实施例的神经渲染模块101所输出的渲染图像的分辨率为第一分辨率,例如200*200,则神经渲染模块101中的体表达模块所存储的体的分辨率比512*512*512更小,例如128*128*128,即N=128。这样,本申请的神经渲染模块101中的体表达模块所存储的体素的数量就只有现有技术2中的体表达模块所存储的体素的数量的1/64,使得本申请的神经渲染模块101只需要存储现有技术2中1/64的体素的体素信息(这里为多维矢量)。这样,虽然体表达模块所存储的体素的信息的维度更高,但是,本申请的神经渲染模块101中的体表达模块所存储的信息涉及的体素数量大幅降低,使得本申请的渲染装置100所存储的数据量相比于现有的渲染方法的数据存储量更低,可减少内存、存储的占用。
该特征图作为神经渲染模块101的输出数据,以及作为超分辨率网络102的输入数据,也就是说,该特征图为本申请的渲染装置100中的神经网络的中间结果。该特征图不是可视化图像,如果将该低分辨率渲染图像进行上屏显示,则无法显示出该特定3D对象在该第一视角下的二维画面,例如为马赛克图像。
在一种可能的实施方式中,该特征图中每个像素点的通道数大于3(例如16或32)。其中,该通道数越多,神经渲染模块101的复杂度越高,同时最终输出的目标分辨率的渲染图像的图像质量也越高。那么在具体应用时,可结合电子设备400的设备性能、图像质量要求以及渲染速度的要求,来灵活配置神经渲染模块101所输出的特征图中像素点的通道数。
在本实施例中,由于神经渲染模块101渲染得到的第一分辨率的渲染图像为特征图,并且该特征图作为超分辨率网络102的输入以进行超分辨率处理,相比现有技术中只将可视化图像作为通用的超分辨率网络的输入以进行超分辨率处理,输入到超分辨率网络102的该特征图可提供更多的信息(例如通道数大于3),以提升超分辨率网络102对该特征图的超分效果,提升超分辨率处理得到的目标分辨率的渲染图像的图像质量。
区别2:
现有技术(例如上述现有技术1、现有技术2)中的渲染方法所渲染输出的渲染图像直接为所需要的目标分辨率的渲染图像,例如该目标分辨率为800*800。
而在本实施例中,神经渲染模块101渲染输出的第一分辨率的渲染图像,则是分辨率低于该目标分辨率的渲染图像,例如该第一分辨率为200*200。
例如,通过如图2a所示的现有技术1的过程来实现该神经渲染模块101,则该神经渲染模块101中的体渲染模块可按照现有技术1来对MLP网络输出的每个体素的信息(具体为16维度或32维度的信息)进行处理,以计算得到200*200的渲染图像中每个像素的值(这里为16或32维度的矢量),得到分辨率为200*200的渲染图像(即上述特征图)。
相比于现有技术1中体渲染模块需要对800*800的渲染图像中的每个像素计算颜色,本申请的神经渲染模块101中的体渲染模块只需要对200*200的渲染图像计算每个像素的值,从而将计算的像素的数量缩少了16倍,可大幅降低计算量和计算复杂度。
再如,通过如图2b所示的现有技术2的过程来实现该神经渲染模块101,则该神经渲染模块101中的体渲染模块可按照现有技术2来对体表达模块输出的与所述第一视角相关的每个体素的信息(具体为16维度或32维度的信息)进行处理,以计算得到200*200的渲染图像中每个像素的值(这里为16或32维度的矢量),得到分辨率为200*200的渲染图像(即上述特征图)。
相比于现有技术1中体渲染模块需要对800*800的渲染图像中的每个像素计算颜色,本申请的神经渲染模块101中的体渲染模块只需要对200*200的渲染图像计算每个像素的值,从而将计算的像素的数量缩少了16倍,可大幅降低计算量和计算复杂度。
那么在渲染输出同一目标分辨率的渲染图像的情况下,本实施例中,神经渲染模块101所渲染输出的渲染图像的分辨率更低,从而可以大幅降低神经渲染模块101的复杂度和数据存储量,提升图像的渲染速度。以及超分辨率网络102将200*200分辨率的渲染图像进行超分辨率处理,得到800*800的渲染图像,消耗的算力和存储,远低于现有技术中的渲染方法对给定视角直接渲染输出得到800*800的图像所消耗的算力和存储。
在其他实施例中,图3b所示的第一分辨率的渲染图像也可以是可视化图像,例如RGB图像或YUA图像,那么本申请的渲染装置100和现有技术中的渲染方法的区别之处可包括但不限于:通过联合训练神经渲染模块100内的神经网络和超分辨率网络102,以得到渲染装置100,以提升最终输出的目标分辨率的渲染图像的图像质量。
在S201中,神经渲染模块101还可确定该当前帧的深度信息。
由于本申请的渲染装置100旨在对3D对象进行相应视角下的图像进行渲染,换言之,渲染的对象是一个3D内容,那么为了提升S203中映射模块104得到的当前帧的映射图像的准确度,这里还可以获取当前帧的深度信息,以用于辅助结合当前帧的深度信息来确定当前帧的映射图像。
如上文所述,视角可包括对该特定3D对象的观察位置(三维空间的三维坐标(x,y,z))以及对上述特定3D对象的观察角度。
那么神经渲染模块101可基于该当前帧的第一视角,来确定第一分辨率的渲染图像中每个像素点在该第一视角下的深度信息,以得到当前帧的深度信息。
其中,该当前帧的深度信息为像素级别的深度信息。
例如,该第一分辨率为200*200,则该当前帧的深度信息为200*200的渲染图像中每个像素的深度信息。
S202a,神经渲染模块101可将得到的上述低分辨率渲染图像输入至超分辨率网络102。
S202b,神经渲染模块101可将得到的当前帧的上述深度信息输入至映射模块104。
S202a和S202b可以并行执行,也可以串行执行,这里不作限制。
S301,映射模块104可从帧缓存模块103获取该当前帧的参考帧的渲染图像、参考帧的第二视角、可选地该参考帧的深度信息。
其中,帧缓存模块103可存储有通过该渲染装置100已经渲染过的帧的渲染图像、深度信息及其第二视角。
其中,该参考帧的渲染图像可以是本申请的渲染装置100通过神经渲染模块101渲染得到的参考帧的第一分辨率的渲染图像,也可以是该渲染装置100通过超分辨率网络102得到的目标分辨率的渲染图像,这里不作限制。
该当前帧的参考帧可以包括以下至少一种类型的帧。
已渲染帧:渲染顺序在当前帧之前的、已经渲染过的帧。应理解,这里的“之前”指的是渲染顺序,而不是真实时序。该渲染装置100的渲染过程可以先渲染一个时序靠后的帧,再渲染之前的帧。
预渲染帧:在渲染装置100启动渲染之前,电子设备400预先保存在帧缓存模块103的通过该渲染装置100预先渲染的预定视角的帧。
例如在游戏场景下,在游戏启动时希望用户看到的该特定3D对象的一个或多个视角(这里的预定视角)的图像,那么电子设备400可预先使用该渲染装置100对该预定视角的图像进行预先渲染,以得到预渲染帧的渲染图像并保存在该帧缓存模块103。其中,该预定视角可以是连续的多个视角或不连续的多个视角。
预下载帧:在渲染装置100启动渲染之前,电子设备400从云端300预先下载、并预先保存在帧缓存模块103的帧。该帧为云端300预先照给定视角对该特定3D对象渲染的帧。
其中,该预下载帧的给定视角与预渲染帧的预定视角可以相同或不同,可根据需求和应用场景而灵活配置,这里不作限制。
可选地,映射模块104在执行上述S301时,可基于当前帧的第一视角,来从帧缓存模块103中获取该当前帧的参考帧的渲染图像、该参考帧的深度信息,以及参考帧的第二视角。
映射模块104可以根据当前帧的第一视角,在帧缓存模块103中选择视角与当前帧的视角接近的一个或多个参考帧。例如参考帧的第二视角与当前帧的第一视角的差值小于预设阈值。
其中,由于视角可包括三维位置坐标以及观察角度,那么参考帧的第二视角与当前帧的第一视角之间的三维位置坐标的差值可以小于第一预设阈值,参考帧的第二视角与当前帧的第一视角之间的观察视角的差值可以小于第二预设阈值。
在本申请实施例中,参考帧的类型不仅可以包括在当前帧之前渲染过的已渲染帧,还可包括预渲染帧和预下载帧,那么可用的参考帧的数量更多,那么利用更多的参考帧所得到的当前帧的映射图像,以用于对当前帧的低分辨率图像的超分辨率处理时,可提高超分辨率网络102的超分辨率处理的效果,提升最终的目标分辨率的渲染图像的图像质量。
此外,在渲染装置100渲染该特定3D对象起始的多帧图像时,那么渲染装置100在帧缓存模块103中可能还未存储有已渲染帧(例如在渲染首帧图像时),或者存储的已渲染帧的数量很少(例如在渲染开始的多帧图像时)。那么相比于只采用已渲染帧作为参考帧,本申请通过在开始渲染首帧图像之前,将预渲染帧和/或预下载帧存储到帧缓存模块103,从而可以使渲染装置100在渲染首帧图像或起始的多帧图像时,能够使用足够数量的参考帧,以利于参考相近视角的参考帧,用于对当前帧的图像渲染。
在S301之后,以及S202b之后,映射模块104可执行S203。
S203,映射模块104可根据参考帧的渲染图像、参考帧的深度信息、参考帧的第二视角,以及当前帧的深度信息、当前帧的第一视角,获取一个或多个映射图像。
其中,该参考帧的数量可以是一个或多个。以及映射模块104所得到的该当前帧的映射图像也可以是一个或多个。
示例性的,映射模块104可参考一帧渲染图像,生成当前帧的一帧映射图像,也可以参考多帧渲染图像来生成一个映射图像,或者还可以参考n帧渲染图像来分别生成n个映射图像,n大于1,n为整数。
如上文所述,该参考帧的渲染图像可以是本申请的渲染装置100通过神经渲染模块101渲染得到的参考帧的第一分辨率的渲染图像,也可以是该渲染装置100通过超分辨率网络102得到的目标分辨率的渲染图像。但是,该映射图像的分辨率与该参考帧的分辨率相同,例如该参考帧的渲染图像为神经渲染模块101渲染得到的参考帧的第一分辨率的渲染图像,则通过该参考帧得到的映射图像的分辨率也为第一分辨率。例如该参考帧的渲染图像为超分辨率网络102得到的参考帧的目标分辨率的渲染图像,则通过该参考帧得到的映射图像的分辨率也为目标分辨率。
例如第一分辨率为200*200,目标分辨率为800*800。
在参考帧的渲染图像为通过神经渲染模块101渲染得到的参考帧的200*200的渲染图像时,则相比于该参考帧的渲染图像为800*800的渲染图像,算法的复杂度更低,利用参考帧来渲染当前帧的渲染速度更快,且电子设备400的缓存占用更小。
在参考帧的渲染图像为通过超分辨率网络102得到的参考帧的800*800的渲染图像时,则相比于该参考帧的渲染图像为200*200的渲染图像,虽然算法的复杂度相较高一些,但是利用该高分辨率的参考帧的渲染图像所渲染得到的当前帧的图像质量更高。
示例性的,帧缓存模块103可在渲染装置100运行时存储在内存或者显存中。
为了依据参考帧来获取当前帧的映射图像,映射模块104需要通过参考帧来确定映射图像中每个像素点(例如像素点1)的像素值,可通过如下步骤来实现:
S1,映射模块104根据参考帧的深度信息及第二视角,可将参考帧的渲染图像中每个像素点映射到上述特定3D对象的三维空间中的三维坐标位置,以得到参考帧的渲染图像中每个像素点在三维空间中的三维坐标位置。
S2,映射模块104根据当前帧的深度信息(每个像素点的深度信息)、第一视角,可将当前帧的映射图像(例如分辨率为200*200)中的每个像素点映射到上述特定3D对象的三维空间中的三维坐标位置,以得到该当前帧的映射图像中每个像素点在三维空间中的三维坐标位置。
S3,基于S1和S2,映射模块104可以确定当前帧的映射图像中的每个像素点,在参考帧的渲染图像中所处的位置。其中,参考帧的渲染图像中的像素点与映射图像中的像素点之间,具有相同或相近三维坐标位置的一组像素点确定为同一像素点。
S4,映射模块104可将参考帧的渲染图像中处于上述位置的像素点的像素值,作为映射图像中相应像素点的像素值,从而得到映射图像。
举例而言,图7示例性示出了映射模块104的处理过程的场景示意图。
如图7(1)所示,参考帧的渲染图像以及待生成的映射图像均为二维图像,映射图像的大小,即分辨率与参考帧的渲染图像的大小相同,这里均为200*200的分辨率,因此,空白的映射图像中每个像素点的位置是确定的,但是像素点的值未知。
通过上述S1,映射模块104可将参考帧的渲染图像中的像素点均映射到特定3D对象的三维空间,以参考帧的渲染图像中像素点P1和像素点P2举例,例如像素点P1对应于三维坐标位置M1,像素点P2对应于三维坐标位置M2。
同理,通过S2,映射模块104可将映射图像中的每个像素点均映射到上述特定3D对象的三维空间,以参映射图像中像素点Q1和像素点Q2举例,例如像素点Q1对应于三维坐标位置M1,像素点Q2对应于三维坐标位置M2。
因此,参考帧的渲染图像中的像素点P1与映射图像中的像素点Q1对应于该特定3D对象的同一位置,那么像素点P1和像素点Q1的像素值应该是相同的。同理,参考帧的渲染图像中的像素点P2与映射图像中的像素点Q2对应于该特定3D对象的同一位置,那么像素点P2和像素点Q2的像素值应该是相同的。
那么映射模块104可按照虚线箭头的示意,来将图7(1)所示的像素点P1的像素值复制到映射图像中像素点Q1的位置,以作为像素点Q1的像素值,以及按照虚线箭头的示意,来将图7(1)所示的像素点P2的像素值复制到映射图像中像素点Q2的位置,以作为像素点Q2的像素值,其他像素点同理。这样,可得到如图7(2)所示的每个像素点均具有各自的像素值的映射图像,并且该像素值是参考了参考帧的渲染图像中同一像素点的像素值。
如图7(2)所示,映射图像中位于图7(1)所示的Q1位置的像素点的像素值,为渲染图像中像素点P1的像素值。如图7(2)所示,映射图像中位于图7(1)所示的Q2位置的像素点的像素值,为渲染图像中像素点P2的像素值。
这样,在本申请实施例中,映射模块104可利用参考帧的深度信息及第二视角和当前帧的深度信息和第一视角,计算当前帧的映射图像中每个像素点在参考帧的渲染图像中的位置,并将位于该位置的像素点在参考帧的渲染图像中的像素值,作为映射图像中相应像素的像素值,以得到映射图像。由于参考帧的种类更多,数量也更多,从而使得该映射图像可以参考与当前帧的第一视角接近的更多参考帧的渲染图像的信息,使得该映射图像提供的当前帧的信息更加丰富和准确。那么超分辨率网络102利用该映射图像来对当前帧的低分辨率的渲染图像进行超分辨率处理时,可参考更丰富的图像信息来对低分辨率的渲染图像进行超分辨率处理,从而提升得到的最终的目标分辨率的渲染图像的图像质量,使得该目标分辨率的渲染图像与该特定3D对象在相应视角下的真实图像的相似度更加接近。
相比于现有技术中的MLP网络、体渲染模块,映射模块的复杂度很低,通过较低复杂度的映射模块来基于参考帧来得到当前帧的映射图像,并用于超分辨率网络对低分辨率渲染图像的超分辨率处理,可有效降低神经渲染过程的算法复杂度,以提升在端侧的神经渲染速度。
S204,映射模块104可将该映射图像输入至超分辨率网络102。
S205,超分辨率网络102可根据该当前帧的上述映射图像,来对当前帧的低分辨率渲染图像进行超分辨率处理,以获取高分辨率渲染图像(也即当前帧)。
其中,超分辨率网络102的网络结构可与现有技术中的超分辨率网络的网络结构相同,但是本申请的超分辨率网络102的网络参数是针对该特定3D对象进行优化的。
例如,超分辨率网络102可通过多个卷积层来参考映射图像,来对输入的低分辨率的渲染图像进行超分辨率的处理,例如处理过程可包括但不限于:特征提取、特征映射和图像重建等。
在本申请实施例中,低分辨率渲染图像(神经渲染模块101的输出、超分辨率网络102的输入)可以是可用于显示的RGB/YUV图像,或,没有实际物理含义的特征图。特征图是指,对于每个像素,其值是一条多维矢量。相比现有技术中超分辨率网络,只把可显示的图像作为输入,特征图可以提供更大的信息量,从而提升超分辨率网络102的处理效果,以提升最终得到的目标分辨率的渲染图像的图像质量。
应理解,在通过该渲染装置100对一个视角轨迹的视频进行渲染时,在渲染得到不同视角的多个帧图像时,对于该多帧图像,神经渲染模块所得到的相应低分辨率图像可以是可视化图像,或者特征图。
此外,参考帧可以是渲染过程中,在当前帧之前已经渲染过的帧;也可以是在渲染过程开始前,按照预定视角渲染完成存储在本地的帧;也可以是在本次渲染开始前,云端300根据预设视角渲染完成,由电子设备400从云端300下载的帧。通过更多的可用参考帧来得到当前帧的映射图像,由超分辨率网络102参考该映射图像来对低分辨率图像进行超分辨率处理,可以提高超分辨率网络102的超分辨率处理效果,也可以解决在渲染最开始的几帧时,没有足够参考帧的问题。
为了得到图3a或图3b所示的渲染装置100,可对预设网络进行训练,以得到该渲染装置100。
在本实施例中,训练的预设网络可包括如图8所示的神经渲染模块301以及超分辨率网络302。
图8示例性示出了对该预设网络的训练过程的示意图。
例如,该神经渲染模块301采用图2a所示的现有技术1的原理来实现,那么本申请在训练该预设网络时,可联合训练神经渲染模块301中的MLP网络,以及超分辨率网络302,以得到图3a或图3b所示的渲染装置100。其中,训练后的神经渲染模块301为图3a或图3b所示的神经渲染模块101,训练后的超分辨率网络302为图3a或图3b所示的超分辨率网络102。
再如,该神经渲染模块301采用图2b所示的现有技术2的原理来实现,那么本申请在训练该预设网络时,可联合训练优化神经渲染模块301中的体表达模块中的数据,以及超分辨率网络302的权重矩阵,以得到图3a或图3b所示的渲染装置100。其中,训练后的神经渲染模块301为图3a或图3b所示的神经渲染模块101,训练后的超分辨率网络302为图3a或图3b所示的超分辨率网络102。
结合图4,以云端200来实现图8的训练该预设网络的过程为例来说明:
在对预设网络进行训练时,可首先获取训练数据,训练数据可包括上述特定3D对象的视角信息,以及该特定3D对象在该视角下的目标分辨率的监督图像(例如图4所示的多视角图像)。然后,可将视角信息以及对应的监督图像输入到预设网络进行计算,以得到目标分辨率的渲染图像;然后,基于目标分辨率的监督图像和目标分辨率的渲染图像,对该预设网络进行反向传播,从而得到如图3a或图3b所示的渲染装置100。
在一个示例中,在获取训练数据时,可通过手机来对特定3D对象进行多视角拍摄,以得到一段或多段在视角轨迹下的该特定3D对象的多视角的视频(或者多个视角的多张图片),其中,该视频中每帧图像的分辨率为目标分辨率。例如目标分辨率为800*800。然后,手机可将拍摄的该视频上传至如图4所示的云端200。云端200可基于该视频获取到该特定3D对象的多视角图像及其视角信息。
在一个示例中,在获取训练数据时,例如该特定3D对象为虚拟3D对象,则可通过3D图形引擎来对该3D虚拟对象进行多视角渲染,以得到多个视角下的该虚拟3D对象的渲染图像(或一段视角轨迹下的视频(由多个渲染图像构成))。然后,可将多视角的渲染图像(或视频)及对应的视角信息上传至图4所示的云端200。云端200可获取到该虚拟3D对象的多视角的渲染图像及其视角信息(或视频及对应的视角信息)。
换言之,在该特定3D对象为虚拟3D对象时,那么监督图像可为相应视角下该虚拟3D对象的渲染图像。
下面以一个视角的训练数据为例,结合图8来说明云端200对预设网络的训练过程:
应理解,预设网络的训练过程与图3b介绍的渲染装置100的使用过程的大部分内容及相同,这里主要介绍区别之处,其他相似之处的具体实现过程可参照图3b的相关介绍,这里不再赘述。
首先,云端200可将待渲染的当前帧的第三视角输入至神经渲染模块301,以及映射模块104。
其中,该第三视角为手机上传的视频中一帧图像的视角,该一帧图像的分辨率为目标分辨率,该一帧图像在图8中,以输入至损失计算模块105的该第三视角下目标分辨率的监督图像来表示。
然后,可由神经渲染模块301来渲染得到该第三视角对应的第一分辨率的渲染图像和该当前帧(或者这里描述为该渲染图像)的深度信息。
接着,映射模块104可根据当前帧的该第三视角及深度信息,以及一个或多个参考帧的渲染图像、深度信息及其视角,来得到一个或多个映射图像。
再然后,超分辨率网络302可根据一个或多个映射图像,来对该第三视角的第一分辨率的渲染图像进行超分辨率处理,以得到该第三视角下目标分辨率的渲染图像。
再接着,损失计算模块105可计算该第三视角下的目标分辨率的渲染图像与该第三视角下的目标分辨率的监督图像之间的差异;并以最小化该差异为目标,对神经渲染模块301中的参数以及超分辨率网络302中的参数均进行调整,以同时优化神经渲染模块301和超分辨率网络302的参数,实现对预设网络的梯度反向传播。
例如,该神经渲染模块301通过图2a所示的模块的原理来实现,则这里可调整神经渲染模块301中的MLP网络的网络参数。
例如,该神经渲染模块301通过图2b所示的模块的原理来实现,则这里可调整神经渲染模块301中的体表达模块所存储的体素的信息。
其中,该第三视角下的目标分辨率的监督图像为上述手机对该特定3D对象在该第三视角下拍摄的图像,例如,该图像的分辨率为800*800。
进而按照这种方式,采用关于该特定3D对象的多组训练数据,来对该预设网络进行训练,以使预设网络满足预设条件(如上述差异小于预设差异阈值,和/或,训练次数到达预设次数等等)为止。
这样,经过训练后可得到图3a或图3b所示的渲染装置100,以用于对该特定3D对象进行任意视角的图像渲染。
在本申请实施例中,超分辨率网络102是针对该特定3D对象进行训练优化的,相比于现有技术中固化到显卡中的通用的超分辨率网络,使得该超分辨率网络102在用于该特定3D对象的图像的超分辨率处理时,可提升图像的处理效果,提升图像的质量。
此外,在本申请实施例中,神经渲染模块101和超分辨率网络102是通过联合训练优化得到的,如图8所示,在使用每组训练数据来训练预设网络时,该神经渲染模块301和超分辨率网络302的参数均会被调整,直到神经渲染模块301和超分辨率网络302均收敛,以得到神经渲染模块101和超分辨率网络102,这样,超分辨率网络102所要提高分辨率的低分辨率图像为神经渲染模块101所要渲染的内容,换言之,神经渲染模块101的输出结果为超分辨率网络102的输入结果,以此可提升超分辨率网络对特定3D对象的图像的分辨率的放大效果,提升最终得到的目标分辨率的渲染图像的图像质量,可使该目标分辨率的渲染图像更接近相应视角下该特定3D对象的真实图像(例如图8所示的监督图像)。
另外,在本申请实施例中,在对预设网络进行训练时,是使用该预设网络的输出结果,即超分辨率网络302的输出结果(目标分辨率的渲染图像)来与监督图像进行损失计算,以用于对神经渲染模块301和超分辨率网络302进行联合训练优化。而不是使用该预设网络的中间结果(这里为神经渲染模块301的输出结果,具体为第一分辨率的渲染图像)来与监督图像进行损失计算,从而可使神经渲染模块301的输出结果(这里为第一分辨率的渲染图像)只是作为中间结果的特征图,不具备任何物理意义,而非RGB图像。
在一种可能的实施方式中,考虑到神经渲染模块301和超分辨率网络302的收敛速度不同,其中,神经渲染模块301的收敛速度更慢。那么可首先单独训练神经渲染模块301,在该神经渲染模块301的参数收敛之后,使用收敛的神经渲染模块301作为图8中神经渲染模块301的初始化参数。然后,通过图8所示的过程进行神经渲染模块301和超分辨率网络302的联合训练,直到神经渲染模块301和超分辨率网络302均收敛。这样可以防止直接联合训练神经渲染模块301和超分辨率网络302而导致训练过程的收敛速度较慢,或无法收敛的问题。
其中,在单独预先训练神经渲染模块301时,单独训练该神经渲染模块301所使用的训练数据中的监督图像则为相应视角下的第一分辨率的可视化图像(例如RGB图像或YUA图像),并且通过计算该监督图像与神经渲染模块301输出的第一分辨率的渲染图像之间的损失,来优化神经渲染模块301中神经网络的参数。
考虑到神经渲染模块301的输出结果的通道数需要与训练数据(这里为通道数为3的RGB图像或YUA图像)的通道数相同,才可以计算损失。而在本实施例中,神经渲染模块301的训练数据为通道数为3的RGB图像或YUA图像,导致单独训练后的神经渲染模块301的输出结果的通道数只能为3。即便在对预训练后的神经渲染模块301和上述超分辨率网络302进行联合训练,该过程无法改变神经渲染模块301的网络结构,使得联合训练后收敛的神经渲染模块301的输出结果不再是维度高于3的特征图,而是维度为3的RGB图像或YUA图像(具体取决于单独训练该神经渲染模块301时的训练数据的图像格式)。
在一些场景下,由电子设备1对一个特定3D内容进行多视角的视频或图像拍摄,并将拍摄的视频或图像上传至云端200,云端200可按照本申请的训练方法,来对预设网络进行训练,以得到渲染装置100。然后,云端200可将该渲染装置100的参数下发至电子设备2,电子设备2可利用云端200下发的渲染装置100的参数,来对该特定3D内容进行任意视角的视频播放。本申请的渲染装置100的渲染速度较快,电子设备2在进行视频播放时,可降低画面卡顿,提升视频播放的流畅度。
本申请的神经渲染模块101和超分辨率网络102可实现为一套程序,该程序可运行在云端或电子设备,以对特定3D内容进行任意角度的图像渲染。
在一种可能的实施方式中,本申请提供一种训练方法。该方法用于对渲染装置进行训练,所述渲染装置包括超分辨率模块和神经渲染模块,所述方法包括:获取第一训练数据,第一训练数据包括预设三维对象的第一监督图像和所述第一监督图像中所述预设三维对象的第一视角;将所述第一视角输入至所述神经渲染模块,由所述神经渲染模块基于所述第一视角对所述预设三维对象进行神经渲染处理,输出第一分辨率的第一特征图至所述超分辨率模块;由所述超分辨率模块对所述第一特征图进行超分辨率处理,输出所述预设三维对象在所述第一视角下的第二分辨率的第一图像,其中,所述第一监督图像的分辨率为所述第二分辨率,且所述第一分辨率低于所述第二分辨率;基于所述第一监督图像和所述第一图像,对所述神经渲染模块中的第一模块和所述超分辨率模块分别进行反向传播。
第一视角的数量可以是多个,该多个第一视角可以是连续的多个视角(例如视角轨迹),也可以是不连续的多个视角,这里不作限制。
本申请的训练方法针对每个第一视角都可以得到一张第二分辨率的第一图像。
本申请的超分辨率模块和神经渲染模块是基于预设三维对象进行联合训练得到的,使得该超分辨率模块并非通用的超分辨率网络模块,而是针对预设三维对象进行优化后的超分辨率网络,那么训练后的超分辨率模块相比于通用的超分辨率网络,能够对该预设三维对象的任意视角的图像进行较好的超分效果,以提升输出的第二分辨率的图像的图像质量。并且联合优化后的渲染装置所输出的图像质量更高。
另外,在对该渲染装置进行训练时,是使用该渲染装置的输出结果,即超分辨率模块的输出结果(第一分辨率的第一图像)来与监督图像图像进行损失计算,以用于对神经渲染模块和超分辨率模块进行联合训练优化。而不是使用该渲染装置的中间结果(这里为神经渲染模块的输出结果,具体为第一分辨率的第一特征图)来与监督图像进行损失计算,从而可使神经渲染模块的输出结果(这里为第一分辨率的第一特征图)只是作为中间结果的特征图,不具备任何物理意义,而非RGB图像。而特征图相比于可视化图像可提供更多的信息,从而可用于提升输出的第一图像的图像质量。
这样训练后的渲染装置则可根据预设三维对象的现有场景的图像或视频,来创建该预设三维对象的新视角的图像或者视频片段。
在一种可能的实施方式中,所述第一监督图像为拍摄图像,所述获取第一训练数据,包括:获取通过对所述预设三维对象进行多个视角的拍摄,而得到的多个拍摄图像及每张所述拍摄图像的第一视角;和/或,获取通过对所述预设三维对象进行连续视角的视频拍摄,而得到的第一视频数据及所述第一视频数据的第一视角,其中,所述第一视频数据包括所述连续视角中每个视角的拍摄图像。
本实施例通过对特定3D对象进行多视角的照片或视频拍摄,来得到训练数据,以得到本申请的渲染装置,使得训练后的渲染装置可对该特定3D对象进行任意视角的图像的实时展示。
在一种可能的实施方式中,所述预设三维对象为虚拟三维对象,所述第一监督图像为渲染图像,所述获取第一训练数据,包括:获取通过三维图形引擎对所述虚拟三维对象进行多个视角的渲染而得到多张渲染图像,及每张所述渲染图像的第一视角;和/或,获取通过所述三维图形引擎对所述虚拟三维对象进行连续视角的渲染而得到的第二视频数据,及所述第二视频数据的第一视角,其中,所述第二视频数据包括所述连续视角中每个视角的渲染图像。
三维图形引擎可具有渲染高质量图像的渲染算法,而渲染高质量图像的渲染算法往往是极为消耗算力、并且无法完成对图像的实时渲染地。那么在本实施例中,通过将高质量渲染算法得到的多视角的渲染图像或一段视角轨迹下的一段视频作为训练数据进行神经渲染装置的训练,可使本申请训练后的神经渲染模块能够构建该虚拟3D对象的表达,从而可以在不执行高质量渲染算法的情况下,训练后的神经渲染装置能够对该特定虚拟3D对象进行高质量图像的自由视角的观看。
在一种可能的实施方式中,所述第一特征图的通道数大于3。
现有技术中的神经渲染方法输出的可视化图像(例如RGB图像)的通道数是3,本申请的神经渲染处理后得到的特征图的通道数大于3,该特征图相比于该可视化图像可提供更多的信息量,那么在利用特征图进行超分辨率处理时,可提升图像的超分辨率效果,以提升第一图像的图像质量。
在一种可能的实施方式中,所述第一模块为第一网络,所述第一网络中的最后一层网络的通道数大于4。
例如,在该神经渲染模块基于NeRF来进行神经渲染处理时,该第一模块可为第一网络,例如MLP(多层感知器)网络,该MLP网络由多个全连接层构成,那么MLP网络的最后一个全连接层的通道数或者说通道宽度大于4。
而现有技术中的NeRF的MLP网络输出结果为体素的颜色(通道数为3)和密度(通道数为1),因此,现有技术中的MLP网络最后一层网络的通道数为4,而本申请通过神经渲染模块中的第一网络,来得到的最终的第一特征图的通道数大于4,使得第一特征图的信息量更大,利于提升图像的超分辨率处理效果。
在一种可能的实施方式中,所述第一模块为体表达模块,所述体表达模块存储的每个体素信息的通道数大于4。
例如,在该神经渲染模块基于PlenOctrees来进行神经渲染处理时,该第一模块可为体表达模块。
现有的PlenOctrees中的体表达模块可存储体素信息,该体素的分辨率与输出的图像的第二分辨率正相关,以及存储的体素信息可包括体素的颜色和密度,因此,现有技术中体表达模块存储的体素的信息的维度为4,即每个体素信息的通道数为4。
但是,本申请的体表达模块存储的每个体素的信息中,每个体素的信息的维度(或者说通道数)大于4,从而通过体表达模块输出的体素的信息的维度大于4,来提升了神经渲染模块输出的第一特征图的通道数。以及体表达模块存储的体素信息对应的体素数量是与神经渲染模块输出的图像的分辨率正相关的。本申请的神经渲染模块输出的第一特征图的第一分辨率小于所需要的图像的第二分辨率,使得本申请的神经渲染模块输出的第一特征图的第一分辨率小于现有技术中的神经渲染模块所输出的可视化图像的第二分辨率,由于上述正相关的关系,使得本申请的神经渲染模块中的体表达模块所存储的体素的信息相关的体素数量也小于现有技术中神经渲染模块中的体表达模块所存储的体素的数量,可降低对存储、内存的占用。
在一种可能的实施方式中,所述神经渲染模块包括与所述第一模块连接的体渲染模块,所述第一特征图为由所述体渲染模块对来自所述第一模块的与所述第一视角相关的体素信息进行处理,而得到的通道数大于4的特征图。
在一种可能的实施方式中,所述方法还包括:基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,其中,所述候选渲染结果包括所述第一渲染结果,所述候选视角包括所述第二视角;基于所述第一渲染结果,获取与所述第一视角相关的参考图像;将所述参考图像输入至所述超分辨率模块,由所述超分辨率模块基于所述参考图像对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像并输出所述第一图像。
其中,候选视角可以是一个或多个。
候选视角可以包括预设视角,也可以是在生成该第一视角的特征图或第一图像之前生成的已渲染帧的视角。
上述第一视角也可以称为待渲染的当前帧的第一视角。
其中,所述候选渲染结果可表示为可作为参考帧的渲染结果。
已渲染帧表示在当前帧之前已生成的相应视角的第二分辨率的图像。
本申请各个实施方式所述的渲染结果可以是通过神经渲染处理得到的相应特征图,也可以是通过超分辨率处理得到的相应图像,该图像为可显示图像,例如RGB图像或YUV图像等。
在对当前帧的第一特征图进行超分辨率处理时,可利用该当前帧的参考图像,从而提升对当前帧的第一特征图的超分辨率效果,以提升第一图像的图像质量。
为了得到该当前帧的参考图像,可以在保存的候选视角的候选渲染结果中,获取与该当前帧的第一视角相关的第二视角的候选渲染结果,这里以第一候选结果表示,并利用该第一候选结果来获取当前帧的参考图像,以提升参考图像的准确度。
在一种可能的实施方式中,保存所述预设三维对象在候选视角下的候选渲染结果,包括:预先生成所述预设三维对象在第一预设视角下的候选渲染结果并保存,所述候选视角包括所述第一预设视角;和/或,预先接收所述预设三维对象在第二预设视角下的候选渲染结果并保存,所述候选视角包括所述第二预设视角。
本实施例所保存的候选渲染结果可包括预渲染帧的候选渲染结果,和/或,预下载帧的候选渲染结果。
其中,预渲染帧的候选渲染结果为本申请的方法预先生成并预先保存的一个或多个预设的视角下,该预设三维对象的渲染结果。
该预下载帧的候选渲染结果为本申请预先接收(例如从云端下载等方式)的一个或多个预设的视角下,该预设三维对象的渲染结果。
其中,预渲染帧和预下载帧各自对应的视角可以存在相同的视角,或者二者之间的视角不同,这里不作限制。
其中,已渲染帧在本次的渲染任务结束后,缓存的该已渲染帧会清空。那么在下一次渲染任务开始时,则未缓存有已渲染帧,在本实施例中,可在渲染任务开始之前,即开始渲染任意视角的预设三维图像的图像之前,通过预先生成或预先下载对预设三维对象的候选渲染结果(例如特征图或渲染图像),并可在该候选渲染结果中选择作为当前帧的参考帧的第一渲染结果,以得到第一视角的参考图像,以用于参考该参考图像来得到当前第一视角的渲染图像,这里为第一图像。这样,在开始渲染预设三维对象的起始的一帧或多帧的图像时,能够存储有预下载帧和/预渲染帧以可作为当前渲染的当前帧的参考帧,从而能够保存有有足够的可作为参考帧的渲染结果,以提高开始渲染的几个视角的帧图的图像质量。
在一种可能的实施方式中,所述方法还包括:将生成的所述第一特征图或所述第一图像作为所述预设三维对象在所述第一视角下的一个候选渲染结果进行保存。
在本实施例中,每次渲染得到的第一特征图或第一图像可作为该第一视角下的一个候选渲染结果进行保存,这里的候选渲染结果为已渲染帧的渲染结果。
在一种可能的实施方式中,所述候选渲染结果包括所述预设三维对象在同一候选视角下的目标特征图或目标图像;其中,所述目标特征图为将所述候选视角输入至所述神经渲染模块而由所述神经渲染模块输出得到的所述第一分辨率的特征图;所述目标图像为将所述目标特征图输入至所述超分辨率模块而由所述超分辨率模块输出得到的所述第二分辨率的图像。
其中,可作为参考帧的候选渲染结果可以是通过上述方法得到的第一分辨率的特征图,其分辨率较低,则可降低缓存量,以及降低算法复杂度,且利用特征图来渲染当前帧的渲染速度更快。
此外,可作为参考帧的候选渲染结果也可以是通过上述超分辨率处理而得到的第二分辨率的图像,这样,利用相应超分后的图像作为当前帧的参考帧以得到相应的参考图像,可提升当前帧的图像质量。
在一种可能的实施方式中,所述基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,包括:在保存的所述预设三维对象在候选视角下的候选渲染结果中,获取视角与所述第一视角的差值小于预设视角阈值的第二视角的第一渲染结果。
在缓存的候选渲染结果中,可选择视角与当前的第一视角接近或相同的第二视角的候选渲染结果,以作为第一渲染结果。其中,第二视角的数量可以是一个或多个,相应的,第一渲染结果的数量也可以是一个或多个,并且第一渲染结果可以是特征图,或者经过上述超分辨率处理后的图像。
上述各实施方式的训练方法的效果,与上述各实施方式的渲染方法的效果类似,这里不再赘述。
示例性的,本申请可提供一种在云端服务器运行的程序,该程序能够实现本申请所述的训练方法,和/或本申请所述渲染方法,该程序可以是在CPU、GPU、NPU上运行。
示例性的,本申请可提供一种在电子设备上运行的程序,该程序能够实现本申请所述的训练方法,和/或本申请所述渲染方法,该程序可以是在CPU、GPU、NPU上运行。
示例性的,本申请可提供一种云服务器上的芯片,该芯片可包括处理器,该处理器可用于执行本申请所述的训练方法,和/或本申请所述渲染方法。
示例性的,本申请可提供一种电子设备设备上的芯片,该芯片可包括处理器,该处理器可用于执行本申请所述的训练方法,和/或本申请所述渲染方法。
在一种可能的实施方式中,本申请实施例提供一种渲染装置(例如上述方法实施例中的渲染装置100)。渲染装置包括神经渲染模块(例如上述方法实施例中的神经渲染模块101)和超分辨率模块(例如上述方法实施例中的超分辨率网络102);所述神经渲染模块,用于接收第一视角,并基于所述第一视角对预设三维对象进行神经渲染处理,输出第一分辨率的第一特征图;所述超分辨率模块,用于对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像并输出所述第一图像;其中,所述第一分辨率低于所述第二分辨率。
不同于现有技术,本申请的渲染装置中的神经渲染模块和超分辨率模块为一套整体的装置中的模块,而非两个单独的产品或装置。
在一种可能的实施方式中,所述神经渲染模块包括第一模块,所述第一模块的输出结果的通道数大于3。
该第一模块可为需要训练优化的模块。
该神经渲染模块可包括第一模块,该第一模块为经过训练后的模块,该第一模块的输出结果的通道数与神经渲染模块输出结果的通道数相同,该通道数大于3。
在一种可能的实施方式中,所述第一模块为第一网络,所述第一网络中的最后一层网络的通道数大于4。
例如,在该神经渲染模块基于NeRF来进行神经渲染处理时,该第一模块可为第一网络,例如MLP(多层感知器)网络,该MLP网络由多个全连接层构成,那么MLP网络的最后一个全连接层的通道数或者说通道宽度大于4。
而现有技术中的NeRF的MLP网络输出结果为体素的颜色(通道数为3)和密度(通道数为1),因此,现有技术中的MLP网络最后一层网络的通道数为4,而本申请通过神经渲染模块中的第一网络,来得到的最终的第一特征图的通道数大于4,使得第一特征图的信息量更大,利于提升图像的超分辨率处理效果。
在一种可能的实施方式中,所述第一模块为体表达模块,所述体表达模块存储的每个体素信息的通道数大于4。
例如,在该神经渲染模块基于PlenOctrees来进行神经渲染处理时,该第一模块可为体表达模块。
现有的PlenOctrees中的体表达模块可存储体素信息,该体素的分辨率与输出的图像的第二分辨率正相关,以及存储的体素信息可包括体素的颜色和密度,因此,现有技术中体表达模块存储的体素的信息的维度为4,即每个体素信息的通道数为4。
但是,本申请的体表达模块存储的每个体素的信息中,每个体素的信息的维度(或者说通道数)大于4,从而通过体表达模块输出的体素的信息的维度大于4,来提升了神经渲染模块输出的第一特征图的通道数。以及体表达模块存储的体素信息对应的体素数量是与神经渲染模块输出的图像的分辨率正相关的。本申请的神经渲染模块输出的第一特征图的第一分辨率小于所需要的图像的第二分辨率,使得本申请的神经渲染模块输出的第一特征图的第一分辨率小于现有技术中的神经渲染模块所输出的可视化图像的第二分辨率,由于上述正相关的关系,使得本申请的神经渲染模块中的体表达模块所存储的体素的信息相关的体素数量也小于现有技术中神经渲染模块中的体表达模块所存储的体素的数量,可降低对存储、内存的占用。
在一种可能的实施方式中,所述神经渲染模块包括与所述第一模块连接的体渲染模块;所述第一模块,用于输出与所述第一视角相关的每个体素的体素信息;所述体渲染模块,用于对来自所述第一模块的体素信息进行处理,得到通道数大于4的所述第一分辨率的所述第一特征图并输出所述第一特征图;所述超分辨率模块,具体用于从所述体渲染模块接收所述第一特征图。
在一种可能的实施方式中,所述渲染装置还包括:帧缓存模块,用于保存所述预设三维对象在候选视角下的候选渲染结果;映射模块,用于基于所述帧缓存模块保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,其中,所述候选渲染结果包括所述第一渲染结果,所述候选视角包括所述第二视角;所述映射模块,还用于基于所述第一渲染结果,获取与所述第一视角相关的参考图像并输出所述参考图像;所述超分辨率模块,具体用于基于来自所述映射模块的所述参考图像对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像。
在一种可能的实施方式中,所述渲染装置,还用于预先生成所述预设三维对象在第一预设视角下的候选渲染结果;所述帧缓存模块,具体用于保存预先生成的所述候选渲染结果,所述候选视角包括所述第一预设视角;所述渲染装置,还用于预先接收所述预设三维对象在第二预设视角下的候选渲染结果;所述帧缓存模块,具体用于保存预先接收的候选渲染结果,所述候选视角包括所述第二预设视角。
在一种可能的实施方式中,所述帧缓存模块,还用于将所述神经渲染模块输出的所述第一特征图、或所述超分辨率模块输出的所述第一图像保存为所述预设三维对象在所述第一视角下的一个候选渲染结果。
在一种可能的实施方式中,所述候选渲染结果包括所述预设三维对象在同一候选视角下的目标特征图或目标图像;所述神经渲染模块,用于基于该候选视角对所述预设三维对象进行神经渲染处理,得到所述第一分辨率的所述目标特征图;所述超分辨率模块,用于对所述目标特征图进行超分辨率处理,得到所述第二分辨率的目标图像。
在一种可能的实施方式中,所述映射模块,具体用于在所述帧缓存模块保存的所述预设三维对象在候选视角下的候选渲染结果中,获取视角与所述第一视角的差值小于预设视角阈值的第二视角的第一渲染结果。
上述各实施方式的渲染装置的效果和实现方式,与上述各实施方式的渲染方法的效果类似,这里不再赘述。
下面介绍本申请实施例提供的一种装置。如图9所示:
图9为本申请实施例提供的一种渲染装置或训练装置的结构示意图。如图9所示,该装置500可包括:处理器501、收发器505,可选的还包括存储器502。
所述收发器505可以称为收发单元、收发机、或收发电路等,用于实现收发功能。收发器505可以包括接收器和发送器,接收器可以称为接收机或接收电路等,用于实现接收功能;发送器可以称为发送机或发送电路等,用于实现发送功能。
存储器502中可存储计算机程序或软件代码或指令504,该计算机程序或软件代码或指令504还可称为固件。处理器501可通过运行其中的计算机程序或软件代码或指令503,或通过调用存储器502中存储的计算机程序或软件代码或指令504,来实现本申请各实施例提供的渲染方法。其中,处理器501可以为中央处理器(central processing unit,CPU),存储器502例如可以为只读存储器(read-only memory,ROM),或为随机存取存储器(randomaccess memory,RAM)。
本申请中描述的处理器501和收发器505可实现在集成电路(integratedcircuit,IC)、模拟IC、射频集成电路RFIC、混合信号IC、专用集成电路(applicationspecific integrated circuit,ASIC)、印刷电路板(printed circuit board,PCB)、电子设备等上。
上述装置500还可以包括天线506,该装置500所包括的各模块仅为示例说明,本申请不对此进行限制。
示例性的,渲染装置的结构可以不受图9的限制。渲染装置可以是独立的设备或者可以是较大设备的一部分。例如所述渲染装置的实现形式可以是:
(1)独立的集成电路IC,或芯片,或,芯片系统或子系统;(2)具有一个或多个IC的集合,可选的,该IC集合也可以包括用于存储数据,指令的存储部件;(3)可嵌入在其他设备内的模块;(4)电子设备、服务器、车载设备等等;(5)其他等等。
对于渲染装置的实现形式是芯片或芯片系统的情况,可参见图10所示的芯片的结构示意图。图10所示的芯片包括处理器601和接口602。其中,处理器601的数量可以是一个或多个,接口602的数量可以是多个。可选的,该芯片或芯片系统可以包括存储器603。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
基于相同的技术构思,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由计算机执行,以控制计算机用以实现上述方法实施例。
基于相同的技术构思,本申请实施例还提供一种计算机程序,当该计算机程序被执行时,用以实现上述方法实施例。
所述程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
基于相同的技术构思,本申请实施例还提供一种芯片,包括处理器。处理器可实现上述方法实施例。
结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (24)

1.一种渲染方法,其特征在于,所述方法包括:
获取第一视角;
基于所述第一视角对预设三维对象进行神经渲染处理,得到第一分辨率的第一特征图;
对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像;
其中,所述第一分辨率低于所述第二分辨率。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,其中,所述候选渲染结果包括所述第一渲染结果,所述候选视角包括所述第二视角;
基于所述第一渲染结果,获取与所述第一视角相关的参考图像;
基于所述参考图像对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像。
3.根据权利要求2所述的方法,其特征在于,保存所述预设三维对象在候选视角下的候选渲染结果,包括:
预先生成所述预设三维对象在第一预设视角下的候选渲染结果并保存,所述候选视角包括所述第一预设视角;和/或,
预先接收所述预设三维对象在第二预设视角下的候选渲染结果并保存,所述候选视角包括所述第二预设视角。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将生成的所述第一特征图或所述第一图像作为所述预设三维对象在所述第一视角下的一个候选渲染结果进行保存。
5.根据权利要求2至4中任意一项所述的方法,其特征在于,所述候选渲染结果包括所述预设三维对象在同一候选视角下的目标特征图或目标图像;
其中,所述目标特征图为通过所述神经渲染处理而得到的所述第一分辨率的特征图;
所述目标图像为通过对所述目标特征图进行所述超分辨率处理而得到的所述第二分辨率的图像。
6.根据权利要求2至5中任意一项所述的方法,其特征在于,所述基于保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,包括:
在保存的所述预设三维对象在候选视角下的候选渲染结果中,获取视角与所述第一视角的差值小于预设视角阈值的第二视角的第一渲染结果。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述第一特征图的通道数大于3。
8.根据权利要求1至7中任意一项所述的方法,其特征在于,所述预设三维对象为虚拟三维对象或真实三维对象。
9.一种渲染装置,其特征在于,所述装置包括神经渲染模块和超分辨率模块;
所述神经渲染模块,用于接收第一视角,并基于所述第一视角对预设三维对象进行神经渲染处理,输出第一分辨率的第一特征图;
所述超分辨率模块,用于对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像并输出所述第一图像;
其中,所述第一分辨率低于所述第二分辨率。
10.根据权利要求9所述的装置,其特征在于,所述神经渲染模块包括第一模块,所述第一模块的输出结果的通道数大于3。
11.根据权利要求10所述的装置,其特征在于,所述第一模块为第一网络,所述第一网络中的最后一层网络的通道数大于4。
12.根据权利要求10所述的装置,其特征在于,所述第一模块为体表达模块,所述体表达模块存储的每个体素信息的通道数大于4。
13.根据权利要求10至12中任意一项所述的装置,其特征在于,所述神经渲染模块包括与所述第一模块连接的体渲染模块;
所述第一模块,用于输出与所述第一视角相关的每个体素的体素信息;
所述体渲染模块,用于对来自所述第一模块的体素信息进行处理,得到通道数大于4的所述第一分辨率的所述第一特征图并输出所述第一特征图;
所述超分辨率模块,具体用于从所述体渲染模块接收所述第一特征图。
14.根据权利要求9至13中任意一项所述的装置,其特征在于,所述装置还包括:
帧缓存模块,用于保存所述预设三维对象在候选视角下的候选渲染结果;
映射模块,用于基于所述帧缓存模块保存的所述预设三维对象在候选视角下的候选渲染结果,获取与所述第一视角相关的第二视角的第一渲染结果,其中,所述候选渲染结果包括所述第一渲染结果,所述候选视角包括所述第二视角;
所述映射模块,还用于基于所述第一渲染结果,获取与所述第一视角相关的参考图像并输出所述参考图像;
所述超分辨率模块,具体用于基于来自所述映射模块的所述参考图像对所述第一特征图进行超分辨率处理,得到所述预设三维对象在所述第一视角下的第二分辨率的第一图像。
15.根据权利要求14所述的装置,其特征在于,
所述渲染装置,还用于预先生成所述预设三维对象在第一预设视角下的候选渲染结果;
所述帧缓存模块,具体用于保存预先生成的所述候选渲染结果,所述候选视角包括所述第一预设视角;
所述渲染装置,还用于预先接收所述预设三维对象在第二预设视角下的候选渲染结果;
所述帧缓存模块,具体用于保存预先接收的候选渲染结果,所述候选视角包括所述第二预设视角。
16.一种训练方法,其特征在于,所述方法用于对渲染装置进行训练,所述渲染装置包括超分辨率模块和神经渲染模块,所述方法包括:
获取第一训练数据,第一训练数据包括预设三维对象的第一监督图像和所述第一监督图像中所述预设三维对象的第一视角;
将所述第一视角输入至所述神经渲染模块,由所述神经渲染模块基于所述第一视角对所述预设三维对象进行神经渲染处理,输出第一分辨率的第一特征图至所述超分辨率模块;
由所述超分辨率模块对所述第一特征图进行超分辨率处理,输出所述预设三维对象在所述第一视角下的第二分辨率的第一图像,其中,所述第一监督图像的分辨率为所述第二分辨率,且所述第一分辨率低于所述第二分辨率;
基于所述第一监督图像和所述第一图像,对所述神经渲染模块中的第一模块和所述超分辨率模块分别进行反向传播。
17.根据权利要求16所述的方法,其特征在于,所述第一监督图像为拍摄图像,所述获取第一训练数据,包括:
获取通过对所述预设三维对象进行多个视角的拍摄,而得到的多个拍摄图像及每张所述拍摄图像的第一视角;
和/或,
获取通过对所述预设三维对象进行连续视角的视频拍摄,而得到的第一视频数据及所述第一视频数据的第一视角,其中,所述第一视频数据包括所述连续视角中每个视角的拍摄图像。
18.根据权利要求16所述的方法,其特征在于,所述预设三维对象为虚拟三维对象,所述第一监督图像为渲染图像,所述获取第一训练数据,包括:
获取通过三维图形引擎对所述虚拟三维对象进行多个视角的渲染而得到多张渲染图像,及每张所述渲染图像的第一视角;
和/或,
获取通过所述三维图形引擎对所述虚拟三维对象进行连续视角的渲染而得到的第二视频数据,及所述第二视频数据的第一视角,其中,所述第二视频数据包括所述连续视角中每个视角的渲染图像。
19.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器与所述处理器耦合;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求1至权利要求8中任一项所述的渲染方法,或执行权利要求16至权利要求18中任一项所述的训练方法。
20.一种服务器,其特征在于,包括:
存储器和处理器,所述存储器与所述处理器耦合;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述服务器执行权利要求1至权利要求8中任一项所述的渲染方法,或执行权利要求16至权利要求18中任一项所述的训练方法。
21.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序运行在计算机或处理器上时,使得所述计算机或所述处理器执行如权利要求1至8中任意一项所述的方法,或执行如权利要求16至18中任意一项所述的方法。
22.一种渲染装置,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器用于执行如权利要求1至8中任意一项所述的方法。
23.一种训练装置,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述处理器用于执行如权利要求16至18中任意一项所述的方法。
24.一种计算机程序产品,其特征在于,所述计算机程序产品包括软件程序,当所述软件程序被计算机或处理器执行时,使得权利要求1至8任一项所述的方法的步骤被执行,或权利要求16至18任一项所述的方法的步骤被执行。
CN202310807760.2A 2022-11-11 2023-07-03 渲染方法及装置、训练方法 Pending CN118052920A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022114094884 2022-11-11
CN202211409488 2022-11-11

Publications (1)

Publication Number Publication Date
CN118052920A true CN118052920A (zh) 2024-05-17

Family

ID=91050957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310807760.2A Pending CN118052920A (zh) 2022-11-11 2023-07-03 渲染方法及装置、训练方法

Country Status (1)

Country Link
CN (1) CN118052920A (zh)

Similar Documents

Publication Publication Date Title
CN110515452B (zh) 图像处理方法、装置、存储介质和计算机设备
CN110532871B (zh) 图像处理的方法和装置
US11308638B2 (en) Depth estimation method and apparatus, electronic device, program, and medium
Zheng et al. T2net: Synthetic-to-realistic translation for solving single-image depth estimation tasks
CN106257540A (zh) 提供虚拟光的方法及其处理系统
CN110381268B (zh) 生成视频的方法,装置,存储介质及电子设备
CN112166604A (zh) 具有单个rgbd相机的对象的体积捕获
CN104537705B (zh) 基于增强现实的移动平台三维生物分子展示系统和方法
CN112370784B (zh) 虚拟场景显示方法、装置、设备以及存储介质
CN112207821B (zh) 视觉机器人的目标搜寻方法及机器人
WO2022165722A1 (zh) 单目深度估计方法、装置及设备
WO2022052782A1 (zh) 图像的处理方法及相关设备
CN107820019A (zh) 虚化图像获取方法、装置及设备
KR20230107805A (ko) 이미지 분할 프로세스들에 대한 일관성 측정
CN116569218A (zh) 图像处理方法和图像处理装置
CN114076970A (zh) 一种定位方法、装置及系统
CN110152293A (zh) 操控对象的定位方法及装置、游戏对象的定位方法及装置
CN116740261A (zh) 图像重建方法和装置、图像重建模型的训练方法和装置
CN118052920A (zh) 渲染方法及装置、训练方法
CN116704111A (zh) 图像处理方法和设备
CN115423853A (zh) 一种图像配准方法和设备
CN116883770A (zh) 深度估计模型的训练方法、装置、电子设备及存储介质
Haji-Esmaeili et al. Large-scale Monocular Depth Estimation in the Wild
CN110196638B (zh) 基于目标检测和空间投影的移动端增强现实方法和系统
CN113786617A (zh) 应用体素数据进行射线检测的方法、系统、服务器及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication