APP下载

基于MAML 算法的YOLOv3 目标检测模型

2022-03-03沈震宇朱昌明

关键词:梯度样本目标

沈震宇, 朱昌明, 王 喆

(1. 上海海事大学信息工程学院,上海 202010;2. 华东理工大学信息科学与工程学院,上海 200237)

目前计算机视觉依然是研究领域的热点,同时也是人工智能、机器学习、深度学习的研究方向之一。生活中,凡是运用电子设备去执行监控、识别、追踪等操作时都需要计算机视觉技术。其中目标检测属于图像识别的一个基本任务,被广泛应用于机器人导航、智能视频监控、工业检测等诸多领域,并且通过图像识别能减少对人力的消耗,因此具有重要的现实意义。

传统的目标检测模型都是通过大量数据样本的训练和测试来实现检测目标的目的,且大多数的目标检测算法都是基于提高检测精度或检测速度的目的而被提出的。目前的目标检测算法依然存在一些问题:

(1)为了训练目标检测模型需准备大量的高质量样本,花费很多时间和精力,同时也需要一定的训练时间。

(2)对于一个训练过的目标检测模型,遇到新的检测任务,且这项任务中如果出现未训练过的目标类别,那么这个目标检测模型的泛化性将受到一定程度的考验,甚至可能无法检测出该目标。

近年来,对仅使用小样本进行目标检测的研究相对较少。其中文献[1]提出了基于注意力机制的区域候选网络和多关系检测器的小样本目标检测网络,充分利用少量训练样本和测试集之间的相似度来检测新对象,同时抑制背景中的错误检测。文献[2]引入了一个针对源和目标特征的配对机制来缓解目标域样本不足的问题,并在此基础上提出了一个双层模块,以实现在源域上训练的检测器适配到目标域上。文献[3]在SSD 的网络结构上增加了空洞金字塔模块和特征空洞金字塔模块,提升了网络浅层特征层的语义信息和深层特征层的感受野,从而加强了特征提取的能力。该类方法虽然能解决小样本学习的问题,但仍存在一些解决难点,主要包括以下几点:(1)该类方法都是通过比对的方式进行的,仍需要大量的数据进行模型训练。(2)由于是通过比对的方式进行有目标的检测,要检测的目标类别都必须进行比对,因此十分耗时。(3)该类方法是基于对目标具有建议机制的两阶段检测算法来进行改进的,两阶段检测算法本身就相对耗时。

为了解决因模型中某方面能力欠缺而存在的问题,与模型无关的学习算法被提出,如元学习(Meta Learning)。元学习的研究目的不是提升模型针对某项任务的处理能力,而是提升模型解决一系列任务的能力。MAML[4]就是元学习中的一种算法,通过独立的损失函数在训练时不断地在不同类的任务上学习,最终使模型获得一个良好的初始化参数。此外,也有在模型上进行改进的方式,如文献[5]在网络中通过减少池化并在网络底层加入空间加信道压缩激励模块来突出可利用的细节信息,在深层网络中加入可变多尺度特征融合模块,增加感受野,最终生成高质量的特征图。

从模型的角度来看,一体化卷积神经网络检测算法虽然检测准确性相对较低,但由于其端到端的网络结构,具备了网络速度快的特性。YOLOv3[6]是典型的代表,虽然它的检测性能差于最新发表的YOLOv4[7],即在平均精度(Average Precision,AP)值上相对较低,但其传输途径简单、通用性强,因此本文针对小样本目标检测的难点和YOLOv3 检测准确性低的问题,提出了一种基于MAML 算法的YOLOv3目标检测算法。根据MAML 算法原理改进YOLOv3中主干网络的信息传输形式,使Darknet-53 在梯度下降方面实现参数内更新和外更新两个阶段,通过其损失函数在多步梯度调整的情况下使模型训练得到的初始化参数能更加聚焦于目标的特征信息,以便在后续的训练和预测时提高YOLOv3 检测的准确性和泛化性,也能以常规的推理形式直接进行小样本检测,效率高且数据量需求低。

