沈军宇,李林燕,戴永良,胡伏原+
(1.苏州科技大学 电子与信息工程学院,江苏 苏州 215009;2.苏州经贸职业技术学院 信息技术学院, 江苏 苏州 215009;3.昆山市农业信息中心,江苏 苏州 215300)
海洋和湖泊鱼类的检测对于渔业监测管理有极大的应用价值,随着图像采集与处理算法的快速发展,鱼群图像检测引起了世界范围内组织机构与学者的关注与研究[1,2]。然而,由于水下背景较暗、光线分布不均匀导致图像对比度较低,并且图像中鱼群目标尺寸不一致,双目图像拼接容易出现伪影,这导致鱼群检测精度较低。
传统双目图像拼接方法主要依据改进的SIFT算法[3]和Harris算法[4]等特征提取算法获得双目图像的特征点,实现图像的匹配和拼接。Cheung等[5]结合像素级匹配误差与特征级匹配误差,优化图像匹配与拼接精度。Li等[6]提出评估拼接缝过渡效果的能量最小化方法,分配不同区域SIFT特征的权重值,优化拼接缝像素过渡更加平滑。然而,上述点特征匹配算法对水下低对比度图像效果并不理想。同时,水下暗流容易引起双目相机设备之间非刚性摆动,从而改变双目图像的映射关系。因此,需要实时对图像进行配准和检测[7]。
卷积神经网络在双目图像特征匹配与拼接[8-10]和目标分类与检测[11-14]方面均取得了较大地进展。Han等[8]针对双目图像特征突出的区域提出一种卷积神经匹配网络,利用结构完全相同的两个卷积神经网络模型提取较明显的特征实现图像匹配。Tian等[9]和Herrmann等[10]提出图像重叠区域特征匹配应占较大比重,增加该比重可以有效地避免目标拼接伪影的出现。Zanfir等[15]优化卷积神经网络的特征提取与表达,将每个重叠区域的深度特征用关联矩阵表示,并采用幂迭代分解关联矩阵获取匹配相似度极值,优化图像相似部分特征的匹配。Cheng等[16]利用特征的匹配度降序搜索,获取每层特征匹配的极大值和极小值,避免特征的错误匹配,提高特征匹配模型匹配精度。
然而,上述基于卷积神经网络的特征匹配算法存在两个问题:忽视各卷积层级上下文联系,容易丢失大量低层级信息,低对比度水下图像的特征匹配精度低;将双目图像特征匹配与目标检测相互独立,特征提取需重复的卷积运算,造成极大的空间存储与计算开销,如图1(a)所示。因此,本文利用相同结构的两个SSD[11]模型同时实现目标检测与特征匹配,如图1(b)所示。依据卷积神经网络感受野特性,建立匹配特征反向传播机制,增强低层特征匹配精度,减少拼接图像出现的伪影。同时利用多层特征层构建特征金字塔模型,通过特征融合增强低层特征层语义信息,提升小目标检测精度。
图1 双目图像拼接融合与目标检测流程
给定图像集对Tl={tl1,tl2,…,tlN} 和Tr={tr1,tr2,…,trN}, 图像tli和tri对应的目标标注为gi={x,y,w,h},gi∈G={g1,g2,…,gN}, N为样本数量。x,y,w,h分别代表着图像中目标框的中心坐标、宽度和高度,G代表所有标注的样本信息。模型训练包含候选区域特征提取以及分类预测两个过程,即
C=Pr(Classi|Object)
(1)
其中,C代表目标预测种类。将两个同层卷积特征的匹配看成是相关滤波器w最优化求解的过程,即
(2)
其中,特征向量v的每个样本vm,n对应一个高斯标签ym,n,λ是正则项系数,且λ≥0。 高斯标签通过式(3)获取
(3)
其中,σ表示高斯卷积核宽度,M,N分别表示第L层特征层的宽度和高度。
为了增强低层特征层语义信息,在SSD的特征层上构建特征金字塔模型,先将同层级卷积特征融合增强,再利用自上而下的上采样实现高层特征与低层特征的融合。
首先,在网络前馈卷积运算时,利用相同层级内的多个卷积层增强特征图。假设卷积特征层中任意一个隐藏层表示为ConvN,ConvN-1为该隐藏层级特征输出层,其经过卷积与池化后得到ConvN-2,再将ConvN-1与ConvN-2进行卷积融合得到ConvN-3,最后将ConvN-x(x=1,2,3)融合,并经过1×1的降维卷积核消除多次融合的堆叠效应,实现特征层级内的信息增强,如图2所示。
图2 特征层级内的卷积层融合
本文将相同结构的两个改进SSD网络作为主干网络,因第七层及更高层特征维度低于10×10,无法包含充分的特征信息,反向传播过程中卷积层插值误差过大[14],并且第四层以上特征图输出目标候选框。因此,本文在卷积神经网络的第四到第七层特征层间增加同层横向连接与异层残差处理构建特征金字塔,即利用双线性插值算法将第七层特征两倍上采样,然后与第六层特征层进行叠加获得新的第六层特征,最后额外增加一个1×1的卷积处理降低特征维度。以此类推直到获取第四层新特征,最后通过3×3的卷积操作消除多次特征混叠效应,如图3所示。在新的特征层上采用锚点机制[11],提取目标候选框并输出到全连接层,根据式(1)预测目标分类信息,最后通过非极大值抑制(non-maximum suppression,NMS)剔除重叠的目标候选框。
图3 基于SSD的特征融合金字塔
目标检测网络的损失函数计算参见文献[11],包含目标候选区域的分类损失 (Lconf) 和边框回归损失 (Lloc)
(4)
由于第七层特征图维度小,特征细节信息缺失,不利于特征匹配,故本文在第四到第六层特征层间构建特征匹配双塔模型,在同层级特征图间进行特征匹配操作,然后通过感受野特性,限制匹配特征在低层特征图上的搜索空间,降低特征图遍历的时间复杂度,如图4所示。
图4 特征匹配双塔模型
利用相关滤波匹配特征的方法参见文献[18] 本文首先计算第六层特征匹配结果,寻找特征相关性最高的区域,即通过傅里叶变换获取相关滤波器w的最优解
(5)
(6)
(m,n) 为当前层特征点坐标,r为感受野覆盖范围,可根据上采样缩放比例获取。对于第五层搜索区域内的点进行遍历,获取低层级匹配特征。重复该搜索过程,可以快速得到第四层匹配特征。
最后,再次利用感受野映射第四层匹配特征到原图像获取像素的匹配信息,采用算术平均值的方式得到图像中同名点对的融合像素值,从而实现双目图像融合。
本文采用美国国家海洋和大气管理局公开的深海鱼群数据集Labeled Fishes in the Wild[1]作为鱼群拼接与检测效果的测试数据,包含以下内容:
(1)训练集:训练数据采用混合数据集,一部分来自PASCAL VOC2007的训练与测试集,含20个种类共9963幅图像;另一部分来自Labeled Fishes in the Wild训练集,含340幅低对比度水下鱼群图像。
(2)测试集:包含3 min左右深海环境下鱼群活动的视频文件,如图5所示。
图5 Labeled Fishes in the Wild数据集
算法采用层数较少、速度快的SSD300模型作为基础模型,基于开源的Tensorflow深度学习框架实现。采用随机旋转与裁剪方法对数据预处理,随机选取0.1~1的采样比例对原始图像进行缩放,并随机选择0.5~2的宽高比例对图像进行裁剪。当人工标注的标准目标框中心位于采样的局部图像中时,保留重叠部分。最后,缩放所有重叠图像到指定的大小,并且随机选择0~0.5度进行水平翻转(horizontally flipped)。通过上述步骤可以获取约5倍原始数据量的训练样本,在小样本数量的情况下,可较为有效地缓解训练过拟合的情况。
训练在一块Nvidia GTX1080显卡上运行,采用随机梯度下降法优化损失函数。设mini-batch大小为32。模型下降的动量(momentum)设为0.9,权重衰减(weight decay) 设为0.0005。利用预训练模型以0.001的学习率(learning rate)训练改进的模型10000个iteration,随后在Labeled Fishes in the Wild数据集上以学习率为0.0001训练2000个iteration,使得平均损失小于0.5。
2.3.1 双目图像拼接效果
VGG16网络模型作为SSD300的主干网络,本文引入该网络作为图像特征匹配的对比实验,利用相关滤波关联双目图像相同层级特征点的匹配度(简称VGG-CF),从而完成图像之间配准与拼接。由于该方法仅仅用于实现图像拼接,因此拼接的结果需后续的目标检测处理。本文提出的基于改进SSD网络模型的拼接方法记为SSD-CF。实验采用特征点间的均方根误差(RMSE) 评估拼接效果
(7)
其中, (xl,yl) 表示左图像特征点坐标, (xr,yr) 为右图像通过变换得到的同名特征点坐标。在200对测试图像进行特征匹配验证,VGG-CF算法共提取2468对特征点对,误匹配率为3.2%;SSD-CF算法共提取3012对特征点对,误匹配率为2.4%,特征点误配率降低0.8%,特征点的错误匹配容易造成拼接伪影的产生。如图6所示,对于特征较为明显的鱼群目标,基于SSD-CF算法的图像融合结果更加清晰。
图6 双目图像拼接效果
剔除错误匹配点位,根据式(7)计算得到图像平均配准与拼接精度,见表1。基于多层特征配准的VGG-CF和SSD-CF算法经过多层配准极大地提高了配准的精度,相比SIFT算法4.2 mm,降低了10倍左右。由于SSD的anchor机制,特征提取效果较好,从而错误匹配点位降低,配准精度较VGG模型提高了0.14 mm,拼接的精度也提升了0.17 mm。
表1 配准与拼接精度对比/mm
针对拼接缝和过渡区域容易出现错位和对比度突变的情况,引入人工观察的主观评估法对拼接图像整体效果进行评估,如图7所示。仅利用卷积神经网络提取特征检测,然后再拼接检测后图像,结果表示拼接部分有明显伪影且拼接缝处亮度过渡不够平滑。而本文利用多层特征融合与匹配等方法,提高图像特征匹配精度。实验结果表明,在低对比度情况下野外双目鱼群图像拼接本文方法具有一定程度拼接质量的改善。
图7 拼接缝效果比较
2.3.2 目标检测精度
在实验过程中,分别采用检测精度(Precision)和查全率(Recall)作为鱼群的定位精度和漏检的评估标准,假设fp表示错误识别出的目标个数,n为识别出来的目标总数,tp表示识别正确的目标,fn表示错误识别的背景,则
(8)
(9)
虽然YOLO[12]算法可以满足实时检测的要求,且在鱼群测试集上的检测精度可以达到88.7%[2]。但是基于YOLO算法的检测容易造成大量的漏检情况,Recall最高只有15.9%左右。在SIFT提取特征进行图像匹配融合之后,此时鱼群目标检测建立在融合的新图像上,YOLO检测精度只有75.3%,由于图像融合产生的伪影导致的错检率达到13.4%。
SSD算法由于加入了锚点机制,增加大量的候选检测窗口,一定程度上提升了目标预测的精度,在保持90.5%以上的检测精度的同时,小目标检测效果也得到相应的提升,查全率比YOLO提升了26.6%,检测基于SIFT特征提取融合后的图像,精度较原始SSD算法下降12%左右,见表2。
表2 Labeled Fishes in the Wild上测试结果
在SSD算法上加入特征融合的金字塔算法,多层特征融合增强小目标特征表达能力,并且在特征层级之间加入卷积层特征融合操作,增强各个特征层的特征强度,从而大幅提升目标检测精度与查全率。检测精度较原始SSD算法提高了10%以上,查全率提高了7%。对比其它改进的SSD算法,如FSSD[13]与DES[16],检测精度和查全率也有较好的提升效果。说明基于多层特征融合与匹配的SSD算法可以有效地减少伪影的出现,如图8第三行中对于目标尺寸相对较小的鱼群检测效果也非常好。
图8 拼接图像检测效果比较
本文利用SSD网络多个卷积层不同维度和语义的特征信息,构造了特征金字塔模型,增强低卷积层语义表达能力,提高了低对比度下小目标的检测精度;在此基础上,采用特征匹配双塔结构,提高了卷积特征层的特征匹配精度,减少了水下鱼类图像拼接过程中伪影的产生。在真实数据集上的测试结果表明,对双目图像的检测与拼接具有良好的效果。但是,本文样本均不包含遮挡情况,对于这种情况下图像拼接与目标检测效果未做检验。并且由于训练与测试数据集样本数据较少,模型迁移到其它水下场景,鲁棒性无法得到有效的保障。未来将会围绕复杂水下场景目标检测和零样本学习做更深入的研究。