本发明属于计算机图像处理领域,涉及一种从单幅图像中估计场景几何信息的方法,特别涉及一种使用生成式对抗网络从单幅图像中估计场景几何信息的方法。
背景技术
深度信息预测和估计,在工程应用领域中非常重要,例如,机器人、自动驾驶、增强现实(ar)和3d建模等。目前深度图像的获取方法主要有两种,分别为直接测距和间接测距。直接测距是指利用各种硬件设备直接获取深度信息。例如,tof相机通过发射连续的近红外脉冲获取目标场景中的物体到发射器之间的距离;激光雷达通过发射激光扫描被测场景中的物体,进而获得物体表面到激光雷达之间的距离;kinect利用光编码技术通过红外线发射机投射场景获得三维深度信息。但是,它们都有各自的局限:tof相机通常价格高昂,易受噪声干扰;激光雷达所捕获的三维信息体现在彩色图像坐标系下是不均匀并且稀疏的,成本比较高;kinect测量距离短,易受光线影响而产生大量噪声。
间接测距是指利用同一场景的单幅或者多幅可见光图像间接进行深度估计。根据场景视点数量的不同,可分为:基于多视图的深度估计方法、基于双目图像的深度估计算法和基于单目图像的深度估计方法。基于多视图的深度估计通常对同一场景采用摄像机阵列进行图像采集,并利用多个视点图像之间的冗余信息进行深度图像的计算。基于多视图的深度估计方法能够获得与此场景对应的较为准确的深度图像,但是摄像机阵列成本高,配置麻烦,拍摄要求高,因此在实践过程中较少使用。基于双目图像的深度估计利用类似于人类双眼的两个摄像头之间的视差,通过立体匹配技术计算深度信息。基于单目图像的深度估计只利用一个视点的视频序列和图像进行深度估计。
由于这些限制,利用单摄像机进行深度估计的方法一直得到强烈关注,这种相机体积小,成本低,节能,在消费电子产品中广泛存在。
近年来,随着深度学习的发展,学者们开始大量地尝试运用卷积神经网络(convolutionalneuralnetwork,cnn)来研究单目图像的深度估计问题.eigen等人提出的多尺度cnn模型在处理深度估计任务时,通过粗尺度(coarse-scale)与精尺度(fine-scale)两部分网络分别考虑了图像的全局结构及局部信息。saxena等人采用监督学习的方法,利用包含多尺度的局部和全局图像特征的马尔可夫随机场(mrf)对各个点的深度以及不同点的深度之间的关系进行了建模。
cn107578436a公开了一种基于全卷积神经网络fcn的单目图像深度估计方法,包括步骤:获取训练图像数据;将训练图像数据输入全卷积神经网络fcn,池化层依次输出得到特征图像;及从最后一个池化层开始将其输出特征图像进行放大处理,获得与其前一池化层输出特征图像尺寸一致的特征图像并将二者的特征图像融合;从后向前依次对每个池化层的输出特征图像融合以获得最终预测深度图像;且训练中利用随机梯度下降法sgd对全卷积神经网络fcn中的参数训练;获取需要预测深度的rgb图像输入训练后的全卷积神经网络fcn,获得对应的预测深度图像。该发明采用全卷积网络的结构,去除了全连接层,有效减少了网络的参数量,虽然可以改善卷积过程中输出图像分辨率较低的问题,但是该方法需要的训练样本特别大,训练时间长。
技术实现要素:
为解决上述问题,本发明提供了一种使用生成式对抗网络从单幅图像中估计场景几何信息的方法,所述方法包括:
将场景的图像和图像中的若干个像素之深度输入到经训练得到的生成式神经网络,得到所述场景的深度图像;所述像素之深度是指该图像中的像素所对应的场景中的点到观测者之间的距离,所述深度图像指一副图像中每个像素之深度的总体;
所述生成式神经网络的训练步骤包括:
步骤a:收集训练数据集:所述训练数据集包括若干样本,每个样本为一副图像和对应的深度图像;
步骤b:构建生成式对抗网络架构,包括两个生成式神经网络(f和g),两个判别式神经网络(dx和dy);
步骤c:将样本中的图像及其深度图像中的若干个像素之深度输入到g,得到对应的伪深度图像;将样本中的深度图像输入到f,得到对应的伪图像;所述伪图像或伪深度图像指以计算机模型生成的数据而非实际拍摄或者测量所得;
步骤d:所述判别式神经网络dy对步骤c中的样本中的图像和/或伪图像进行判别,所述判别式神经网络dy对步骤c中样本中的深度图像和/或伪深度图像进行判别;
步骤e:调整dx和dy以减少步骤d中的判别损失;
步骤f:计算步骤c中的样本中的深度图像和g生成的伪深度图像之间的差异损失,计算样本中的图像和f生成的伪图像之间的差异损失;
步骤g:调整g和f以减少步骤f中的差异损失,以增加步骤d中对伪图像和伪深度图像的判别损失;
步骤h:返回步骤c进行迭代,直至满足预设的迭代条件,保存此时的生成式神经网络g为最终生成式神经网络。
在发明的一个实施例中,所述步骤c具体为:
将样本中的图像及其深度图像的若干个像素之深度输入到g,得到对应的伪深度图像,然后将所述伪深度图像输入到f,得到伪还原图像;
将样本中的深度图像输入到f,得到对应的伪图像,然后再将所述伪图像和样本中的深度图像中的若干个像素之深度输入到g,得到伪还原深度图像;所述伪还原图像或伪还原深度图像指计算机模型生成的数据,且该计算机模型的输入数据为另一计算机模型生成的数据。
在发明的一个实施例中,所述步骤f还包括:计算样本中的深度图像和伪还原深度图像之间的差异损失,和计算样本中的图像和伪还原图像之间的差异损失。
在发明的一个实施例中,述生成式对抗网络基于如下贝叶斯概率模型利用数据进行推理:
在本发明的一个实施例中,所述生成式神经网络g和f损失函数为:
lg=lgan+λ1lrec+λ2lssc:
lgan=ey[logd(y)]+ex[log(1-dy(g(x)))],
lrec(x,g,f)=ex[||x-f(g(x))||1]+ey[||y-g(f(y))||1],
其中e为期望,x为样本中的图像,y为样本中的深度图像,
进一步的,所述判别式神经网络dx和dy的损失函数为
进一步的,所述生成式神经网络g和f为全卷积神经网络,所述全卷积神经网络包括卷积层、残差网络层、反卷积层。优选的,所述残差网络层的层数为9-21。
下面对本发明出现的术语进行说明:
场景:场景是指在一定的时间、空间内发生的一定的由客观对象或物体所构成的具体画面,通常包括室内场景或室外场景。
观测者:对场景测量的传感器/处理器设备组。由设备组在3维物理世界中的位置和姿态唯一的确定一个的点(可位于设备内/外),作为本文所提到的深度的参考测量点。
深度:场景中一个点的深度定义为其与观测者位置之间的几何距离。
实测点集:场景中的若干个点,这些点与测量者之间的几何距离使用仪器测出,在本方法中视为已知。
矩阵:是指纵横排列的二维数据表格(j.j.sylvester.″additionstothearticlesintheseptembernumberofthisjournal.″onanewclassoftheorems,″andonpascal’stheorem,″[j]thelondon,edinburghanddublinphilosophicalmagazineandjournalofscience,1850,37:363-370)。引申定义图像矩阵(简称图像)和矩阵。
神经网络:是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
生成网络:generativenet,本文中指输出形式为数据矩阵的神经网络。
真/伪数据:数据可以为图像/矩阵,真数据为对场景进行测量得到的传感器数据,伪数据为经过配置的生成网络输出的格式相似的数据。
fcn:全卷积网络fullyconvolutionalnetworks,所有层都为卷积层的神经网络。
本发明的有益效果:
1.本发明提供了使用生成式对抗网络从单幅图像中估计场景几何信息的方法,利用场景的图像和该图像中对应的少量深度信息作为输入,需要的测量数据少,简单有效、降低了场景深度的测量成本。
2.利用残差网络对生成网络网络进行优化,提高生成网络的层数,从而提高生成网络的性能和准确性。
附图说明
图1a为本发明中x所代表的图像示例;
图1b为本发明中
图1c为本发明中
图2为本发明的图像深度估计方法的流程图;
图3为本发明的图像深度估计基本原理图;
图4为本发明的对抗生成网络基本结构图;
图5为本发明的实施例的生成网络基本结构图;
图6为本发明的实施例的判别网络基本结构图。
具体实施方式
为了更好的理解本发明所提出的技术方案,下面结合附图和具体的实施例对本发明作进一步阐述。
通常,为了获取某一场景的几何信息,特别是深度信息,人们使用kinect相机拍摄场景的深度图像,而kinect的测量距离短,获取的深度信息是稀疏的。为了获取该场景全部的深度信息,需要多次测量。因此,我们希望通过使用普通相机拍摄的rgb图像和kinect相机拍摄的稀疏的深度图像来估计该场景的全部深度信息。普通相机拍摄rgb图像和kinect拍摄深度图像需要在同一位置和角度。
本发明将场景的图像和图像中的若干个像素之深度输入到经训练得到的生成式神经网络,得到所述场景的深度图像;所述像素之深度是指该图像中的像素所对应的场景中的点到观测者之间的距离,所述深度图像指一副图像中每个像素之深度的总体。
在部署阶段的具体实施步骤:
步骤1:获取场景的rgb图像x(如图1a),并实际测量300至400个(一般不须超过图像全部像素的1%),该图像对应像素之深度
步骤2:将rgb图像x和像素之深度
步骤3:启动生成式神经网络g进行前馈计算;
步骤4:将g的前馈计算结果作为伪深度图像
因此,在部署阶段前我们需要训练生成式对抗网络。
如图2所示,在本发明的一个实施例中,所述生成式神经网络的训练步骤包括:
步骤a:收集训练数据集:所述训练数据集包括若干样本,每个样本为三元组(rgb图像x,深度图像y,像素之深度
步骤b:构建生成式对抗网络架构,包括两个生成式神经网络(f和g),两个判别式神经网络(dx和dy),其中g为前述部署阶段实施步骤中的生成深度图像之网络;
步骤c:将样本中的x及
步骤d:所述判别式神经网络dx对样本中的图像x和步骤c中f生成的伪图像
步骤e:调整dx和dy以减少步骤d中的判别损失;
步骤f:计算样本中的图像x和步骤c中f生成的伪图像
步骤g:调整g和f以减少步骤f中的差异损失,以增加步骤d中对伪图像和伪深度图像的判别损失;
步骤h:返回步骤c进行迭代,直至满足预设的迭代条件,保存此时的生成式神经网络g为最终生成式神经网络,以用于部署阶段的实施步骤。
如图3所示,z代表来自实际场景所对应的数据抽象(即场景所蕴含的色彩、深度、对比度、透明度信息等),x代表场景的图像,y代表深度图像,ys代表样本中或实际测量中深度图像的若干个像素之深度。
在本发明的一个实施例中,所述生成式对抗网络基于如下贝叶斯概率模型利用数据进行推理:
其中,随机变量x代表rgb图像,随机变量y代表深度图像,随机变量ys代表样本中深度图像的若干个像素之深度,
如图4所示,在发明的一个实施例中,所述步骤c具体为:
将样本中的深度图像输入到f,得到对应的伪图像,然后再将所述伪图像和样本中的深度图像中的若干个像素之深度输入到g,得到伪还原深度图像;所述伪还原图像或伪还原深度图像指计算机模型生成的数据,且该计算机模型的输入数据为另一计算机模型生成的数据。
c1代表生成式神经网络生成的伪深度图像与实测深度图像的之间的损失;
c2代表生成式神经网络g生成的伪像素之深度与真实像素之深度的损失,
c3代表生成式神经网络f生成的伪还原图像与真实场景的图像的误差,c1、c2、c3通过损失函数共同对生成网络g进行约束。
在本发明的一个实施例中,所述生成式神经网络g和f的损失函数为:lg=lgan+λ1lrec+λ2lssc:
其中e为期望,即e[f(x)]表示括号内的函数或随机变量的期望,x为样本中的图像,y为样本中的深度图像,
相应的,判别式神经网络dx和dy的损失函数为
其中e为期望,x为样本中的图像,y为样本中的深度图像,
在上述实施例中的生成网络的结构中,所述生成式神经网络g和f为全卷积网络,所述全卷积网络包括卷积层、下采样层、残差网络、反卷积层。
如图5所示,在上述的实施例中,所述生成式神经网络g和f为全卷积神经网络,所述全卷积神经网络包括卷积层、残差网络层、反卷积层。具体如下:
第一层为卷积层conv1,conv1中有64个4×4的卷积核(滤波器)进行步长为1像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层整流线性单元(rectifiedlinearunit或relu)函数作为激活函数;
第二层为卷积层conv2,conv2中有128个3×3的卷积核(滤波器)进行步长为2像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层整流线性单元函数作为激活函数;
第三层为卷积层conv3,conv3中有256个3×3的卷积核(滤波器)进行步长为2像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层整流线性单元函数作为激活函数;
经过下采样(卷积)后,处理后的数据再进入残差网络(residualnetwork)进行卷积操作,残差网络包含许多连续的“残差模块”,每个“残差模块”包括两个卷积层:
每一层卷积层有256个3×3的卷积核(滤波器)进行步长为1像素的卷积操作,同时在进行卷积之前存在着边缘填充为1像素的(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层整流线性单元函数作为激活函数;两个卷积层之间进行概率为0.5的dropout;在第二层卷积层进行整流线性单元(rectifiedlinearunit)激活之前,进入该残差模块之前的数据与经过两次卷积处理之后的数据进行相加操作,再进入下一个残差模块。可选的,残差网络的残差模块数为9-21个。优选的,残差网络的“残差模块”数为9。
经过残差网络后,生成网络再对处理后的数据进行上采样,包括多层反卷积层:
第一层为反卷积层deconv1,deconv1中有128个3×3的卷积核(滤波器)进行步长为1/2像素的反卷积操作,同时在进行反卷积之前存在着边缘填充(padding)操作,在反卷积结束后进行归一化处理,之后再通过一个非线性激活层整流线性单元函数作为激活函数;
第二层为反卷积层deconv2,deconv2中有64个3×3的卷积核(滤波器)进行步长为1/2像素的反卷积操作,同时在进行反卷积之前存在着边缘填充(padding)操作,在反卷积结束后进行归一化处理,之后再通过一个非线性激活层整流线性单元函数作为激活函数;
第三层为反卷积层deconv3,deconv3中有3个7×7的卷积核(滤波器)进行步长为1像素的反卷积操作,同时在进行反卷积之前存在着边缘填充(padding)操作,在反卷积结束后进行归一化处理,之后再通过正切函数作为激活函数。
如图6所示,在本发明的实施例中,判别式神经网络dx和dy的结构具体为:
第一层为卷积层conv1,conv1中有64个7×7的卷积核(滤波器)进行步长为2像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层leakyrelu函数作为激活函数;
第二层为卷积层conv2,conv2中有128个4×4的卷积核(滤波器)进行步长为2像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层leakyrelu函数作为激活函数;
第三层为卷积层conv3,conv3中有256个4×4的卷积核(滤波器)进行步长为2像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层leakyrelu函数作为激活函数;
第四层为卷积层conv4,conv4中有512个4×4的卷积核(滤波器)进行步长为1像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作,在卷积结束后进行归一化处理,之后再通过一个非线性激活层leakyrelu函数作为激活函数;
第五层为卷积层conv5,conv5中有1个4×4的卷积核(滤波器)进行步长为1像素的卷积操作,同时在进行卷积之前存在着边缘填充(padding)操作。
将本发明的深度估计方法作为处理器电路或芯片的可执行的指令集,可运用于下一代激光雷达、先进摄像头等智能感知设备中,利用少量的实测点集来预测或还原实测点集对应场景的深度图像,降低了传统方法获取场景的深度图像的成本。
以上仅为本发明的具体实施例,并不以此限定本发明的保护范围;在不违反本发明构思的基础上所作的任何替换与改进,均属本发明的保护范围。