CN111583340B - 基于卷积神经网络降低单目相机位姿估计误差率的方法 - Google Patents
基于卷积神经网络降低单目相机位姿估计误差率的方法 Download PDFInfo
- Publication number
- CN111583340B CN111583340B CN202010351019.6A CN202010351019A CN111583340B CN 111583340 B CN111583340 B CN 111583340B CN 202010351019 A CN202010351019 A CN 202010351019A CN 111583340 B CN111583340 B CN 111583340B
- Authority
- CN
- China
- Prior art keywords
- feature
- image
- feature point
- layer
- points
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 33
- 238000000605 extraction Methods 0.000 claims abstract description 34
- 239000011159 matrix material Substances 0.000 claims abstract description 32
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 23
- 238000013461 design Methods 0.000 claims abstract description 14
- 239000013598 vector Substances 0.000 claims abstract description 13
- 238000012549 training Methods 0.000 claims description 35
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000005070 sampling Methods 0.000 claims description 17
- 230000004913 activation Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims description 8
- 238000006073 displacement reaction Methods 0.000 claims description 7
- 238000013528 artificial neural network Methods 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 4
- 238000009825 accumulation Methods 0.000 claims description 3
- 230000000737 periodic effect Effects 0.000 claims description 3
- 230000004931 aggregating effect Effects 0.000 claims description 2
- 230000006798 recombination Effects 0.000 claims description 2
- 238000005215 recombination Methods 0.000 claims description 2
- 238000012216 screening Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 claims description 2
- 230000010339 dilation Effects 0.000 claims 1
- 238000005192 partition Methods 0.000 claims 1
- 238000005286 illumination Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 21
- 230000000694 effects Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 13
- 230000006872 improvement Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 244000000188 Vaccinium ovalifolium Species 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 4
- 230000007613 environmental effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 206010034719 Personality change Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
Abstract
本发明基于卷积神经网络降低单目相机位姿估计误差率的方法,是在单目相机条件下进行算法设计。该方法首先自主设计基于特征点提取与特征点匹配的卷积神经网络算法,从两张图像中提取不易随着光照角度等条件变化消失的点作为特征点,并对特征点使用256位向量进行描述作为特征点描述子。接着使用一个矩阵将特征点与描述子对应存储。之后对两张图像生成的特征点划定区域,依照特征点描述子计算各区域内的特征点之间的距离,将距离最小的特征点进行特征点匹配。特征点匹配精度比基于ORB得到的特征点匹配精度高了14%。然后将最小化得到的匹配对之间的投影误差,实现相机位姿估计。对比基于ORB进行相机位姿估计的绝对误差降低了50%。最后画出相机运行轨迹。
Description
技术领域
本发明属于实时定位与建图技术领域,具体涉及一种基于卷积神经网络降低单目相机位姿估计误差率的方法。
背景技术
相机在一个完全陌生的场景中,对身处的环境和自身位置没有任何认知。它需要依靠传感器收集各类信息,理解周围场景信息,实现对自身位姿进行估计。这种通过环境信息,从而进行自身姿态估计,得到旋转和位移矩阵的方法称为相机位姿估计。它是属于同时定位与地图构建技术(SLAM)领域中前端视觉里程计(Visual Odometry,VO),是视觉里程计的关键步骤,在SLAM领域占有重要地位。它具有庞大的市场需求,广泛应用于移动机器人定位,以及三维地图重建,例如扫地机器人,无人驾驶等。相机位姿估计是目前的研究热点领域。
在视觉SLAM研究与应用中,传感器普遍采用单目相机,深度相机和多目相机。单目相机凭借其成本低,结构简单,可使用范围广,实时性和鲁棒性强等特征,广泛应用于移动机器人,汽车等设备中。现有的大部分论文采用一定的数学方法,通过单目相机获得的信息,计算出相机的姿态变化,计算方法主要分为直接法和特征点法两种方案。
直接法主要有SVO,LSD-SLAM等主流框架,它的主要思路是基于灰度不变假设。假设一个空间点在各个视角下,成像的灰度是不变的。根据图像的“大量像素点”在场景中的明亮变化,最小化亮度误差,从而计算相机运动。其中按照“大量像素点”的特点一般将直接法分为稀疏直接法,半稠密直接法,稠密直接法。稀疏直接法按照点角选择不易消失,灰度不易变化的点作为计算点。半稠密直接法舍弃那些像素梯度小的点作为计算点。稠密直接法使用所有像素点,计算量非常大,无法在CPU上实时计算。在准确率方面直接法基于理想条件中完成,容易受到环境影响。同时当图像中缺少梯度信息时,准确率大大降低。而稀疏直接法和半稠密直接法类似于特征点法。所以本专利采用基于特征点法进行相机位姿估计。
特征点法主要应用于ORB-SLAM等框架,它的主要思路是根据空间中点在图像中的投影位置,最小化投影误差。首先它从图像中提取随着光照角度等条件变化不容易消失的点作为特征点,并对每一个点生成三十二位的特征描述子。然后进行图像间的特征点匹配,对匹配的像素点通过PnP(Perspective-n-Point)等方法最小化投影误差,从而计算相机运动。最后使用非线性优化对相机位姿进行优化。
基于特征点法进行相机位姿估计的缺点主要有两点:第一它的准确率取决于特征点选取的数量以及特征点之间匹配的准确率。在纹理特征弱或者环境特征少的地方,因为提不出角点,导致特征点法无法工作。第二使用暴力匹配器等进行特征点匹配存在大量计算量,而且将全图特征点进行匹配,当存在遮掩或者特征点消失时容易进行过度匹配,使得特征点匹配准确率较低。
综上所示,基于特征点法的相机位姿估计因为特征点提取与匹配的问题导致其在复杂环境中准确率较低。
发明内容
本发明的目的在于针对现有技术的不足,提供了一种基于卷积神经网络降低单目相机位姿估计误差率的方法,实现减少相机位姿估计的误差。
为达到上述目的,本发明采用如下技术方案来实现的:
基于卷积神经网络降低单目相机位姿估计误差率的方法,包括以下步骤:
1)制作用于提取特征点和生成特征点描述子的数据集,并将训练数据划分为训练数据集和验证数据集;
2)搭建特征点提取与特征点描述子生成的卷积神经网络模型,使用训练数据集训练模型,当训练的模型在验证数据集上达到设定的精度,保存网络模型参数;
3)使用训练好的模型对测试图像提取特征点并生成特征点描述子,之后搭建连接层整合特征点坐标和特征点描述子;
4)设计特征点匹配算法,按照特征点描述子对所有特征点进行匹配,得到特征点匹配对;
5)基于匹配成功的特征点进行相机位姿估计。
本发明进一步的改进在于,步骤1)的具体实现方法如下:
101)制作用于提取特征点和生成特征点描述子的数据集,在TUM数据集的基础上提取所有彩色图像的特征点作为初始化特征点;
102)制作用于提取特征点和生成特征点描述子的数据集,对相邻两张图像初始化特征点生成特征点匹配对,将匹配对作为数据集的标签用于模型训练。
本发明进一步的改进在于,步骤102)的具体实现方法如下:
制作用于提取特征点和生成特征点描述子的数据集的标签时,从TUM数据集中按顺序将前一张图像的位置记作相机的位置1,后一张图像的位置记作相机的位置2;已知相机在位置1的旋转矩阵为q1,位移矩阵表示为t1,拍摄得到第一张图像,空间中的特征点P在相机坐标系下的坐标为p1;相机在位置2的旋转矩阵用四元数表示为q2,位移矩阵表示为t2,求解空间中的特征点P在相机坐标下的坐标p2;通过公式计算特征点P在第二张图中的位置p2,将p1和p2结合从而生成匹配对作为标签;
本发明进一步的改进在于,步骤2)的具体实现方法如下:
201)搭建特征点提取与描述子生成的卷积神经网络模型时,根据数据集标签和多任务的特性,对网络结构进行设计;
202)训练特征点提取与描述子生成的卷积神经网络模型时,根据数据集标签和多任务的特性,对网络结构使用多损失函数循环训练的方法。
本发明进一步的改进在于,步骤201)的具体实现方法如下:
2011)搭建特征点提取与描述子生成的卷积神经网络模型时,分为编码层和解码层,其中编码层对图像进行降采样提取特征,解码层进行像素点预测;
2012)搭建特征点提取与描述子生成的卷积神经网络模型时,对编码层只使用小卷积核的卷积计算,同时为了整数倍降采样,因此编码网络中使用卷积核大小为1,3,4的标准卷积核进行循环累加;
2013)搭建特征点提取与描述子生成的卷积神经网络模型时,对解码层使用两个分支网络分别完成特征点提取和特征点描述子生成两个任务。
本发明进一步的改进在于,步骤202)的具体实现方法如下:
训练特征点提取与描述子生成的卷积神经网络模型时,使用交叉熵损失函数训练特征点提取任务,使用Triplet loss损失函数训练特征点描述子;通过先交叉熵损失函数训练,再基于Triplet loss损失函数训练的顺序,以循环的方式对特征点提取与描述子生成的卷积神经网络模型进行交替训练。
本发明进一步的改进在于,步骤3)的具体实现方法如下:
使用训练好的模型对测试图像提取特征点并生成特征点描述子后,搭建连接层,对输出的特征点和特征点描述子使用N*(2+256)的矩阵表示;其中N表示特征点个数,前两列存储特征点两个坐标,后面第三列到最后一列存储特征点描述子的向量。
本发明进一步的改进在于,步骤4)的具体实现方法如下:
匹配两个图像的特征点时,根据第一张图的特征点的位置,在第二张图确定相同位置的点,以该点为中心,140像素为边长划定矩形范围;在这个范围内选取第二张图提取出的特征点,计算两张图像中距离最近的特征点作为特征点匹配对。
本发明至少具有如下有益的技术效果:
本发明设计了一个特征点提取与特征点描述子生成的卷积神经网络(FeaturePoint and Feature description Convolutional Neural Networks,FPFDCNN),可以从图像中提取随着光照角度等条件变化不容易消失的点作为特征点,并对每一个点生成256位的向量作为特征点的描述子。FPFDCNN网络与ORB算法相比较,在清晰场景或者模糊的场景中,可以提取的更多的更好的特征点。
本发明设计了一个特征点匹配算法(Range Matcher),根据两张图像的特征点和特征点描述子快速对特征点进行匹配,得到特征点匹配对。FPFDCNN网络结合RangeMatcher匹配算法可以得到提高两幅图像的特征点匹配的准确率。
附图说明
图1为FP数据集示意图,图1中(a)为RGB图像,图1中(b)为每个RGB图像生成标签文本文件,图1中(c)为标签文件中特征点坐标及对应下一张图特征点坐标;
图2为FPFDCNN模型结构示意图;
图3为Pixel Shuffle重排特征图像;
图4为按照相机位姿变化进行特征点匹配算法示意图;
图5为清晰图像匹配结果示意图;图5中(a)为ORB算法结合BF Matcher匹配器对清晰图像进行特征提取与匹配的效果图,图5中(b)为FPFDCNN网络集合Range Mather匹配器对清晰图像进行特征提取与匹配的效果图。左边表示清晰图像第一张原图,右边表示清晰图像第二张原图;
图6为模糊图像匹配结果示意图;图6中(a)表示ORB算法结合BF Matcher匹配器对模糊图像进行特征提取与匹配的效果图,图6中(b)表示FPFDCNN网络集合Range Mather匹配器对模糊图像进行特征提取与匹配的效果图。左边表示第一张模糊原图,右边表示第二张模糊的原图;
图7为不同匹配器的匹配效果图;图7中(a)表示BF Matcher匹配效果图,图7中(b)表示Range Matcher匹配效果图。
图8为相机轨迹估计示意图。
具体实施方式
以下结合附图和实施例对本发明做出进一步的说明。
本发明提出了一个FP数据集(Feature Point)用于提取特征点训练。如图1所示
FP数据集是基于TUM数据集的rgbd_dataset_freiburg1_desk2场景生成。它包含640张分辨率为640*480的RGB图像,分辨率为640*480的深度图像以及三个文本文件。文本文件分别是:相机位姿信息,包括时间戳对应相机在世界坐标中的位置及角度。彩色图像信息,包括时间戳对应RGB图像名。深度图像信息,包括时间戳对应深度图像。通过时间戳关联信息,可以得到在每一个时间戳下,包含RGB图像的图像名及其对应的深度图像的图像名和相机位姿信息的关联文本文件。
FP数据集具体的制作步骤是:
1.对第一张图像提取不易随着光照角度等条件变化消失的点作为图像的初始化特征点。这些点需要对噪声的影响,对灰度变化、图像形变以及遮挡等都有较好的适应能力。因此选择Harris角点检测算法选择沿任意方向移动有明显灰度变化的点作为角点。针对TUM数据集图像特点设置Harris参数大小。其中角点检测的领域大小为3,滑动窗口大小为3。当得到的角点分数大于0.01倍的最大角点分数标记为角点。最终得到第一张图像的特征点记作初始化特征点。
2.根据初始化特征点的坐标和TUM数据集中的关联文本文件。已知相机在位置1的旋转矩阵表示为q1,位移矩阵表示为t1,拍摄得到第一张图像,空间中的特征点P在相机坐标系下的坐标为p1。相机在位置2的旋转矩阵表示为q2,位移矩阵表示为t2,求解空间中的特征点P在相机坐标下的坐标p2。公式1和公式2表示点P通过相机矩阵变化得到相机坐标下的坐标信息。联立公式1和公式2得到公式3,通过公式3计算点P在第二张图中的位置p2。将p1和p2结合从而生成匹配对。
q1*P+t1=p1 (公式1)
q2*P+t2=p2 (公式2)
3.对每张图像保留其特征点坐标(a,b)和它与下一张图像匹配的特征点(c,d),生成标签(a,b,c,d)。最终得到FP数据集。
本发明提出了一个用于提取特征点和生成特征点描述子的卷积神经网络(Feature Point and Feature description Convolutional Neural Networks,FPFDCNN)。如图2所示。
FPFDCNN网络它属于Encoder-Decoder框架。它主要由输入层Input layer,编码层Encoder,解码层Decoder,输出层Output Layer,连接层Concatenate Layer五个部分组成。
输入层主要采用FP数据集的RGB图像作为输入图像分辨率为640*480*3。转化为灰度图像640*480*1,然后进行图像预处理,使用归一化方法将所有像素值除以255,映射到0到1范围内。
FPFDCNN网络中Encoder网络具体设计遵循原则如下:
1.通常卷积神经网络使用卷积层和池化层进行网络训练,但是卷积运算是可逆的,池化运算是不可逆的,之后需要对降采样卷积网络进行还原,因此只选择卷积层对其进行降采样特征提取,所以Encoder网络是一个基于全卷积的神经网络。
2.因为整个网络架构需要通过Decoder网络将Encoder网络特征图像上采样还原成原始图像相同的分辨率作为输出,所以需要将特征图像以整数倍降采样,便于之后上采样对图像还原。
3.卷积运算中使用小卷积核进行卷积。因为小卷积在和大卷积核有相同感受野时,网络参数更小,计算参数总量更少,计算速度更快。而且小卷积核对比大卷积核,整合了多个非线性激活层,增加了判别能力。
4.特征点生成描述子是用256位向量表示,因此特征描述子的生成网络最后一层通道数为256。
遵循上述原则,Encoder网络具体设计如下:
1.卷积计算的设计,遵循小卷积核和特征图像以整数倍降采样的设计原则。因为每层特征图像feature_mapi输出大小如公式4所示。表示第i-1层的特征图像大小feature_mapi-1进行padding填充图像得到新的特征图像,新的特征图像使用带有空洞dilation的卷积核weights按照stride步长进行卷积,得到卷积之后的特征图像。为了使feature_mapi为feature_mapi-1的一半,将上一层特征图像成功进行降采样,同时使用标准卷积核进行卷积计算,dilation为1。所以设置stride值为2,padding大小为2,weight为4。同时在不改变特征图像大小的基础上为了增加降采样网络的深度,提高卷积神经网络的推理准确率,采用常用的3*3,1*1的卷积核,使得输出特征图像大小不变。当卷积核大小为3时padding值为1,stride值为1。当卷积核大小为1时padding值为0,stride值为1。综上所述Encoder网络中确认使用卷积核大小为1,3,4的标准卷积核累加,从而对图像进行卷积计算,得到最终的输出特征图像。
2.选择激活函数计算时,因为图像的特征检测属于点角检测,边界位置因为提取特征所以会出现大量负值。因此在激活函数选取中不仅需要更容易优化训练,同时需要对负数友好。选取ReLu函数的改进函数Elu[37]激活函数,如公式5所示。Elu激活函数不仅可以如同ReLU等激活函数可以缓解梯度消失问题,而且Elu存在负值,可以将激活单元的输出均值往零值推进,从而达到输出范化的效果。
3.将卷积层进行叠层构建Encoder网络模型。因为卷积神经网络随着网络深度的增加,它对特征的提取是从高级特征例如区域或面的提取,从低级特征例如角或边的提取。所以卷积神经网络开始应该进行特征图像的降采样,之后随着层数的递增卷积核尺度越小,深度越深,就可以对低级特征提取的越细。
4.Layer1到Layer6设计使用尺度大小为4的标准卷积核和尺度大小为3的标准卷积核进行图像降采样,因为最后一层通道为256,因此卷积核的通道数小于256。最终得到输出特征图像。
5.Layer9到Layer10表示对特征图像进行判断,是否为特征点。因为特征点检测输出是二分类问题,sigmoid激活函数可以将每一个输出值映射在0到1之间的,用来表示该点是特征点的概率。因此最后一层分类判别选择sigmoid激活函数如公式6所示。
6.Layer7到Layer8表示对特征点生成描述子,因为每个像素需要256位的向量作为特征点的描述子,所以它的特征图像的通道数为256。
FPFDCNN网络中Decoder网络主要是对特征图像进行上采样,为了完成特征点提取和特征点描述子生成两个任务,Decoder网络分成两支。第一个是对Layer10层进行上采样,恢复成640*480*1的特征图像,判断每个像素是否为特征点。第二个是对Layer7层进行上采样,恢复成640*480*256的特征图像,得到每个像素的特征描述子。
Decoder网络的设计具体遵循的原则如下:
1.Layer10层进行上采样的过程是对特征点进行聚集,所以要求在提高分辨率的同时,希望保持特征信息不丢失,同时计算量较小。
2.Layer8层进行上采样的过程是生成特征点描述子,每个特征点使用256位向量进行特征点描述,需要上采样得到640*480*256的输出。上采样过程要求得到的特征图像中每个像素点附近梯度变化的方式符合线性变化,同时保证计算速度快。
遵循上述规则,Decoder网络具体设计如下:
1.在FP层对Layer10层进行上采样的过程使用Pixel Shuffle进行上采样。使用Encoder网络对原图像进行四次降采样,特征图像缩小16倍,从而得到Layer10层的特征图像,分辨率为30*40,通道数为256等于162。在FP层对整个30*40*256*1的特征图像进行Pixel Shuffle操作,缩放因子为16,最终得到640*480*1的特征图像。如图3所示PixelShuffle具体实现方分为三步:
1)输入特征图像x的大小为1*256*30*40。输入对特征图像H缩放倍数为16,W缩放倍数为16。
2)对x按照输出特征图像大小使用Reshape函数进行重新排序,按照16个周期特征图像进行聚合。输出1*1*16*16*30*40特征图像。
3)按照周期筛选的顺序按每一行进行特征图像重组,输出1*1*30*16*40*16特征图像,最终还原成1*640*480特征图像。
2.在FD层对Layer7层进行上采样的过程使用双线性插值。直接使用双线性插值(bilinear)对30*40*256每个通道的特征图像进行计算然后进行标准化使得所有点在零附近,最终得到640*480*256的特征图像。为了便于存储,对于最终得到的特征图像的每个像素生成描述子的具体做法是判断每个值是否大于0,大于标记为1,否则标记为0。从而对每个像素生成256位整数向量。
Output模块中,在FP_nonzero层对于得到的1*640*480特征图像,每个值表示该像素是特征点的概率。选取概率不为零的像素点作为特征点,得到N个特征点FP。每个特征点包含赋予它所在的位置二维坐标信息(x,y),生成N*2矩阵。这样当周围环境出现极端现象例如没有明显特征纹理时,也可以通过重新调整特征点概率,从而随机选取像素点作为特征点,转化为稀疏特征直接法解决相机位姿估计问题。或者当环境中全是特征纹理时,为了避免选取过多的特征点,也可以选取概率最大的N个像素点作为FP。
Concatenate Layer模块中分为FD_FP层和Out层两层。在FD_FP层将FP_nonzero层得到的N*2的特征点矩阵FP与FD层得到的640*480*256的特征点描述子,按照坐标位置一一对应提取特征点描述子,最终生成N*256矩阵,记作FD。在Out层将FP_nonzero层和FP_FD层得到的矩阵进行横坐标维度结合,得到N*(2+256)作为整个网络的输出层。便于之后的特征匹配时特征点与特征点描述子之间的互相查找。
综上所述,FPFDCNN网络结构如下表所示:
FPFDCNN网络具有两个任务,训练使用多损失函数进行训练。针对特征点选取判断是否为特征点,属于二分类问题,使用交叉熵作为损失函数进行训练。针对特征点描述子生成属于图像匹配问题,可以使用TripletLoss作为损失函数进行训练。因为两个任务在Decoder网络不需要进行训练,所以它们调节的参数都是Encoder中卷积核的参数,Layer1到Layer6属于共同参数,Layer7到Layer10属于不同参数。同时训练特征点提取任务时,也是通过特征点的向量整合成概率对其描述。所以本文先使用交叉熵函数对整个网络进行训练,然后再使用Triplet Loss对训练好的网络进行微调。
FPFDCNN具体训练方法如下:
1.针对每张图像选取特征点。对每张图像将标签标记的特征点记为1,其他点记为0。生成640*480*1训练目标q。网络推理结果生成特征图像为q。使用交叉熵损失函数(公式7)进行训练,最小化每个像素点推理结果与真实结果之间的损失。
2.针对特征点匹配,训练特征点描述子。从两张图像中按照标签随机选择三个特征点合成一个三原子,其中包括两个匹配成功的正原子,其中第一张图像中特征点坐标记作a,第二张图像中特征点坐标记作p。一个匹配失败的负原子,选择第一张匹配不成功离a坐标较远的点n。使用TripletLoss(公式8)作为损失函数进行训练,最小化相同点之间的距离,最大化不同点之间的距离。
L=max(d(a,p)-d(a,n)+margin,0) (公式8)
3.训练过程中一次训练一张图像,设置batch-size设置为20,epoch设置为10000。基于交叉熵的特征点提取训练学习率设置为0.1。基于Triplet loss训练特征点描述子对之前的网络进行微调,学习率设置为0.01。
本发明提出了一个按照相机位姿变化进行特征点匹配算法,如图4所示。
为了寻找最佳的匹配对,本节设计了一个新的特征点匹配方法范围匹配器(RangeMather)。
具体设计如下:
1.使用训练完成的FPFDCNN网络,为了便于之后的特征点匹配时对特征点描述子的查找,使用矩阵格式将每一行特征点和特征点描述子建立映射关系,类似于字典结构。所以将两张图像进行推理得到的按照特征点概率排序的特征点和描述子联合,输出矩阵Out其大小为N*(2+256),其中N表示匹配的特征点的数量。
2.从一个张图像中选取某个特征点Out1尺度大小为1*(2+256),它的描述子是第三列到最后一列用x表示,尺度大小为1*256。然后对应第二张图像同一个中心位置,边长为140的矩形范围内寻找n个点。推理出的特征点Out2尺度大小为n*(2+256),它的描述子是第三列到最后一列用y表示,尺度大小为n*256。然后通过公式9计算第二张第j个特征点和Out1距离值,得到最小的距离值对应Out2特征点坐标。将两个特征点坐标进行连接,从而得到匹配对。
3.针对神经网络可能选取一些超出范围的特征点或者因为相机位姿变化被遮挡的特征点,为了防止强行匹配特征点。所以按照匹配对的特征点距离将匹配对从小到大排序,选取前一百个特征点作为“好的”匹配对。
根据上述方法得到两幅图像中的匹配对得到2D坐标(u,v),结合深度图像得到3D坐标(X,Y,Z),同时已知相机内参(fx,fy,cx,cy)矩阵和相机畸变参数,求解相机在世界坐标中的旋转矩阵r和位移矩阵t。具体使用PNP方法进行3D到2D特征点映射,如公式10所示。将旋转和平移矩阵进行计算,如公式11所示得到相机在世界坐标中的位置pose。
【本发明与现有方法的性能对比】
基于ORB算法实现的相机位姿估计,在CPU平台较为常用。FPFDCNN网络同样需要应用于相机位姿估计中,所以基于CPU平台对比ORB和PFPDCNN网络性能。为了充分对比两个算法的性能,选择室内的清晰图像,模糊图像的图像进行实验。
使用两种方法对相似的两张清晰图像进行特征点提取,按照特征点概率排序选500个特征点,对这些特征点进行特征匹配,效果图如图5所示。其中a表示ORB算法结合BFMatcher匹配器对清晰图像进行特征提取与匹配的效果图,b表示FPFDCNN网络集合RangeMather匹配器对清晰图像进行特征提取与匹配的效果图。左边表示清晰图像第一张原图,右边表示清晰图像第二张原图。可以看出在清晰图像上,FPFDCNN网络结合Range Mather匹配器得到的特征点匹配对效果更好,大幅度出错概率更小。
使用两种方法对相似的两张模糊图像进行特征点提取,效果图如图6所示,其中a表示ORB算法结合BF Matcher匹配器对模糊图像进行特征提取与匹配的效果图,b表示FPFDCNN网络集合Range Mather匹配器对模糊图像进行特征提取与匹配的效果图。左边表示第一张模糊原图,右边表示第二张模糊的原图。模糊图像上可以更加清楚的看到,基于FPFDCNN网络结合Range Mather匹配器得到的特征点匹配对的效果更好,特征点分布的范围更广,大幅度出错的概率更小。
针对这些图像进行定量化分析。根据FP数据集中每张图像存在真实相机位姿变化,因此将第一幅图像基于ORB算法和PFPDCNN网络提取的特征点通过相机位姿变化映射到第二张图像中的像素点作为真实值。使用BF Matcher和Range Matcher匹配器的在第二张图像中匹配的特征点作为预测值。因为误差的存在,因此在正负五个像素范围内判断匹配正确,判断匹配的正确率。从FP数据集中选取100张清晰图像和100张模糊图像作为测试集,分别计算平均特征点匹配正确率如表1所示。其中Match point表示匹配对的数量,Accuracy rate表示匹配正确的数量占总匹配数量的比率。
可以看出在清晰测试图像中,FPFDCNN方法比ORB方法的特征点匹配准确度提高了7%;在模糊测试图像中,基于PFPDCNN方法比ORB方法的特征点匹配准确度的提高更加明显,提高了20.5%的精度。整个测试集平均特征点匹配正确率为14%。
表1特征点匹配正确率
基于FPFDCNN提取出的特征点500个特征点使用BF Matcher匹配算法和RangeMatcher匹配算法进行匹配,选取最优的前100个特征点作为“好的”特征点,匹配效果如图7所示。其中a表示BF Matcher匹配效果图,b表示Range Matcher匹配效果图。可以看出,基于FPFDCNN提取出的特征点使用Range Matcher匹配算法相对于BF Matcher匹配算法匹配的效果更好。
将匹配结果从准确率,计算量,时间进行对比如表2所示。可以看出Range Matcher匹配算法的准确率比BF Matcher匹配算法准确率高出了58%,说明它更适合FPFDCNN网络提取出的特征点。而且BF Matcher匹配法的计算量是Range Matcher匹配方法计算量的7倍。
表2
基于ORB和基于PFPDCNN网络分别计算相机在世界坐标中的位姿,比较它们和真实的位姿之间的绝对轨迹误差(ATE)。具体做法是对估计的所有帧按照时间戳,对估计的相机位姿与真实值对齐,计算每对位姿之间的差值。如表3所示。同时画出相机运行轨迹图,如图8所示。可以看到,使用本发明提取的特征点匹配对进行相机轨迹估计比使用ORB提取的特征点匹配对进行相机轨迹估计,绝对误差小于50%。
表3绝对轨迹误差
实施例
通过单目相机拍摄视频进行相机位姿估计,画出相机运行轨迹。首先使用FP数据集对FPFDCNN模型进行训练。然后对一段单目视频每隔一段时间按照时间戳截取单目图像,基于CPU实现FPFDCNN模型推理得到图像特征点以及特征点描述子。之后对相邻两帧特征点进行匹配。针对相邻两帧的匹配对使用PNP对特征点2D图像坐标通过相机选择和平移得到3D世界坐标进行相机的公式进行求解得到相机旋转和平移矩阵。通过旋转和平移矩阵得到相机在世界坐标中的位置。按照时间戳,将相机位置信息进行排序画出相机运行轨迹。
Claims (3)
1.基于卷积神经网络降低单目相机位姿估计误差率的方法,其特征在于,包括以下步骤:
1)制作用于提取特征点和生成特征点描述子的数据集,并将训练数据划分为训练数据集和验证数据集;具体实现方法如下:
101)制作用于提取特征点和生成特征点描述子的数据集,在TUM数据集的基础上提取所有彩色图像的特征点作为初始化特征点;
102)制作用于提取特征点和生成特征点描述子的数据集,对相邻两张图像初始化特征点生成特征点匹配对,将匹配对作为数据集的标签用于模型训练;
2)搭建特征点提取与特征点描述子生成的卷积神经网络模型,使用训练数据集训练模型,当训练的模型在验证数据集上达到设定的精度,保存网络模型参数;具体实现方法如下:
201)搭建特征点提取与描述子生成的卷积神经网络模型时,根据数据集标签和多任务的特性,对网络结构进行设计;
202)训练特征点提取与描述子生成的卷积神经网络模型时,根据数据集标签和多任务的特性,对网络结构使用多损失函数循环训练的方法;
卷积神经网络模型属于Encoder-Decoder框架,由输入层Inputlayer,编码层Encoder,解码层Decoder,输出层Output Layer,以及连接层Concatenate Layer五个部分组成;
其中,Encoder网络是一个基于全卷积的神经网络;整个卷积神经网络通过Decoder网络将Encoder网络特征图像上采样还原成原始图像相同的分辨率作为输出;Encoder网络中卷积运算中使用小卷积核进行卷积;Encoder网络中特征点生成描述子是用256位向量表示;Encoder网络具体设计如下:
卷积计算的设计,遵循小卷积核和特征图像以整数倍降采样的设计原则;因为每层特征图像feature_mapi输出大小如公式4所示;表示第i-1层的特征图像大小feature_mapi-1进行padding填充图像得到新的特征图像,新的特征图像使用带有空洞dilation的卷积核weights按照stride步长进行卷积,得到卷积之后的特征图像;为了使feature_mapi为feature_mapi-1的一半,将上一层特征图像成功进行降采样,同时使用标准卷积核进行卷积计算,dilation为1;设置stride值为2,padding大小为2,weight为4;采用常用的3*3,1*1的卷积核,使得输出特征图像大小不变;当卷积核大小为3时padding值为1,stride值为1;当卷积核大小为1时padding值为0,stride值为1;Encoder网络中确认使用卷积核大小为1,3,4的标准卷积核累加,从而对图像进行卷积计算,得到最终的输出特征图像;
选择激活函数计算时,因为图像的特征检测属于点角检测,边界位置因为提取特征所以会出现大量负值;因此选取ReLu函数的改进函数Elu激活函数,如公式5所示;
将卷积层进行叠层构建Encoder网络模型;卷积神经网络开始进行特征图像的降采样,之后随着层数的递增卷积核尺度越小,深度越深,就可对低级特征提取的越细;
Layer1到Layer6设计使用尺度大小为4的标准卷积核和尺度大小为3的标准卷积核进行图像降采样,因为最后一层通道为256,因此卷积核的通道数小于256,最终得到输出特征图像;
Layer9到Layer10表示对特征图像进行判断,是否为特征点;因为特征点检测输出是二分类问题,sigmoid激活函数将每一个输出值映射在0到1之间的,用来表示该点是特征点的概率,因此最后一层分类判别选择sigmoid激活函数如公式6所示;
Layer7到Layer8表示对特征点生成描述子,因为每个像素需要256位的向量作为特征点的描述子,所以它的特征图像的通道数为256;
卷积神经网络模型中Decoder网络是对特征图像进行上采样,为了完成特征点提取和特征点描述子生成两个任务,Decoder网络分成两支;第一个是对Layer10层进行上采样,恢复成640*480*1的特征图像,判断每个像素是否为特征点;第二个是对Layer7层进行上采样,恢复成640*480*256的特征图像,得到每个像素的特征描述子;
Decoder网络的设计具体遵循的原则如下:
Layer10层进行上采样的过程是对特征点进行聚集;
Layer8层进行上采样的过程是生成特征点描述子,每个特征点使用256位向量进行特征点描述,上采样得到640*480*256的输出;
Decoder网络具体设计如下:
在FP层对Layer10层进行上采样的过程使用Pixel Shuffle进行上采样;使用Encoder网络对原图像进行四次降采样,特征图像缩小16倍,从而得到Layer10层的特征图像,分辨率为30*40,通道数为256等于162;在FP层对整个30*40*256*1的特征图像进行PixelShuffle操作,缩放因子为16,最终得到640*480*1的特征图像;Pixel Shuffle具体实现方法分为三步:
a)输入特征图像x的大小为1*256*30*40,输入对特征图像H缩放倍数为16,W缩放倍数为16;
b)对x按照输出特征图像大小使用Reshape函数进行重新排序,按照16个周期特征图像进行聚合,输出1*1*16*16*30*40特征图像;
c)按照周期筛选的顺序按每一行进行特征图像重组,输出1*1*30*16*40*16特征图像,最终还原成1*640*480特征图像;
在FD层对Layer7层进行上采样的过程使用双线性插值;使用双线性插值对30*40*256每个通道的特征图像进行计算然后进行标准化使得所有点在零附近,最终得到640*480*256的特征图像;为了便于存储,对于最终得到的特征图像的每个像素生成描述子的具体做法是判断每个值是否大于0,大于标记为1,否则标记为0,从而对每个像素生成256位整数向量;
Output Layer中,在FP_nonzero层对于得到的1*640*480特征图像,每个值表示该像素是特征点的概率;选取概率不为零的像素点作为特征点,得到N个特征点FP;每个特征点包含赋予它所在的位置二维坐标信息(x,y),生成N*2矩阵;
连接层Concatenate Layer中分为FD_FP层和Out层两层;在FD_FP层将FP_nonzero层得到的N*2的特征点矩阵FP与FD层得到的640*480*256的特征点描述子,按照坐标位置一一对应提取特征点描述子,最终生成N*256矩阵,记作FD;在Out层将FP_nonzero层和FP_FD层得到的矩阵进行横坐标维度结合,得到N*(2+256)作为整个网络的输出层;
3)使用训练好的模型对测试图像提取特征点并生成特征点描述子,之后搭建连接层整合特征点坐标和特征点描述子;具体实现方法如下:
使用训练好的模型对测试图像提取特征点并生成特征点描述子后,搭建连接层,对输出的特征点和特征点描述子使用N*(2+256)的矩阵表示;其中N表示特征点个数,前两列存储特征点两个坐标,后面第三列到最后一列存储特征点描述子的向量;
4)设计特征点匹配算法,按照特征点描述子对所有特征点进行匹配,得到特征点匹配对;具体实现方法如下:
匹配两个图像的特征点时,根据第一张图的特征点的位置,在第二张图确定相同位置的点,以该点为中心,140像素为边长划定矩形范围;在这个范围内选取第二张图提取出的特征点,计算两张图像中距离最近的特征点作为特征点匹配对;
5)基于匹配成功的特征点进行相机位姿估计。
3.根据权利要求1所述的基于卷积神经网络降低单目相机位姿估计误差率的方法,其特征在于,步骤202)的具体实现方法如下:
训练特征点提取与描述子生成的卷积神经网络模型时,使用交叉熵损失函数训练特征点提取任务,使用Triplet loss损失函数训练特征点描述子;通过先交叉熵损失函数训练,再基于Triplet loss损失函数训练的顺序,以循环的方式对特征点提取与描述子生成的卷积神经网络模型进行交替训练。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010351019.6A CN111583340B (zh) | 2020-04-28 | 2020-04-28 | 基于卷积神经网络降低单目相机位姿估计误差率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010351019.6A CN111583340B (zh) | 2020-04-28 | 2020-04-28 | 基于卷积神经网络降低单目相机位姿估计误差率的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111583340A CN111583340A (zh) | 2020-08-25 |
CN111583340B true CN111583340B (zh) | 2023-03-31 |
Family
ID=72126218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010351019.6A Active CN111583340B (zh) | 2020-04-28 | 2020-04-28 | 基于卷积神经网络降低单目相机位姿估计误差率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111583340B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114762001A (zh) * | 2020-11-10 | 2022-07-15 | 华为技术有限公司 | 基于采样的自监督深度估计和位姿估计 |
CN113112547A (zh) * | 2021-04-23 | 2021-07-13 | 北京云迹科技有限公司 | 机器人及其重定位方法、定位装置及存储介质 |
CN113313763B (zh) * | 2021-05-26 | 2023-06-23 | 珠海深圳清华大学研究院创新中心 | 一种基于神经网络的单目相机位姿优化方法及装置 |
CN113469985A (zh) * | 2021-07-13 | 2021-10-01 | 中国科学院深圳先进技术研究院 | 内镜图像特征点提取方法 |
CN114332509B (zh) * | 2021-12-29 | 2023-03-24 | 阿波罗智能技术(北京)有限公司 | 图像处理方法、模型训练方法、电子设备及自动驾驶车辆 |
CN116051632B (zh) * | 2022-12-06 | 2023-12-05 | 中国人民解放军战略支援部队航天工程大学 | 一种双通道transformer卫星六自由度姿态估计算法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097599A (zh) * | 2019-04-19 | 2019-08-06 | 电子科技大学 | 一种基于部件模型表达的工件位姿估计方法 |
CN110490928A (zh) * | 2019-07-05 | 2019-11-22 | 天津大学 | 一种基于深度神经网络的相机姿态估计方法 |
KR20190138377A (ko) * | 2018-06-05 | 2019-12-13 | 박병훈 | Cctv와 딥러닝을 이용한 항공기 식별 및 위치 추적 시스템 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109073385A (zh) * | 2017-12-20 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 一种基于视觉的定位方法及飞行器 |
CN109816725B (zh) * | 2019-01-17 | 2023-03-14 | 合肥哈工慧拣智能科技有限公司 | 一种基于深度学习的单目相机物体位姿估计方法及装置 |
CN110263868A (zh) * | 2019-06-24 | 2019-09-20 | 北京航空航天大学 | 基于SuperPoint特征的图像分类网络 |
CN110929748A (zh) * | 2019-10-12 | 2020-03-27 | 杭州电子科技大学 | 一种基于深度学习的运动模糊图像特征匹配方法 |
-
2020
- 2020-04-28 CN CN202010351019.6A patent/CN111583340B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190138377A (ko) * | 2018-06-05 | 2019-12-13 | 박병훈 | Cctv와 딥러닝을 이용한 항공기 식별 및 위치 추적 시스템 |
CN110097599A (zh) * | 2019-04-19 | 2019-08-06 | 电子科技大学 | 一种基于部件模型表达的工件位姿估计方法 |
CN110490928A (zh) * | 2019-07-05 | 2019-11-22 | 天津大学 | 一种基于深度神经网络的相机姿态估计方法 |
Non-Patent Citations (4)
Title |
---|
A Comparative Study of Recent Real Time Semantic Segmentation Algorithms for Visual Semantic SLAM;Zeeshan Javed 等;《2020 IEEE International Conference on Big Data and Smart Computing (BigComp)》;20200420;全文 * |
CNN-SLAM: Real-Time Dense Monocular SLAM with Learned Depth Prediction;Keisuke Tateno 等;《CVPR2017》;20171109;全文 * |
基于深度学习特征点法的单目视觉里程计;熊炜 等;《计算机工程与科学》;20200131;第42卷(第1期);全文 * |
融合扩张卷积网络与SLAM的无监督单目深度估计;戴仁月 等;《http://kns.cnki.net/kcms/detail/31.1690.TN.20190902.1552.024.html》;20190902;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111583340A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111583340B (zh) | 基于卷积神经网络降低单目相机位姿估计误差率的方法 | |
CN109377530B (zh) | 一种基于深度神经网络的双目深度估计方法 | |
CN110443842B (zh) | 基于视角融合的深度图预测方法 | |
CN111798400B (zh) | 基于生成对抗网络的无参考低光照图像增强方法及系统 | |
CN115601549B (zh) | 基于可变形卷积和自注意力模型的河湖遥感图像分割方法 | |
CN113011329A (zh) | 一种基于多尺度特征金字塔网络及密集人群计数方法 | |
CN109389667B (zh) | 一种基于深度学习的高效全局光照明绘制方法 | |
CN109376641B (zh) | 一种基于无人机航拍视频的运动车辆检测方法 | |
CN113870335A (zh) | 一种基于多尺度特征融合的单目深度估计方法 | |
CN113283525A (zh) | 一种基于深度学习的图像匹配方法 | |
CN111553845B (zh) | 一种基于优化的三维重建的快速图像拼接方法 | |
CN113610912B (zh) | 三维场景重建中低分辨率图像单目深度估计系统及方法 | |
CN117994480A (zh) | 一种轻量化手部重建与驱动的方法 | |
CN117274066B (zh) | 一种图像合成模型、方法、设备及存储介质 | |
CN114092540A (zh) | 基于注意力机制的光场深度估计方法及计算机可读介质 | |
CN111860668B (zh) | 一种针对原始3d点云处理的深度卷积网络的点云识别方法 | |
CN113657225A (zh) | 一种目标检测方法 | |
CN113705358A (zh) | 一种基于特征映射的多角度侧脸正面化方法 | |
CN113159158A (zh) | 一种基于生成对抗网络的车牌矫正与重构方法及系统 | |
CN115937011B (zh) | 一种基于时滞特征回归的关键帧位姿优化视觉slam方法、存储介质及设备 | |
CN112115786A (zh) | 基于注意力U-net的单目视觉里程计方法 | |
CN116957999A (zh) | 深度图优化方法、装置、设备及存储介质 | |
CN115330874A (zh) | 基于超像素处理遮挡的单目深度估计方法 | |
CN111489361B (zh) | 基于孪生网络的深层特征聚合的实时视觉目标跟踪方法 | |
CN110400349B (zh) | 基于随机森林的小场景下机器人导航跟踪恢复方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |