基于特征加权与网络微调的小样本目标检测方法

文档序号:1832048 发布日期:2021-11-12 浏览:3次 >En<

阅读说明:本技术 基于特征加权与网络微调的小样本目标检测方法 (Small sample target detection method based on feature weighting and network fine tuning ) 是由 朱得糠 李彤 孟志鹏 于 2021-07-30 设计创作,主要内容包括:本发明属于计算机视觉图像目标检测技术领域,提供基于特征加权与网络微调的小样本目标检测方法。完成有B个基类和N个新类(小样本)的目标检测任务。本发明为经典Faster RCNN目标检测算法增加了元学习器为检测器学习权重矢量,并据此将网络训练过程划分为基类训练和微调训练两个阶段;为经典的Faster RCNN检测器添加了特征加权过程,并改进了随后的区域池化和预测层网络,以适应加权后的特征金字塔。本发明有效提升了小样本目标检测的精度。(The invention belongs to the technical field of computer vision image target detection, and provides a small sample target detection method based on feature weighting and network fine adjustment. And completing the target detection task with B base classes and N new classes (small samples). The invention adds a meta-learner for learning weight vectors for a detector for a classic fast RCNN target detection algorithm, and divides a network training process into two stages of base class training and fine tuning training according to the weight vectors; a feature weighting process is added to the classical fast RCNN detector and the subsequent region pooling and prediction layer network is improved to accommodate the weighted feature pyramid. The invention effectively improves the precision of small sample target detection.)

基于特征加权与网络微调的小样本目标检测方法

技术领域

本发明属于计算机视觉图像目标检测技术领域,具体涉及一种小样本目标检测方法。

背景技术

近年来,基于深度学习的计算机视觉技术取得了突破性进展,在目标分类、检测、分割等任务上表现出了接近甚至超过人类的水平。人类可以通过学习少量的数据样本,就轻易地识别出某些新的物体,但是,深度学习的方法却需要大量的数据做训练,与人类在小样本学习上的能力差距还比较大。目前,已有许多关于小样本学习的研究,在计算机视觉领域主要是研究目标分类。对于更复杂的小样本目标检测任务,研究还比较少。论文《Few-Shot Object Detection via Feature Reweighting》较早地提出了一种元学习方法,在元学习阶段通过大量的基类样本学习图片的元特征,加权后进行目标检测;《FrustratinglySimple Few-Shot Object Detection》提出了一种两阶段训练,即基训练和微调训练的小样本目标检测方法,只通过少量的样本微调网络的最后一层,达到小样本目标检测的目的。论文《FSCE:Few-Shot Object Detection via Contrastive Proposal Encoding》指出小样本目标检测性能的降低主要是由于将少量样本的新类错误分为其它类导致的,因此算法引入一个CPE loss,衡量类内实例之间的一致性和类之间实例的差异性,通过减小CPEloss来提高正确分类的性能。

以上这些研究遵循了小样本目标检测的一种任务模式:定义存在大量训练样本的目标类型为基类,仅有少量训练样本的目标类型为新类。利用基类和新类样本训练小样本目标检测器,完成从测试数据中同时检测基类和新类的任务。

发明内容

本发明目的是提供一种能够有效提升检测精度的小样本目标检测方法,解决小样本目标检测精度不高的技术问题。

为达到上述目的,解决上述技术问题,本发明提出一种基于特征加权与网络微调的小样本目标检测方法,技术方案如下:

S1,检测任务建模:设共有B类待检测目标,其中每类目标具有大量训练样本,定义这些类为基类;另有N类目标,每类目标仅具有K个训练样本(小样本),定义这些类为新类。小样本目标检测任务即由测试样本中检测全部(B+N)个类;为(B+N)个待检测类分配唯一的身份id编号,B个基类id编号用iB∈{1,…,B}表示,N个新类id编号用iN∈{B+1,…,B+N}表示。

S2,网络构造:网络整体构造主要包括两部分,一是改进的Faster RCNN检测器(Detector),二是轻量级CNN构成的元学习器(Meta-learner),如图7所示;

检测器主要包括(1)骨干网络(Backbone)、(2)推荐区域网络(Region ProposalNetwork,RPN)、(3)区域池化网络(ROI Pooling Network)和(4)预测层(PredictionLayer)4个网络模块以及一个特征加权操作过程;

