一种基于无监督深度学习的单目深度估计方法

文档序号:29210240发布日期:2022-03-12 04:39阅读:164来源:国知局
一种基于无监督深度学习的单目深度估计方法

1.本发明属于机器视觉技术领域,涉及一种基于无监督深度学习的单目深度估计方法。


背景技术:

2.深度估计是机器视觉中的经典问题,对场景的三维重建、增强现实中的遮挡及光照处理具有重要意义。近年来随着深度学习的迅速发展,基于深度学习的单目深度估计得到广泛的研究,并且取得良好精度。单目深度估计通常利用单一视角的图像数据作为输入,利用端到端的方式预测图像中每个像素对应的深度值,深度值是指从图像采集器到场景中各点的距离。对于基于有监督深度学习的单目深度估计方法,要求每幅rgb图像都有对应的深度标签,而深度标签的采集通常需要深度相机或激光雷达,前者范围受限,后者成本昂贵,而采集的原始深度标签通常是一些稀疏的点,不能与原图很好的匹配。


技术实现要素:

3.本发明的目的是提供一种基于无监督深度学习的单目深度估计方法,在保证良好精度的基础上,解决监督学习在实际应用中的局限性。
4.本发明所采用的技术方案是,一种基于无监督深度学习的单目深度估计方法,具体按以下步骤实施:
5.步骤1,构建基于无监督深度学习的深度估计以及位姿估计网络框架;
6.步骤2,将经步骤1建立的神经网络进行训练;
7.步骤3,将经步骤2训练好的网络进行测试。
8.本发明的特点还在于:
9.其中步骤1中构建过程为特征编码模块与特征解码模块,具体按以下步骤实施:
10.步骤1.1,构建深度估计网络的编解码结构;
11.步骤1.2,构建位姿估计网络的编解码结构;
12.其中步骤1.1中深度估计网络的编解码结构构建具体按以下步骤实施:
13.步骤1.1.1,图片输入,进行一次普通的7*7卷积操作,并将图片通道数调整为64通道,进行批量归一化与relu激活;
14.步骤1.1.2,将步骤1.1.1中所得特征图fm1进行最大池化操作后传入残差块中,得到通道数为256的特征图fm2;
15.步骤1.1.3,将步骤1.1.2中所得特征图fm2传入残差块中,得到通道数为512的特征图fm3;
16.步骤1.1.4,将步骤1.1.3中所得特征图fm3传入残差块中,得到通道数为1024的特征图fm4;
17.步骤1.1.5,将步骤1.1.4中所得特征图fm4传入残差块中,得到通道数为2048的特征图fm5;
18.步骤1.1.6,将fm5输入,进行上采样恢复至fm4尺寸称为fm5’
,然后将fm4和fm5’
进行特征融合后生成的特征图称为fm
45
,再进行卷积操作后,输出估计的视差图disparity1,再将fm
45
作为输入,之后不断重复上述操作,分别生成不同尺度深度图disparity2、disparity3以及disparity4作为深度估计网络的输出;
19.其中深度估计网络的编解码结构构建过程中残差块构造具体为:输入特征图,经过一个1*1卷积进行降维操作,调整通道个数,进行批量归一化与relu激活;之后经过蓝图深度卷积模块对输入进行卷积操作,进行批量归一化与relu激活;再进行一次1*1卷积,调整通道个数;然后经过通道注意力模块学习通道之间的相关性,筛选出针对通道的注意力;将最初的输入特征图与经过通道注意力后的输出进行近路连接后使用relu激活;
20.其中蓝图深度卷积模块构造过程为:
21.进行逐点卷积,将特征图在深度方向上进行加权组合,卷积核的尺寸为1*1*m,m为上一层通道数,输出通道数为m*p,p为缩放参数,此处p=0.5;再进行逐点卷积,卷积核尺寸为1*1*m*p,将上层输出特征图在深度方向上再次进行加权组合,输出通道数为m;最后进行逐通道卷积,其中卷积操作使用空洞卷积,卷积核为3*3,四层不同的残差块中分别设置注入空洞为1,1,2,3;
22.其中通道注意力模块构造过程为:
23.设输入特征图大小为w*h*c,其中w、h、c分别代表特征图的宽、高、通道数;第一步是压缩操作,经过一个全局平均池化,特征图被压缩为1*1*c向量;然后进行激励操作,经过一个全连接层,卷积核尺寸为1*1,有c*r个神经元,其中r为一个缩放参数,输出为1*1*c*r;再经过一个全连接层,输入为1*1*c*r,输出为1*1*c;最后对上述输入特征图进行通道权重相乘,原有特征向量为w*h*c,将经过通道注意力模块计算出的各通道权重值向量1*1*c与原特征图对应通道的二维矩阵相乘,得到结果输出;
24.其中步骤1.2中位姿估计网络的编解码结构具体按以下步骤实施:
25.步骤1.2.1,输入两张图片,进行一次普通的7*7卷积操作,并将图片通道数调整为64通道,进行批量归一化与relu激活;
26.步骤1.2.2,将步骤1.2.1中所得特征图fm1进行最大池化操作后传入残差块中,得到通道数为64的特征图fm2;
27.步骤1.2.3,将步骤1.2.2中所得特征图fm2传入残差块中,得到通道数为128的特征图fm3;
28.步骤1.2.4,将步骤1.2.3中所得特征图fm3传入残差块中,得到通道数为256的特征图fm4;
29.步骤1.2.5,将步骤1.2.4中所得特征图fm4传入残差块中,得到通道数为512的特征图fm5;
30.步骤1.2.6,将fm5输入,使用1*1卷积改变通道数为256,之后使用relu函数激活得到特征图fm6;
31.步骤1.2.7,对fm6使用3*3*256卷积操作提取特征输出fm7;
32.步骤1.2.8,对fm7使用3*3*256卷积操作提取特征输出fm8;
33.步骤1.2.9,对fm8使用1*1卷积改变特征图通道数为6输出fm9;
34.步骤1.2.10,对fm9的第二维度和第三维度求平均值,则变换维度生成一个形状为
[4,6]的向量,该向量为相邻帧的相对相机位姿变化;
[0035]
其中位姿估计网络的编解码结构构建过程中残差块构造步骤为:
[0036]
输入特征图w*h*c,经过一个3*3卷积,进行特征提取并且改变通道数输出为w*h*2c,之后进行批量归一化与relu激活;再次经过一个3*3卷积进行特征提取,输出为w*h*2c,之后进行批量归一化处理;
[0037]
其中步骤2中网络训练具体为利用kitti数据集对网络进行训练,具体按以下步骤实施:
[0038]
步骤2.1,将数据集打乱,生成训练样本和测试样本;
[0039]
步骤2.2,获取预训练权重;
[0040]
步骤2.3,使用adam优化器,初始学习率定为1e-4,训练过程中学习率自动下降,β1=0.9,β2=0.999;
[0041]
步骤2.3,每个epoch之后计算训练损失以及验证损失;
[0042]
步骤2.5,比较每个epoch的验证损失,保存验证损失最小的模型参数;
[0043]
其中步骤3中网络测试的具体过程为:
[0044]
将测试图像输入网络,得到深度估计结果,并计算深度估计的评价指标中各个损失以及准确率,对网络性能进行评估。
[0045]
本发明的有益效果是:
[0046]
本发明的一种基于无监督深度学习的单目深度估计方法针对有监督深度学习方法下标签的获取范围受限、成本昂贵以及采集的原始深度标签的稀疏性无法与原图中像素点很好的匹配问题,提出使用光度损失函数代替标签作为约束训练网络,在保证预测深度图的准确度的同时,忽略采集标签造成的麻烦。在网络结构中采用了注意力机制,强调目标处理对象的重要信息,抑制一些无关信息,产生更具分辨性的特征表示。采用跳跃连接,使得不仅能够利用高层特征中更强的语义信息还能融入低层特征的更多位置、细节信息,提升模型性能。采用蓝图可分离卷积,保证模型效果的同时,大大降低参数量。
附图说明
[0047]
图1是本发明的一种基于无监督深度学习的单目深度估计方法的框架示意图;
[0048]
图2是本发明的一种基于无监督深度学习的单目深度估计方法中的深度估计网络模型结构示意图;
[0049]
图3是本发明的一种基于无监督深度学习的单目深度估计方法中的位姿估计网络模型结构示意图;
[0050]
图4是本发明的一种基于无监督深度学习的单目深度估计方法中的深度估计网络模型结构中稠密残差块的结构示意图;
[0051]
图5是本发明的一种基于无监督深度学习的单目深度估计方法中的通道注意力机制模块的结构示意图;
[0052]
图6是本发明的一种基于无监督深度学习的单目深度估计方法中的蓝图深度卷积的结构示意图;
[0053]
图7是本发明的一种基于无监督深度学习的单目深度估计方法中估计的深度图结果。
具体实施方式
[0054]
下面结合附图和具体实施方式对本发明进行详细说明。
[0055]
本发明提供了一种基于无监督学习的单目深度估计方法,具体按以下步骤实施:
[0056]
步骤1,构建基于无监督学习的单目深度估计方法框架,如图1所示,框架包含两个网络结构:深度估计网络和位姿估计网络,如图2、图3所示,两个网络都是编解码结构,通过特征编码器提取多尺度图像特征,将特征传入解码器中输出估计的深度图和位姿。
[0057]
其中深度估计网络,编码结构以resnet50编码器为主干,嵌入3个模块:1)稠密残差块;2)通道注意力模块;3)蓝图深度卷积;解码结构包含2个模块:4)上采样模块;5)特征融合模块;
[0058]
其中位姿估计网络,编码结构是resnet18编码器,解码部分通过三层1*1卷积操作改变通道数,最终输出6d位姿。
[0059]
输入两个相邻帧,记作ia和ib,两帧依次输入深度估计网络,通过编码器提取多尺度特征得到5个不同尺度特征图fm1,fm2,fm3,fm4,fm5。将五个特征图传入解码器中,首先将fm5输入,进行上采样恢复至fm4尺寸称为fm5’
,然后将fm4和fm5’
进行特征融合后生成的特征图称为fm
45
,再进行卷积操作后,输出估计的深度图结果depth1,再将fm
45
作为输入,之后不断重复上述操作,分别生成不同尺度深度图depth2、depth3以及depth4作为深度估计网络的输出。若是训练状态,则将4张不同尺度的深度图通过双线性插值恢复至同一高分辨率,计算同一尺度下深度图的损失函数共同训练,对目标图像进行精确的高分辨率重建。若是测试状态,则直接输出深度图depth4;
[0060]
同时,两帧一起输入位姿估计网络,经过编码器提取特征,将最高层特征图fm5传入解码器中,最终输出估计出的两帧之间的6d位姿;
[0061]
1)稠密残差块
[0062]
残差块分为两部分直接映射部分和残差部分,resnet模型的核心就是通过建立前面层与后面层之间的“短路连接”,保证l+1层的网络一定比l层包含更多的图像信息,避免了随着网络层数加深,特征图包含图像信息逐层减少而导致的网络退化问题。而稠密残差块的思路与resnet一致,但它建立的是前面所有层与后面层的密集连接,如图4所示,由两个部分组成分别是denseblock和transition。
[0063]
在denseblock中,设置3层,各个层的特征图大小一致,可以在channel维度上连接。denseblock中的非线性组合函数采用的是batchnormalization+relu+3*3conv的结构,所有denseblock中各个层卷积之后均输出k个特征图,即得到的特征图通道数数为k。k是个超参,此处设置为256。由于特征不断重用,后面层的输入非常大,为了减少计算量,denseblock内部采用bottleneck层,在结构中增加1*1conv。
[0064]
对于transition层,它主要是连接两个相邻block,结构为batchnormalization+relu+1*1conv,主要起到压缩模型的作用;
[0065]
2)通道注意力模块
[0066]
卷积核通常是在局部感受野上将空间信息和特征维度的信息进行聚合最后获得全局信息。通道注意力模块的核心是从特征通道之间的关系上,显式的建模通道之间的相互依赖关系,具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,利用全局信息有选择的增强有益通道并抑制无用通道,从而实现特征图通道自适应校准。
[0067]
输入特征图,经过一个全局平均池化进行特征压缩操作,特征图被压缩为1*1*c向量,其中c为通道维度。压缩操作把每个二维的特征通道变为一个实数,这个实数某种程度上具有全局感受野,它表征着在特征通道上相应的全局分布。接下来是激励操作,经过一个全连接层,卷积核尺寸为1*1,有c*r个神经元,其中r为一个缩放参数,这个参数的目的是为了减少通道个数从而降低计算量,输出为1*1*c*r;再经过一个全连接层,输入为1*1*c*r,输出为1*1*c。最后就是对上述输入特征图进行通道权重相乘,逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。
[0068]
3)蓝图深度卷积
[0069]
在一些轻量级网络中,会有用深度可分离卷积用来提取特征,相比常规的卷积操作,其参数数量和运算成本较低,而深度可分离卷积依赖于跨内核的相关性,但研究发现内核内部的相关性占主导地位,可以更有效的分离标准卷积。由depthwise和pointwise两个部分组成:
[0070]
首先输入特征图,进行逐点卷积,将特征图在深度方向上进行加权组合,卷积核的尺寸为1*1*m,m为上一层通道数,输出通道数为m*p,p为缩放参数,此处p=0.5,这个参数目的是为了减少通道数从而降低计算量;再进行逐点卷积,卷积核尺寸为1*1*m*p,将上层输出特征图在深度方向上再次进行加权组合,输出通道数为m;最后进行逐通道卷积,其中卷积操作使用空洞卷积,卷积核为3*3,四层不同的残差块中分别设置注入空洞为1,1,2,3,以此在保证不损失信息的前提下增大感受野。
[0071]
步骤2,网络训练:本发明使用pytorch框架搭建网络结构,使用adam算法优化训练参数,使用kitti数据集对网络进行训练,训练过程中使用加权的光度损失函数、光滑损失函数和几何一致性损失共同作为监督信号,最终保存验证损失最小的模型参数作为最佳模型:
[0072]
其中损失函数具体定义如下:
[0073]
l=αl
mp
+βls+γl
gc
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0074]
式中,l
mp
为使用掩膜m的加权光度损失函数(lp),ls表示平滑损失,l
gc
为几何一致性损失,通过正向和反向训练网络最大化数据使用;
[0075]
其中光度损失函数根据光度一致性原理,使用估计的深度图da和相对位姿p
ab
,利用可微双线性插值将图ib转化微ia',对于合成的ia'与相应图ia,形成如下目标函数:
[0076][0077]
式中,v代表从ia成功投影到ib的有效点,对于其异常值的鲁棒性使用l1损失,为了应对真实情况中存在的光照改变的影响,添加了相似度损失ssim,对像素亮度进行标准化,光度损失函数变为如下:
[0078][0079]
式中,λi=0.15,λs=0.85;
[0080]
平滑损失函数根据平滑度先验条件,对于亮度损失在低纹理地区或重复特征区域的失效进行调整,使用边缘一致的平滑度损失,定义如下:
[0081][0082]
式中,为空间方向上的一阶导数,确保了图像边缘的平滑度;
[0083]
几何一致性函数损失具体定义如下:
[0084][0085]
通过最小化每个连续图像对之间预测的深度值之间的几何距离以促进它们尺度的一致性,在训练时,一致性能够传递给整个视频序列;
[0086]
其中d
diff
定义如下:
[0087][0088]dba
是使用两帧之间估计得到的位姿p
ab
扭曲估计得到的ia的深度图da变化得到的ib的深度图,d’b
是估计得到的插值深度图;
[0089]
掩码定义如下:
[0090][0091]
利用逐像素的auto_mask,有选择的加权像素,当相机和另一个物体都以相似的速度移动时,auto_mask会过滤掉这些静止像素。
[0092]
m=1-d
diff
ꢀꢀꢀꢀ
(8)
[0093]
通过掩膜m,降低移动物体和遮挡部分区域的权重,减轻这部分区域在计算损失时的不利影响;
[0094]
步骤3,网络测试:加载训练时保存的最佳模型参数,将测试图片输入,得到深度估计的结果,并计算相对误差、平方相对误差、均方根误差、对数均方根误差以及精确度对网络性能进行评估。各评价指标具体定义如下:
[0095]
(1)相对误差:
[0096]
(2)平方相对误差:
[0097]
(3)均方根误差:
[0098]
(4)对数均方根误差:
[0099]
(5)精确度:
[0100]
其中n为像素总数,di为第i像素的估计深度值,第i个像素对应的真实深度值;
[0101]
步骤3,将经步骤2训练好的网络进行测试:
[0102]
步骤3.1,加载模型并读取数据集;
[0103]
步骤3.2,将数据集图像传入深度估计模型和位姿估计模型中,计算两帧之间的位姿以及每帧的像素点深度得到深度图;
[0104]
步骤3.3,使用深度估计评价指标计算估计出的深度图与标签之间的各种损失以及准确率。
[0105]
本发明在kitti数据集上,输入图片尺寸为128*416,评价指标中各项损失以及精确度与其他监督学习算法对比如表1所示,其中depth代表使用深度标签监督,stereo代表使用双目,mono代表使用单目,l代表使用语义标签,f表示加入光流信息。
[0106]
表1深度估计方法性能对比
[0107][0108][0109]
本发明提出的一种基于无监督学习的单目深度估计方法,达到了无监督学习完成单目深度估计的目的,消除了监督学习中真值标签获取困难的影响;本发明在深度估计网络中引入注意机制,在编码器结构中加入注意力机制,可以获得更丰富的上下文信息,并在信道维度上捕获特征之间的相关性。为了充分利用这些特征,将密集块集成到网络中;用蓝图分离卷积代替瓶颈结构中的普通卷积,达到减少参数的目的;在视图合成中,我们使用单尺度图像完成视图合成,并使用合成图像计算损失;对于单目深度估计中存在的遮挡、动态
物体等疾病区域问题,两个掩模的联合作用可以更好地处理。在kitti数据集上的实验表明,本发明对视频帧的处理速度可以达到59fps,各评价指标绝对相对误差、平方相对误差、均方根误差、对数均方根误差以及不同阈值的精确度分别为:0.122、0.934、4.885、0.197、0.866、0.955、0.980,与其他最先进的性能方法相比,我们的方法在深度估计任务中取得了更高的性能,使用几何一致性损失,位姿估计网络可以获得全局尺度一致的轨迹,由此产生精度与立体视频训练的模型相比也是具有竞争力的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1