本发明涉及视图合成,尤其涉及一种基于神经辐射场模型的新颖视图合成方法。
背景技术:
1、视图合成是一种计算机视觉技术,它利用观察到的图像来恢复3d场景表示,并能在新的、未观察到的视点上渲染场景。近年来,神经体积表示技术的应用取得了显著进展;
2、现有技术中,视图合成渲染新视图所需条件困难,渲染效果不好。
技术实现思路
1、本发明的目的是为了解决现有技术中存在视图合成渲染新视图所需条件困难,渲染效果不好的缺点,而提出的一种基于神经辐射场模型的新颖视图合成方法。
2、为了实现上述目的,本发明采用了如下技术方案:
3、一种基于神经辐射场模型的新颖视图合成方法,包括以下步骤:
4、s1、基于稀疏输入视图构建训练集训练集,在训练集中提取输入视图特征,构建用于新颖视图合成的神经辐射场模型;
5、s2、对s1训练所得神经辐射场模型进行模型参数优化;
6、s1中,基于稀疏输入视图构建训练集,在训练集中提取输入视图特征,构建用于新颖视图合成的神经辐射场模型,包含以下步骤:
7、步骤1,1,通过软件提取稀疏输入视图的内参与外参,内参指与相机自身特性相关的参数,外参为由旋转与平移向量组成的矩阵,
8、参与外参通过开源软件colmap提取,内参为相机焦距、相机像素大小,构成一个3×4的矩阵k,外参为一个4×4的矩阵m,其中左上角3×3为由软件提取的表示视图旋转特性的旋转矩阵右上角的3×1向量为通过软件提取的平移向量最后一行为向量[0,0,0,1]
9、步骤1,2,针对输入稀疏视图集{ii}(i=1,……v,v为视图的数量)通过特征提取器提取每张视图的2d特征其中hi为视图i的长度,wi为视图i的宽度,d为特征维度。
10、特征提取方法为:
11、第一步,输入视图通过cnn下采样得到特征fea1,下采样过程包含三个步骤:
12、1)对输入点rgb值进行卷积(cnn)操作,方法为:
13、
14、其中,f(i,j)表示输入视图在点(i,j)的rgb值,g表示卷积核,m和n分别表示卷积核的宽度和高度,(x,y)是输出特征映射中某个像素点的坐标,
15、2)对卷积后的特征的各个维度进行批量归一化,方法为:
16、
17、其中x为输入的某维特征值,μ为该维特征的均值,σ2为该维特征的方差,γ、β分别为可学习的缩放参数与平移参数,ε为防止方差为零的常数,x’为归一化处理后的该维特征值,
18、3)对归一化后的特征各维度使用relu函数处理,输出特征fea1
19、relu(x)=max(0,x)
20、其中,x为输入的某维的特征值,具体地,relu函数将输入值和零进行比较,如果输入值大于零,则输出为输入值本身,否则输出为零。
21、所设置的参数为:设视图尺寸为h×w,cnn下采样的m与n为7,步长为2,卷积核个数为64,所得特征信息为(h/2,w/2,64),其中h/2,w/2表示特征的尺度,64为特征的维度。
22、第二步,对第一步输出特征fea1进行多轮多层basic_block模块操作以提取视图的高级特征fea2,basic_block模块操作包含以下步骤:
23、1)对特征进行卷积(cnn)操作,方法为:
24、
25、其中,f(i,j)表示输入视图在点(i,j)的rgb值,g表示卷积核,m和n分别表示卷积核的宽度和高度,(x,y)是输出特征映射中某个像素点的坐标,
26、2)对卷积后的特征的各个维度进行批量归一化,方法为:
27、
28、其中x为输入的某维特征值,μ为该维特征的均值,σ2为该维特征的方差,γ、β分别为可学习的缩放参数与平移参数,ε为防止方差为零的常数,x’为归一化处理后的该维特征值,
29、3)对归一化后的特征各维度使用relu函数处理,输出特征fea1
30、relu(x)=max(0,x)
31、其中,x为输入的某维的特征值,具体地,relu函数将输入值和零进行比较,如果输入值大于零,则输出为输入值本身,否则输出为零,
32、5)更换卷积核参数,重复执行步骤1)-3);
33、对fea1进行三轮basic_block模块操作,每轮操作的层数分别为4、5、7,
34、第一轮操作所设置的参数为:第一层basic_block模块步骤1)中cnn的m与n为3,步长为2,卷积核个数为64;步骤4)中第二次cnn其它参数不变,步长修改为1,最终所得特征维度为(h/4,w/4,64),
35、后三层basic_block模块步骤1)中cnn的m与n为3,步长为1,卷积核个数为64;步骤4)中第二次cnn参数保持不变,最终所得特征维度为(h/4,w/4,64),
36、第二轮操作所设置的参数为:第一层basic_block模块步骤1)中cnn的m与n为3,步长为2,卷积核个数为128;步骤4)中第二次cnn其它参数不变,步长修改为1,最终所得特征维度为(h/8,w/8,128),
37、后四层basic_block模块步骤1)中cnn的m与n为3,步长为1,卷积核个数为128;步骤4)中第二次cnn参数保持不变,最终所得特征维度为(h/8,w/8,128),
38、第三轮操作所设置的参数为:第一层basic_block模块步骤1)中cnn的m与n为3,步长为2,卷积核个数为256,步骤4)中第二次cnn其它参数不变,步长修改为1,最终所得特征维度为(h/16,w/16,256),
39、后六层basic_block模块步骤1)中cnn的m与n为3,步长为1,卷积核个数为128,;步骤4)中第二次cnn参数保持不变,最终所得特征维度为(h/16,w/16,256)。
40、第三步,对第二步输出特征fea2通过正余弦位置编码器对特征进行编码得到特征fea3,该过程包含三个步骤:
41、1)对输入特征使用正余弦位置编码器进行编码,位置(x,y)像素点正余弦编码器形式为:
42、
43、其中d为特征维数,n为区间内的整数,其步长为2,常数10000用于控制周期性的变化,由上式,对特征点f(x,y)进行位置编码后的向量为:
44、
45、具体操作时截取上述向量的前d维作为点(x,y)经位置编码后的结果pos(x,y),最后将每个点的位置编码信息pos(x,y)与原特征相加,具体操作为:
46、f’=f(x,y)+pos(x,y),
47、所设置的参数为:步骤1)中d为256,
48、第四步,1)首先对经过位置编码后的特征f’进行层归一化得到特征fea3,具体方法为:
49、
50、其中,⊙表示逐元素乘法,a和b为可学习的缩放因子和偏置项,μ为所有输入向量x的均值,σ为所有输入向量x的标准差,ε为防止方差为零的常数,
51、设置的参数为:ε为10-5,a为1,b为0。
52、接着对特征fea3进行多头注意力计算,得到特征f1,该过程包含四个步骤:
53、2)对输入特征进行三个线性变换,具体为:qm=fea2·wq,km=fea2·wk,vm=fea2·wv,wq,wk,wv为可学习的权重矩阵,
54、将线性变换结果划分为n个头:qm,n=qm/n,km,n=km/n,vm,n=vm/n,
55、注意力计算:
56、对于第一个特征有:
57、w1,1=q1,1·k1,1,w2,1=q1,1·k2,1…,wn,1=wn,1·kn,1
58、b1,1=w1,1·v1,1,b2,1=w2,1×v2,1…,bn,1=wn,1×vn,1
59、第一个特征的第一个头进行注意力分数b1,1为:
60、b1,1=b1,1+b2,1+…+bn,1
61、同理得到b1,2~b1,n,将n个头进行拼接得到f1=b1,1|b1,2|...|b1,n,其中“|”表示级联操作,
62、接着f2=f’+f1;
63、3)接着对特征f2进行层归一化得到特征f3,具体方法为:
64、
65、其中,⊙表示逐元素乘法,a和b为可学习的缩放因子和偏置项,μ为所有输入向量x的均值,σ为所有输入向量x的标准差,ε为防止方差为零的常数,
66、所设置的参数为:ε为10-5,a为1,b为0,
67、4)将特征f3经全连接层一处理得到特征f4:
68、f4=w·f3+b
69、其中f3为输入的维度为n的向量,w为m×n的权重矩阵,b为维度为m的偏置向量,
70、5)经全连接层一处理后的特征f4的每个维度输入gelu激活函数,得到特征f5,gelu激活函数形式为:
71、
72、具体地,gelu函数将输入值和一个常数n进行比较,如果输入值小于等于该常数,则输出为输入值本身,否则输出为零,
73、6)f5经一次全连接层二处理,得到特征f6,
74、参数为:n为6,权重矩阵为维度为256×1024,权重矩阵维度为1024×256,
75、接着:f7=f6+f2。
76、第五步,对第四步输出特征f7进行双线性插值操作得到特征f8,该过程包含四个步骤:
77、1)通过双线性插值对特征f7进行第一次上采样,得到特征f8:
78、双线性插值首先计算出二维平面上某点相对于四个已知点的相对位置,然后根据相对位置和已知点的数值进行加权平均,得到插值结果,
79、设二维平面上的四个点(x1,y1),(x2,y1),(x1,y2),(x2,y2),以及对应的数值f11、f21、f12和f22,双线性插值通过以下公式计算在任意位置(x,y)处的插值结果:
80、f(x,y)=f11(1-α)(1-β)+f21α(1-β)+f12(1-α)β+f22αβ,
81、其中,α和β是在水平和垂直方向上的插值权重,其计算方法为:
82、
83、在,插值点坐标取两点的中间点,即x=(x1+x2)/2,y=(y1+y2)/2,
84、2)f8经一次cnn卷积得到特征f9:
85、
86、其中f表示输入特征,g表示卷积核,m和n分别表示卷积核的宽度和高度,(x,y)是输出特征映射中某个像素点的坐标,m与n取3,步长为1,卷积核个数为128,
87、3)将f9与第一步中与之尺度与维数相等的特征进行拼接得到特征f10,如图所示,,f10为两个(h/8,w/8,128)拼接得到的向量,
88、4)f10经一次cnn卷积得到特征f11:
89、
90、其中f表示输入特征,g表示卷积核,m和n分别表示卷积核的宽度和高度,(x,y)是输出特征映射中某个像素点的坐标,m与n为3,步长为1,卷积核个数为128,
91、5)将卷积后的向量f11各个维度进行批量归一化得到特征f12:
92、
93、其中x为输入的某维特征值,μ为该维特征的均值,σ2为该维特征的方差,γ、β分别为可学习的缩放参数与平移参数,ε为防止方差为零的常数,x’为归一化处理后的该维特征值,
94、6)将批量归一化后的特征f12的每个维度输入elu激活函数,得到特征f13,elu激活函数形式为:
95、
96、具体地,elu函数将输入值和0进行比较,如果输入值大于等于0,则输出为输入值本身,如果输入值小于0,则输出为ex。
97、第六步,对第五步输出特征f13更换参数后重复第五步所有步骤得到特征f14,
98、该步骤所采用的参数:第2)步中m与n取3,步长为1,卷积核个数为64;第3)步中所拼接的两向量为(h/4,w/4,64),第4)步中,m与n为3,步长为1,卷积核个数为64,
99、第七步,对特征f14进行cnn卷积,得到特征f15,
100、该步骤所采用的参数:m与n为1,步长为1,卷积核个数为64,
101、步骤1,3,针对输入稀疏视图集{ii}(i=1,……v,v为视图的数量)稀疏视图集{ii}对应的rgb图像其中hi为视图i的长度,wi为视图i的宽度,
102、步骤1,4,从所有稀疏输入视图的位姿中选择一个作为拟合成新颖视图的位姿,并通过新颖视图的位姿获得每个像素点对应的光线,在光线上采样3d点,
103、方法为:
104、设新颖视图像素点的坐标为(i,j),光心坐标为(cx,cy),该像素点在相机坐标系下的光线方向的三维向量为r=(i-cx,j-cy,f),其中f为相机焦距;计算像素点在世界坐标系下的光线方向r,方法为:r=r×k,其中k为步骤1,1所得外参矩阵左上角3*3的旋转矩阵,沿光线方向均匀采样得到3d点,并计算其在步骤1,2所得每张视图2d特征图上的投影,方法为:p=k×m×pw,其中p为对应2d特征图上的点,k、m分别为步骤1,1所得内参矩阵与外参矩阵,pw为采样得到的3d点坐标,pw计算过程:pw,i=t+k*z_valsi
105、其中,t为平移向量,即步骤1,1中外参矩阵m的右上角3×1向量,k为上述的光线方向,获得z-valsi的具体操作为:设定near=0,far=1,生成near,far之间n个光点即:
106、
107、第i个光点的z_valsi为:
108、
109、光线上的3d点投影无法精准的落在2d特征图已知的特征点上,利用2d特征图上已知特征点特征采用双线性插值法得到投影点所对应的2d特征,
110、步骤1,5,计算每个3d点的全局特征及特征离散度,将步骤1,4中所得每个3d点在各2d特征图上投影点特征,与全局特征、特征离散度进行拼接得到一个向量,
111、其中全局特征为该3d点在所有2d特征图上的投影点特征的平均值,特征离散度为该3d点在每个2d特征图上的投影点特征与全局特征之间的方差,
112、设3d点n(n=1,2,…n)在某个2d特征图v(v=1,2,…v)上的投影点特征为fn,v,对应全局特征为meann,v,特征离散度为varn,v,则拼接所得向量fean,v为fean,v=[fn,v|meann,v|varn,v],“|”表示级联操作,
113、步骤1,6,将步骤1,5所得向量fean,v进行特征融合操作,方法为:
114、第一步,对输入特征fean,v经全连接层一处理得到特征fean,v1;
115、全连接层权重矩阵为256×96,所得fean,v1为256维,
116、第二步,对3d点n,将其在所有2d特征图上的向量fean,v1拼接为矩阵,并在其前添加令牌向量cls组成特征矩阵:令牌向量cls维度与fean,v1相同,目的是获取所有2d图上的注意力信息并避免特征产生偏向性,cls元素全部初始化为0,
117、第三步,对cls及fean,v1执行步骤1,2中第四步1)-3)的注意力计算步骤,得到特征矩阵
118、第四步,将cls1,fean,v1’经全连接层二处理,得到特征矩阵全连接层权重矩阵维度为1024×256,所得cls2,fean,v2为1024维向量;
119、第五步,将cls2,fean,v2的每个维度输入gelu激活函数;
120、第六步,将上步输出向量经全连接层三处理得到特征矩阵全连接层权重矩阵维度为256×1024,所得cls3,fean,v3为256维向量;
121、第七步,重复第三步-第六步p次,以增加模型的表示能力和学习更复杂和抽象的特征表示,p=4。
122、第八步,将上步输出向量进行步骤1,2中第三步层归一化步骤:
123、
124、其中,⊙表示逐元素乘法,a和b为可学习的缩放因子和偏置项,μ为所有输入向量x的均值,σ为所有输入向量x的标准差,ε为防止方差为零的常数,ε为10-5,a为1,b为0,
125、第九步,对上一步输出经全连接层四处理得到特征矩阵全连接层权重矩阵维度为128×256,所得cls4,fean,v4为128维向量;
126、第十步,截取上一步特征矩阵第一行作为本步骤输出clsn,
127、步骤1,7,对于将步骤1,6所得向量clsn进行密度特征融合操作,方法为:
128、执行clsn步骤1,2中第三步的位置编码和第四步2)的注意力计算,接着进行全连接层一、elu激活函数、全连接层二、elu激活函数、全连接层三、elu激活函数、全连接层四和relu激活函数处理步骤,得到密度特征σn
129、第一步,将clsn进行执行步骤1,2中的第三步位置编码和第四步2)的注意力计算步骤得到clsn’;
130、第二步,将clsn’经全连接层一处理,得到特征clsn1,全连接层权重矩阵维度为128×64,所得clsn1为64维向量;
131、第三步,将clsn1的每个维度输入elu激活函数;
132、第四步,将上一步输出经全连接层二处理得到clsn2,全连接层权重矩阵维度为64×32,所得clsn2为32维向量;
133、第四步,将clsn2的每个维度输入elu激活函数;
134、第五步,将上一步输出经全连接层三处理得到clsn3,全连接层权重矩阵维度为32×16,所得clsn3为16维向量;
135、第六步,将clsn3的每个维度输入elu激活函数;
136、第七步,将上一步输出经全连接层四处理得到clsn4,全连接层权重矩阵维度为16×1;
137、第八步,将clsn4输入relu激活函数,得到密度σn;
138、步骤1,8,将步骤1,5所得特征点n对应2d特征图v的特征向量fean,v,与合成新颖视图和2d特征图v的视角差值δdv进行拼接:fean,v′=[fean,v|δdv],对拼接向量进行全连接层处理、激活函数步骤得到点n在2d特征图v的权重,方法为:
139、第一步,将拼接后的向量经全连接层一处理,得到特征fean,v’1,拼接向量维度为32+3=35,全连接层权重矩阵维度为(32+3)×16,所得fean,v’1为16维向量;
140、第二步,将fean,v’1的每个维度输入elu激活函数,得到特征fean,v’2;
141、第三步,将fean,v’2经全连接层二处理得到fean,v’3,全连接层权重矩阵维度为16×8,所得fean,v’3为8维向量;
142、第四步,将fean,v’3的每个维度输入elu激活函数,得到特征fean,v’4;
143、第五步,将fean,v’4经全连接层三处理得到3d点n在2d特征图v的权重wn,v;
144、步骤1,9,按照与步骤1,4相同的方法,计算光点n在步骤1,2中每张视图的rgb图像上的投影点rgb特征rgbn,v,
145、步骤1,10,基于步骤1,8所得2d特征图权重以及步骤1,9所得计算3d点n的颜色rgbn:
146、
147、步骤1,11,对于3d点n,基于步骤1,7所得密度σn与步骤1,10所得颜色rgbn,通过体渲染技术计算新颖视图上点的颜色,方法为:
148、设点n所在光线r上的采样点总数为m,则该光线在新颖视图上点的颜色为:
149、
150、其中tn表示沿光线由第一个采样3d点到第m个采样3d点的累积投射率,即光线从第一个采样传播到第m个3d点而不击中任何其它粒子的概率,其计算方法为:
151、
152、s2中,对s1训练所得神经辐射场模型进行模型参数优化:
153、步骤2,1,在训练集内计算通过采样进行渲染所得所有光线新颖视图颜色与真实颜色cr间的均方误差作为损失函数l:
154、
155、步骤2,2,采用梯度下降法对模型参数进行优化调整,针对模型参数θ,其更新方法为:
156、
157、其中α为学习率,设置为0,001,l为步骤2,1所得损失函数,为损失函数的梯度算子,学习率的更新满足:
158、
159、其中γ为取值[0,1]间的衰减因子。
160、s3中,基于s1、2所得神经辐射场模型进行新颖视图合成,包含以下步骤:
161、步骤3,1,通过软件提取输入视图的内参与外参;
162、步骤3,2,设定位姿与输入视图位姿较为接近的为新颖视图位姿;
163、步骤3,3,将待合成稀疏输入视图执行步骤1的方法,通过训练得到的模型获得光线采样点的密度和颜色,通过体渲染技术计算新颖视图上点的颜色并最终获得新颖视图。
164、本发明中,所述一种基于神经辐射场模型的新颖视图合成方法的有益效果:
165、本发明通过人工智能的手段可以使得模型具有优秀的泛化性能,在未知的数据域依然发挥作用,使得输入视图在锐减的情况下依然可以渲染出良好的效果,大大减小了渲染新视图所需条件的困难性。