APP下载

基于增量学习的X射线安检系统检测算法研究

2019-02-22田敏皓

测试技术学报 2019年1期
关键词:增量目标算法

田敏皓,陈 平

(中北大学 信息探测与处理山西省重点实验室,山西 太原 030051)

X光安检机是安检过程中的关键设备. 长期以来安检作业都是人工看图识别,但有时会由于疲劳而造成漏检误检问题. 为了解决此问题,将人工智能的深度学习算法应用于安检系统,实现对图像识别的智能化[1]. 深度学习模型复杂,对其优化需要庞大的数据量[2]. 乘客可能携带的危险物种类复杂,且不断更新,难以一次性获取全部训练数据,致使依赖训练数据集的智能安检系统不能对新型危险物进行有效检测. 同时,实际应用中安检系统需保持较高的检测效率,而对其重新训练要耗费较长时间,于是需要一种模型随训练数据变化而不断变化的目标检测算法.

增量学习可以通过对新样本的学习实现神经网络权值的调整,并在已获取知识的基础上学习新知识,从而适应不断变化的环境[3]. 利用所有危险物重新训练模型会造成内存占用大、训练时间长以及完全遗弃原模型的问题,而增量学习思想可以有效地解决以上问题. 现有增量学习算法中:Divvala等人用数据的固定表示实现增量学习[4]; Chen等人用所有收集的数据重新训练模型以实现增量学习[5]. 二者都专注于不断更新训练数据集,但遗弃了在旧数据集上的训练模型,并且训练时间会随着训练样本的增加而增加; 为解决以上问题,Ristin和Mensink等人通过固定的图像表示来学习分类[6,7],然而该方法将所有训练样本都进行了存储; 为了使在一种分布数据上学习到的知识能迁移到另一个与之相关的数据分布上,Hinton等人提出了蒸馏(distillation)法,该方法无需存储所有数据且节约了时间,但依然存在灾难遗忘问题[8,9]; 于是Li 和Hoiem 在此基础上将知识蒸馏用于机器视觉,并通过原始训练数据的子集来保留网络在旧类上的性能[10]; 此外也有通过其他方式进行知识蒸馏以实现增量学习的方法,比如采用新层来增强网络的性能、参数正则化等,但是这些方法会导致网络中要学习参数数目的急剧增加[11]. 以上增量学习算法都只对分类问题进行了研究. Shmelkov等人将增量学习应用于目标检测器,解决了以上方法中遗弃原模型重新训练以及不依赖旧数据的灾难遗忘问题[12].

为使现有智能安检系统将形态各异的危险物都检测出来,本文研究了一种无灾难遗忘的目标检测增量学习算法. 通过对传统目标检测Faster rcnn网络的修改与调整,构造了目标检测增量网络,并在该网络中构造了一种新型损失函数. 利用安检系统上新采集的4类数据在原始7类数据训练好的模型基础上对该算法进行了验证.

1 目标检测网络及算法

1.1 传统目标检测网络

目标检测不同于图像分类. 它不仅需要对目标进行分类,同时由于边框回归对于精确目标检测很重要,于是也需要对目标的边框进行回归. 传统基于深度学习的目标检测算法中,Faster rcnn[13]是检测精度较高且应用较为普遍的一种基于提议的算法,其算法框图如图 1 所示. 然而,正如图 1 所示,该算法将用于生成区域提议的RPN网络与检测器整合到一个网络中,且利用对RPN训练生成的提议来训练目标检测器. 为使现有安检系统将新旧危险物都检测出来,需要用新旧安检数据更新训练集,并用其重新训练Faster rcnn模型,但它遗弃了原训练模型,且训练时间随训练数据集的增加而增加. 该方法在实际应用中,不能在原模型基础上继续学习,即不具有增量学习能力,故无法适应数据集不断变化的安检系统场景.

图 1 Faster rcnn算法框图Fig.1 Framework of the algorithm of Faster rcnn

1.2 目标检测增量学习网络设计

