一种基于双向特征融合和更平衡L1损失的单发多框检测器优化方法与流程

文档序号:20954330发布日期:2020-06-02 20:19阅读:328来源:国知局
一种基于双向特征融合和更平衡L1损失的单发多框检测器优化方法与流程

本发明属于计算机视觉领域,涉及一种基于双向特征融合和更平衡l1损失的单发多框检测器优化算法。



背景技术:

目标检测是计算机视觉的核心任务之一,广泛应用于智能监控、自动驾驶等领域。近年来,基于深卷积神经网络(deepconvolutionalneuralnetworkd,dcnn)的各种目标检测方法取得了显著的性能,提高了目标检测的精度和速度。基于深度卷积神经网络的目标检测方法大致可分为两类:

(1)两阶段检测框架,首先产生一系列目标候选区域,然后通过深度神经网络提取目标候选区域的特征,并用这些特征进行分类,以及目标真实边界框回归。两阶段检测器主要包括:具有开创性的rcnn,在r-cnn体系结构中引入传统的空间金字塔池的sppnet,rcnn的改进版本fastrcnn和fasterrcnn,以及一些从不同角度引入许多新方法来提高准确度和速度的框架,例如,fpn、cascadercnn和maskrcnn。

(2)一阶段检测框架,不生成目标候选区域而直接基于回归的目标检测与识别算法,它直接产生物体类别的概率和位置坐标。yolo(youonlylookonce)和ssd(singleshotmultiboxdetector)推广了一阶段检测器,它们比以往的两阶段检测器简单、快速,可以在gpu上实现实时处理,但精度相对落后。

ssd具有较高的检测精度和速度,对尺度变化具有较好的鲁棒性。ssd充分利用不同输出层的特征进行目标检测,然后合并不同层的检测结果,最后采用非极大值抑制(nms)方法抑制冗余检测框。传统的ssd算法虽然在速度和精度上都有很好的性能,但仍存在一些不足需要改进。首先,传统ssd算法中用于目标检测的特征金字塔中的不同层是独立的,没有考虑不同特征层之间的关系,忽略了一些上下文信息。然而,小目标通常严重依赖上下文信息,因此ssd在小目标检测方面存在局限性。为了解决这个问题,dssd用resnet-101代替ssd的基础骨干网,并用反褶积层来聚合上下文,增强浅层特征的高层语义。rssd利用池化和反褶积实现了彩虹连接(rainbowconcatenation),融合不同层次的特征,增加特征层的通道数等方式来提高小目标检测的精度,然而由于网络结构的复杂度过高,检测速度被大大降低。此外,研究人员发现,基础骨干网络中的深层特征具有更多的语义,而浅层特征具有更多的内容描述,因此最近fpn和panet中通过横向连接的特征集成推动了目标检测的发展。这些方法启发我们,低层信息和高层信息在目标检测中是互补的,如何利用它们集成金字塔表示的方法决定了检测性能。其次,目标检测需要完成分类和定位两项任务,因此它的训练目标也包含了这两项任务。如果它们没有得到适当的平衡,一个目标可能会受到损害,从而导致总体表现欠佳。训练过程中涉及的样本情况也是如此,如果正负样本的梯度贡献不能很好地平衡,负样本(easysamples)产生的小梯度可能淹没在正样本(hardsamples)产生的大梯度中,从而限制了进一步的细化,这些不平衡会导致训练效率低下和模型退化。因此,减少目标检测训练过程中的不平衡是实现最优训练和充分挖掘模型结构潜力的关键。ssd精度低的原因之一是极不平衡的正负样本采样率。ohem只保留损失最大的样本,而完全忽略easysamples。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于双向特征融合和更平衡l1损失的单发多框检测器优化方法,针对传统ssd算法由于独立使用多尺度特征层而没有考虑不同特征层之间的关系,进而忽略了一些上下文信息,导致对于小目标检测不够鲁棒的问题,以及传统ssd算法在训练过程中存在的正负样本和多任务不平衡问题。

为达到上述目的,本发明提供如下技术方案:

一种基于双向特征融合和更平衡l1损失的单发多框检测器优化方法,设计一种双向特征融合模块对传统ssd算法中用于检测的特征层(深层和浅层)进行双向特征信息融合,使得融合后的特征层既包含丰富的细节特征又包含重要的语义信息,同时提出了一种更平衡的l1定位损失函数来促进重要梯度的回归,进而一定程度上解决ssd算法中存在的样本和多任务不平衡问题。通过上述两方面,特征信息得以有效增强,不平衡问题得以有效解决,所提出的fessd也就有效ssd算法的检测性能和对小目标检测的鲁棒性。该方法具体包括以下步骤:

a1:对训练集图像进行预处理;

a2:构建传统单发多框检测器(singleshotmultiboxdetector,ssd)模型;

a3:基于双向特征融合和更平衡l1损失函数修改传统ssd算法模型并构建单发多框检测器优化算法(balancedfeaturefusionssd,bfssd)模型;

a4:对bfssd算法模型进行训练:首先初始化bfssd算法模型参数,其次设置学习率和最大迭代次数,然后采用批量随机梯度下降算法进行训练;

a5:对bfssd算法模型的性能进行测试。

进一步,所述步骤a3具体包括:首先采用双向特征融合模块对ssd算法模型获得的特征层中前4层进行双向特征信息融合,然后再传统ssd算法模型的定位损失函数修改成更平衡l1损失函数(morebalancedl1loss)。

进一步,基于vgg16网络构建传统ssd网络,并把conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2共6个特征层提取出来用于目标检测记,其中,选择从传统ssd网络中提取出来的前4层特征层conv4_3、conv7、conv8_2、conv9_2记为s1、s2、s3、s4,构建双向特征融合模块,其中s1分辨率是s2分辨率的2倍,s3分辨率是s4分辨率的2倍;具体步骤包括:

第一步:用s2上采样得到特征大小与s1相同的s2_up,s1下采样得到特征大小与s2相同的s1_down,s4上采样得到特征大小与s3相同的s4_up,s3下采样得到特征大小与s4相同的s3_down;

第二步:将s1和s2_up进行点和得到c1,s2和s1_down进行点和得到c2,s3和s4_up进行点和得到c3,s4和s3_down进行点和得到c4,为了进一步体现双向特征融合,再对c1进行下采样得到c1_down以便和c2相加求均值得到最后的p1,再通过对p1进行上采样得到p2,对c3进行下采样得到c3_down和c4相加求均值得到最后的p4,再通过对p4进行上采样得到p3。

进一步,所述s4、s3、s2、s1、c2、和c4都采用1×1的卷积进行通道数统一,融合后的特征再利用3×3的卷积消除上采样带来的混叠效应,最后与传统ssd算法模型的s4、s3、s2、s1进行通道数统一得到的p4、p3、p2和p1。

进一步,所述更平衡l1损失函数的计算公式为:

其中,a=c且a和b为可变参数。

进一步,所述步骤a4中,对bfssd算法模型进行训练具体包括以下步骤:

a41:模型参数初始化:利用迁移学习的思想,加载vgg16在imagenet数据集上预训练的权重,去掉全连接层;

a42:新增网络层参数的初始化:采用均匀分布随机初始化新增网络层的参数权重,激活函数为relu,其定义为:f(x)=max(0,x);

a43:设置学习率和最大迭代次数,采用批量随机梯度下降算法进行训练

本发明的有益效果在于:本发明所采用的bfssd算法与传统ssd算法和其他一些先进的目标检测算法相比,本发明在不改变基础骨干网的前提下,首先,设计了一个能够从两个方向融合和细化特征信息的特征融合模块,有效地对多尺度特征进行了双向特征信息融合,使得融合后的特征层既包含丰富的细节信息又包含重要的语义信息,有利于小目标检测。其次,通过给出并利用一个更平衡l1损失函数,有效地平衡了正负样本对整个定位损失函数的梯度贡献,从而部分地解决了ssd算法中样本和多任务的不平衡问题。一系列的实验结果表明,本发明所采用的bfssd算法在保持与其他检测器相当的检测速度的同时,在算法检测性能和小目标检测的性能上有明显的优势。

本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。

附图说明

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:

图1为本发明所述基于双向特征融合和更平衡l1损失的单发多框检测器算法(bfssd)的整体框架图;

图2为本发明所述方法的整体流程图;

图3为本发明提出的双向特征融合模块在算法中的整体框架图;

图4为本发明与ssd算法在pascalvoc2007测试集上平均精确率(averageofeachclassprecision)vs召回率(recall)曲线图(p-r曲线图);

图5为本发明与ssd算法在pascalvoc2012测试集上的检测示例对比图;图5(a)~(e)为采用本发明bfssd算法的检测结果图;图5(f)~(j)为采用传统ssd算法的检测结果图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

请参阅图1~图5,本发明实施例采用了一种基于双向特征融合和更平衡l1损失的单发多框检测器优化方法,参照图1和图2所示,具体实施步骤如下:

步骤1:搭建算法所需计算机平台:nividagtx1080ti+ubuntu16.04+python3.5+tensorflow1.4+cuda8.0,我们提出的bfssd是基于tensorflow框架和vgg16体系结构的ssd实现的;