训练阶段检测器输入数据为查询样本,包括图片及其标注;元学习器输入数据为支持样本,按对应类别顺序排列;检测器的骨干网络输出的特征金字塔与元学习器输出的各类别的权重矢量经过特征加权操作后,获得加权后的特征金字塔,继续参与随后的区域池化和预测,输出检测框及其分类得分,用于后续训练或输出检测结果;各网络模块详细结构见后续附图及说明。

S3,数据准备:(1)样本标注,每张训练图片标注一个符合YOLO算法格式的txt标注文件;(2)基类训练数据准备,将所有基类图像样本汇总作为基类训练数据集;(3)微调训练数据准备,为平衡基类和新类训练数据量,该阶段对每个基类随机抽取K个样本,将基类和新类共(B+N)×K个样本作为微调训练数据集;

S4,模型训练:模型和数据准备完毕之后,即可开始训练。训练分为两个阶段:(1)利用基类训练数据集开展基类训练;(2)利用微调训练数据集开展微调训练。

S4.1,基类训练:由基类训练数据集抽取查询样本和支持样本,作为网络输入,仅训练网络检测B个基类。其中查询样本用于提取特征金字塔和推荐可能存在目标的区域。特征样本共包含B张图片,每1张图片对应一个类别,每个特征样本处理得到一个权重矢量,共B个矢量构成权重张量,与特征金字塔逐层特征张量加权,并按通道拼接得到加权后的特征金字塔,与原金字塔相比,各层特征通道数变为原来的B倍。加权后的特征金字塔按经典Faster RCNN流程进行后续处理,给出网络预测结果和损失函数值,从而进行迭代训练,结束后保存网络参数。

S4.2,微调训练,由微调训练数据集抽取查询样本和支持样本,作为网络输入,训练网络同时检测B+N个基类和新类。首先改动基类训练网络,将预测层全连接网络的输入由基类训练时的B×1024维修改为(B+N)×1024维,其它部分结构不变。为预测层以外的网络载入基类训练保存的网络参数,冻结骨干网络和RPN网络,随机初始化预测层网络参数。采用批随机梯度下降的方式微调训练,更新权重网络和预测层网络参数。训练步骤同S4.1,训练结束后保存网络参数。

S5,模型推理测试:微调训练完成后,即完成了网络的训练过程,可用来执行目标检测推理任务。推理测试前,可利用每个类的K张图片样本计算其权重,构成(B+N)个类的权重矢量,保存。测试时,不需要在线输入支持样本,只将推理测试样本输入骨干网络,利用保存的权重矢量进行加权,最终输出检测结果。

为便于后续表述,我们引入张量的定义,一个n维张量S表示为一个n维数组,维度索引编号为0,1,…,n-1,张量的尺寸表示为一个n元组size(S)=(z1,…,zn-1),zi表示第i维的长度。张量沿某一维—例如第1维—索引为k的切片表示为张量S[:,k,:,…,:]。

进一步的,S2骨干网络:如图1所示,由残差网络(ResNet101)和特征金字塔网络(Feature Pyramid Network,FPN)构成,输入图像通过(1)ResNet101完成自底向上的下采样和(2)FPN完成自顶向下的上采样与横向链接,输出特征金字塔。采用批处理的方式进行训练和推理,设一批有bz张图片,输入图片表示为一个尺寸为(bz,3,416,416)的张量,其中第0维的bz表示图片个数,第1维的3表示RGB通道,第2维和第3维的416表示宽和高像素数量。骨干网络的输入为图片张量,输出为有序字典,即特征金字塔P。

(1)ResNet101网络:细分为5个部分,分别为conv1,conv2_x,conv3_x,conv4_x和conv5_x。形如表示一个残差块,×3表示3个残差块串联。残差块网络结构如图2所示,形如1×1,64表示64通道的1×1卷积核的卷积层,后接批归一化层以及Relu层,第3层卷积层输出与输入相加后再经过一个Relu即为该残差块的输出。从conv2_x开始,每一个部分的最后一个残差块的输出作为该层的输出特征,分别对应C2,C3,C4,C5,形式为张量,尺寸分别是原输入特征尺寸的1/4,1/8,1/16,1/32。

(2)FPN网络:经过该步骤得到一个特征金字塔,表示为有序字典P。由于金字塔的全部级别都使用共享分类器/回归器,因此在全部特征映射中都固定了输出特征张量维度(通道数量),本方法将其设为256。由C5开始,经过1×1,64卷积层后得到尺寸为(bz,256,13,13)的张量P['3'];将P['3']通过2倍最近邻上采样后与下一层(C4经过1×1,64卷积)逐元素相加得到尺寸为(bz,256,26,26)张量P['2'];依次通过以上步骤得到张量P['1']和P['0'],尺寸分别为(bz,256,52,52)和(bz,256,104,104)。张量P['pool']通过对P['3']池化得到,尺寸为(bz,256,6,6)。