1 相关工作

1.1 研究背景

目标检测算法经过了数十年的发展历程,从2012 年开始,基于深度学习的目标检测算法逐渐代替了基于手工特征的检测算法。基于深度学习的目标检测算法发展至今,大致分为两种方式:一种是基于对目标具有建议机制的两阶段检测;另一种是一体化卷积网络的检测。在两阶段检测的技术发展上,RCNN[8]是最早且最为经典的代表算法,它通过候选区域选择的方法,对目标图像进行建议提取并将其标准化作为卷积神经网络(CNN)的输入;CNN根据输入执行诸如卷积或池化等操作以获得固定维度的输出,即特征提取;最后由支持向量机(SVM)对特征样本分类,通过边界回归框回归获得精确的区域信息。由于RCNN 在高密度的候选区域上反复进行特征提取且训练包括多个阶段,导致算法繁琐和耗时,因此整体的目标检测速度缓慢且各类别平均精度的均值(mean Average Precision,mAP)也相对不高。两阶段检测算法还包括SPPnet[9]、Fast RCNN[10]、Faster RCNN[11]、FPN[12]等。

一体化卷积网络检测算法中也出现了许多著名的算法,其中YOLO[13]算法是第1 个一体化卷积网络检测算法,也是相当经典且重要的算法。YOLO 模型的检测速度非常快,但它没有采用建议机制,且只通过一次向前传播来获取目标包围框的位置和目标的类别,与Faster RCNN 相比,检测精度相对较低,尤其是对小目标的检测效果较差。Liu 等[14]结合YOLO检测速度快和区域候选网络(Region Proposal Network,RPN)定位准确的优点,提出了SSD 算法,在检测准确率上接近Faster RCNN,同时又保持了极快的检测速度,且在训练过程中,SSD 算法还采用了难样本挖掘操作对图像的难样本进行聚焦。Lin 等[15]对两种检测算法存在的差异进行研究之后提出了RetinaNet模型,对传统的交叉熵损失函数进行了修正,提出了聚焦损失函数,使简单背景样本在网络训练过程中降低学习权重,更加聚焦于难样本的学习,从而使一体化卷机网络的检测不论是在速度上还是在精度上都优于对目标具有建议机制的两阶段检测。

近年来,一些新的一体化卷积网络被提出,如FCOS[16],直接取消了锚框的使用,通过一种更简单、更灵活的检测框架对每一个像素预测一个目标来解决目标检测问题,并且提升了检测效果。除此之外,相关的基于小样本的深度学习应用也被提出,如文献[17]利用多尺度空洞原型网络进行小样本的深度学习,通过运动特征和几何先验来识别通风柜橱窗的状态,从而达到化学实验室橱窗安全管理的目的。

1.2 YOLO 的相关研究

YOLO 模型作为第1 个一体化卷积网络检测算法,其核心思想就是直接利用整张图像作为神经网络的输入,在输出层获得目标包围框的位置和目标的类别。虽然检测速度快,但由于自身损失函数和整体结构的问题,导致定位产生误差,对小目标的检测效果差,且当同一目标出现不同长宽比时泛化性能较弱。然而YOLO 模型发展至今,经过了3 次版本的改善,目前已更新至YOLOv4。每次的改善都会解决上一代许多的不足之处,从而在保持检测速度快的情况下达到精度提升的效果。

Redmon 等[18]对YOLO 多目标检测框架进行了改进,提出了YOLOv2。其中对精度的改进包括批次标准化、高分辨率分类器、带锚框的卷积、维度聚类、直接位置预测、细粒度特征、多尺度训练;对速度的改进包括主干网络结构采用Darknet-19 以及对分类网络训练和检测网络训练,此外还使用了联合训练方法,结合词集之间的树形结构(Wordtree)等方法,使YOLOv2 的检测种类扩充到了上千种。