步骤2:准备数据集和数据格式转换:本发明采用的数据集为pascalvoc2007+pascalvoc2012,pascalvoc数据集由20个对象类组成,每个对象类都有带注释的地面真实位置信息和相应的类别信息,其中pascalvoc2007trainval(训练集)+pascalvoc2012trainval进行模型训练,pascalvoc2007test用于测试,然后转换为tfrecord格式;

步骤3:通过数据增广的方式对训练数据集进行预处理,具体为:对于每一张训练图像,随机进行如下几种选择:

1)使用原始的图像;

2)随机随机采样多个图像区域块(patch),设定与物体之间最小的jaccardoverlap为:0.1,0.3,0.5,0.7与0.9,采样的patch是原始图像大小比例是最小为0.3,最大为1.0,长宽比(aspectratio)为0.5或2;

保留groundtruth的中心在采样的patch中且在采样的patch中groundtruth面积大于0图像区域块;在随机采集图像区域块后,每一个采样的patch的尺度被重新调整到固定的大小,并且以0.5的概率随机的水平翻转以及随机颜色扭曲;

步骤4:基于双向特征融合和更平衡l1损失的单发多框检测器的模型构建,首先我们构建传统ssd算法模型,然后基于双向特征融合模块(如图3)构建bfssd算法网络结构,然后再基于更平衡l1损失函数构建bfssd算法模型;

构建传统ssd算法模型的主要步骤为:

1)基于vgg16网络,将两个全连接层(fc6和fc7)改成卷积层,然后移除dropout层和fc8层,并随后增加4个卷积层(conv8,conv9,conv10,conv11)来构建传统ssd网络结构;

2)提取conv4_3、conv7,conv8_2、conv9_2、conv10_2、conv11_2共6个卷积层的特征来进行目标检测,其中前4层后续将用双向特征融合块进行双向特征信息融合;

3)在提取的6个featuremap上设置默认框(defaultbox),每个featuremap的defaultbox的尺度(scale)公式为:

其中,sk表示defaultbox大小相对图片的比例,smin=0.2表示最底层的scale为0.2,smax=0.9则表示最高层的scale为0.9,m表示featuremap的个数。长宽比(aspectratio)的取值为:每个defaultbox的宽和高的计算公式分别为:

此外,当aspectratio为1时,增加一种scale为

4)正负样本获得:首先进行先验框(priorbox)匹配,从groundtruth出发,为每个groundtruth找到最匹配的一个priorbox,具体操作为将与每个groundtruth具有最大jaccardoverlap(iou)的priorbox进行匹配,记为正样本,反之,若一个priorbox没有与任何groundtruth进行匹配,则priorbox是负样本。其中jaccardoverlapiou)的计算公式如下:

再从priorbox出发,对于剩余的未匹配先验框,若某个groundtruth的jaccardoverlap(iou)大于0.5,那么该priorbox也与这个groundtruth进行匹配。然后采用难例挖掘的方法,对负样本进行抽样,抽样时按照置信度误差(predictionsloss)(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3。

5)定义ssd算法分类损失函数:ssd算法的总损失函数是边框回归损失函数(localizationloss,loc)和分类损失函数置信度误差(confidenceloss,conf)的加权和:

其中n是priorbox的正样本数量,是一个指示参数,当表示第i个priorbox与第j个groundtruth匹配,并且groundtruth的类别为p,c为类别置信度预测值。l为priorbox所对应边界框的位置预测值,g为groundtruth的位置参数,α权重系数α通过交叉验证设置为1。对于分类损失函数,采用softmaxloss,其公式为:

其中pos表示正样本,neg表示负样本,表示目标第i个预测框中目标是第p个类别的概率,表示预测框在没有物体。

6)对特征层进行卷积得到检测结果:对每个不同的用于检测的featuremap分别用两个不同的3×3的卷积核进行卷积,一个输出分类用的置信度得分(confidence),每个defaultbox生成21个类别confidence,一个输出回归用的位置(localization),每个defaultbox生成4个坐标值(cx,cy,w,h),分别表示边界框的中心坐标以及宽高。然后通过非极大值抑制(nms)方法保留前n个预测,确保留下最可能的预测框。nms方法的步骤为:a)将所有框的得分排序,选择最高及其对应的框;b)遍历其余的框,如果和当前最高分框的iou大于一定阈值,删除这个框;c)从未处理的框中继续选择一个得分最高的框重复a)和b)步骤;