进一步的,S2推荐区域网络:输入特征金字塔P,输出推荐框的坐标,如果是训练阶段还输出网络的损失函数值。P经过一个3×3卷积层和Relu层,再输入rpn_head层,即图3中的1×1,3和1×1,12卷积层,输出scores预测和框坐标预测,与3种宽高比(0.5,1.0,2.0)和5种尺度(32,64,128,256,512)的锚框结合,给出推荐框的坐标。处理后,获得一个以bz为长度的列表,每个元素对应一张图片,列表值是一定数量(如Np)的推荐框。在训练阶段,利用scores和预测框位置,与真值计算损失函数值。

进一步的,S2权重网络:由一系列卷积、批归一化和池化层模块构成,结构如图4所示。按类别顺序,依次对每个类做如下操作:随机抽取该类1张图片,RGB三通道尺寸缩放为416×416;初始化一个全0的416×416张量,把缩放后图片中该类的实例框位置设置为1,此张量作为该图片的过滤通道;将RGB和过滤通道的张量堆叠,组成该类的尺寸为(4,416,416)的特征样本。设待分类的类别总数用Nc表示,则基类训练时Nc=B,微调训练时Nc=B+N。将Nc个类的特征样本按类别顺序拼接成(Nc,4,416,416)尺寸的张量,作为该批训练的特征样本输入权重网络,输出为权重张量ω,尺寸为(Nc,1024),即Nc个1024维矢量。

进一步的,S2加权操作,是对特征金字塔和权重张量的操作。依次对特征金字塔的4层特征张量P['0'],P['1'],P['2'],P['3']进行加权操作,得到加权后的特征金字塔Pω,包括Pω['0'],Pω['1'],Pω['2'],Pω['3']共4层,对应加权后的张量尺寸分别为(bz,256×Nc,104,104),(bz,256×Nc,52,52),(bz,256×Nc,26,26)和(bz,256×Nc,13,13)。加权操作实质上是将特征金字塔P前4层的特征张量逐层与权重张量ω对应元素逐通道相乘,得到Nc个256通道特征矩阵,再将它们按通道拼接获得。加权后的特征金字塔融合了由支持样本中提取的类别特征信息,具体如何逐层逐通道相乘见后续具体实施步骤。

进一步的,S2区域池化首先根据推荐框和真值框的“交并比”随机选择一定数量Nt的正负样本训练框,然后将训练框与加权后的特征金字塔结合,并经池化操作得到固定尺寸(bz×Nt,256×Nc,7,7)的训练样本特征,供后续RCNN分类和框回归。因为是多尺度特征,把训练框映射到哪个特征层上是个问题,按公式(1)

确定训练框所对应的特征金字塔层次,其中k0是一个面积为224×224的框应赋予的层等级。

进一步的,S2预测层:输入是池化后的固定尺寸训练样本特征,尺寸为(bz×Nt,256×Nc,7,7),将张量的1,2,3维度展开拼接成256×Nc×7×7矢量,转化为(bz×Nt,256×Nc×7×7)的张量。将展开后的特征张量通过两个全连接层,得到(bz×Nt,1024)尺寸的特征张量。然后输入box classifier和box regressor,得到(bz×Nt,Nc)尺寸的得分张量和(bz×Nt,4×Nc)尺寸的框坐标张量。其中,得分仅用于训练时计算损失函数值。

进一步的,S3按YOLO标注格式,如果数据本身就是YOLO标注格式直接使用,如果不是则对数据进行如下修改变换为YOLO标注格式,为每一张训练图片制作一个同名的txt标注文件,里面是按类[id x,y,w,h]标注的目标框,数值分别指所标注内容的类别id号、归一化后的中心点x坐标,归一化后的中心点y坐标,归一化后的目标框宽度w,归一化后的目标况高度h,一个实例框一行。

进一步的,S4.1基类训练:采用批随机梯度下降的方式训练网络,每批训练过程如下(1)由基类训练数据集随机抽取批数量为bz的图片样本,称为查询样本,输入骨干网络;(2)从基类训练数据集中为每个基类抽取1张图片,按编号顺序排列,共B张图片组成特征样本,输入权重网络;(3)网络按图7所示流程执行,输出检测结果,与查询样本的标注结果对比计算损失函数值,采用Adam优化器更新网络参数;(4)重复以上步骤,直至训练结束,保存网络参数。

