王春鹏, 王冬青, 傅 强, 刘纬骅
(青岛大学 电气工程学院,山东 青岛 266071)
目标检测是一种计算机视觉技术,用于识别图像或视频中的对象,它是自动驾驶、天网控制系统、智慧城市交通等领域实现的基础。随着技术的迭代,目标检测算法也经过几次进化;在2001年,Viola P A和Jones M T合作发明了Viola-Jones结构分类器[1],以及Felzenszwal P F利用方向梯度直方图(histogram of oriented gradient,HOG)与支持向量机(support vector machine,SVM)结合提出DPM(defor-mable part model)算法[2]。2012年后,由于图形处理器(graphics processing unit,GPU)算力的提升和基于深度学习(deep learning,DL)理论的深度卷积神经网络(convolutional neural network,CNN)的图像分类算法的到来[3~6],提升了图像分类的准确率和提高了目标检测的正确率。由于深度学习的优势,可以提取图像的特征信息进行训练。
近些年,涌现了许多优秀的目标检测结构算法,分为:基于两阶的目标检测算法如Region-CNN(R-CNN)算法[7]、Faster R-CNN算法[8]以及Mask R-CNN算法[9]等;基于一阶的目标检测算法如YOLO算法[10]和SSD(single shot multibox detector)算法[11]。由于二阶目标检测算法精度高而速度慢,而一阶目标检测算法是速度快而精度低;这些算法自身的缺陷以至不能满足对准确度和速度同时要求高的场合,如自动驾驶等。为此许多学者对一阶目标检测算法进行许多改进,例如温捷文设计了Atrous[12]滤波器与一阶检测网络融合;以及文献[13]在SSD深层网络引入正则化改进;在一定程度上提升了性能。
2018年,张士峰等人通过对SSD算法网络进行改进,衍生出RefineDet[14]算法,它沿用了经典的分类和回归损失,是一种有代表性的目标检测方法。RefineDet同时兼顾一阶与二阶目标检测算法的优点;并且具有先进性。但该算法在使用损失函数进行权重更新时,存在类别样本数量不平衡和存在困难样本难挖掘的问题;以及由于RefineDet网络的ARM在获取特征信息时比较粗略,不利于达到好的训练效果。文献[15]提出RefineDet网络融合注意力机制的方法,虽然检测精度有提高,但牺牲了检测速度性能。
本文针对RefineDet算法存在的问题,提出了一种权重平衡调节损失(weight balance adjustment loss,WBALoss)函数,以缓解类别样本数量不平衡和困难样本难挖掘的矛盾;通过将传输连接块(transformation connection block,TCB)输出的图层信息与输入到Anchor细化模块(anchor refinement module,ARM)的图层信息进行融合后再传入ARM,和添加金字塔卷积(pyramidal convolution,PyConv)[16]来优化RefineDet算法部分结构,以达到提高网络整体检测准确度的目的。
RefineDet算法基于前馈卷积网络,如图1所示,分成三部分组成,分别是ARM、目标检测模块(object detection module,ODM)和TCB。
图1 RefineDet网络
ARM是用于移除负样本和进行初级的边框校正,为ODM提供更好的边框回归起点。TCB是实现特征的转换功能,也就是将ARM输出的特征图的信息回馈到前层特征图,实现了特征信息的特征金字塔融合。ODM的一部分输入是TCB转换后细节充足、内容抽象的特征;另一部分的输入是从ARM得到的Refined Anchors,即ARM生成细化的锚框。通过进一步的分类和回归,最终得到更准确的检测效果。
Ltotal=LARM({pi},{xi})+LODM({ci},{ti})
(1)
式中LARM为锚框调整模块ARM的损失函数,包括二分类损失LARM-b和先验框粗调整的回归损失LARM-r,分别表示为
(2)
LODM为目标检测模块ODM的损失函数,包括多分类损失LODM-cla和回归目标位置的损失LODM-reg,分别表示为
(3)
由式(3)可以看出,多分类损失是所有样本分类损失之和的平均值,它作为部分变量进行网络参数的权值更新时,这会导致样本数量少的类别得到的关注度越低。在训练进行反向传播时,该模型网络中的权值wk+1更新如下式所示
(4)
将式(4)中的目标检测模块损失函数LODM展开
(5)
式中λ为学习率,LODM-b(i)和LODM-r(i)分别为第i个样本的ODM分类损失和回归损失。通过式(5)发现在ODM中每个样本分类损失对训练更新的权值的作用是一样,这会导致多样本的类别在训练中占据大部分更新的权值,而削弱少样本类别在更新权值的地位;最后导致少样本类别的识别率下降。以及RefineDet算法的ARM,由于该结构的影响;在获取位置信息和特征信息比较粗略;最终训练效果不佳。因此RefineDet网络的性能仍然具有提升的潜力。
为了解决训练时类别样本数量差异、困难样本难挖掘的问题,提出了权重平衡调节损失函数WBALoss。通过每次训练样本的类别数量来计算类别样本平衡因子αj,通过每次训练每个样本的预测概率pi计算难易样本平衡因子bi;作为权重值分别来缓解类别样本数量差异和难易样本挖掘不均衡的矛盾。表示式如下
(6)
式中cj为第j类样本在某次训练内的数量,n为出现的类别数。由于y=(1+x)1/x在(0,1]区间内是严格单调减函数;当某个类别样本数量在训练中呈少数时,通过上式计算权重αj来增加该类在整体损失的比重;pi为第i样本的预测概率,由于简单样本的pi大,而困难样本的pi小,通过式(6)计算出bi可以提高困难样本在多分类损失里的比重。WBALoss式子表示如下
(7)
WBALoss的多分类损失权值更新如式(8)所示
(8)
将式(4)、式(7)、式(8)联立可得
(9)
当进行反向传播时,式(9)相比式(5)内多分类损失,由于每个类别的αj不同,使得它们在权值调整过程中贡献不同,并且由于难易样本的bi不同,可以提高困难样本的贡献;意味着不同类别之间和难易样本拥有不同的学习率。因此,提高了网络训练时对少样本的类别类和困难样本的关注度。
虽然RefineDet算法增加TCB,使得ODM的输入浅层的特征图和深层的特征层融合,优点是不会丢失浅层信息和深层信息,使得网络对遮挡目标和小型目标的检测精度更佳,从而提升整体检测准确度;但由于输入到ARM的卷积层是主框架卷积层的输出,会遗失部分特征信息;并且由1×1和3×3卷积核构成的Extras层处在深层,虽然越深的特征层可得到越抽象的特征,但是也丢掉了很多位置信息,使得不能收集更有用的特征信息,最后导致检测能力变差。
为解决上述问题,本文添加PyConv金字塔卷积来替换Extras层的卷积结构。PyConv是包含一个Kernel的金字塔结构如图2所示,相比于卷积核串联处理图像,PyConv中大小与深度可变的卷积核并联处理提取图像特征,可以提取不同尺度的细节信息。文献[16]证明了PyConv卷积层可以提取多尺度信息,相比标准卷积,性能高效的PyConv即不会提升额外的计算量与参数量。其次利用TCB优点,将TCB输出的特征信息和输入ARM的特征信息进行信息融合再输入ARM;这样可以使得该模块获取更多特征信息,进一步提高了ARM泛化的能力;最后促进训练效果的提升,并且提高算法检测准确度。优化结构图3所示。
图2 PyConv金字塔卷积网络
图3 优化的RefineDet网络
本文的目标检测实验计算机硬件配置是Intel Xeon CPU E5-2620v4和NVIDIA GTX TITAN Xp 12G,使用Pytorch深度学习框架来进行GPU训练网络参数进行试验。训练所采用的图像数据来自公开数据集(Pattern Analysis,Statical Modeling and Computational Learning,Visual Object Classes Challenge 2007、2012; Pascal VOC2007、Pascal VOC2012)。
VGG16网络结构的权值是加载预训练模型,采用Xavier方法对Extras层结构、ARM、TCB和ODM的权值初始化。最后通过SGD算法优化损失函数,动量、权重衰减以及学习率分别设置为0.9,0.0005和0.001。
首先,为了解基于WBALoss的Refinenet(320)的检测效果;设置4组实验:原Refinenet(320)、基于WBALoss(αj,bi=1)的Refinenet(320)、基于WBALoss(αj=1,bi)的Refinenet(320)和基于WBALoss(αj,bi)的Refinenet(320)算法。图4是四组实验在VOC07和VOC12数据集上各类别训练样本数量总和与在VOC07上各类别测试精度。由图4可见:1)在训练出现类别样本数量差异时如数量多类别Person的准确度稍降低,而Sheep,Bus和Cow等数量少类别准确度提高了。表明WBALoss里的类别样本平衡因子αj可以增加对类别样本数少的关注度,提高该类别检测效果,并且可以抑制数量多类别的关注度;其整体的mAP提高0.52 %。2)当bi作为变量时各类别的检测精度稍微提升;其整体的mAP提升了0.58 %;表明了难易样本平衡因子bi强化了对困难样本的学习,增加对困难样本的关注度。当WBALoss的两个因子都共同作用时其性能效果比原RefineDet表现突出,其mAP提升了1.03 %。最后可以得出所提的WBALoss损失函数可以缓解类别数量不平衡和困难样本难训练的矛盾。
图4 VOC0712数据集各类训练样本数量及测试精度
其次,使用其他模型与本文提出基于WBALoss的结构优化网络模型进行实验对比,部分结果如图5和图6所示;从主观视觉上可以看出,本文所提的具有权重平衡调节损失函数RefineDet算法在实际中检测到更细微的物体,性能优于经典RefineDet算法。
图5 具有权重平衡调节损失函数RefineDet算法的识别结果
图6 RefineDet算法的识别结果
为了解所提算法的性能,进一步将目前几种比较优秀的目标检测模型与本文框架在VOC07和VOC12上测试,并对比mAP性能指标,最后将数据整理如表1所示。由表1可知:1)本文所提的模型在测试集上的mAP都要比其他模型更高,相比RefinenDet(320)的mAP分别上涨了1.49 %和1.51 %,本文框架的速度FPS同样取得了略低于原RefinenDet的优秀成绩;证明了WBALoss损失函数和基于RefineDet结构的优化的算法进一步提高了性能。2)通过分别添加基于WBALoss(αj,bi=1)、基于WBALoss(αj=1,bi)、基于WBALoss(αj,bi)和基于RefineDet结构优化的变量在数据集上进行训练与测试,它们的mAP分别提高了0.52 %,0.58 %,1.03 %,0.59 %和0.54 %,0.61 %,1.08 %,0.57 %。结果表明了对于RefinenDet存在的缺点,本文提出改进部分是可行性的和有效的。
表1 目标检测算法性能对比
本文针对RefineDet目标检测网络在训练时,存在样本数量少的类别检测性能低和困难样本难挖掘的问题,以及ARM获取特征信息比较粗略和深层卷积运算后特征信息遗失严重,提出基于融合PyConv卷积的优化结构和WBALoss损失函数RefineDet算法。优化部分结构提升了在深层里提取特征信息的能力,提高了ARM输出细化瞄框精度和进一步增强ODM的效果;在多分类损失函数中引入类别样本平衡因子αj和难易样本平衡因子bi,缓解类别样本不平衡和困难样本难挖掘的问题。实验表明:上述的损失函数可以缓解RefineDet检测网络中的类别样本数量和难易样本不平衡问题,不仅提高小类样本的检测精度,而且进一步增强算法的检测能力。本文模型虽然关注了类间数据不平衡问题和难易样本的训练比重,但是只粗略改变样本的贡献比重,尚未理论分析两个因子共同引入带来的问题。以及融合ARM的信息特征会带来额外的计算,优化加速该神经网络也是一个需要思考的问题。