基于双向特征融合模块构建bfssd算法网络结构:主要是基于双向特征融合模块修改传统ssd网络结构。如图3所示,主要步骤为:把conv4_3、conv7、conv8_2、conv9_2、conv10_2和conv11_2记作:s1、s2、s3、s4、s5和s6,其大小分别为38×38、19×19、10×10、5×5、3×3、1×1。选择前4层(s1、s2、s3、s4)构建双向特征融合模块,其中s1和s2为一对需要进行双向特征融合的传统特征层(s1分辨率是s2分辨率的2倍),s3和s4为另外一对需要进行双向特征融合的传统特征层(s3分辨率是s4分辨率的2倍)。具体操作为:

第一步是用s2上采样得到特征大小与s1相同的s2_up,s1下采样得到特征大小与s2相同的s1_down,s4上采样得到特征大小与s3相同的s4_up,s3下采样得到特征大小与s4相同的s3_down,第二步将s1和s2_up进行点和得到c1,s2和s1_down进行点和得到c2,s3和s4_up进行点和得到c3,s4和s3_down进行点和得到c4,为了进一步体现双向特征融合,再对c1进行下采样得到c1_down以便和c2相加求均值得到最后的p1,再通过对p1进行上采样得到p2,对c3进行下采样得到c3_down以便和c4相加求均值得到最后的p4,再通过对p4进行上采样得到p3。相加求均值的操作具体为:

为了进行点和操作s4、s3、s2、s1、c2、和c4都必须采用1×1的卷积进行通道数统一,融合后的特征再利用3×3的卷积消除上采样带来的混叠效应,最后与传统ssd算法的s4、s3、s2、s1进行通道数统一得到的p4、p3、p2和p1。在这个过程中,特征信息得以双向传递和高效融合。

基于更平衡l1损失函数构建bfssd算法模型主要是把传统ssd算法中的定位损失函数smoothl1修改成更平衡l1损失函数(morebalancedl1loss)。对于定位损失函数,其公式为:

其中为对groundtruth的g进行编码后的值,为预测值,priorbox位置用d=(dcx,dcy,dw,dh)表示。传统ssd算法采用smoothl1loss,本发明提出采用更平衡l1损失函数(morebalancedl1loss),其定义为:

其中a=c且a和b为可变参数,在本发明的bfssd算法中所取得最好性能效果的参数值为:a=1.5b=3,这一点可以从表1中得到;

表1voc2007测试集上不同参数设置下更平衡l1损失函数的结果

步骤5:对bfssd算法模型进行训练。首先是模型参数初始化,利用迁移学习,采用vgg16在imagenet数据集上预训练的参数权重,去掉全连接层初始化大部分网络参数,对于新增网络层(双向特征信息融合模块)的参数权重采用均匀分布随机初始化,激活函数为relu,其定义为:

f(x)=max(0,x)(9)

其次是设置学习率和最大迭代次数;其中最大迭代次数设置为120000次,批量大小(batchsize)为32,学习率采用warm-up的策略,对于前1000次,学习速率为0.0001,方便加快启动和收敛速度,对于1000次到80000次,学习率为0.001,对于80000次到100000次,学习率降低到0.0001,在最后100000次到120000次时,学习率为0.00001。采用批量随机梯度下降算法进行训练;

步骤6:对bfssd算法模型的性能进行评估、测试、并和传统ssd算法进行比较分析。评估指标主要为平均精度均值(meanaverageprecision,map)和每秒帧率(framepersecond,fps),即每秒内可以处理的图片数量。

如图4所示,本发明所提出的bfssd算法与传统ssd算法相比有更高的map值,这一点我们同样可以从表2中得到,本发明所提出的bfssd算法相比于传统ssd算法和一些其他的先进目标检测器算法,得益于我们的双向特征融合模块和更平衡l1损失函数,其中双向特征融合模块可以有效的在不同特征层之间进行双向特征信息融合来增强特征信息,同时避免了通过引入复杂基础骨干网带来的巨大网络参数量的提升,而更平衡l1损失函数可以通过增大负样本(easyexample)梯度的相对权重,促进这一关键梯度的回归,一定程度上解决了存在的不平衡问题,这一部分是不增加参数量的,bfssd相比于其他算法在map和fps上有着一定的优势,并且其检测速度也相比于传统ssd算法也没有降低很多。

表2各种算法在voc2007test的评价指标对比情况

如表3所示,为了进一步证明本发明所提双向特征融合模块和更平衡l1损失函数的有效性,我们用实验进一步证明这一点。

表3模型简化测试结果对比情况

如图5所示,本次实验在voc2012测试集上用样例图片展示了本发明所提的bfssd算法和传统ssd算法在性能上的对比,可以发现,得益于本次采用的双向特征融合模块和更平衡l1损失函数,bfssd相比于ssd检测精度更高,能够有效的减少误检和提高对小目标的检测效率。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1