黄妍妍, 盖绍彦,*, 达飞鹏
(1. 东南大学自动化学院, 江苏 南京 210096;2. 东南大学复杂工程系统测量与控制教育部重点实验室, 江苏 南京 210096)
图像匹配是数字图像处理领域的重要研究方向之一,是图像拼接、三维重建、无人机航拍等技术的基础。图像匹配是指在两张或两张以上图片中使用某些特定的算法对相同或相似物体在空间上进行对准,或用已知模式到待匹配的图像上寻找相应模式的过程[1]。图像匹配的实际上就是对图像的特征进行处理,其主要包含图像特征提取、图像特征描述、图像特征匹配这3个步骤。
对于传统的图像特征提取与描述算法,根据特征点的类型不同,可以分为基于斑点的特征提取与描述算法和基于角点的特征提取与描述算法[2]。基于斑点的特征提取与描述的算法中,最具有代表性的算法是Lowe提出的尺度不变特征变换(scale-invariant feature transform, SIFT)算法[3],该算法在构建尺度空间时候采取高斯核函数进行滤波,使原始图像保存最多的细节特征,经过高斯滤波后细节特征逐渐减少来模拟大尺度情况下的特征表示,算法在应对多种情况下的数据时比较稳定,但是运行时间比较长,针对SIFT的这个缺点,Bay等人提出了基于SIFT算法的改进算法加速稳健特征(speeded up robust feature, SURF)算法[4],SURF算法通过Hessian矩阵检测特征点,在牺牲了一定的旋转、尺度不变性等性能的条件下,将算法的速度提升到了原SIFT算法的3倍。Mikolajczyk等人在SIFT中引入主成分分析(principal components analysis, PCA)技术和梯度位置方向直方图(gradient location and orientation histogram, GLOH)算法[5],算法增强了特征描述子的独立性和描述性。基于角点的方法有Rosten等人提出了加速分段测试特征(features from accelerated segment test, FAST)算法[6-7],该算法根据中心点与其邻域点的像素差来确定是否将该中心点作为图像的特征点。Rublee等人结合FAST算法和使用二进制进行描述子编码的二进制鲁棒特征(binary robust independent elementary features, BRIEF)算法[8],提出了定向FAST和旋转BRIEF(orienfed FAST and rofated BRIEF, ORB)算法[9],一定程度上解决了FAST不具有尺度不变性和BRIEF不具有旋转不变性的问题。陈世伟等人基于风格迁移不变特征合成人工光学图像从而进行特征提取[10]。刘自金等人基于信息熵的思路将原图像划分为高熵域和低熵域,直接在高熵域上提取特征点,从而极大地提高了特征点提取的效率[11]。
随着计算机硬件性能的提高和深度学习的发展,基于卷积神经网络的特征提取、描述的方法也相继被提出。Tian等人提出了L2-Net网络[12],该网络通过深度学习的方法获取到了图像块的特征描述子,并采用递进采样策略使网络可以经过较少的训练轮次访问到较多的数据,使用了3个损失函数,减少匹配图像对的距离同时增大不匹配图像对的距离以此加大特征的紧凑程度。Mishchuk等人在L2-Net的基础上,提出了HardNet网络[13],在设计新的损失函数时,使用三元组匹配策略,最大化不匹配样本之间的距离,得到了比L2-Net更好的结果。Miles等人在HardNet网络的基础上,提出深度卷积逐点层(convolution depthwise pointwise, CDP)[14],在保证一定的匹配精度的同时,通过有效地张量分解来减少网络的参数,从而减少计算量,提高性能。Garg等人结合了二维主成分分析和遗传算法对特征描述子进行降维,并使用卷积神经网络(convolutional neural network, CNN)进行对虹膜的分类识别,取得了96.49%的高分类准确率[15]。许多算法是针对不同任务类型的图像而被提出,如Liu等人针对合成孔径雷达(synthetic aperture radar, SAR)图像和光学图像匹配对辐射失真敏感的问题,提出了一种基于相位同余的图像频域小波分解的非均匀图像匹配算法[16],该算法比SIFT方法具有更好的匹配效果,是一种有效的异构图像匹配算。Shahid等人使用航拍图构建跨平台图像数据集,并使用该数据集训练两阶段轻量级卷积神经网络,接着利用光谱、时间和流特征以及聚类分析来微调整个图像匹配算法,在跨平台图像匹配场景下取得较好的效果[17]。Yu等人针对高光照,低分辨率的无人机图像和卫星遥感图像提出了一种基于图像边缘特征的二次匹配方法[18],该算法与传统的SURF相比,具有具有更快的匹配速度和更好的匹配精度。
传统的特征处理方法具有通用性强,对硬件、数据的需求较低等优点,而深度学习神经网络的大区域特征描述能力、鉴别能力更强,两者结合的方法也是一个研究热点。Liu等人首先使用SIFT特征来简单地检测图像的重复区域,再将匹配的区域输入CNN计算相似度从而判断图像是否匹配[19]。Zhou等人先使用SIFT提取底层特征进行初步匹配,将匹配部分的图像块取出,输入CNN得到深层特征来度量特征的相似性以此进行二次匹配[20]。
当待测图像与模板图像具有较大的旋转、缩放、平移等空间变换差距时,深度学习的传统做法是增加具有这些空间变换的样本来提高整个网络的泛化能力和鲁棒性,这会导致网络学习而来的参数量变多,在实际应用的场景下测试时间增加,导致算法实时性方面的性能下降。
本文提出了一种对大幅度空间变换待测图像具有较强鲁棒性和匹配速度较快的传统手工特征点提取和卷积神经网络特征描述相结合的图像特征匹配算法,首先使用ORB算法对待测图像进行特征点的提取,并以特征点为中心,截取一定尺寸的图像块输入后续神经网络,神经网络部分以HardNet为基础,在浅层部分加入通道注意力分支和空间变换注意力分支,这两个分支与原输入合并最后输入简化的HardNet网络得出每个图像块的特征描述,最后,使用K最近临(K-neanest neighbor,KNN)算法将待测图像的特征描述与模板的特征描述进行匹配。由于特征描述部分加入了侧重学习空间变换参数的注意力模块,但是该模块网络层较浅属于轻量级网络模块,插入模块前后并没有使整个算法参数量剧增,反而使得匹配的准确率有所提升,匹配时间却没有因此变慢。
对于具有较大空间变换的图像特征匹配问题,比如以图1的图像匹配任务为例,图1(a)为待测图像,该图像带有一定的旋转和尺度变换,图1(b)为模板图像,该图像特征匹配任务需要对两张图提取特征并描述,基于特征描述子进行匹配,最后根据匹配相似度来度量整个算法的性能。
图1 带有一定旋转变换和尺度变换的图像匹配任务
整个算法的流程图如图2所示,输入图像先是经过ORB算法检测特征点,以特征点为中心在原图像上划分出一些尺寸为64×64的图像块,将每一个图像块降维到32×32尺寸并输入到带有空间变换注意力模块的简化版HardNet网络得到每个图像块的128维特征描述子,最后将模板图像和待测图像的特征描述子通过KNN算法度量相似度从而得出待测图像与模板图像的差距。
图2 匹配算法流程图
整个图像匹配算法的流程一般是先使用一些算法检测出图像的特征点并根据特征点划分出图像块,并将这些图像块输入到特征描述网络得到特征描述子,最后对比模板图像的特征描述子得到匹配结果。其中特征描述网络是算法中极为重要的一步,HardNet是主流的提取特征描述子的网络,网络使用UBC Phototour数据集[21]进行训练,包括Liberty、NotreDame和Yosemite这3个子集,使用三维点重建的方式来获取图像块的匹配关系并制作正负样本集,通常是两个数据集用于训练,剩下的一个用于测试,其架构与L2-Net相同,但HardNet在L2-Net算是函数的基础上提出三元组匹配损失函数,其目的是最大化样本集中最近正样本和最近负样本的L2距离,即减小匹配描述子之间的距离的同时增大不匹配描述子之间的距离。
为了避免网络退化和过拟合问题,本文对原来的HardNet网络进行简化,如图3所示,减少中间的3层卷积层,在简化网络深度的情况下,极大地保留网络学习核心语义的能力。对于有较大空间变换的图像(旋转、平移、尺度变换等),卷积神经网络也有一定的学习能力,如果要增强这样的空间不变性,需要增加相应的图像数据,但是在实际应用时,相关数据不易准备,且数据量增多时,网络规模增大,运行速度有可能减慢,也为实际部署增加困难。因此,本文在该特征描述子网络前部加入空间变换不变性注意力模块,该模块包括通道注意力和空间注意力两个分支。图3中BN和ReLU分别为激活函数和组归一化操作,Conv为卷积操作。
图3 简化HardNet网络架构
该分支主要是参考传统的通道注意力模块和triplet attention[22]的通道注意力部分,由于输入的图像为bmp格式的灰度图,通道上的信息不是很多,因此仅分出一个分支作为通道信息注意力权重信息的提取,该分支的框架如图4所示。输入的特征首先经过一个Z-Pool层,该层的计算如下所示:
图4 通道注意力分支
(1)
Z-Pool的操作使得该层能够保留实际张量的丰富表示,同时缩小其深度以使进一步的计算量更轻,接着输入卷积层进行进一步核心语义学习,最后通过Sigmoid激活函数将特征映射到[0,1]得到特征图的权重值,最后与原输入点乘生成空间注意力权重。由于通道信息量并不多,所以不需要深层和复杂的卷积操作,且Z-Pool的操作只将通道信息的平均值和最大值保留下来,已经尽可能地把通道信息保留下来,又减少了参数量。该分支的计算如下所示:
(2)
空间注意力分支又分为两个支路,分别对应图5中的上半部分和下半部分,这里分别简称为上支路和下支路,上支路参考了全局信息学习网络non-local[23]网络的简化版网络GCNet[24],原来的non-local网络所针对的每一个查询位置,有重要联系的区域基本是同一块区域,也就是每个位置的关注位置几乎都是相同的,所以把这些重要区域的特征加在每个位置之后,网络的准确率几乎没有下降,但是计算量却减少了很多。特征图进入上支路之后经过一个卷积层和softmax得到学习空间变换后每个像素点的权重,最后与没有学习到权重的特征图做矩阵点乘,这一部分的操作称为context modeling,通过该模块可得到结合上下文信息重要性的特征图。接着,参考压缩和激励网络(squeeze and excitation network,SENet)[25]的思路并加以简化,将特征图输入卷积层后再输入BatchNorm和ReLU归一化和增加网络的非线性性,最后再经过卷积层。
图5 空间注意力分支
上分支的计算操作如下所示:
(3)
而下分支不是简单地使用原输入与学习了全局信息的特征图相加,而是使用多个STN[26]和CNN串联,STN模块的整体架构如图6所示,其由定位网络、坐标变换和像素采样3部分组成,输入特征图经过空间变换模块得到输出特征图像素采样。定位网络将输入的特征图送到卷积层和全连接层中提取特征,得到空间变换参数θ;坐标变换根据θ确定一个空间变换,并创建采样网络以确定输入图中哪些点会被用于变换;像素采样根据采样网络对输入特征图进行采样,从而得到最终的输出。下分支由STN网络串联3×3卷积网络组合而成,经过实验发现,两个这样的组合方式串联起来的网络在精度和时间上是最佳的,先由STN学习到空间变换并采样,之后输入CNN学习深层特征最后再输出,STN结合CNN的方法,允许网络自动地学习如何进行特征图的转变,从而有助于降低网络训练中整体的代价。定位网络中输出的值,指明了如何对每个训练数据进行转化。
图6 STN架构
整个空间注意力分支表示如下:
(4)
整个空间变换不变性注意力模块如图7所示,特征图输入该模块后分为两个支路,通道注意力支路学习通道信息的平均值和最大值,空间注意力支路学习图像空间全局信息的权重,最后将两个支路的输出相加取平均值。最后模块输出计算方式即将式(2)与式(4)相加,也就是y1与y2相加再取平均值,(对应图7的1/2处操作)如下所示:
图7 空间变换不变性注意力模块
(5)
对于改进的特征描述子神经网络的训练和测试,本文选择使用UBC Phototour数据集进行训练,使用三维点重建的方式来获取图像块的匹配关系并制作正负样本集,样本集里的每一个样本都是64×64大小的图像块,通常是两个数据集用来训练,剩下的一个用来测试[27-28]。UBC Phototour数据集是图像匹配和描述研究领域常使用的公共数据集,数据集的图像包含特征清楚或模糊、特征选择或缩放等多种情况,数据量丰富,且该数据集被HardNet、DBLD等多个图像匹配算法所使用,并使用相同的指标来评价算法性能,这有利于本文算法与其他主流匹配算法进行对比,使得实验结果更客观。本文会分别测试3个子数据集作为测试集的情况。
对于整个算法的测试,则使用40张正在生产线上生产的1 563×1 563的电路板图像,所有图像都是待测图像经过不同程度的旋转变换、尺度变换的结果。另外,针对两种型号的电路板,特别准备了两张1 563×1 563的模板图像。实验的运行环境如表1所示。
表1 实验运行环境
2.2.1 误差比例
由于本文主要是对于特征描述网络HardNet进行修改,而原本HardNet网络的测试数据集为UBC Phototour数据集,且该数据集也是许多特征描述网络所使用的数据集,故本文也会在该数据集上进行实验并和多个特征描述网络进行对比。UBC Phototour数据集的评价指标是UBC Phototour测试集匹配正确率为95%时的误差比例(false positive rate at true positive rate equal to 95%, FPR95),即在UBC Phototour的测试集上,95%的匹配关系都正确的情况下,非匹配关系错误的比例。测试集样本可以组合成三元组集合,三元组设为(ptest,ptemp,label)。其中,ptest和ptemp分别为待测图像块和模板图像块,label表示这两个图像块的匹配关系且只有0或1两个值,1表示匹配,0表示不匹配。FPR95的具体实现是将求出来的每组图像块对之间的距离从小到大排序,选取95%的匹配关系都包含在内的值作为匹配与非匹配的阈值,阈值内的数据中会有错误的匹配对(false positive, FP),阈值外会有正确的匹配对(true nagetive, TN),最终的FPR95值越小越好,其计算如下所示:
(6)
FPR95是基于UBC Phototour数据集的性能指标,而针对实际应用时所涉及的印制电路板图像数据集,则使用匹配精度、匹配分数和匹配时间这3个性能指标。
2.2.2 匹配精度
对于整个图像匹配算法,可以使用匹配精度反馈算法的可靠性。由特征匹配得到的匹配点对有可能存在着错误匹配的情况,需要对匹配点对进行筛选,剔除误匹配。精度p的计算方法如下所示:
(7)
式中:m为正确匹配的点对数;n为所有匹配点对数。
2.2.3 匹配分数
计算方法如下所示:
(8)
式中:m表示正确匹配点数;q1和q2分别表示待测图像和模板图像所检测到的特征点数量,匹配分数就可以表示为正确的匹配点数量与两张图像的特征点数最小值的比值。匹配分数越大,说明整个算法的匹配鉴别能力越强。
2.2.4 匹配时间
匹配时间指从特征点检测开始,经过特征描述、特征匹配得到图像匹配结果的过程所花费的时间。实际生产现场对算法的实时性要求很高,所以匹配时间也是一个重要的评价指标。
对于特征描述的网络训练所使用的数据集是UBC Phototour数据集,在训练时,使用数据增强的在线增强模式,基于深度学习框架对原本的批量数据进行增强,如旋转、平移、翻折等相应的变化,有利于提升网络的泛化能力并且让网络在训练的过程中预先学习并适应这些变化。本文分别使用了3个子集进行训练,同时使用其他两个子集测试,并且将本文提出的网络与传统的ORB匹配算法、现常用的特征描述网络进行对比,结果如表2所示。在UBC Phototour数据集上以FPR95作为评判标准,本文提出的网络在大部分情况下比其他网络的测试效果要好,其FPR95较低。
表2 电路板数据测试结果
将训练得到的权重文件在电路图数据集上进行测试,选取其中某一型号电路板为例,分别使用了ORB、HardNet和本文提出的算法进行可视化测试,效果如图8所示,自上而下分别为ORB、HardNet、简化版HardNet、小器官分割网络(small organ segmentation network, SOSNet)、多量化深度二进制描述符(deep binary descriptor with multi-quantization, DBD-MQ)[29]、紧凑判别二进制描述符(compact discriminative binary descriptor,CDBin)[30]、深度二进制局部描述符(deep binary local descriptor,DBLD)[31]和本文所提算法在该型号的电路板图像上的匹配效果,每个算法的效果由4个子图显示,4个子图从上至下从左至右分别是待测图像相对模板图像旋转45°、90°、135°以及135°与待测图像缩小0.7的组合变换,每个子图中,左边为待测图像,右边为模板图像,可以看到本文所提出的算法对比其他算法,匹配点对更多,图上整齐的线段更密集,特别是旋转135°外加缩小0.7的组合变换,其他算法在解决该组合变换的匹配问题时都失败了,出现了较大的匹配失误,本文算法表现较好。而3种算法在40张测试图像集上的平均匹配精度、平均匹配分数和平均匹配时间对比如表2所示,总体上,在时间较好的情况下,匹配精度、匹配分数和匹配时间都有提升,尤其时匹配分数,本文提出的算法匹配分数为0.348,与改进前的HardNet算法相比提升了0.122,与同为特征描述子算法的SOSNet算法相比提升了0.15,其中模板图像和待测图像分别检测出401和356个特征点,并且在这些特征点中匹配到了124对特征点。在匹配精度上,匹配精度是0.99,与未改进前的HardNet算法相比,匹配精度提升了0.06,使用KNN算法对网络提出的特征描述子进行匹配,并使用随机采样一致性(random sample consensus,RANSAC)算法剔除错误匹配后,在124对匹配点对中,仅有一对匹配错误匹配对。在匹配时间上,本文算法仅次于ORB算法,但是匹配精度和匹配分数效果却远优于ORB算法。
图8 电路板图像匹配效果
HardNet和SOSNet输出的特征描述子均为浮点型描述子,其训练的网络均为卷积层、池化层和全连接层单纯叠加的前向神经网络,这样的神经网络虽然对于旋转、尺度等空间变换具有一定的鲁棒性,但是这样的特性是通过数据增强获取的,不是主动地进行学习。而本文算法加入的专注空间变换学习的注意力模块,首先是STN部分对于图像的空间变换进行显式地学习,而且整个注意力模块偏重于对图像的核心语义部分进行学习,而不是像原来的卷积神经网络单纯地对整张图片的全局信息进行学习,解决核心语义的空间变换问题才能解决图像的空间变换问题且能排除掉一些非核心语义的干扰。而DBD-MQ、CDBin和DBLD这3个算法输出的是二进制描述子,算法的前半段也都是通过单个的卷积神经网络堆叠学习得到特征描述子,后半段是通过编码器或损失函数对前面卷积网络的浮点型描述子进行二值化,故也存在着前面所说的图像空间变换学习能力不够的情况,且二进制描述子只有0和1两个值,进行描述子匹配的时候比较汉明距离,即两个描述子中不相同的位数,这样的匹配方式相对于浮点型描述子匹配时比较欧式距离精度较低,因此这3个算法在匹配精度匹配分数上表现并不好。另外,从表2和表3中简化HardNet比原HardNet在各项评价指标中表现得更优异,这是因为原HardNet存在着网络退化的问题,即网络层数到达一定数量后,再一味地只增加网络深度,训练和测试效果反而下降,而原HardNet相比于简化的HardNet多出来地网络层为恒等映射,神经网络是非线性的,很难将多出来的恒等映射参数学习正确,那么就不如稍微简化网络结构的性能,并且网络结构简单也能避免过拟合的问题,使得网络模型不仅仅在训练集上取得较好效果,在训练时从未学习过的测试集上仍能取得优良结果。表4从算法参数量、参数大小以及模型大小3个方面对原来的HardNet算法、简化的HardNet算法以及加入空间变换不变性注意力模块并简化HardNet算法的本文算法进行网络复杂度比较。其中模型大小包含参数大小和网络结构大小,故比参数大小指标稍大。对比表3的数据可发现,简化的HardNet算法网络结构比其他两个算法简单,所以其参数量、参数大小和模型大小明显小于其他两个算法。而本文算法是简化了HardNet的同时,又加入了空间变换不变性注意力模块,故本文算法的网络复杂度肯定是高于简化HardNet算法的,这在表3数据中也有所体现,但是本文算法的网络复杂度又低于原HardNet算法,说明本文算法对HardNet算法的改进操作并没有增加原算法的网络复杂度甚至是将网络结构精简了,由于网络结构精简了,参数减少了,将网络模型应用于测试集时,处理时间也会有所减少。
表4 改进前后的网络复杂度
表2所列的5种算法中,ORB算法匹配时间最优,但是匹配精度、匹配分数缺远低于本文算法,且本文算法的匹配时间为3.55 s,仅比ORB算法的匹配时间高0.03 s,本文算法在时间与ORB算法相当的基础上,其他指标都优于实验中用到的各种方法。
针对电路板图像匹配任务中待测目标具有较大空间变换的情况,本文在简化HardNet特征描述网络的基础上,设计并加入了具有通道注意力和空间变换注意力分支的注意力模块,本文提出了使用ORB算法提取待测图像特征点并根据特征点截取一定大小的图像块,后将图像块输入具有空间变换注意力模块的特征描述子网络,最后通过KNN算法对待测图像与模板图像进行相似性度量的图像匹配算法。通过多次实验,证明本文算法相比于其他算法具有较高的匹配精度、匹配分数,匹配时间满足实际生产的需求,具有很高的使用价值。