2018 年, Redmon 等[6]提 出 了YOLOv3。 与YOLOv2 相比,YOLOv3 没有采用锚框的机制,而是直接将主干网络改进为Darknet-53,引入了残差模块和多尺度预测,且在预测时不使用Softmax,改为逻辑回归的输出预测。虽然YOLOv3 比YOLOv2 复杂了,但仅通过改变模型结构就使得检测性能更为突出。

2020 年,YOLOv4[7]被发表,主要针对各种可以提升精度的技术进行了整合并加入YOLOv3 中,其中增加了跨阶段部分连接(Cross-Stage-Partial-connections,CSP)、空间金字塔池化(Spatial Pyramid Pooling,SPP)、路径聚合网络(Path Aggregation Network,PAN)结构等其他一些操作,因此YOLOv4 检测在速度和精确度上都非常优异。

2 相关原理

2.1 YOLOv3

2.1.1 网络结构 YOLOv3 的网络结构采用Darknet-53,在整个结构中没有池化层和全连接层。在图像的前向传播过程中,主干网络通过增大卷积核的步长来变换张量的尺寸,总共缩小图像5 次,即输出的特征图会缩小为输入图的1/32,因此一般情况下也会要求输入图像为32 的倍数,方便网络训练。

YOLOv3 借 鉴 了 ResNet 的 残 差 结 构, 即Darknet-53 的结构里大量使用了残差块来跳层连接,每一个残差块都由1×1 和3×3 的卷积组合构成,减少了每次卷积的通道数,一方面减少了参数量,另一方面在一定程度上减少了计算量。此外,残差结构的使用使得Darknet-53 在特征表达上更好,分类和检测的效果也因此得到提升,且网络的训练仍能收敛并一直训练下去。

YOLOv3 在特征提取方面一定程度上也采用了类似特征金字塔网络(Feature Pyramid Networks,FPN)的思想,在Darknet-53 的最后3 个残差块给出3 个输出,然后执行上采样操作,即采用多个尺度融合的方式进行预测。通过下采样的深层特征和前层特征的拼接,能够让网络同时学习到深层和浅层的特征,使其表达效果更好,尤其对于小目标的检测效果提升比较明显。

2.2 MAML 算法

MAML 算法主要用来训练一个在各种学习任务上可以仅仅使用少量训练样本就可以解决新任务的模型,其通过训练少量任务做几步梯度下降来训练模型的初始参数,从而使模型在新任务上具有更好的泛化性。MAML 算法之所以能够提升模型的泛化性,是因为MAML 算法是一个建立适应多种任务的内部特征表达的过程,其作用是为了能找到在任务变化时具有敏感性的模型参数,因此,参数的微小变化在损失梯度方向改变时,能极大地改善所有任务分布中每一个任务的损失函数,即使用新任务上少量的样本对模型参数进行微调后,新模型参数可以对目标的检测具有较大的提升。

对于学习的初始化参数不应只适用于某一任务,而要适用于其他各种不同的任务,因此对于所有任务的参数更新公式如下:

3 YOLOv3 结合MAML

使用YOLOv3 进行目标检测训练时通常会使用冻结网络层来进行训练,这是因为高层的语义信息都差不多,为了让模型能更快地学习到图像更底层的一些信息,都会采取这项操作。保持前几层网络的权重参数不参与梯度下降而改变底层的权重参数,冻结网络层之后再进行解冻网络层训练,微调整个网络的权重参数。

在冻结网络层训练时发现,除了前几轮损失值会大幅下降以外,后续几轮损失值的下降变得比较缓慢,迭代轮数越多,损失值下降1 时所需要的迭代轮数越多。可以看出,虽然模型渐渐学习到了图像中带有目标的特征信息,但达到最优值时所需要的梯度下降的迭代轮数较多,训练比较缓慢,尤其是在解冻网络层训练时需要花费的时间更长、迭代轮数更多。

