本发明涉及计算机视觉的物体检测、三维重建等领域,具体涉及基于对抗性训练的多视图立体深度估计方法。
背景技术:
从立体图像中进行深度估计是许多立体视觉任务的核心问题,并且在很多领域上有应用,例如3d重建、无人驾驶、物体检测、机器人导航和虚拟现实、增强现实等。深度估计是一种计算机视觉任务,旨在从2d图像中估计深度。这个任务输入同一场景多个视角拍摄的rgb图像,经过处理后输出改场景的深度图。深度图包含了从视图看图像中的被摄物体距离的信息。
一种典型的深度估计算法包括4个步骤:特征提取、特征匹配、深度计算和深度细化。对于深度估计的整体性能而言,每个步骤都起到至关重要的作用。由于生成对抗网络在各种视觉任务中都表现出强大的特征表达能力,因此,生成对抗网络已经被应用到深度估计中去提高深度估计精度,并且显著地超过了传统的方法。生成对抗网络最早是由goodfellow等人提出的,它同时训练了两个神经网络(生成器和判别器)。(i.goodfellow,j.pouget-abadie,m.mirza,b.xu,d.warde-farley,s.ozair,a.courville,andy.bengio.generativeadversarialnets.inadvancesinneuralinformationprocessingsystems27(nips2014),pages2672–2680,2014.)生成器输出的分布近似于真实数据的分布,判别器将区分分布是来自生成器还是真实数据,是一个相互博弈的对抗训练过程。puc.和songr.等人利用类似于生成对抗网络的端到端体系结构来学习像素之间复杂的视差关系来提高深度融合精度。(puc,songr,tylecekr,etal.sdf-man:semi-superviseddisparityfusionwithmulti-scaleadversarialnetworks[j].remotesensing,2019,11(5):487.)他们认为,利用对抗性思想,可以使训练变得简单。遵循这一思想,出现了若干方法来提升计算效率或者深度精度。然而,这些方法仍然有一些限制。尤其是,现存的网络运行存在巨大的内存消耗并且需要强大的计算处理能力,对于高分辨率场景无法处理。
技术实现要素:
本发明主要采用深度学习的方法对输入多视图立体图像进行处理,以获取连续精确的深度图。首先是利用2维卷积神经网络对输入立体图像进行特征提取,然后利用编码网络对提取出的特征向量进行编码。然后,利用生成模块进行上采样生成初始深度图。随后,将初始深度图和参考图像的基准深度图输入判别模块让其鉴别真伪。最后利用深度残差学习网络,进一步细化深度估计,以获得精确的深度估计。
为了实现上述目的,本发明提供了如下方案:
一种基于对抗性训练的多视图立体深度估计方法,所述方法包括:
步骤1:数据处理;
步骤2:构建深度估计网络;
步骤3:训练网络模型;
步骤4:利用训练完成的深度估计网络模型进行多视图立体深度估计。
所述的数据处理,具体包括如下步骤:
步骤1:数据集:对于数据集中每一组多视角下拍摄的立体图像组,在没有特殊说明的情况下,取其中一个数据集下侧图像作为参考图像,上侧图像作为对应的相邻图像。所有的立体图像都经过矫正,即只在水平方向有偏移,垂直方向无偏移。
步骤2:预处理:对数据集中每个输入立体图像进行随机裁剪,裁剪尺寸根据服务器的具体情况进行裁剪,然后对其进行归一化操作,使图像色彩值范围在[-1,1]之间。
所述的构建深度估计网络,具体包括如下模块:
模块1:初始特征提取模块
训练阶段,初始特征提取模块用于对输入的立体图像组进行特征提取,训练阶段采用立体图像组,是因为可以降低显卡gpu运行内存。测试阶段,用于提取待估计的输入立体图像的特征,具体的输入是n个待估计的输入立体图像,输出是n个一元特征。所述的2维卷积神经网络由8层卷积层构成,每层卷积层依次对输入的n个立体图像进行下采样;上述进行特征提取的8层卷积层,除最后一层,每个卷积层之后是由批量归一化(bn)层和修正线性单元(relu)组合的残差块结构,残差块结构的卷积核均为3×3,特征维度均为32,步长为1;经过上述卷积操作后,所述2维卷积神经网络的输出是n个尺寸为h/4×w/4×f的一元特征向量,其中h、w分别表示原始输入图像的高和宽,f表示特征维度;
模块2:编码模块
所述的编码模块是由5层卷积核为2×2的卷积最大池化层组成,训练阶段,输入是从特征提取模块得到的参考图像和相邻图像的n个一元特征特征向量,输出是n个一维的隐特征编码z;测试阶段,输入的是待估计的输入立体图像的特征向量,上述编码模块将一元特征向量投影到隐空间z进行编码生成特征编码z;
模块3:生成模块
所述的生成模块是由7层卷积核为2×2的反卷积层组成,用于进行上采样产生初始深度图,其输入是n个特征编码z,输出是n张单通道灰度深度图;上述生成模块的7层反卷积层,除输出层外,在每层之后是批量归一化(bn)层和修正线性单元(relu);经过上述反卷积操作后,所述反卷积神经网络的输出是n张初始深度图,初始深度图的维度为h×w×1,其中h、w分别表示原始输入图像的高和宽;
模块4:判别模块
所述的判别模块由6层卷积层组成,卷积核为5×5、步长为2,用于判别初始深度图的真伪;输入是生成模块生成的初始深度图,和标注得到的参考图像的基准深度图,输出是对生成模块生成的初始深度图的判别结果;判别模块通过判断生成模块生成的初始深度图分布与参考图像的基准深度图分布之间的em距离
模块5:深度图细化模块
所述的深度图细化模块利用深度残差学习网络,进一步细化深度估计,其输入是初始深度图,输出是最终深度图;所述深度细化操作过程如下:首先,初始深度图利用双线性插值进行上采样;然后通过一个卷积核为3x3,通道为32的卷积层,其输出结果再通过带有膨胀率为1,2,4,8,1,1的6个残差块;每个残差块结构为bn-conv-bn-relu-conv-bn,其中bn、conv和relu分别指批归一化、卷积层和修正线性单元。随后,残差块的输出送入一个维度为1,卷积核为3x3的卷积层,输出结果即为最终深度图;所述的深度细化模块输出的最终深度图维度为h×w×1,其中h、w分别表示原始输入图像的高和宽。
所述训练网络模型,具体包括如下步骤:
步骤1:将训练数据集多视图立体图像输入给深度估计网络的模型进行前向传播训练,该模型的学习参数包括权重和偏置,随机初始化参数从头开始训练网络模型。
步骤2:利用整体损失函数来训练整个深度估计网络模型,整体损失函数具体如下:
其中lgeneration生成损失函数用来训练生成网络,
所述生成损失函数为:
其中m为特征提取时获取的参考图像和相邻图像的特征点的有效像素点的未遮挡掩模。生成损失函数用来训练生成网络。
上述生成损失函数包括图像与梯度之间的l1距离、结构相似度(ssim)和深度平滑项,其中深度平滑项是为了提高初始生成深度图的平滑度,这三项定义如下:
其中,i′j→i为相邻图像ij与相邻图像ii之间的映射关系;λ1,λ2为调整梯度的百分比参数;
其中,s(·)表示结构相似度ssim,λ3为调整结构相似度的百分比参数。
其中,n是为所有图像特征像素点的总数,di为图像ii的深度,α1,α2为调整平滑度的百分比参数;
在原始生成对抗网络模型中,生成模块g和判别模块d的训练目标如下:
其中,preal为基准深度图分布,prefiner为生成模块g生成的初始深度图分布。在原始生成对抗网络在生成训练过程中,由于权重裁剪容易导致训练崩溃。本发明提出基于梯度惩罚作为一种软约束的损失函数,改进了训练过程。因此,交叉熵对抗损失函数为:
其中θ是惩罚系数,
步骤3:重复步骤1和步骤2,不断迭代训练网络模型参数,以获得最优的深度估计网络模型。
步骤4:将步骤1、步骤2和步骤3最终对抗训练学习得到的初始深度图输入到深度细化网络中进行残差学习得到最终深度图。
利用训练完成的深度估计网络模型进行多视图立体深度估计。
有益效果:
本发明提供一种基于对抗性训练的多视图立体深度估计方法,共5个步骤,包括初始特征提取、特征编码、初始深度图计算、对抗训练和深度图细化,并详细的设计每个步骤,同时将5个步骤整合到一个网络中,可端对端的实现多视图立体深度估计。本发明的深度估计方法在对抗性训练网络中,利用生成模块和判别模块的对抗性训练,采用梯度惩罚作为一种软约束的对抗损失函数,改进了原始生成对抗网络训练过程,显著地减少了网络训练和测试期间的内存占用和运行时间,提高了多视图立体深度预测精度。
附图说明
图1是本发明提供的基于对抗性训练的多视图立体深度估计方法的网络流程图;
图2(a)为训练阶段网络工作流程图、图2(b)为生成网络工作流程图、图2(c)为判别模块结构图、2(d)深度图细化模块结构图、2(e)为测试阶段系统工作流程图。
图3是本发明实施例提供的tanks&temples数据集中待估计的参考图像及其相邻图像,3(a)为参考图像,3(b)和3(c)为相邻图像;
图4是采用发明方法得到的tanks&temples数据集中实施例立体图像的最终深度图;
具体实施方式
本发明的目的是提供一种基于对抗性训练的多视图立体深度估计方法,可端对端地实现多视图立体深度估计,无需任何后处理过程,同时可显著地减少训练/测试期间的内存占用和运行时间。
下面将结合附图对本发明加以详细说明,应指出的是,所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。
图1是本发明提供的基于对抗性训练的多视图立体深度估计方法的方法流程图。图2是本发明提供的基于对抗性训练的多视图立体深度估计方法的不同阶段的工作流程图以及各模块的结构示意图。本发明提供的基于对抗性训练的多视图立体深度估计方法具体包括:
步骤1:数据处理;对含有真实视差值的图像进行随机裁剪,裁剪尺寸为640×512,对裁剪后的图像进行归一化处理,使图像像素值的范围在[-1,1]之间。选取一张图像作为参考图像,其余图像为相邻图像,如图3所示,图3(a)为参考图像,图3(b)和3(c)为相邻图像,参考图像及其相邻图像构成一组多视图立体图像。所述训练样本立体图像为dtu数据集,测试图像为tanks&temples数据集。
步骤2:构建深度估计网络;首先,提取图像的初始特征表示。通常使用一个特征表示,而不是使用原始像素强度来计算。受到描述子的启发,对于光照表面的歧义性,特征表示更稳健,因此,输入图像立体图像首先通过8层卷积层提取深度特征表示。为了进行实现更好的特征匹配,将提取的特征向量输入编码模块中进行编码生,成特征编码。同时编码结构的提出,显著地减少了训练/测试期间的内存占用和运行时间。下一步,将特征编码输入生成模块进行上采样操作,生成初始深度图。然后,利用判别模块对生成模块产生的初始深度图和参考图像的基准深度图进行判别真伪。在深度细化阶段,利用深度残差学习网络,进一步细化深度估计,产生最终深度图。
步骤3:训练网络模型:首先将预处理后的训练数据集dtu多视图立体图像输入到深度估计网络的模型中进行前向传播训练,该模型的学习参数包括权重和偏置。然后,利用
步骤4:深度估计;
通过步骤3获得了深度估计网络模型,现在通过利用数据集tanks&temples多视图立体图像进行实际场景的测试。图3是本发明实施例提供的待估计的一组立体图像。其中图3(a)为参考图像,3(b)、(c)为相邻图像。本实施例中,所述待估计实施例的立体图像是从tanks&temples数据集中提取的。参考图1和图2,本发明基于对抗性训练的多视图立体深度估计方法,使用tanks&temples数据集中实施例的立体图像进行深度估计说明(所述3阶张量维度为h×w×f,4阶张量维度为h×w×d×f,h、w分别表示原始输入图像的高和宽,d表示最大的可能视差值,默认为192,f表示特征维度):
1)将tanks&temples数据集中实施例的立体图像进行随机裁剪到640×512大小的图像块,然后对其进行归一化处理,使图像像素值范围在[-1,1]之间,完成预处理阶段后,将立体图像输入到训练好的深度估计网络中。
2)如图2所示,对实施例的输入立体图像进行特征提取。首先,利用2维卷积神经网络对立体图像进行特征特取,经过两次下采样,此时输出特征图维度为160×128×32。
3)将提取的初始特征向量输入编码模块进行编码。初始特征向量经过一个包含5层卷积核为2×2的卷积最大池化层的编码过程,此时输出大小为100的特征编码。
4)初始深度图生成。将特征编码输入生成网络中,经过由7层卷积核为2×2的反卷积层的上采样操作,此时输出特征图维度为640×512×1的初始深度图。
5)深度细化。将初始深度图输入深度残差学习网络进行细化,得到最终深度图。
图4采用本发明方法得到的tanks&temples数据集中实施例立体图像的最终深度图。通过生成对抗网络在图像深度方向收集空间和时间上的上下文信息,从而允许网络结合更多的全局信息,提高了多视图立体深度估计精度。处理整张tanks&temples数据集图像(1920×1080)可达到5hz,相比现存的深度估计网络,在测试期间的运行速度得到显著提升。
以上所述,仅为本发明中的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换和替代,都应涵盖在本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。