基于卷积神经网络的光场深度估计方法、系统及介质
技术领域
本发明涉及光场相机视差、深度估计领域,尤其涉及一种基于卷积神经网络的光场深度估计方法VOMMA-Net、系统及相应的计算机可读存储介质。
背景技术
在光场成像技术中,采用光场相机对物体进行拍摄,可得到物体的多视角图像,可等价于在同一时刻从不同位置对被摄物体进行拍照所得的结果。
目前大多数技术在从多视角图像获取视差图时,采用的都是双极性平面图像(epipolar plane image),其关键点在于,将多视角图像中连续视角的对应行或列提取出来,按其来源的视角顺序排列,随后根据每个像素点的斜率计算该像素点的视差。
但目前大多数算法在计算视差时,对反光和无纹理区域的处理结果较差,因此,需要提出一种新的算法,在达到或超过现有算法精度的基础上,进一步提升改进以解决对反光、无纹理区域的视差准确估计的问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于卷积神经网络的光场深度估计方法、系统及存储介质。
根据本发明提供的一种基于卷积神经网络的光场深度估计方法,其特征在于,包括:
视差图获取步骤:采用卷积神经网络的端到端方式,输入为多视角图像,输出为视差图;其中,所述多视角图像为彩色图或者灰度图。
优选地,所述视差图获取步骤,包括:
输入步骤:将N*N个视角的光场多视角图像在通道维度叠加,作为卷积神经网络的输入;其中,N为大于等于2的正整数;
处理步骤:输入的图像经过特征金字塔网络、空洞卷积层,并将所得结果在通道维度叠加,随后通过多个残差块之后得到所需的视差图。
优选地,所述光场多视角图像包括从微透镜阵列光场相机和/或相机阵列中得到的多视角图像;
所述空洞卷积层是包括空洞率1,2,4,8,16的空洞卷积层;
在所述处理步骤中,通过由深度可分离卷积、批标准化及线性激活组成的多个残差块之后得到所需的视差图。
优选地,所述残差块的结构采用:
输入数据分别通过一个由深度可分离卷积、批标准化按顺序组成的捷径(shortcut)和包含两个由深度可分离卷积、批标准化、线性激活按顺序组成的处理块,以及一个由深度可分离卷积、批标准化按顺序组成的处理块之后,将两个结果相加,通过一个线性激活层得到输出。
优选地,所述卷积神经网络所采用的损失函数loss为:
di,j=dispi,j-dispgt(i,j)
其中,
λ1,λ2,λ3,λ4为系数;
表示矢量,其后的括号中由逗号分隔的三个式子分别为其x,y,z坐标;
表示梯度,下标x、y分别表示沿x、y方向;
表示矢量a与b的夹角;
dispi,j表示在(i,j)位置的输出视差图,其中(i,j)代表图片中的第i行第j列像素点;
dispgt(i,j)表示在(i,j)位置的视差图的真实值;
Ii,j表示在(i,j)位置的输入图像;
n表示像素点总数,n>1;
下标d、gt分别表示输出值、真实值;
对于损失函数loss,第一项为平均绝对误差,第二项为梯度误差,第三项为正交误差,第四项为光滑误差。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述的方法的步骤。
根据本发明提供的一种基于卷积神经网络的光场深度估计系统,包括:
视差图获取模块:采用卷积神经网络的端到端方式,输入为多视角图像,输出为视差图;其中,所述多视角图像为彩色图或者灰度图。
优选地,所述视差图获取模块,包括:
输入模块:将N*N个视角的光场多视角图像在通道维度叠加,作为卷积神经网络的输入;其中,N为大于等于2的正整数;
处理模块:输入的图像经过特征金字塔网络、空洞卷积层,并将所得结果在通道维度叠加,随后通过多个残差块之后得到所需的视差图。
优选地,所述光场多视角图像包括从微透镜阵列光场相机和/或相机阵列中得到的多视角图像;
所述空洞卷积层是包括空洞率1,2,4,8,16的空洞卷积层;
在所述处理模块中,通过由深度可分离卷积、批标准化及线性激活组成的多个残差块之后得到所需的视差图。
优选地,所述残差块的结构采用:
输入数据分别通过一个由深度可分离卷积、批标准化按顺序组成的捷径(shortcut)和包含两个由深度可分离卷积、批标准化、线性激活按顺序组成的处理块,以及一个由深度可分离卷积、批标准化按顺序组成的处理块之后,将两个结果相加,通过一个线性激活层得到输出;
所述卷积神经网络所采用的损失函数loss为:
di,j=dispi,j-dispgt(i,j)
其中,
λ1,λ2,λ3,λ4为系数;
表示矢量,其后的括号中由逗号分隔的三个式子分别为其x,y,z坐标;
表示梯度,下标x、y分别表示沿x、y方向;
表示矢量a与b的夹角;
dispi,j表示在(i,j)位置的输出视差图,其中(i,j)代表图片中的第i行第j列像素点;
dispgt(i,j)表示在(i,j)位置的视差图的真实值;
Ii,j表示在(i,j)位置的输入图像;
n表示像素点总数,n>1;
下标d、gt分别表示输出值、真实值;
对于损失函数loss,第一项为平均绝对误差,第二项为梯度误差,第三项为正交误差,第四项为光滑误差。
与现有技术相比,本发明具有如下的有益效果:
本发明提供的计算视差的技术方案在达到或优于现有技术中算法精度的基础上,通过优选例进一步提升改进,以解决对反光、无纹理区域的视差准确估计的问题。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例所述卷积神经网络流程示意图,其中Multi view代表输入的多视角图像,Atrous conv表示空洞卷积,rate代表空洞率,Block代表残差块,disparity代表输出的视差图;
图2为本发明实施例所述卷积神经网络中的残差块结构示意图,其中,Block代表残差块,Sep Conv代表深度可分离卷积,BatchNorm代表批标准化,ReLU代表线性激活函数;
图3为本发明计算结果实例。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于卷积神经网络的光场深度估计方法,包括:
视差图获取步骤:采用卷积神经网络的端到端方式,输入为多视角图像,输出为视差图;其中,所述多视角图像为彩色图或者灰度图;所述光场多视角图像包括从微透镜阵列光场相机和/或相机阵列中得到的多视角图像;
所述视差图获取步骤,包括:
输入步骤:将N*N个视角的光场多视角图像在通道维度叠加,作为卷积神经网络的输入;其中,N为大于等于2的正整数,例如N为2、3、4、5、6、7、8、9、10、11、或者12;在优选例中,提取最边缘的九张多视角图像,即左上角、中上、右上角、中左、中心视角、中右、左下角、中下、右下角九张图像,在通道维度叠加,作为卷积神经网络的输入;
处理步骤:如图1所示,输入的图像依次或分别经过特征金字塔网络(featurepyramid networks)、空洞卷积(atrous convolution)层,并将所得结果在通道维度叠加,随后通过多个残差块(residual block)之后得到所需的视差图。所述空洞卷积层是包括空洞率(rate)1,2,4,8,16的空洞卷积层,其中,每层的卷积核数量为64个,大小为3*3,并将所得结果在通道维度叠加。更为具体地,在所述处理步骤中,通过由卷积核数量128,大小3*3的深度可分离卷积(depthwise separable convolution)、批标准化(batchnormalization)及线性激活(ReLU)组成的多个残差块之后得到所需的视差图。如图2所示,所述残差块的结构采用:输入数据分别通过一个由卷积核数量128个,大小3*3的深度可分离卷积、批标准化按顺序组成的捷径(shortcut)和包含两个由卷积核数量128个,大小3*3的深度可分离卷积、批标准化、线性激活按顺序组成的处理块,以及一个由深度可分离卷积、批标准化按顺序组成的处理块之后,将两个结果相加,通过一个线性激活层得到输出。
进一步地,所述基于卷积神经网络的光场深度估计方法,包括训练步骤;其中,所述训练步骤包括:
步骤101:收集带有真实视差值的训练数据,并将训练数据增量,例如通过反转90°,180°,270°,左右颠倒,上下颠倒,反相等方法进行增量,随后将增量过的数据提取出多视角图像,例如按照所述输入步骤中的方法提取出所需的九个视角;
步骤102:将步骤101中得到的数据进行切割,把多视角图像和真实视差图像分别切割,并将多视角图像和真实视差图像一一对应;例如,按照步长32个像素把九个视角图像和真实视差图像分别切割成数个64*64的图像块,并将九个视角与真实视差图一一对应;
步骤103:从步骤102中得到的切割成图像块的数据中随机提取出一部分作为验证(validation)集,其余部分作为训练(training)集输入所述卷积神经网络;
步骤104:在步骤103输入的数据上,根据如下所述根据损失(loss)函数,通过反向传播(backward propagation)的方法训练卷积神经网络:
所述卷积神经网络所采用的损失函数loss为:
di,j=dispi,j-dispgt(i,j)
其中,
λ1,λ2,λ3,λ4为系数;
表示矢量,其后的括号中由逗号分隔的三个式子分别为其x,y,z坐标;
表示梯度,下标x、y分别表示沿x、y方向;
表示矢量a与b的夹角
dispi,j表示在(i,j)位置的输出视差图,其中(i,j)代表图片中的第i行第j列像素点,下同;
dispgt(i,j)表示在(i,j)位置的视差图的真实值;
Ii,j表示在(i,j)位置的输入图像(中心视角);
n表示像素点总数,n>1;
下标d、gt分别表示输出值、真实值(ground truth);
对于损失函数loss,第一项为平均绝对误差,第二项为梯度误差,第三项为正交误差,第四项为光滑误差。
下面结合一个具体实施例对本发明的优选例进行说明。
在实际拍摄过程中,采用了一个由变焦镜头,6600*4400 CCD传感器和高精度微透镜阵列组成的光场相机,其所拍摄的照片经过处理后得到了包含5*5个视角,每个视角分辨率为800*510的黑白多视角图像。
步骤一:依据前述步骤101至步骤104训练神经网络,并将训练好的神经网络参数保存。
步骤二:从25个视角当中提取出最边缘的九张多视角图像,即左上角、中上、右上角、中左、中心视角、中右、左下角、中下、右下角九张图像,在通道维度叠加,作为前述步骤一中训练好的神经网络的输入。
步骤三:将步骤二所得图像通过步骤一所得神经网络处理后即可得到所需视差图。
可见,本发明的发明构思完全不同于现有的算法,直接以多视角图像作为输入,没有计算双极性图像,直接利用卷积神经网络处理得到输出。
本发明还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现所述的基于卷积神经网络的光场深度估计方法的步骤。
本发明还提供一种基于卷积神经网络的光场深度估计系统,包括:
视差图获取模块:采用卷积神经网络的端到端方式,输入为多视角图像,输出为视差图;其中,所述多视角图像为彩色图或者灰度图。
优选地,所述视差图获取模块,包括:
输入模块:将N*N个视角的光场多视角图像在通道维度叠加,作为卷积神经网络的输入;其中,N为大于等于2的正整数;
处理模块:输入的图像经过特征金字塔网络、空洞卷积层,并将所得结果在通道维度叠加,随后通过多个残差块之后得到所需的视差图。
优选地,所述光场多视角图像包括从微透镜阵列光场相机和/或相机阵列中得到的多视角图像;
所述空洞卷积层是包括空洞率1,2,4,8,16的空洞卷积层;
在所述处理模块中,通过由深度可分离卷积、批标准化及线性激活组成的多个残差块之后得到所需的视差图。
优选地,所述残差块的结构采用:
输入数据分别通过一个由深度可分离卷积、批标准化按顺序组成的捷径(shortcut)和包含两个由深度可分离卷积、批标准化、线性激活按顺序组成的处理块,以及一个由深度可分离卷积、批标准化按顺序组成的处理块之后,将两个结果相加,通过一个线性激活层得到输出;
所述卷积神经网络所采用的损失函数loss为:
di,j=dispi,j-dispgt(i,j)
其中,
λ1,λ2,λ3,λ4为系数;
表示矢量,其后的括号中由逗号分隔的三个式子分别为其x,y,z坐标;
表示梯度,下标x、y分别表示沿x、y方向;
表示矢量a与b的夹角;
dispi,j表示在(i,j)位置的输出视差图,其中(i,j)代表图片中的第i行第j列像素点;
dispgt(i,j)表示在(i,j)位置的视差图的真实值;
Ii,j表示在(i,j)位置的输入图像;
n表示像素点总数,n>1;
下标d、gt分别表示输出值、真实值;
对于损失函数loss,第一项为平均绝对误差,第二项为梯度误差,第三项为正交误差,第四项为光滑误差。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。