本文提出在YOLOv3 的训练环节改变网络结构,结合MAML 算法对整个模型的权重参数进行更新。由于YOLOv3 主干网络之后的部分是经由Darknet-53 的3 个输出进行多尺度结合操作,所以进行MAML预训练的操作只利用Darknet-53 的网络结构来进行梯度下降,如图1 所示。在MAML 的训练网络结构流程图里,通过在每个残差块之间增加多次的梯度下降来更新参数,优化内部的网络权重,称之为内更新参数;再按照不同的权重将每次梯度所对应的损失相加求和并取平均,然后再进行一次梯度下降,称之为外更新参数。通过MAML 算法对内外层的梯度下降,寻找到一组相对最优的参数,使得模型在经过训练的梯度下降后得到的参数能在验证集上的误差更小。在对Darknet-53 的每层权重进行更新时,也会在一定程度上改善梯度信息重复的问题,虽然学到的初始化参数可能在训练时表现并不出色,但是以这个参数为起点,去学习新的目标时会学得又快又好。

图1 MAML 训练网络结构流程图Fig. 1 Structure of MAML training network

总之,通过其损失函数在多步梯度调整的情况下来使模型训练得到的权重参数能更加聚焦于目标的特征信息,即使是在学习到少量样本类别的情况下,遇到新任务时也能在新任务中保持对目标的敏感程度,使模型更具泛化性,在这之后再进行对图像特征信息的提取,会让损失的梯度下降得更快,同时又能保证训练的稳定性。

4 实验及分析

4.1 数据集

实验采用VOC2012 数据集,共分为20 类,主要有:人、常见动物、交通车辆、室内家具用品,共计17125幅图。

4.2 实验设置

实 验 的 硬 件 环 境 为HP PAVILION 15-BC200,Intel Core i5-7300HQ 2.50 GHz,8 GB RAM,显 卡 为NVIDIA GEFORCE GTX 1050。实验的编程语言选用Python3.6,深度学习框架为Pytorch。Pytorch 是torch 的Python 版本,专门用来针对GPU 加速的深度神经网络编程,且能够根据计算需要来实时改变计算图,因此本文采用Pytorch 框架进行实验。

4.3 实验步骤

首先对VOC2012 数据集进行数据预处理,从中挑选出一组包含30 个目标的背景集和另一组包含20 个目标的评估集,从中采样N个类,每个类有K个训练样本,组成一个训练任务,称为N-ways K-shot 分类;然后再从剩下的类中继续重复上一步的采样,构建第2 个任务,共构建m个任务。将m个任务分成训练任务和测试任务,在训练任务上训练元学习算法,通过训练元学习来学习一组基于Darknet-53 的有潜力的初始化参数,然后再用测试任务评估元学习得到的算法的学习能力。由于使用的是VOC2012 数据集,所以采用了20ways、1shot 的任务类型来进行训练。

将VOC2012 数据集的90%作为训练集,10%作为测试集,训练集的10%作为验证集。开始时使用学习率为1×10−1、批量大小为4 进行25 轮的冻结网络层训练。学习率设置为1×10−1可以使参数收敛得更快,之后再以同样的学习率和批量大小进行25 轮的解冻网络层训练。

训练结束后,导入损失值最低的模型,输入图像进行预测,并给出损失率和mAP 值。

4.4 实验结果

在对YOLOv3 以及基于MAML 的YOLOv3 模型进行训练之后,分别给出了它们对于VOC2012 数据集中20 类别的测试分类结果,如图2 和图3 所示,其中样本分类正确的为TP,样本分类错误的为FP。可能是受到IOU 函数的限制,两个模型在样本分类正确的数量上差别不大,但显而易见的是基于MAML的YOLOv3 模型对于样本分类错误的数量小于YOLOv3 模型,尤其是人的样本差别更为明显。这也说明了除去预测边框与实际边框受到IOU 函数的影响因素以外,MAML 有助于YOLOv3 模型对于目标的学习,即能在一定程度上减少其分类错误的结果。同时,由于减少了目标样本错分的结果,使得模型在全局样本上的预测精确度得到了一定的提升。如表1 所示,基于MAML 的YOLOv3 的精确度比原模型的精确度提高了约6%。

