一种基于卷积神经网络的双目立体匹配方法与流程

文档序号:16584776发布日期:2019-01-14 18:18阅读:466来源:国知局
一种基于卷积神经网络的双目立体匹配方法与流程

本发明属于计算机视觉技术领域,具体涉及一种基于卷积神经网络的双目立体匹配方法。



背景技术:

立体匹配通常被描述为一个可分成几个阶段优化的问题。直到近些年来,随着卷积神经网络的发展,它可以被描述为一个学习任务。利用大量已有的数据进行训练,卷积神经网络实现匹配的速度和精度都要比传统方法好。目前,关于通过卷积神经网络的立体匹配方法也有不少,主要分为三类:匹配代价学习,正则化学习和端到端视差学习。匹配代价学习利用不同的训练样本集进行训练,但没有关注样本集之间的不平衡性。尽管数据驱动的相似性测量要比手工测量好,但是为了得到满意的匹配结果,该方法存在一系列必要的后期处理。正则化学习则是在学习过程中引入了正则项以确保视差图像分段性光滑的特征。端到端的视差学习主要通过设计和监督网络来得到一个较好的视差估计结果,从而实现立体匹配。

然而,尽管基于卷积神经网络的方法具有良好的性能,它仍存在如何在病态区域得到精确的视差估计的问题,这些病态区域包括对象遮挡区域,图案重复区域和无纹理区域。例如在对象遮挡区域,图像中的一个像素挡住了另外一个像素,它就很难进行正确匹配;另外,图案重复区域和无纹理区域则存在很多潜在的对应关系。这些问题都将会导致匹配失败。



技术实现要素:

针对现有技术所存在的上述技术缺陷,本发明提出了一种基于卷积神经网络的双目立体匹配方法,属于第三类方法。主要改进现有的用于视差估计的dispnet网络模型,利用亚像素卷积来替代原本网络模型中的上采样层。亚像素卷积的引入不仅提高了网络模型的良好性能,提高了匹配精度,还提高了匹配效率。

一种基于卷积神经网络的双目立体匹配方法,包括如下步骤:

步骤(1)根据原有的dispnet网络模型,通过引入亚像素卷积,设计出新的网络学习模型sdnet;

所述的步骤(1)中,引入亚像素卷积操作包括以下步骤:

1‐1.将上一层网络中的输出图直接输入隐藏卷积层,得到与输入图像大小一样的特征图,特征通道数为22,每层亚像素卷积操作所得的图像为输入图像的22倍;

1‐2.将每个像素的22个通道重新排列成一个2*2的区域,对应于高分辨率图像中的一个2*2大小的子块,排列方式为将各通道同一位置的像素按通道排列顺序依次插入,从而大小为22*h*w的特征图像被重新排列成1*(2h)*(2w)大小的高分辨率图像,其中h,w分别为低分辨率图像的高和宽。

步骤(2)收集数据集,所述的数据集来源于两个开源数据库,sceneflow和kitti,前者包括训练集和验证集,后者包括训练集、验证集和测试集,网络训练在tensorflow框架下进行。

利用训练集和验证集中的数据对sdnet网络进行训练,包括以下步骤:

2-1.对训练集和验证集中的数据进行一系列处理以扩充数据量;其中一系列处理包括颜色抖动、随机裁剪、水平翻转;。

2-2.将扩充后的数据进行归一化处理;

2-3.设置相关网络模型的参数,将训练集数据输入网络中,对网络进行不断地训练,直到l1loss收敛;

网络模型的参数设置包括选择adam为优化方式,设置学习率为1e‐4,最大训练轮次为300。训练过程首先利用步骤2‐2得到的sceneflow中的训练集数据对sdnet网络进行预训,至l1loss收敛,得到一个预训练模型,接着利用步骤2‐2得到的kitti训练集数据对预训练模型训练,至l1loss收敛;l1loss的计算公式如下:

其中n表示图像中的总像素数,dn表示网络预测出来的视差图,表示已有的标准视差图groundtruth。控制loss的作用是为了防止训练过拟合。

2-4.将验证集数据输入训练好的网络中进行验证,若连续三轮l1loss没有下降,则完成网络训练;否则,回到步骤2-3,重新进行网络训练;

步骤(3)对训练完成的sdnet进行测试,包括以下步骤:

3-1.处理测试集数据;处理测试集数据包括对数据进行颜色抖动,随机裁剪,水平移动,随后对其进行归一化处理。其中测试集数据是kitti中的测试集数据和从sceneflow的验证集中选出的部分数据;

