一种基于深度学习的单视图三维重建方法

文档序号:27690633发布日期:2021-12-01 02:58阅读:80来源:国知局
1.本发明涉及三维重建技术和深度学习
技术领域
:,具体涉及一种基于深度学习的单视图三维重建方法。
背景技术
::2.三维重建是计算机视觉与图形学的重要研究方向,主要是通过目标的二维图像精确地推断出它的3d特征,这对于机器人技术、3d建模和动画、自动驾驶、vr/ar、工业制造以及医学诊断等方面都具有广泛的应用价值。利用传统的sfm方法(structurefrommotion)进行三维重建需要目标的多张二维图像,在重建过程中存在过度依赖于跨视图特征的假设匹配,当输入的多张图片之间的视点差距过大或者物体局部被遮挡时,对这些二维图像建立特征匹配较为困难。此外,由于传统的sfm算法要通过捆绑调整进行整体优化,导致整个算法的运算速度较慢,而且随着输入图像数量的增加,进行三维重建花费的时间也会大幅增加。3.随着神经网络的不断发展,越来越多的研究人员使用深度学习直接进行三维重建,这样可以跳过特征抽取、特征匹配、相机参数求解等传统环节,且无需复杂的相机校准,直接由多张甚至是单张图像重建出目标物体的三维特征。(1)choy等人在2016年提出3d‑r2n2深度学习模型,该模型使用cnn网络通过单张或多张rgb图像对目标进行三维重建,使用lstm来实现从二维特征到三维特征的重建,由于lstm网络的训练参数较大,重建准确率也不太理想。(2)xie等人在2019年提出pix2vox网络,实现把多个粗略的3d特征通过多尺度上下文感知融合网络进行融合,但在对单张图像生成三维特征时,通过reshape操作直接把大尺寸二维特征变换成小尺寸三维特征,导致单张图像重建的特征精度较低。技术实现要素:4.本发明提供了一种基于深度学习的单视图三维重建方法,解决现有技术中的问题。5.为了达到上述目的,本发明的技术方案如下:6.一种基于深度学习的单视图三维重建方法,包括以下步骤:7.step1:原始数据集的构建:采集多个目标的二维图像数据,对于同一目标,使用cad软件计算出该目标的三维体素特征,把所有的二维图像和相应的三维体素特征按照3:1的比例划分为训练集、测试集,并转化为深度模型需要的tensor数据;8.step2:编码模块对上述训练集和测试集中的二维图像进行特征提取:二维特征提取网络层基于resnet50,并在resnet50后加入新的特征提取层m;首先,使用resnet50把大小为128×128的二维特征依次提取为64×64、32×32、16ꢀ×16、8×8、4×4的二维特征;接着,进一步使用特征提取层m进行特征提取,生成1024×2×2的二维特征f;然后通过sigmoid对所有的特征进行二分类,得到它们在二维空间上的概率p;9.step3:多个二维特征融合生成三维特征:对上述step2步骤所生成的二维特征f,使用深度估计模块得到一个新的二维特征f’,将f’与f进行融合,升维成f对应的1024×2×2×2的三维特征s;10.step4:解码模块将深度估计模块生成的三维特征s通过3d解码网络生成粗糙的三维体素:该模块有4个上采样操作,每个上采样操作均使用三线性空间上采样和三维反卷积网络组合模块;11.step5:校验模块采用u‑net思想,使用具有3d解码器/解码器的残差网络来对step4生成的粗糙三维体素进行错误校正,进而生成精确的3d体素特征;12.step6:对训练集重复执行步骤step2~step5的训练,直至整个模型收敛;13.step7:利用步骤step6训练后所获得的单视图三维重建模型参数权重,对测试集中的二维图像进行三维重建测试,生成相应的三维体素模型和准确率,以及平均准确率。14.将上述步骤中step2~step6再进一步细化,描述如下:15.进一步的,步骤step3中的深度估计模块再划分包括以下步骤:16.step301:预测新的深度二维特征:17.把step2提取的二维特征分别通过二个感知层网络分别生成特征大小为1024×2×2的f1、f2,然后把f1、f2和step2中的f一同融合生成大小为3072×2×2特征f3,再对f3使用一个特征提取层生成大小为1024×2×2融合特征f,最后把f与step2中的p相乘生成新的深度二维特征f’,计算过程如公式(1)所示:18.f'i=fi×pi(i=1,2,...1024)ꢀꢀꢀ(1)19.其中f'i表示第i个深度估计的二维特征,fi表示第i个融合二维特征,pi表示第i个特征的二维空间概率;20.step302:深度特征与编码模块提取的二维特征:21.首先对step3‑1中的f’与step2中的f进行维度扩增,其次,f’和f在扩增的维度上进行融合,生成1024×2×2×2的三维基本单元s。22.进一步的,步骤step4中解码模块具体如下:23.解码模块将step3生成的三维基本单元组通过3d解码网络生成粗糙的三维体素;该模块有4个上采样操作,每个上采样操作均使用三线性空间上采样和三维反卷积组合模块;即:首先得到的三维特征c分别进行3维反卷积和三线性空间上采样得到c1和c2,实现把三维特征扩增两倍,其次把c1和c2进行相加生成上采样模块融合特征c’;其中三线性空间上采样是从粗粒度的对三维特征进行重建,还可以对每次的特征升维有一定初始化的作用;三维反卷积操作对对象进行细粒度的三维特征重建;把三线性空间插值和三维反卷积进行融合,可以加快整个三维重建网络的收敛速度;24.通过4个上采样模块把2×2×2三维基本单元组依次变换为4×4×4、8×8ꢀ×8、16×16×16、32×32×32三维特征组,生成一个32×32×32的三维粗糙特征,最后对三维粗糙特征使用sigmoid函数,生成该粗糙三维特征对应的三维空间的概率;25.三线性空间上采样是在三维离散采样数据的张量积网格上进行线性插值的方法;该方法通过网格上数据点在局部的矩形棱柱上线性地近似计算点(x,y,z)的值;具体计算方法如下:26.首先在空间中通过c000、c100、c010、c110、c001、c101、c011、c111对c进行插值,计算xd、yd、zd计算公式如(2)~(4)所示。27.xd=(x‑x0)/(x1‑x0)ꢀꢀꢀ(2)28.yd=(y‑y0)/(y1‑y0)ꢀꢀꢀ(3)29.zd=(z‑z0)/(z1‑z0)ꢀꢀꢀ(4)30.然后现在x轴方向插值,计算公式如下,其中v[x0,y0,z0]表示该函数在(x0,y0,z0)上的值,计算过程如公式(5)‑(8)所示。[0031]c00=v[x0,y0,z0](1‑xd)+v[x1,y0,z0]xdꢀꢀꢀ(5)[0032]c01=v[x0,y0,z1](1‑xd)+v[x1,y0,z1]xdꢀꢀꢀ(6)[0033]c10=v[x0,y1,z0](1‑xd)+v[x1,y1,z0]xdꢀꢀꢀ(7)[0034]c11=v[x0,y1,z1](1‑xd)+v[x1,y1,z1]xdꢀꢀꢀ(8)[0035]然后再沿着y轴插值,计算公式如(9)、(10)所示:[0036]c0=c00(1‑yd)+c10ydꢀꢀꢀ(9)[0037]c1=c01(1‑yd)+c11ydꢀꢀꢀ(10)[0038]最后再沿着z轴插值,计算公式如(11)所示:[0039]c0=c0(1‑zd)+c1zdꢀꢀꢀ(11)[0040]最终得到了一个点的值;其中三线性插值的结果与沿三个轴的插值的顺序无关,都会生成相同的结果;根据以上推导公式我们可以得到一个计算插入点c的完整的公式,如公式(12)所示:[0041]c=v[x0,y0,z0](1‑xd)(1‑yd)(1‑zd)+v[x1,y0,z0]xd(1‑yd)(1‑zd)+[0042]v[x0,y0,z1](1‑xd)(1‑yd)zd+v[x1,y0,z1]xd(1‑yd)zd+[0043]v[x0,y1,z0](1‑xd)yd(1‑zd)+v[x1,y1,z0]xdyd(1‑zd)[0044]v[x0,y1,z1](1‑xd)ydzd+v[x1,y1,z1]xdydzdꢀꢀꢀ(12)[0045]进一步的,步骤step5中校验模块具体为:[0046]校验模块使用u‑net思想的3d解码器/解码器构成残差网络,实现对step4生成的粗糙3d特征进一步纠正与恢复;其中编码器中有五个三维卷积层,其输出通道分别为8、16、32、64和128;在解码器中,有五个三维反卷积层,内核大小为43,填充为2,跨度为1;五个层的输出通道分别为64、32、16、8和1;即:首先把step4生成的粗糙3d特征进行3d编码操作,进行三次maxpool3d操作分别生成e1、e2、e3、然后把e3通过reshape变成8192线性节点,再使用linear把8192个线性节点变成2048生成e4。3d编码操作首先把e4通过linear还原为8192个线性节点,并使用reshape把线性节点变成128×4×4×4的三维特征d4,然后把e4+d4进行三维反卷积操作生成e3;同理依次把e3+d3、e2+d2、e1+d1进行三维反卷积操作,最终得到校正后的3d精确体素。[0047]进一步的,步骤step6中模型的训练与测试为:[0048]利用训练集数据对单视图目标的三维重建模型进行训练;模型训练时使用的优化算法是adam;对adam优化器的参数进行如下设置:初始学习率a=0.001,一阶矩估计的指数衰减率β1=0.9,二阶矩估计的指数衰减率β2=0.999;数据批处理大小(batch_size)为20,迭代次数为180个周期为一个(epoch);在训练过程中保存平均准确率较高的模型权重;[0049]训练完毕后,将训练好的模型参数进行保存,当使用测试集进行三维重建时,直接使用已训练的模型生成三维体素,得到每类模型的平均准确率和整个测试集的平均准确率;[0050]在训练时使用的损失函数是二元交叉熵损失函数,表达式如公式(13)所示:[0051][0052]其中n表示总的体素单元格数;pi表示样本i被预测为正样本概率,yi表示样本i的标签,正样本为1,负样本为0;t值越小,则预测越接近于真实数据;[0053]结果的评价标准使用联合交集(iou)作为预测重建结果与真实结果的相似性度量;将阈值设置为0.35,具体计算如(14)公式所示;[0054][0055]其中和p(i,j,k)分别代表(i,j,k)的预测占用率和真实性占用率;i(·)是指标函数,t表示体素化阈值;iou值越大则表示重建的质量越高。[0056]与现有技术相比,本发明的有益效果如下:[0057]1.从二维生成三维特征的过程,使用较少的参数估计出更为丰富的小尺寸三维特征。[0058]为了更好地通过单张图像估计出目标的三维特征,使用深度估计模块对提取的二维特征f进行深度估计,生成一个与f具有强相关的深度特征f’,并将f与f’扩展的维度、融合,来生成f对应的三维特征s。相比于3d‑r2n2通过lstm把二维特征生成三维特征,参数量更少;比pix2vox直接从大尺寸二维的特征reshape成三维特征,本发明提取了更深的二维特征,并且可以通过深度估计模块生成更为丰富的三维特征。[0059]2.重建出更为精确的三维特征,训练的网络收敛速度更快。[0060]为了从小尺寸三维特征生成更为精确的大尺寸三维特征,本发明使用三线性空间插值和三维反卷积同时对三维特征进行上采样,并把结果进行融合,通过4次上采样操作,把2×2×2的特征生成为32×32×32的三维特征。这里的三线性空间插值是从粗粒度对三维特征的进行重建,三维反卷积操作是从细粒度进行三维特征重建,把两种操作进行融合,可以生成更为丰富的三维特征,在训练网络时有更好的初始化结果,且收敛速度更快。[0061]3.重建的平均准确率更高,泛化能力较好。[0062]本发明中的模型在shapenet数据集上做基准测试,得到附图中的重建结果。实验结果表明,本发明中的模型算法的平均准确率比3d‑r2n2高1.7%,比pix2vox高0.6%,并具有较好的泛化能力。此外,在向后推理时间方面,本发明模型的重建速度比3d‑r2n2快20倍。附图说明[0063]图1为本发明提供的模型整体结构图;[0064]图2为本发明提供的模型网络结构图;[0065]图3为本发明提供的模型loss曲线图;[0066]图4为本发明提供的模型iou曲线图;[0067]图5为本发明实施例部分模型的重建结果图。具体实施方式[0068]为了使本发明的目的、技术方案和优点更加清楚,下面将结合实施例对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。[0069]如图1所示,本发明提供了一种基于深度学习的单视图三维重建方法,包括4个模块,分别是编码模块、深度估计模块、解码模块和校验模块。具体的网络结构如图2所示,包括以下步骤:[0070]步骤1、首先根据设置的batch_size向网络中输入一组rgb图像,通过对图像做预处理操作,并根据预设参数把二维rgb图像读取为模型需要的tensor。[0071]步骤2、把步骤1中的tensor进行特征提取,把3×128×128的二维特征经过6个特征提取层,生成尺寸为1024×2×2的二维特征f,并对二维特征f使用sigmoid函数生成二维空间概率p。[0072]步骤3、首先把步骤2提取的二维特征f分别通过两个感知层网络分别生成两个感知特征f1、f2,然后把f1、f2和步骤2中的f融合成f3,其次对f3进行特征提取,生成融合特征f,再把f与step2中的p相乘生成新的深度二维特征f’。最后对f’与步骤2中的f进行维度扩增,并把f’和f在扩增的维度上进行融合,生成1024×2×2×2的三维基本单元s。[0073]步骤4、将步骤3生成的三维基本单元s通过4个由三线性空间上采与三维反卷积操作融合的上采样模块,实现把1024×2×2×2的三维特征生成8×32ꢀ×32×32的三维融合特征,并对三维融合特征进行提取生成1×32×32×32的三维特征,并对该三维特征使用sigmoid函数,生成粗糙的3d体素特征。[0074]步骤5、把步骤4生成的粗糙的3d体素特征使用残差网络进行错误校正。生成校正后的3d精确体素。[0075]下面结合一个具体实施例对本发明进行详细说明:[0076]实施例:[0077]步骤1、通过向网络中输入一张二维rgb图像,首先对图像做预处理操作,把图像像素变化为128×128。并通过预设参数把rgb图像读取为3×128×128大小的tensor。[0078]步骤2、把步骤1的tensor进行特征提取,共有6个特征提取层,每个特征提取层通过maxpool把特征变小一半,经过6层特征提取层,步骤1输入的tensor的尺寸会从3×128×128依次变化为64×64×64、256×32×32、512×ꢀ16×16、1024×8×8、1024×4×4、1024×2×2,最终生成1024×2×2的二维特征f,并对f使用sigmoid函数生成二维空间概率p。[0079]步骤3、首先把步骤2提取的二维特征f分别通过两个感知层网络分别生成特征大小为1024×2×2的f1、f2,然后把f1、f2和步骤2中的f一同融合生成大小为3072×2×2特征f3,其次对f3进行特征提取,生成大小为1024×2×2融合特征f,再把f与step2中的p相乘生成新的深度二维特征f’,f’计算过程如公式(15)所示。最后对f’与步骤2中的f进行维度扩增,并把f’和f在扩增的维度上进行融合,生成1024×2×2×2的三维基本单元s。[0080]f'i=fi×pi(i=1,2,...1024)ꢀꢀꢀ(15)[0081]其中f'i表示第i个深度估计的二维特征,fi表示第i个融合二维特征,pi表示第i个特征的二维空间概率。[0082]步骤4、首先把步骤3中三维特征s通过上采样模块把特征扩增两倍,具体来说,对三维特征s分别进行3维反卷积和三线性空间上采样操作生成s11和s12,实现把三维特征扩增两倍,并把s11和s12进行融合生成特征s’1。同理,通过其余3个上采样模块,把s’1生成s’2,s’2生成s’3,s’3生成s’4。再对s’4进行提取生成大小为1×32×32×32的三维特征s5,并对s5使用sigmoid函数,生成粗糙的3d体素特征q。[0083]步骤5、把步骤4中粗糙的3d体素特征q使用残差网络中进行错误校正,残差网络包括3d编码器和3d解码器。首先把步骤4中的q使用3d编码器进行三次maxpool3d操作,分别生成e1、e2、e3,然后把e3通过reshape变成8192线性节点,再使用linear把8192个线性节点变成2048,并生成线性特征e4。3d编码操作是首先把e4通过linear还原为8192个线性节点,并使用reshape把线性节点变成128×4×4×4的三维特征d4,然后把e4+d4进行三维反卷积操作生成e3。同理,依次把e3+d3、e2+d2、e1+d1进行三维反卷积操作,最终得到校正后的3d精确体素。[0084]使用测试集对本发明的网络进行训练,得到图3训练过程中的loss曲线,从loss曲线中看出网络在经过30万个batch后已经达到收敛。并对网络进行iou验证,生成图4的iou曲线,可以看出在180个epoch后网络准确率已经稳定在0.668。然后把准确率最好的训练参数进行保存,用于测试集的验证。[0085]对所有测试集通过上述5个步骤后,生成的部分目标的三维体素特征如图5所示,可以看出本发明的深度学习模型可以较好的重建出目标的大致轮廓。对所有的数据集进行测试,得到模型的最终平均准确率0.667,并与3d‑r2n2和pix2vox‑a进行比较,最终结果如表1所示。通过表1可以看出,本文模型平均准确率最高,比3d‑r2n2高10.7%,比pix2vox‑a高0.6%,并且在car、watercraft、table、chair、display、lamnp这6类都比pix2vox‑a均高0.5%以上。本模型在airplane、car、watercraft、sofa、table、chair、display、lamp、speaker、telephone这10类准确率最高。[0086]表1本发明的平均iou与3d‑r2n2、pix2vox‑a对比[0087]类别3d‑r2n2pix2vox‑a本发明网络airplane0.5130.6840.687car0.7980.8540.861watercraft0.5130.5940.609sofa0.6280.7090.713table0.5130.6010.608cabinet0.7160.7920.791bench0.4210.6160.614chair0.4660.5670.572display0.4680.5370.538lamp0.3810.4430.463speaker0.6620.7140.717telephone0.6610.7760.778rifle0.5440.6150.614平均准确率0.5600.6610.667[0088]以上为本发明的具体实施例,但本发明的结构特征并不局限于此,本发明可以用于类似的产品上,任何本领域的技术人员在本发明的领域内,所作的变化或修饰皆涵盖在本发明的专利范围之中。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1