进一步的,S4.2微调训练:每批训练过程如下(1)由微调训练数据集随机抽取批数量的查询样本(可重复抽样)输入骨干网络;(2)从微调训练数据集中为每个类(含基类和新类)抽取1张图片,按编号顺序排列,共(B+N)张图片组成特征样本,输入权重网络;(3)网络按图7所示流程执行,输出检测结果,与查询样本的标注结果对比计算损失函数值,采用Adam优化器更新网络参数;(4)重复以上步骤,直至训练结束,保存网络参数。

S5模型推理测试包括如下步骤:(1)计算权重矢量,完成两个阶段训练后,对每个类别,将其K个样本依次输入权重网络,得到K个权重,求算术平均,得到对应每个类的权重矢量;(2)测试数据推理,直接将测试样本输入骨干网络,将输出的特征金字塔直接与权重矢量进行加权操作,进行后续处理,直至给出检测结果。

本发明的有效收益:

本发明提出了一种基于特征加权和网络微调的小样本目标检测方法,具体而言是完成有B个基类和N个新类(小样本)的目标检测任务。该方法为经典Faster RCNN目标检测算法增加了元学习器,将特征加权和网络微调相结合,构造了小样本目标检测网络,相对于已有方法,能够有效提高检测精度,且推理测试时不增加额外计算负担,实用性好。

本发明创新之处在于引入元学习器为检测器学习权重矢量,并据此将网络训练过程划分为基类训练和微调训练两个阶段;为经典的Faster RCNN检测器添加了特征加权过程,并改进了随后的区域池化和预测层网络,以适应加权后的特征金字塔。

附图说明

图1为骨干网络示意图;

图2为残差块网络示意图;

图3为推荐区域网络示意图;

图4为权重网络示意图;

图5为区域池化网络示意图;

图6为预测层网络示意图;

图7为本发明网络框架示意图;

图8为推理测试流程图。

具体实施方式

S1检测任务建模。为(B+N)个待检测类分配唯一的身份id编号,B个基类id编号用iB∈{1,…,B}表示,N个新类id编号用iN∈{B+1,…,B+N}表示。

S2基于Faster RCNN网络构造小样本目标检测网络,如图7所示。

S3数据准备。

S3.1样本标注,每张训练图片标注一个符合YOLO算法格式的txt标注文件;

S3.2基类训练数据准备,将所有基类图像样本汇总作为基类训练数据集;

S3.3微调训练数据准备,为平衡基类和新类训练数据量不均衡问题,该阶段对每个基类只随机抽取K个样本,将基类和新类共(B+N)×K个样本作为微调训练数据集。

模型和数据准备完毕之后,即可开始训练。网络训练分为两个阶段:第一个阶段仅利用基类样本进行基类训练;第二个阶段利用基类和新类的样本进行微调训练。

S4.1基类训练。采用批随机梯度下降的方式训练网络,批大小设为bz,每批训练过程如下:

S4.1.1由基类训练数据集随机抽取bz张查询样本,尺寸缩放为416×416,组成尺寸为(bz,3,416,416)的张量输入骨干网络。骨干网络输出一个5层的特征金字塔字典P,金字塔每层对应字典的一个元素,字典关键字分别为{'0','1','2','3','pool'},对应的数据为张量,维度分别为P['0']:(bz,256,104,104),P['1']:(bz,256,52,52),P['2']:(bz,256,26,26),P['3']:(bz,256,13,13),P['pool']:(bz,256,6,6)。

S4.1.2从基类训练数据集中为第1个基类抽取1张图片,尺寸缩放为416×416,得到图片RGB通道数据张量,尺寸为(3,416,416);对应的标注文件中,将该类的实例框对应到416×416尺度位置,初始化一个416×416尺寸的全0张量,将实例框位置的张量元素置为1,作为该图片的过滤通道张量,维度为(1,416,416)。将数据张量与过滤通道张量按通道维叠加,得到维度(4,416,416)的张量作为基类的特征样本。对B个基类按类别编号顺序重复以上操作,得到该次批训练的特征张量,尺寸为(B,4,416,416),输入权重网络。权重网络输出的权重张量ω尺寸是(B,1024),表示B个类别对应的B个1024维列矢量。

