一种基于全局特征和引导信息的特征点检测与描述方法

文档序号:32599926发布日期:2022-12-17 15:06阅读:37来源:国知局
1.本发明属于图像处理和计算机视觉领域,特别涉及一种基于全局特征和引导信息的特征点检测与描述方法。
背景技术
::2.特征点检测与描述作为计算机视觉中一个重要的研究问题,是三维重建、运动估计结构和同时定位与建图等视觉任务的基础。特征点检测与描述是在不同视角和成像条件下在不同图像的相同场景中检测出稀疏的特征点并加以向量描述,核心问题是检测的稳定性和描述的鲁棒性。3.特征点检测与描述方法经历了传统方法到深度学习方法的发展。在计算机视觉早期,研究人员根据自身的相关经验与领域知识,提出许多方法如经典的sift算法来提取稳定的特征点和生成鲁棒的描述符,虽然这些方法具有优秀的特征如尺度不变、旋转不变、对噪声和光照鲁棒等,但是受限于研究人员的先验知识和检测的感受野,检测精度和描述符性能有限。近年来,由于卷积神经网络(convolutionalneuralnetworks,cnn)的强大特征提取能力,基于cnn的特征点检测与描述算法快速发展起来。参考文献“lift:learnedinvariantfeaturetransform[c],yikm,trullse,lepetitv,etal.,europeanconferenceoncomputervision.2016:467-483”中yi等人提出了sift的可训练版本lift算法,利用cnn网络进行特征点检测、方向估计和特征点描述符的计算。为了将三个子任务在一个同一模型框架中学习,引入空间转换层(spatialtransformernetworks,stn)来修正图像块得到特征点检测和方向估计结果,同时使用softargmax策略代替传统的非极大值抑制策略。lift算法使用sift算法的检测结果作为特征点位置真值进行有监督训练,其性能好于之前的算法。但是,由于lift的检测真值取决于sift的检测结果,其性能极大地受监督信号所限制,会阻止网络学习监督信号中不存在的特征点。为了不依赖于监督信号,参考文献“superpoint:self-supervisedinterestpointdetectionanddescription[c],detone,d.,malisiewicz,t.,&rabinovich,a.,inproceedingsoftheieeeconferenceoncomputervisionandpatternrecognitionworkshops.2018:224-236”中detone等人提出了全卷积网络superpoint,联合计算像素级别的特征点位置和相关的描述符。在superpoint中,构建了一个合成数据集用于伪真值的生成和预训练,引入的单应性自适应模块能使它实现自监督训练,让网络从数据中学习区分特征点的好坏。但是,在重复样式的区域(如高楼的窗户)和极端光照下,由于卷积网络下采样带来的感受野增长和分辨率下降的固有矛盾,描述符性能差。为了提升描述符的鲁棒性,参考文献“r2d2:reliableandrepeatabledetectoranddescriptor[j],revaud,jerome,etal.,advancesinneuralinformationprocessingsystems.2019:12405-12415”中revaud等人提出了r2d2算法。虽然r2d2算法仍采用全卷积网络,但是为了维持特征图的分辨率,r2d2网络摒弃了下采样层,避免特征图变得粗糙;同时使用空洞卷积代替步长卷积,增大特征图的感受野;在特征点位置分支和描述符向量分支基础上,增加了特征点可靠性分支,提升了特征点在图像中样式重复区域的鲁棒性。但是,虽然维持了特征图的分辨率,但是空洞卷积带来的感受野增益小,使得r2d2的性能提升有限。参考文献“densernet:weaklysupervisedvisuallocalizationusingmulti-scalefeatureaggregation[c],liud,cuiy,yanl,etal.,proceedingsoftheaaaiconferenceonartificialintelligence.2021:6101-6109”中liu等人提出densernet算法,基于现有的全卷积网络,在不同语义层次上聚合特征图,使得特征图包含不同分辨率的信息,提升特征图的性能;densernet在没有像素级标注的情况下进行端到端训练,使用弱监督的三重排序损失来学习判别性特征,增强检测精度和描述符的性能。[0004]现有算法使用全卷积网络进行特征点检测和描述,但是基于cnn的特征计算会面临特征图分辨率和感受野的矛盾,限制特征点检测与描述的性能,这种影响很难通过扩充数据集或迭代训练来避免。同时,现有算法在训练和测试时仅仅依赖于图像像素信息和网络结构来进行检测,而没有使用任何先验信息,这可能会限制检测的速度和精度。本发明针对现有方法的不足,设计了一种基于全局特征和引导信息的特征点检测与描述方法。一方面,全局特征可以给检测和描述过程提供全局的感受野和全分辨率,提升检测和描述的性能;另一方面,引导信息能够帮助算法智能快速预先估计可能特征点的位置,而不会阻止网络寻找其他特征点。技术实现要素:[0005]本发明属于图像处理和计算机视觉领域,涉及特征点的检测与描述、特征点的引导信息生成、全局特征提取等一系列方法,通过在transformer框架基础上进行改进和优化,在全局特征上进行检测和描述,避免了局部感受野带来的性能限制。通过引入特征点引导信息进行特征辅助解码,一方面预先估计特征点位置,为网络提供先验位置信息,提升训练效率和检测精度;另一方面,引导信息有利于网络提升对尺度和旋转等因素的鲁棒性,对于本发明提出的方法之后在单应性估计、三维重建等实际工程的应用有很大的帮助。[0006]本发明提出了一种基于全局特征和引导信息的特征点检测与描述方法,该方法包括如下步骤:[0007]1.构造训练数据集:收集一系列图片数据,构建训练数据集d。对于训练数据集d中任意一张图片i∈d,大小为w×h×c,其中w、h、c分别表示训练图片i的宽、高、通道数。将i输入步骤2构建的网络n中。[0008]2.构建端到端的特征点检测和描述网络n:网络n由编码器网络ne、引导信息生成网络ng和解码器网络nd组成。其中,编码器网络ne由分块层neb、线性嵌入层nee、位置编码层nep和特征编码层nef级联组成;引导信息生成网络ng由检测层ngd、分块层ngb和线性嵌入层nge级联组成;解码器网络nd由特征解码层ndf、特征点位置解码层ndp和描述符解码层ndd组成。[0009]2-1.设计编码器网络ne。ne由分块层neb、线性嵌入层nee、位置编码层nep和特征编码层nee组成。分块层neb将输入图片i划分为不重叠的m块,块大小为s×s×c,其中s、c分别表示块的空间大小和通道数,块数与块大小的关系为将每个块展平为1维列向量,大小为(s·s·c)×1,得到块向量序列{b(1),b(2),...,b(m)},其中表示第ib个块向量,ib∈{1,2,...,m}。[0010]2-2.将块向量序列{b(1),b(2),...,b(m)}输入线性嵌入层nee,得到嵌入向量序列{e(1),e(2),...,e(m)},其中表示第ie个嵌入向量,ie∈{1,2,...,m}。其中,线性嵌入层nee由n层多层感知机级联组成,将块向量通过公式(1)映射为嵌入向量的大小为ne×1,其中ibe∈{1,2,...,m},ne表示嵌入向量的元素个数。[0011][0012]其中,nee(·)表示线性嵌入层执行的操作,wee和b表示线性嵌入层的权重和偏置。[0013]2-3.将嵌入向量序列{e(1),e(2),...,e(m)}输入位置编码层nep,输出位置嵌入向量序列其中,位置编码层nep将嵌入向量与第iep块区域的可学习位置参数相加,得到位置嵌入向量和大小都为ne×1,其中iep∈{1,2,...,m}。[0014][0015]其中,nep(·)表示位置编码层执行的操作。[0016]2-4.将位置嵌入向量序列输入特征编码层nef,输出编码特征序列其中的大小为nf×1,nf表示编码特征的元素个数。特征编码层nef由l个transformer基本块重复级联组成。其中,每个transformer基本块由一个多头自注意力层(multi-headedself-attention,msa)、一层多层感知机(multilayerperceptron,mlp)和两个层正则(layernorm,ln)组成。设第j个transformer基本块的输入序列为其中j∈{1,2,...,l}。设向量序列与矩阵一一对应,其中矩阵zj由向量序列按列拼接得到,向量序列可由矩阵zj按列分块得到。第j+1个transformer基本块将序列映射编码为序列[0017][0018]其中,ln(·)表示层正则操作,msa(·)表示多头注意力操作,zj和zj+1分别表示第j个transformer基本块输入序列对应的矩阵和输出序列对应的矩阵,j∈{1,2,...,l}。msa(·)函数的计算如下所示:[0019][0020]其中,x表示msa(·)的输入矩阵,headk表示多头自注意力层第k个头的输出,concat表示在行维度上的拼接操作,h表示多头自注意力层中头的个数,wo表示多头自注意力层的输出映射矩阵,分别表示第k个头的查询映射矩阵、键映射矩阵、值映射矩阵,k∈{1,2,...,h},dx表示输入矩阵x的行数。mlp(·)函数的计算如下所示:[0021]y=mlp(x′)=wm·x′+bmꢀꢀꢀ(5)[0022]其中,x′表示mlp(·)函数的输入矩阵,wm和bm为mlp的权重和偏置。[0023]将记为作为特征编码层最终输出的编码特征序列。[0024]2-5.设计引导信息生成网络ng。ng由检测层ngd、分块层ngb和线性嵌入层nge级联组成。检测层ngd使用其他任意特征点检测算法a对输入图片i进行特征点检测,得到掩膜矩阵mmask,大小为w×h×c,其中矩阵mmask中非特征点位置处c个通道的值均为0,特征点位置处c个通道的值均为1。[0025]2-6.分块层ngb对掩膜矩阵mmask进行分块,每个块大小为s×s×c,块数为m;将每个块展平为1维列向量,得到掩膜向量序列{m(1),m(2),...,m(m)},其中第im个掩膜向量的大小为(s·s·c)×1,im∈{1,2,...,m}。[0026]2-7.将掩膜向量序列{m(1),m(2),...,m(m)}输入线性嵌入层nge,得到引导信息序列线性嵌入层nge由m层多层感知机级联组成,第ige层多层感知机将掩膜向量映射为引导信息的大小为nf×1,其中ige∈{1,2,...,m}。将引导信息序列与步骤2-4得到的编码特征序列通过拼接进行合并,得到解码器网络nd的输入序列[0027]2-8.设计解码器网络nd。nd由特征解码层ndf、特征点位置解码层ndp和描述符解码层ndd组成。特征解码层ndf由t个如步骤2-4中描述的transformer基本块级联组成,输入特征序列输出解码特征序列其中和通过ndf后分别对应输出和和将序列与序列对应相加得到特征序列{t(1),t(2),...,t(m)},即其中表示特征序列的第ia个特征向量,ia∈{1,2,...,m}。[0028]2-9.将特征序列{t(1),t(2),...,t(m)}输入特征点位置解码层ndp中,输出位置响应图ip,大小为w×h。特征点位置解码层ndp由u层多层感知机级联组成,ndp首先将块特征向量t(i)映射为位置向量p(i),p(i)的大小为(s·s)×1,其中i∈{1,2,...,m};然后将位置响应向量p(i)按行排列为大小为s×s的块得到块位置响应序列最后将序列按步骤2-1中的分块顺序组合(步骤2-1将图片分块组成序列,这里反变换,将序列反变换为图片形状的位置响应图),得到输出位置响应图ip。[0029]2-10.将特征序列{t(1),t(2),...,t(m)}输入描述符解码层ndd中,输出描述符响应图id,大小为w×h×nf,其中nf表示描述符向量的维度。描述符解码层ndd由v层多层感知机级联组成,ndd首先依次将块特征向量t(i)映射为块描述符向量d(i),d(i)的大小为(s·s·nf)×1,其中i∈{1,2,...,m};然后将d(i)重新排列为大小为s×s×nf的块遍历i=1,2,...,m,得到块描述符向量序列最后将序列按步骤2-1中的分块顺序组合(步骤2-1中如何分块,这里就如何变换回去),得到输出描述符向量图id。[0030]3.对图片i增加随机噪声δ,进行随机平移、旋转和颜色变化等,得到增广图片i*,大小为w×h×c,其中w、h、c分别表示增广图片i*的宽、高、通道数。设单应性矩阵(表示实数域,表示所有3×3实矩阵)为原图片i和增广图片i*间重叠区域的像素位置对应关系。将增广图片i*输入步骤2构建的网络n中,得到位置响应图和描述符向量图大小分别为w×h和w×h×nf。[0031]4.构建网络n的损失函数l(i,i*)(l(i,i*)表示以i和i*为输入的函数)。损失函数l(i,i*)由特征点位置损失lp(i,i*)和描述符损失ld(i,i*)组成:[0032]l(i,i*)=lp(i,i*)+βld(i,i*)ꢀꢀꢀ(6)[0033]其中,超参数β用于平衡特征点位置损失和描述符损失的比例。[0034]4-1.构建特征点位置损失lp(i,i*)。特征点位置损失使用局部余弦损失lcos(i,i*)(见公式7)和峰值损失lpeaky(i,i*)(见公式8)进行描述,lcos(i,i*)和lpeaky(i,i*)分别用于衡量特征点位置的一致性和特征点的局部的峰值分布。设步骤3得到的经过单应性矩阵homo变换后得到将ip和分别划分为不重叠的mp块,块大小为sp×sp(图像大小为w×h×c,在空间上分块,块大小为s×s×c,这里的位置响应图大小为w×h,在空间上分块,块大小为sp×sp),划分方法与步骤2-1的分块方法一样,其中块数与块大小的关系为对于ip和第i′块区域展平形成的列向量分别记为p[i′]和其中i′∈{1,2,...,mp}。[0035][0036]其中||·||2表示向量二范数,上标t表示向量的转置。[0037][0038]其中,p[i′](j)表示列向量p[i′]的第j个元素,表示列向量p[i′]所有元素的最大值。表示列向量p[i′]所有元素的平均值;表示列向量的第j个元素,表示列向量所有元素的最大值,表示列向量所有元素的平均值。[0039]最后,通过平衡参数λ平衡两类损失,得到特征点位置的总损失lp(i,i*)。[0040]lp(i,i*)=lcos(i,i*)+λlpeaky(i,i*)ꢀꢀꢀ(9)[0041]4-2.构建描述符损失ld(i,i*)。描述符损失使用合页损失进行描述(见公式10)。令图片i中位置(i,j)对应增广图片i*中的位置(i*,j*),描述符向量图id中位置(i,j)对应的描述符向量为fi,j,向量图中位置(i*,j*)对应的描述符向量为fi,j*。记i中的位置(i,j)和i*中的位置(k,l)之间的距离为gij,kl,通过距离阈值t(t是手动设定的参数,在后面的具体实施方式中,t值设定为9)比较(见公式11),得到cij,kl。[0042][0043][0044]其中,δ、mp和mn为超参数,分别表示权重系数、正边界和负边界,上标t表示转置。[0045]5.训练特征点检测和描述网络n(训练流程图见图8)。[0046]5-1.实施步骤1,得到训练数据集d。[0047]5-2.对于训练数据集d中一张图片i∈d,实施步骤3,得到增广图片i*。将图片i和增广图片i*分别输入步骤2构建的网络n中,得到位置响应图ip、描述符向量图ld、位置响应图和描述符向量图[0048]5-3.对图片i和增广图片i*,实施步骤4,计算得到网络n的损失函数l(i,i*)。通过随机梯度下降(stochasticgradientdescent,sgd)算法更新网络n的训练参数,其中sgd算法中学习率为α1,动量为α2。[0049]5-4.遍历训练数据集d中所有图片,实施步骤5-2到5-3,完成一轮训练。[0050]5-5.实施步骤5-4共e轮,得到训练完成的特征点检测和描述网络n。[0051]6.测试:对于测试图片it,大小为wt×ht×ct,其中wt、ht、ct分别表示测试图片it的宽、高、通道数,最终得到特征点集合。[0052]6-1.将it输入步骤2至步骤5构建并训练完成的网络n中,输出位置响应图和描述符向量图大小分别为wt×ht和wt×ht×nf,其中nf表示描述符向量图的通道数(描述符向量图的通道数和子特征图的通道数大小相同)。[0053]6-2.计算特征点位置集合p。对于位置响应图进行非极大值抑制处理,得到特征点位置集合p={(x1,y1),...,(xnp,ynp)},其中np表示特征点个数。其中,非极大值抑制使用预设的w×w大小的窗口在上滑动,滑动步长为s,计算上w×w窗口大小上的局部最大值位置将局部最大值位置作为特征点位置(在上,w×w窗口内的最大值位置是检测到的特征点位置),其中[0054]6-3.计算特征点集合fp。对于(xi″,yi″)∈p,选择描述符向量图中位置(xi″,yi″)处的向量作为位置(xi″,yi″)处的描述符向量。对所有(i″,j″)=(1,1),...,(p,p)分别执行选择描述符向量操作,得到特征点集合[0055]本发明通过在transformer框架基础上进行改进和优化,在全局特征上进行检测和描述,避免了局部感受野带来的性能限制。同时通过引入特征点引导信息,使特征点检测和描述变得更加智能和鲁棒。一方面预先估计特征点位置,为网络提供先验位置信息,提升训练效率;另一方面,引导信息有利于网络提升对尺度和旋转等因素的鲁棒性。本发明将transformer框架和特征点检测任务结合,通过成熟的传统方法生成的引导信息,可以避免掉大部分的误检测。同时在一些细节地方减少了冗余的计算量,整个系统对于特征点检测与描述算法在实际工程的应用有很大的帮助。附图说明[0056]图1为本发明基于全局特征和引导信息的特征点检测与描述方法的流程图;[0057]图2为特征点检测和描述网络n的结构图;[0058]图3为编码器网络ne的结构图;[0059]图4为引导信息生成网络ng的结构图;[0060]图5为解码器网络nd的结构图;[0061]图6为分块层neb的划分方法实例示意图;[0062]图7为transformer基本块的结构图;[0063]图8为网络训练流程图;[0064]图9为网络测试流程图。具体实施方式[0065]以下结合附图与附图标记对本发明的实施方式做更详细的说明,使熟悉本领域的技术人员在研读本说明后能据以实施。应当理解本例所描述的实施例仅以解释本发明,并不用与限定本发明。[0066]实施例一[0067]如图1所示,本发明提出了一种基于全局特征和引导信息的特征点检测与描述方法,该方法包括如下步骤:[0068]1.构造训练数据集:采用coco2017训练集作为训练数据集d。对于训练图片训练数据集d中任意一张图片i∈d,大小为w×h×3,其中w、h分别表示训练图片i的宽、高,3表示训练图片i的通道数。将i输入步骤2构建的网络n中。[0069]2.构建端到端的特征点检测和描述网络n(其结构如图2所示):网络n由编码器网络ne(其结构如图3所示)、引导信息生成网络ng(其结构如图4所示)和解码器网络nd(其结构如图5所示)组成。其中,编码器网络ne由分块层neb、线性嵌入层nee、位置编码层nep和特征编码层nef级联组成;引导信息生成网络ng由检测层ngd、分块层ngb和线性嵌入层nge级联组成;解码器网络nd由特征解码层ndf、特征点位置解码层ndp和描述符解码层ndd组成。[0070]2-1.设计编码器网络ne(其结构如图3所示)。ne由分块层neb、线性嵌入层nee、位置编码层nep和特征编码层nef组成。分块层neb将输入图片i划分为不重叠的m块(划分方法见图6),块大小为16×16×3,块数与块大小的关系为将每个块展平为1维列向量,大小为768×1,得到块向量序列{b(1),b(2),...,b(m)},其中表示第ib个块向量,ib∈{1,2,...,m}。[0071]2-2.将块向量序列{b(1),b(2),...,b(m)}输入线性嵌入层nee,得到嵌入向量序列{e(1),e(2),...,e(m)},其中表示第ie个嵌入向量,ie∈{1,2,...,m}。其中,线性嵌入层nee由n层多层感知机级联组成,将块向量通过公式(1)映射为嵌入向量的大小为768×1,其中ibe∈{1,2,...,m},ne表示嵌入向量的元素个数。[0072][0073]其中,nee(·)表示线性嵌入层执行的操作,wee和b表示线性嵌入层的权重和偏置。[0074]2-3.将嵌入向量序列{e(1),e(2),...,e(m)}输入位置编码层nep,输出位置嵌入向量序列其中,位置编码层nep将嵌入向量与第iep块区域的可学习位置参数相加,得到位置嵌入向量和大小都为768×1,其中iep∈{1,2,...,m}。[0075][0076]其中,nep(·)表示位置编码层执行的操作。[0077]2-4.将位置嵌入向量序列输入特征编码层nef,输出编码特征序列其中的大小为768×1,nf表示编码特征的元素个数。特征编码层nef由4个transformer基本块(其结构如图7所示)重复级联组成。其中,每个transformer基本块由一个多头自注意力层(multi-headedself-attention,msa)、一层多层感知机(multilayerperceptron,mlp)和两个层正则(layernorm,ln)组成。设第j个transformer基本块的输入序列为其中j∈{1,2,...,l}。设向量序列与矩阵一一对应,其中矩阵zj由向量序列按列拼接得到,向量序列可由矩阵zj按列分块得到。第j+1个transformer基本块将序列映射编码为序列[0078][0079]其中,ln(·)表示层正则操作,msa(·)表示多头注意力操作,zj和zj+1分别表示第j个transformer基本块输入序列对应的矩阵和输出序列对应的矩阵,j∈{1,2,3,4}。msa(·)函数的计算如下所示:[0080][0081]其中,x表示msa(·)的输入矩阵,headk表示多头自注意力层第k个头的输出,concat表示在行维度上的拼接操作,多头自注意力层头的个数为8,表示多头自注意力层的输出映射矩阵,分别表示第k个头的查询映射矩阵、键映射矩阵、值映射矩阵,k∈{1,2,...,8},dx表示输入矩阵x的行数。mlp(.)函数的计算如下所示:[0082]y=mlp(x′)=wm·x′+bmꢀꢀꢀ(5)[0083]其中,表示mlp(·)函数的输入矩阵,和为mlp的权重和偏置。[0084]将记为作为特征编码层最终输出的编码特征序列。[0085]2-5.设计引导信息生成网络ng。ng由检测层ngd、分块层ngb和线性嵌入层nge组成。检测层ngd使用sift算法对输入图片i进行特征点检测,得到掩膜矩阵mmask,大小为w×h×3,其中矩阵mmask中非特征点位置处3个通道的值均为0,特征点位置处3个通道的值均为1。[0086]2-6.分块层ngb对掩膜矩阵mmask进行分块,每个块大小为16×16×3,块数为m;将每个块展平为1维列向量,得到掩膜向量序列{m(1),m(2),...,m(m)},其中第im个掩膜向量的大小为768×1,i∈{1,2,...,m}。[0087]2-7.将掩膜向量序列{m(1),m(2),...,m(m)}输入线性嵌入层nge,得到引导信息序列线性嵌入层nge由1层多层感知机组成,第ige层多层感知机将掩膜向量映射为引导信息的大小为768×1,其中i∈{1,2,...,m}。将引导信息序列与步骤2-4得到的编码特征序列通过拼接进行合并,得到解码器网络nd的输入序列[0088]2-8.设计解码器网络nd。nd由特征解码层ndf、特征点位置解码层ndp和描述符解码层ndd组成。特征解码层ndf由2个如步骤2-4中描述的transformer基本块级联组成,输入特征序列输出解码特征序列其中和通过ndf后分别对应输出和和将序列与序列对应相加得到特征序列{t(1),t(2),...,t(m)},即即其中表示特征序列的第ia个特征向量,ia∈{1,2,...,m}。[0089]2-9.将特征序列{t(1),t(2),...,t(m)}输入特征点位置解码层ndp中,输出位置响应图ip,大小为w×h。特征点位置解码层ndp由1层多层感知机组成,ndp首先将块特征向量t(i)映射为位置向量p(i),p(i)的大小为256×1,其中i∈{1,2,...,m};然后将位置响应向量p(i)按行排列为大小为16×16的块得到块位置响应序列最后将序列按步骤2-1中的分块顺序组合,得到输出位置响应图ip。[0090]2-10.将特征序列{t(1),t(2),...,t(n)}输入描述符解码层ndd中,输出描述符响应图id,大小为w×h×256。描述符解码层ndd由1层多层感知机组成,ndd首先依次将块特征向量t(i)映射为块描述符向量d(i),大小为65536×1,其中i∈{1,2,...,m};然后将d(i)重新排列为大小为16×16×256的块遍历i=1,2,...,m,得到块描述符向量序列最后将序列按步骤2-1中的分块顺序组合,得到输出描述符向量图id。[0091]3.对图片i增加均值为0、方差为30的高斯噪声δ,进行随机平移、旋转和颜色变化等,得到增广图片i*,大小为w×h×3,其中w、h分别表示增广图片i*的宽、高。设单应性矩阵为原图片i和增广图片i*间重叠区域的像素位置对应关系。将增广图片i*输入步骤2构建的网络n中,得到位置响应图和描述符向量图大小分别为w×h和w×h×256。[0092]4.构建网络n的损失函数l(i,i*)。损失函数l(i,i*)由特征点位置损失lp(i,i*)和描述符损失ld(i,i*)组成:[0093]l(i,i*)=lp(i,i*)+0.001·ld(i,i*)ꢀꢀꢀ(6)[0094]4-1.构建特征点位置损失lp(i,i*)。特征点位置损失使用局部余弦损失lcos(i,i*)(见公式7)和峰值损失lpeaky(i,i*)(见公式8)共同描述,lcos(i,i*)和lpeaky(i,i*)分别用于衡量特征点位置的一致性和特征点的局部的峰值分布。设步骤3得到的经过单应性矩阵homo变换后得到将ip和分别划分为不重叠的mp块(划分方法见图6),块大小为8×8,其中块数与块大小的关系为对于ip和第i′块区域展平形成的列向量分别记为p[i′]和其中i′∈{1,2,...,mp}。[0095][0096]其中||·||2表示向量二范数,上标t表示向量的转置。[0097][0098]其中,p[i′](j)表示列向量p[i′]的第j个元素,表示列向量p[i′]所有元素的最大值。表示列向量p[i′]所有元素的平均值;表示列向量的第j个元素,表示列向量所有元素的最大值,表示列向量所有元素的平均值。[0099]最后,通过平衡系数0.1平衡两类损失,得到特征点位置的总损失lp(i,i*)。[0100]lp(i,i*)=lcos(i,i*)+λlpeaky(i,i*)ꢀꢀꢀ(9)[0101]4-2.构建描述符损失ld(i,i*)。描述符损失使用合页损失进行描述(见公式10)。令图片i中位置(i,j)对应增广图片i*中的位置(i*,j*),描述符向量图id中位置(i,j)对应的描述符向量为fi,j,向量图中位置(i*,j*)对应的描述符向量为fi,j*。记i中的位置(i,j)和i*中的位置(k,l)之间的距离为gij,kl,通过距离阈值比较(见公式11),得到cij,kl。[0102][0103][0104]5.训练特征点检测和描述网络n(训练流程图见图8)。[0105]5-1.实施步骤1,得到训练数据集d。[0106]5-2.对于训练数据集d中一张图片i∈d,实施步骤3,得到增广图片i*。将图片i和增广图片i*分别输入步骤2构建的网络n中,得到位置响应图ip、描述符向量图id、位置响应图和描述符向量图[0107]5-3.对图片i和增广图片i*,实施步骤4,计算得到网络n的损失函数l(i,i*)。通过随机梯度下降(stochasticgradientdescent,sgd)算法更新网络n的训练参数,其中sgd算法中学习率为10-4,学习率每隔10轮降低10倍,权重衰减系数为0.0005,动量为0.9。[0108]5-4.遍历训练数据集d中所有图片,实施步骤5-2到5-3,完成一轮训练。[0109]5-5.实施步骤5-4共100轮,得到训练完成的特征点检测和描述网络n。[0110]6.测试:对于测试图片it,大小为wt×ht×3,其中wt、ht分别表示测试图片it的宽、高(测试流程图见图9)。[0111]6-1.将it输入步骤5得到的训练完成的网络n中,输出位置响应图和描述符向量图大小分别为wt×ht和wt×ht×256。[0112]6-2.计算特征点位置集合p。对于位置响应图进行非极大值抑制处理,得到特征点位置集合p={(x1,y1),...,(xp,yp)},其中p表示特征点个数。其中,非极大值抑制使用3×3的窗口在上滑动,滑动步长为1,计算上3×3窗口大小上的局部最大值位置将局部最大值位置作为检测到的特征点位置(在上,3×3窗口内共9个数,9个数中最大值所在位置就是检测到的特征点位置),其中9个数中最大值所在位置就是检测到的特征点位置),其中[0113]6-3.计算特征点集合fp。对于(xi″,yi″)∈p,选择描述符向量图中位置(xi″,yi″)处的向量作为位置(xi″,yi″)处的描述符向量。对所有(i″,j″)=(1,1),...,(p,p)分别执行选择描述符向量操作,得到特征点集合(本发明任务的最终结果是得到特征点集合,特征点集合是其他图像任务(如三维重建等)的基础)。[0114]以上所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1