图2 YOLOv3 的样本分类结果Fig. 2 Classification results of YOLOv3

图3 基于MAML 的YOLOv3 的样本分类结果Fig. 3 Classification results of YOLOv3 based on MAML

表1 分类结果的精确度比较结果Table 1 Accuracy of classification results

如表1 所示,YOLOv3 模型训练后的mAP 最高可达74.81%。基于MAML 的YOLOv3 的mAP 值提升了5.24%。图4 示出了VOC2012 数据集中20 个类别被检测到的目标样本的AP 值,相比之下,图5示出了基于MAML 的YOLOv3 的AP 值。

图4 YOLOv3 模型的AP 值Fig. 4 AP Value of YOLOv3 model

图5 基于MAML 的YOLOv3 模型的AP 值Fig. 5 AP Value of YOLOv3 model based on MAML

使用MAML 前冻结网络层训练的损失函数曲线变化如图6 所示,使用MAML 后解冻网络层训练的损失函数曲线变化如图7 所示。可以看出,MAML算法使得模型本身在训练环节对图像的学习更加迅速且准确,同时从解冻网络层训练的环节可以看出,MAML 算法还能使模型对图像的学习更加稳定,即不会使模型的梯度信息重复,导致权重参数的更新来回浮动,且变化幅度较大,而是能在一定程度上使模型保持对目标的敏感度,在学习过程中可以通过稳定的梯度下降来更新参数。

图6 冻结网络层训练的损失函数曲线变化Fig. 6 Change curves of training loss of frozen network layer

图7 解冻网络层训练的损失函数曲线变化Fig. 7 Change curves of training loss of thawing network layer

使用基于MAML 算法的YOLOv3 模型进行预测时也取得了不错的效果。如图8 所示,对于车辆和人的检测准确度都相当高,除了一些场景中远处的人物,即小目标没有检测到以外,最右侧只露出车体一小部分的地方都基本检测到了,体现出基于MAML的YOLOv3 模型对图像目标的学习比较敏感。

图 8 基于MAML 的YOLOv3 预测结果Fig. 8 Prediction results of YOLOv3 model based on MAML

5 结论与展望

基于MAML 使得YOLOv3 目标检测模型上的权值参数从一开始就学到了更加具有学习能力的参数,因此在训练过程中模型的训练也更加迅速,即不需要改变学习率来改变收敛速度,不仅能使检测更加精确,还避免了收敛时难以达到最优值的问题,同时因MAML 使模型对图像中的目标更加敏感,从而使模型的泛化性得到了提升。

结合MAML 可以使得在对设备硬件限制的情况下或无需更新硬件配置的情况下,对原本就采用YOLOv3 模型进行目标检测的设备依然可以使用基于MAML 的YOLOv3 模型进行目标检测。此外由于结合MAML,对于存在小目标样本和存在数据集中学习的不够多的样本的场景中,选择使用改进后的YOLOv3 能比原模型检测到目标的概率更高。MAML 作为元学习的方法之一,给模型带来提升的潜力是比较大的,这也将成为今后研究和发展的关键。

猜你喜欢

梯度样本目标
一个改进的WYL型三项共轭梯度法
用样本估计总体复习点拨
一种自适应Dai-Liao共轭梯度法
一类扭积形式的梯度近Ricci孤立子
推动医改的“直销样本”
随机微分方程的样本Lyapunov二次型估计
村企共赢的样本
我们的目标
地温梯度判定地热异常的探讨
新目标七年级(下)Unit 3练习(一)