3-2.将数据集输入至步骤(2)得到的网络中进行验证,得到视差图;

3-3.将网络模型产生的视差图与已有的标准groundtruth进行对比,通过逐像素计算(预测值-真实值)的绝对值是否小于3来判断是否预测成功。若该图像的误差小于3,则说明该像素预测成功,否则失败。最后将预测错的像素总数除以预测图像的像素总数,就是该预测图像的3‐pixelerror。

本发明有益效果如下:

本发明提出了一种基于卷积神经网络的双目立体匹配方法,通过改进现有的用于视差估计的dispnet网络模型,利用亚像素卷积来替代原本网络模型中的上采样层。相比于原上采样操作在较高的分辨率图像上进行,亚像素卷积直接在低分辨率图像上进行卷积计算,这不仅提高了计算效率,对于整个网络而言则加快了匹配速度,同时它还提高了网络模型的良好性能,增加了丰富的细节信息,解决了病态区域无法正确匹配的问题。

附图说明

图1为本发明sdnet网络结构图。

具体实施方式

一种基于卷积神经网络的双目立体匹配方法,包括如下步骤:

步骤(1)根据原有的dispnet网络模型,通过引入亚像素卷积,设计出新的网络学习模型sdnet(s:sub-pixel,表示亚像素,d:disparity,表示视差)。sdnet网络模型如图1所示,网络主要分为两部分,收缩部分和扩大部分,收缩部分包括conv1‐conv6b,扩大部分包括亚像素卷积(sub‐pixelconvn),卷积(iconvn,prn)和loss层交替进行,最后的预测视差图由pr1输出;

亚像素卷积操作包括以下步骤:

1‐1.将上一层网络中的输出图直接输入hiddenlayers(隐藏卷积层),得到与输入图像大小一样的特征图,但特征通道数为22(这里每层亚像素卷积操作所得的图像为输入图像的22倍);

1‐2.将每个像素的22个通道重新排列成一个2*2的区域,对应于高分辨率图像中的一个2*2大小的子块,按照特定位置,周期性地插入到高分辨率图像中,从而大小为22*h*w(h,w分别为低分辨率图像的高和宽)的特征图像被重新排列成1*(2h)*(2w)大小的高分辨率图像;

步骤(2)收集数据集,包括训练集,测试集,验证集。利用训练集和验证集中的大量数据对sdnet网络进行训练,包括以下步骤:

2-1.对训练集和验证集中的数据进行一系列处理以扩充数据量;

2-2.将数据进行归一化处理;

2-3.设置相关网络模型的参数,将训练集数据输入网络中,对网络进行不断地训练,直到l1loss收敛;

2-4.将验证集数据输入训练好的网络中进行验证,若l1loss小,则完成网络训练;否则,回到步骤2-3,重新进行网络训练;

数据集主要来源于两个开源数据库,sceneflow和kitti,前者主要有训练集和验证集,后者有训练集,验证集和测试集,网络训练在tensorflow框架下进行。

2‐1对训练集和验证集的数据进行一系列处理包括颜色抖动,随机裁剪,水平翻转等,以扩充数据量。

2‐3网络参数设置包括选择adam为优化方式,设置学习率为1e‐4等,训练过程首先利用处理过的sceneflow中的训练集数据对sdnet网络进行预训,得到一个预训练模型,然后在这个预训练模型上进行微调,接着训练kitti数据。l1loss的计算公式如下:

其中n表示图像中的总像素数,dn表示网络预测出来的视差图,表示已有的标准视差图groundtruth。控制loss的作用是为了防止训练过拟合。

步骤(3)对训练完成的sdnet进行验证,包括以下步骤:

3-1.处理验证集数据;

3-2.将数据集输入网络中进行验证,得到视差图;

3-3.将网络模型产生的视差图与已有的标准groundtruth进行对比,通过计算3-pixelerror来判断是否匹配成功。若该图像的误差小于3-pixelerror,则匹配成功,否则失败。

测试集中的数据主要是kitti中的测试集数据和从sceneflow的验证集中选出的部分数据。

3‐1.处理测试数据包括对数据进行颜色抖动,随机裁剪,水平移动等,随后对其进行归一化处理。

3‐3.3‐pixelerror指的是视差值相差3,其计算方式如下:将预测出的视差图与已有的标准视差图groundtruth按对应像素逐个进行视差值差值的计算,若该数小于3,则说明该像素预测错误,反之正确,最后将预测错的像素总数除以预测图像的像素总数,就是该预测图像的3‐pixelerror。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1