S4.1.3将特征金字塔P共5层输入推荐区域网络,输出一个bz长度的列表,每个元素对应1张图片,元素内容是尺寸为(Np)和(Np,4)的两个张量,分别是Np个候选框的得分和位置坐标。

S4.1.4将特征金字塔P的{'0','1','2','3'}共4层与逐类的权重矢量加权得到加权后的特征金字塔Pω,Pω是与P关键字相同的字典,字典元素值是256×B个通道的特征张量,第'l'层第(i-1)×256+k个通道的特征张量按公式(2)计算:

Pω['l'][:,(i-1)×256+k,:,:]=P['l'][:,k,:,:]×ω[i,k] (2)

依次遍历k=0,…,255,i=1,…,B和l=0,…,3,即得到完整的Pω

S4.1.5将S4.1.3中得到的每张图片的推荐框与对应的标注框,即真值,比对“交并比”,通过“交并比”门限为每张图片样本筛选出指定比例的Nt个正负样本框,即训练框,并记录样本框的真值身份和位置。

S4.1.6将S4.1.5给出的训练框与Pω进行ROI pooling,得到box_feature,即尺寸为(bz×Nt,256×B,7,7)尺寸的特征张量,即该类的加权特征张量,具体操作如下:对每个训练框,首先按公式(1)确定对应的金字塔层级l,随后通过roi_align算法由Pω['l']提取每个训练框的特征,最终得到前景框的特征box_feature。

S4.1.7对box_feature,将特征维展开成1维后输入两层全连接层,得到展开后的Roi特征张量,尺寸为(bz×Nt,1024)。

S4.1.8将特征张量Roi输入预测层,输出对应B个基类的得分和框位置。与S4.1.5中记录的真值对比,按公式(3)计算损失

采用Adam优化器更新网络参数。

S4.1.9重复S4.1步骤,直至训练结束,保存网络参数。

S4.2微调训练。

微调训练与基类训练的不同之处在于(1)增加了待检测目标类别数量;(2)更换了训练数据集;(3)训练过程冻结部分网络参数。

S4.2.1修改网络模型,如图7所示,将预测层全连接网络的输入由基类训练时的B×1024维修改为(B+N)×1024维,其它部分结构不变。

S4.2.2网络参数初始化,预测层网络参数随机初始化,其余各层读入基类训练时保存的网络参数。冻结骨干网络和RPN网络参数。

S4.2.3采用与S4相同的步骤进行网络训练,此时由微调训练样本集随机抽取训练样本,不同之处在于此时的权重矢量ω维度为(B+N,1024),遍历i=1,…,B+N。直至训练结束,保存网络参数。

微调训练完成后,即完成了网络的训练过程,微调训练后的网络可用来执行目标检测推理测试任务。

S5,模型推理测试

S5.1计算权重矢量,对每个类别,将其K个样本依次输入权重网络,得到K个权重,求算术平均,得到对应该类的权重矢量ω[i,1024],i∈[1,…,B+N],遍历所有(B+N)个类,得到权重矢量;

S5.2测试样本推理,将测试样本输入骨干网络,得到特征金字塔字典P;

S5.3执行同S4.1.3和S4.1.4相同的步骤;

S5.4将S5.3步骤输出的推荐框作为ROI框,执行S4.1.6、S4.1.7的步骤;

S5.5将特征张量Roi输入预测层,输出对应B+N个类的得分和框位置,经过NMS、SoftMax等步骤,获得最终检测结果。

实施例1

以NWPU VHR-10数据集为样本,构建一个6个基类,4个新类的小样本目标检测任务。NWPU VHR-10数据集是一个公开的10级地理空间物体检测数据集,十类物体是飞机,船舶,储罐,垒球场,网球场,篮球场,地面跑道,港口,桥梁和车辆。该数据集包含650个高分辨率的遥感图像,由专家手动注释。

6个基类分别是:1飞机、2储罐、3网球场、4篮球场、5港口、6车辆。

4个新类分别是:7船舶、8垒球场、9地面跑道和10桥梁.

363张训练图片,91张验证图片,196张测试图片共650张图片。本发明的算法与文献《Frustratingly Simple Few-Shot Object Detection》的算法(简称FS-FSOD)对6个基类和4个新类在测试数据集上进行对比验证,分别比对有1、3、5和10个小样本情况下的mAP精度,结果如表1所示:

表1两种算法结果比对

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:车辆功能检测方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!