为使目标检测算法能适用于数据集不断变化的安检系统场景,并解决增量学习中利用传统网络不使用旧类数据会造成对旧类的遗忘,及使用新旧类数据重新训练模型效率低的问题,本文设计了一种基于CNN模型的目标检测增量学习网络,如图 2 所示. 在该网络中对传统目标检测网络Faster rcnn进行了修改. 首先,由于目标检测算法中边框回归对于准确检测目标具有重要意义,于是目标检测的增量学习不仅要实现目标所属类别的增量,而且要对边框回归也进行增量. 传统目标检测Faster rcnn中RPN网络生成的提议与类别信息是相关的,不利于对边框的提取与增量. 于是本文利用Edge boxes算法对图像生成2 000个预计算好的目标提议,该算法生成的目标提议不依赖目标类别、无需训练且速度较快[14]. 然后,将特征提取换为速度更快、精度更高的ResNet-50,并在conv5_1层之前加入ROI池化层,最后用两个兄弟全连接层代替最终的分类层,最终形成本文目标检测的基网络. 该基网络的设计解决了对边框回归增量过程中,算法生成提议依赖目标类别的问题,有利于在其基础上实现目标检测的增量学习,并且加快了目标检测速度.

图 2 网络整体框架Fig.2 Overall network architecture

图 2 中,网络A是目标检测基网络,主要针对旧类危险物的训练; 网络B是目标检测增量网络,其网络结构在A网络的最后全连接输出层增加了新类别危险物的目标分类与边框回归神经元,该增量设计确保了增量网络B对新旧类别危险物的检测能力. 在增量学习训练过程中,首先冻结基网络A的权值,增量网络B的权重初始化复制了对旧类危险物有检测能力的网络A的权值,为保证将网络A对旧类别危险物的检测能力迁移到网络B中,本文引入了蒸馏损失. 该增量网络及算法的设计实现了在训练B网络时只使用新类数据,提高了训练效率.

1.3 目标检测增量学习损失函数设计

以上目标检测增量学习网络核心部分为增量学习损失函数的设计,其将蒸馏损失与标准交叉熵损失相结合作为新型损失函数. 具体公式为

L=Lrcnn+λLdist,(1)

式中:Ldist为蒸馏损失;Lrcnn为标准交叉熵损失;λ为平衡两损失的超参数.

Ldist(yA,tA,yB,tB)=1/(N|CA|)·

式中:N是提取感兴趣区域样本的数目(本文采用的个数是64); |CA|是旧类的数目,求和表示对旧类在所有感兴趣区域上进行求和.

此外,对于目标中新类的计算,算法生成提议经网络B在向前传播的过程中,对得分比较高的依据边框回归算法进行微调,然后在每类上进行非极大值抑制(NMS)以获得最终检测结果 . 该过程相应的损失函数为

Lrcnn(p,k*,t,t*)=

-logpk*+[k*≥1]R(t-t*),(3)

式中:p是网络对于所有类分类响应的集合;k*是真实类别;t是边框微调层的输出;t*是真实边框提议.

2 实验及结果分析

本实验利用安检系统获取了包含11类待检测目标的数据集,其中一类是对于刀具中刀刃的标识即刀尖(DJ),剩余10类检测目标的实物数据如图 3 所示. 该数据集既包括了训练原网络的7类数据,又包括了需新增的4类数据(SQ(手枪)、XGD(西瓜刀)、YSD(钥匙刀)、ZHD(组合刀)) ,这些新增类在训练A的过程中没有出现或者至少在原始图像中没有进行标注. 整个数据集中用于训练验证(trainval)和测试的图片各301张.

图 3 目标数据集Fig.3 The data of objects

本文利用该数据在具有NVIDIA Geforce GTX 1080显卡的计算机上进行了实验,目的是使网络能将新增的4类目标也检测出来. 用原始7类训练A时学习率为0.001,动量值为0.9. 用新增类训练网络B的过程为:在原始7类基础上用新增的一类训练网络B,之后将所得网络冻结,并在该网络基础上继续新增一类,以此类推,直到将所有4种新类全部增加完. 在训练网络B的过程中,由于新增类数据量太小,会出现损失不收敛的问题,于是学习率设为0.000 01.

