一种用于准确检测危险物品的改进型ssd算法
技术领域
1.本发明属于图像处理技术领域,具体涉及一种用于准确检测危险物品的改进型ssd算法。
背景技术:2.随着现代科学技术的不断发展,监控摄像头已经遍布在各种大城市中,但是当安全事故真正发生的时候,监控摄像头只能在事后给警方提供一些有利的信息,进行案后的刑事追责,不能起到及时报警的作用。因此可以在一些重要场所,准确检测危险物品(枪,炸药,刀,棍,棒等)并提前预警能够有效减少安全事故的发生,从而减少人员的伤亡以及财产的损失。对于目标检测,卷积神经网络的算法有多种,例如,yolo系列,该方法将图像分为若干单元格,对每个单元格中的物体进行目标检测,该方法有着速度快的特性,但是精确度较低。faster-rcnn系列,该算法引进region proposal networks (rpns)替代selective search提取候选框,同时引入anchor box。由于提取图像中目标的特征较多,所以检测目标物体的精确度较高,但是由于产生了过多的候选网络,导致检测速度较慢,因此如何对现有的卷积神经网络的算法进行改进,从而解决上述问题,使我们急需解决的
技术实现要素:3.针对上述出现的问题,本技术通过对现有的ssd算法进行改进,通过改变先验框的尺寸大小和改变conv4_3特征层的处理,从而实现对远距离情况下危险物品的准确检测,满足使用需求。
4.为了实现上述目的,本发明公开了一种用于准确检测危险物品的改进型ssd 算法,其特征在于,包括以下步骤:
5.s1:构建一个基于ssd算法的改进型卷积神经网络,并且初始化网络模型的参数;
6.s2:设定各个超参数所需图片的批次和学习速率,并且设定所需训练的事件次数;
7.s3:通过所构建的数据集对卷积神经网络进行训练,得到权重文件,
8.s4:将训练好的权重文件放到测试模型中,向测试模型中输入实时场景下的图片,将训练好的目标特征与图片中的特征信息进行比对,通过分类器完成目标的分类识别,从而实现对危险物品的检测。
9.作为优选,在步骤s1中,对所构建的ssd算法中的验证框的尺寸大小进行改变,获得更大的验证框尺寸。
10.作为优选,在步骤s1中,还对ssd算法中的conv4_3和fc6卷积层分别做不同的卷积处理得到相同的特征图,然后通过第一函数将两个特征图进行通道上的堆叠得到新的特征图,然后再利用第二函数对新的特征图进行归一化处理得到新的conv4_3特征图。
11.作为优选,在步骤s1中,还需要对危险物品的参数信息进行收集,具体的过程为:收集包含管制刀具、易燃易爆危险物品的图片,对图片中的物体进行名称标注,构建含有危险物品的数据集。
12.作为优选,还需要对数据集进行增广,获得数据量更多的数集,具体的过程为:对数据集中的图片进行水平翻转增强,垂直翻转增强,镜像对称增强,仿射变化,旋转,高斯加噪,对比度变化,尺度变换,平移来增广数据集。
13.作为优选,在步骤s3中,首先设定损失函数loss为图片批次进行卷积网络提取特征,并分类所得结果与数据集本身预测结果差值的平方,并且利用该损失函数loss对网络参数进行梯度下降更新。
14.作为优选,训练集的损失函数一直在逐渐减小,当验证集的损失函数有增大的趋势时,结束训练;如果验证集的损失函数一直时减小的趋势,只要达到设定的训练事件次数,就结束训练;最终得到训练模型后的权重文件。
15.作为优选,在步骤s4中,通过soft-max分类器完成目标的分类识别,并且判定分类结果是否含有危险物品,如果含有上述物品,则发送报警指令,否则继续向测试模型中输入实时场景下的图像。
16.本发明的有益之处是:与现有的ssd算法建立的卷积神经网络相比,本技术在两个方面对现有的ssd算法进行改进,从而解决了现有的ssd算法的网络结构对一些远距离下的危险物品检测效果较差,不能达到准确的问题;一方面是改变先验框的尺寸大小,从而增大了用于评价对象检测算法的交互比iou(产生的候选框与原标记框交集与并集的比值),从而检测出的物体精确度更高;另一方面是将改变对conv4_3特征层的处理方式,这样做的好处在于将两个特征图中的特征值堆叠在一起,使得新的conv4_3特征图中包含了更多目标物体的形状特征,更能够精确的检测出远距离下的危险物品。
附图说明
17.图1为本发明的总体步骤流程图;
18.图2为本发明的详细步骤流程图;
19.图3为现有ssd算法框架示意图;
20.图4为本发明的ssd算法框架示意图。
具体实施方式
21.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下获得的所有其他实施例,都属于本发明保护的范围。
22.本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义两个或两个以上,除非另有明确具体的限定。
23.在申请中,“示例性”一词用来表示“用作例子、例证或说明”。本技术中被描述为示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对已知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本技术所公开的原理的最广范围相一致。
24.请参阅图1,本发明公开了一种用于准确检测危险物品的改进型ssd算法,包括以下步骤:s1:构建一个基于ssd算法的改进型卷积神经网络,并且初始化网络模型的参数;s2:设定各个超参数所需图片的批次和学习速率,并且设定所需训练的事件次数;s3:通过所构建的数据集对卷积神经网络进行训练,得到权重文件;s4:将训练好的权重文件放到测试模型中,向测试模型中输入实时场景下的图片,将训练好的目标特征与图片中的特征信息进行比对,通过分类器完成目标的分类识别,从而实现对危险物品的检测。在本实施例中,本技术基于现有的ssd算法,通过利用该算法构建卷积神经网络,生成网络模型,然后收集现有危险物品的参数信息,将其代入至网络模型内,从而对是否是危险物品进行有效检测,在一些重要的产所,例如车站、机场等,设置含有该检测模型的装置,就能对通行人员身上是否携带危险物品进行有效检测,确保公众安全。
25.请参阅图3,通过查询相关的资料,对于现有技术中采用的ssd网络结构,主要设计思想是特征分层提取,并依此进行边框回归和分类,由ssd的网络结构可以毫无疑义得知ssd的网络分为6个stage,每个stage能学习到一个特征图,然后在每个特征图上进行边框回归和分类。ssd使用vgg-16-atrous作为基础网络(conv4_3,fc_7),随后在vgg-16基础网络上添加的特征提取层(conv8_2, conv9_2,conv10_2,conv11_2)。
26.为了保证网络对小目标有很好检测效果,ssd除了在最终特征图上做目标检测之外,还在之前选取的5个特征图上进行预测。ssd网络以vgg16的前5层卷积网络作为第1个stage,然后将vgg16中的fc6和fc7两个全连接层转化为两个卷积层并将fc_7作为网络的第2个stage,接着在此基础上,ssd网络继续增加了conv8、conv9、conv10和conv11四层网络,用来提取更高层次的语义信息同时作为第3、4、5、6个stage。
27.根据公式featuremap_h=((image_h+2*pad_h
–
kernel_h)/stride_h)+1 和featuremap_w=((image_w+2*pad_w
–
kernel_w)/stride_w)+1我们可以了解卷积层和池化层输出图像大小的计算,其中featuremap_h:卷积或池化操作后输出特征图的高度featuremap_w:卷积或池化操作后输出特征图的宽度; image_h:输入图像的高度;image_w:输入图像的宽度;pad_h:在输入图像的高度方向两边各增加pad_h个单位长度(因为有两边,所以乘以2);pad_w:在输入图像的宽度方向两边各增加pad_w个单位长度(因为有两边,所以乘以2); kernel_h:卷积核的高度;kernel_w:卷积核的宽度;stride_h:高度方向的滑动步长stride_w:宽度方向的滑动步长,根据网络结构中每一个卷积层的参数可以得对应每一层feature map的大小,例如:输入图像大小为300*300*3,vgg16 中第一个卷积层中设置了64个大小为3*3*3的卷积核,同时在输入图像的上下作用各填充一行数据即pading=1,卷积核滑动步长为1。因此,第一个卷积层featuremap大小为300*300*64。之后的pooling层:2*2*64s=2即步长为2,feature map 变为150*150*64。因此,第1个stage对应
feature map为38*38*512,第2个stage 对应feature map为19*19*1024,第3个为10*10*512,第4个为5*5*256,第5 个为3*3*256,第6个stage对应feature map为1*1*256。
28.为了实现上述目的,在步骤s1中,对所构建的ssd算法中的验证框的尺寸大小进行改变,获得更大的验证框尺寸;具体的实施过程中,原始的ssd算法用来预测整个网络模型的各个特征层{38,19,10,5,3,1}的先验证框尺寸为 sn∈{30,60,111,162,213,264},通过ssd的计算公式sk=s
min
+改变先验框的尺寸大小,其中m指特征层个数,此处为5(因为特征层大小为38的先验框高宽比例是单独设置的,为s
min/2
=0.1),sk为先验框相对图片的比例,s
min
和s
max
为比例的最小值和最大值,此处设置为 0.2和0.9。对于第一个大小为38的特征层,它的先验框尺度比例设置为s
min/2
=0.1,则其尺寸为300x0.1=30,然后通过计算公式,可以得出剩下特征层的先验框尺寸为sn∈{30,60,112,165,217,270}。可以发现改变后的先验框尺寸比之前的大一点,这样做的好处在于增大了用于评价对象检测算法的交互比iou(产生的候选框与原标记框交集与并集的比值),从而检测出的物体精确度更高。
29.在步骤s1中,还对ssd算法中的conv4_3和fc6卷积层分别做不同的卷积处理得到相同的特征图,然后通过第一函数将两个特征图进行通道上的堆叠得到新的特征图,然后再利用第二函数对新的特征图进行归一化处理得到新的 conv4_3特征图。更为具体的是,原始ssd算法中的conv4_3特征图的大小为 38*38,网络层靠前,方差比较大,需要加一个l2标准化,以保证和后面的检测层差异不是很大,归一化之后数值大小统计,取值范围相同,有利于模型收敛,但是本技术改变了conv4_3特征层的处理方式,如图4所示,本技术将conv4_3 和fc6卷积层分别做不同的卷积处理得到相同的38x38x256的特征图,然后通过concat函数将两个特征图进行通道数上的堆叠得到38x38x512的特征图,最后用batchnorm函数对生成的38x38x512特征图进行归一化处理得到新的 conv4_3特征图。这样做的好处在于将两个特征图中的特征值堆叠在一起,使得新的conv4_3特征图中包含了更多目标物体的形状特征,更能够精确的检测出远距离下的危险物品;在这需要说明的是,由于模型训练过程中参数和数据分布会不断的更新,例如:第二层的输入,是由输入数据和第一层参数得到的,而第一层的参数随着训练一直变化,这样一定会引起第二层输入数据的改变,而采用归一化处理可以有效地缓解这个问题。随着网络层数的加深,偏移量与标签的差别会逐渐扩大,导致模型需要更多时间来学习调整样本分布,这导致训练效率低下。利用相关的函数对数据进行标准化,可以缓解内部协变量偏移的问题从而增加训练速度。归一化除了可以避免梯度弥散和梯度爆炸的问题,同时也可以避免在后续过程中采用的relu激活函数数据死亡的问题,从而使得整个模型能够被准确建立。
30.为了实现上述目的,在步骤s1中,还需要对危险物品的参数信息进行收集,具体的过程为:收集包含管制刀具、易燃易爆危险物品的图片,对图片中的物体进行名称标注,构建含有危险物品的数据集。还需要对数据集进行增广,获得数据量更多的数集,具体的过程为:对数据集中的图片进行水平翻转增强,垂直翻转增强,镜像对称增强,仿射变化,旋转,高斯加噪,对比度变化,尺度变换,平移来增广数据集。在本实施里中,为了更好对危险物品进行有效的检测识别,就需要对危险物品的参数信息进行收集,从而是的最终在识别的过程中,只需利用某一个参数信息就能识别该物品是否为危险物品,同时也能避免识别错误
的发生,提高识别的准确性,因此就需要对危险物品的的数据集进行增广,而各种增广的处理方式,从而能有效适用不同的危险物品,例如刀具,具有不同的大小和形状,刀刃的方向也会不同,因此就需要进行不同的水平翻转,垂直翻转,对称,仿射等变化从而更好对危险物品的信息进行收集,在这需要特别注意提到的是对于棍棒的识别,在实际的生活中,尤其是在车站这种场所,经常会看到人们在出现时携带各种包裹,有些人就会采用一根挑棍将所有的包裹都担在肩膀上进行搬运,而在现有的识别技术中,对于这些挑棍很容易被认定为棒球棒,因此就会被认定为危险物品中的棍棒类,但是如果对现有的挑棍和棒球棒进行各种参数的收集,就能有效区分挑棍与棒球棒之间的区别,从整体形状到长度都能进行有效的区分,能有效避免误报情况的出现。
31.此外,在步骤s2中,设定各个超参数所需的图片批次(使用训练集中的一小部分样本对模型权重进行一次反向传播的参数更新,简称:batch)和学习速率(learning-rate)时,需要设定所需训练的事件次数,在这里超参数是指更新一次参数(权重和偏移量),而事件次数,为epoch次数,在卷积神经网络中,当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次 epoch;在卷积神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次;但是使用的是有限的数据集,并且使用一个迭代过程即梯度下降来优化学习过程;因此仅仅更新一次或者说使用一个 epoch是不够的,而且随着epoch数量增加,神经网络中的权重的更新次数也在增加,曲线从欠拟合变得过拟合。在具体实施过程中,假设有5万张训练图片, 1万张测试图片,图片批次为256对模型进行训练,则训练集中具有batch个数为50000/256=195+1=196,每个epoch需要完成的batch的个数和具有的iteration (使用一个batch数据对模型进行一次参数更新的过程,被称为“一次训练”) 均为196,且每个epoch中发生模型权重更新的次数为196,训练10代后,模型权重的更新的次数为196*10=1960;不同代的训练,其实用的是同一个训练集的数据。第1代和第10代虽然用的都是训练集的5万张图片,但是对模型的权重更新值却是完全不同的;因为不同代的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。
32.正如前文所述,本技术需要进行多次epoch,因此在步骤s3中,首先设定损失函数为图片批次进行卷积网络提取特征,并分类所得结果与数据集本身预测结果差值的平方,并且利用该损失函数对网络参数进行梯度下降更新。训练集的损失函数一直在逐渐减小,当验证集的损失函数有增大的趋势时,结束训练;如果验证集的损失函数一直时减小的趋势,只要达到设定的训练事件次数,就结束训练;最终得到训练模型后的权重文件。在本实施里中,损失函数(loss function) 是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数,在训练的过程中,训练集的损失函数一直在慢慢减小,但是验证集的损失函数不一定一直在减小。如果验证集的损失函数有增大的趋势,这时网络模型将自动启动早停机制,结束训练,如果验证集的损失一直是减小的趋势,只要达到设定的训练次数epoch,就结束训练。将训练模型后的权重.h5 文件保存用于测试。
33.更为具体的是,将训练好的权重.h5文件放到测试模型中,向测试模型中输入实时场景下的图片,将训练好的目标特征(危险物品)与图片中的特征信息进行比对,通过soft-max分类器完成目标的分类识别。并判定分类结果中是否含有刀,枪,棍,棒,易燃易爆等危
险物品,如果含有上述物品,则发送报警指令,否则继续向测试模型中输入实时场景下的图像。
34.上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本技术的限定。虽然此处并没有明确说明,本领域技术人员可能会对本技术进行各种修改、改进和修正。该类修改、改进和修正在本技术中被建议,所以该类修改、改进、修正仍属于本技术示范实施例的精神和范围。
35.同时,本技术使用了特定词语来描述本技术的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本技术至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本技术的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
36.同理,应当注意的是,为了简化本技术披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本技术实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本技术对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
37.一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明数字允许有
±
20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本技术一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
38.针对本技术引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本技术作为参考,但与本技术内容不一致或产生冲突的申请历史文件除外,对本技术权利要求最广范围有限制的文件(当前或之后附加于本技术中的)也除外。需要说明的是,如果本技术附属材料中的描述、定义、和/或术语的使用与本技术内容有不一致或冲突的地方,以本技术的描述、定义和/或术语的使用为准。
39.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。