图 4(a)为安检系统测试图像中的原图,图4(b)为用原始7类训练后网络在该测试图像上的结果,即增量前网络的检测结果,图4(c)为在原始7类训练好网络基础上利用本文算法依次增加4类数据后所得网络在测试图上的检测结果,即增量后网络的检测结果. 其中RSD,MGD为参与训练的两类,YSD,ZHD为新增的两类. 由结果可知:原始7类训练的网络在参与训练类别上获得1.00的检测精度,但对新类不能有效检测,而本文算法不仅能将新类目标以大于0.9的精度检测出来,而且保留了网络在旧类上1.00的检测精度.

图 4 原图与增量前后网络在新旧类上的检测结果Fig.4 The original images and test results before and after increment in new and old

图 5 中SQ,XGD,YSD,ZHD为新增类. 图5(a)为增量前网络在新增4类后的检测结果,图 5(b)~图5(e)为在原始7类网络基础上依次新增SQ类、XGD类、YSD类、ZHD类训练网络的检测结果. 由图 5 可知:只用原始7类训练的网络不能对新增类进行有效检测,而本文算法能将新增类的目标检测出来,并且都有大于0.95的检测精度.

图 5 增量前网络及依次增加4类数据所得网络的检测结果Fig.5 Detect results before Increment and after sequential increase for four types

利用本文算法在原网络基础上依次新增4类数据后的网络在原始类及新增类上的检测结果以及用所有类联合训练网络在新旧类上的检测结果如图 6 所示.

图 6 增量后网络及联合训练网络在原始类及 新增两类后的检测结果Fig.6 Test results after the joint training of all classes

图6(a)为增量后网络的检测结果,图6(b)为联合训练网络的检测结果,其中SQ,ZHD为新增的两类. 由图6可得本文算法在新旧类上都取得了与用所有类联合训练所得网络相近的结果,即在旧类上保持了1.00的检测精度,在新类上取得很接近1.00的检测精度,说明本文算法对于改进安检机的性能是有效的.

本实验也用均值平均精度对网络进行了评估,结果如表 1 所示. 表 1 显示了不同设置下网络在安检系统测试数据集上的均值平均精度. 由表1可见:本文算法相比联合训练所得网络在整体性能上略有下降,但其仍能保持网络在旧类上的性能,并且可以对新类进行有效的学习.

表 1 不同设置下的均值平均精度

表 2 为训练原始7类、用本文算法依次用新增类进行训练、一次性用所有4类新增数据进行训练以及对所有11类联合训练所需时间. 由表2可知:本文算法在依次添加1类,即新增类较少时,极大地缩短了训练时间,提高了训练效率,并且该情况在实际中更加具有实用性. 此外,本文算法在新增类较少时比用所有11类数据联合训练所用时间短,也说明本文算法可以提高训练效率. 另外,本文算法在新类上性能的下降可能是由于增量网络只在包含新类的几百张图上进行了训练,新类分类器没有获得足够的信息,未来的工作是通过增加新类样本来解决该问题.

表 2 依次增加一类训练网络时间

3 结束语

为使现有智能安检系统能对新出现的异种危险物进行有效检测,并且避免重新训练网络的问题,本文研究了一种基于目标检测的增量学习算法,该算法通过构建目标检测增量学习网络以及设计新的损失函数,使现有安检系统在利用原模型及新数据完善性能时不产生灾难遗忘问题. 实验结果表明:该算法保持网络旧类检测性能的同时在新类上也获得了大于0.9的检测精度. 同时该算法相比用新旧数据重新训练网络,提高了训练效率.

猜你喜欢

增量目标算法
导弹增量式自适应容错控制系统设计
提质和增量之间的“辩证”
全现款操作,年增量1千万!这家GMP渔药厂为何这么牛?
“价增量减”型应用题点拨
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
一种改进的整周模糊度去相关算法
新目标七年级(下)Unit 3练习(一)
新目标七年级(下)Unit 4练习(一)