本发明属于计算机视觉的目标检测领域,可以应用于无人驾驶,安全监控,道路监督等领域,尤其涉及一种基于改进型单发多目标检测器(singleshotmultiboxdetector,ssd)网络的车辆行人等多目标检测方法。
背景技术:
随着科技的发展,目标检测已经成为计算机视觉炙手可热的研究方向,可应用于无人驾驶、视频监控、行人检测、海面舰船检测等领域。在之前,对于目标检测基本上都采用传统的机器学习方法,即用算子(如:hog、shift、haar)来提取特征,然后选择分类器(如:svm、fisher、adaboosting)对这些特征进行分类,得到目标检测的结果。但是传统的方法存在两个致命的缺点:一、选择的算子不会适应所有的特征的提取,即提取的部分特征没有很强的代表性。二、算子的选择依赖于大量人工经验。所以随着硬件和大数据的发展,基于深度学习的目标检测算法逐渐替代了传统的方法,它克服了以上两个缺点,并且提升了目标检测的精度和鲁棒性,学得的特征更丰富,表达能力更强。
目前,基于深度学习的目标检测方法主要分为两类:一类是基于建议框+分类的目标检测方法,典型代表:r-cnn系列(r-cnn、sppnet、fastr-cnn以及fasterr-cnn),取得了非常好的检测效果,但是在速度方面还远远达不到实时检测的效果。在提高平均准确率(meanaverageprecision,简称map)的同时兼顾速度,逐渐成为目标检测的研究方向。另一类是基于回归思想的深度学习目标检测模型,典型的代表:yolo、ssd。其中yolo虽然快速但是牺牲了很大的精度。而ssd准确率更高、检测速度更快。本发明基于ssd模型进行的改进,虽然ssd模型速度可以与yolo媲美,map也高于yolo但是仍达不到上述第一类算法中的fasterr-cnn的map。其主要原因是在fasterr-cnn里面存在rpn网络,可以解决样本失衡的问题,而ssd里面不存在此网络,对样本失衡的问题采用ohem方法将正负样本比控制在1:3,但是这种方法完全舍弃了易分样本对参数学习的影响,所以并不是解决样本失衡的最佳方法。本发明舍弃此机制,通过修改损失函数来解决ssd网络存在的样本失衡问题,从而提高了检测精度。另外,ssd网络对小目标检测效果较差,它只给出300*300和512*512的模型,即原模型只适合分辨率为300*300和512*512的图片,故想要通过输入高分辨率图片来提高对小目标检测的准确度需要重新设定网络中的区域候选框,本发明提供了一个完整的修改方案。
现有技术的目标检测方法主要存在以下二个问题:
1、对小目标检测效果较差,且只给出300*300和512*512的模型,即原模型只适合分辨率为300*300和512*512的图片,无法输入高分辨率图片来增加小目标的分辨率。
2、在处理正负样本失衡问题的时候,需要额外的计算时间和存储空间的开销,且完全忽略了易分样本对网络收敛的影响。
故,针对现有技术的缺陷,实有必要提出一种技术方案以解决现有技术存在的技术问题。
技术实现要素:
有鉴于此,确有必要提供一种基于改进型ssd网络的车辆行人多目标检测方法,将海量行车视频,进行样本制作。使用统计学方法,统计目标检测框的分布,确定锚框的尺度和长宽比,然后删除ohem机制,使用focalloss替换负样本的损失函数,从而生成新的检测网络,输入训练集进行训练。从而大大减少了训练时收敛所需的时间,同时也有效提高了多目标检测的的准确性。
为了克服现有技术的缺陷,本发明的技术方案如下:
一种基于改进型ssd网络的车辆行人多目标检测方法,其特征在于,包括以下步骤:
步骤s1:将通过行车记录仪采集的海量行车视频,制作为合适大小的图片输入集;
步骤s2:根据k-means聚类方法得到的分布数据修改ssd网络中锚框的尺寸和长宽比,使其适合本数据集;
步骤s3:使用focalloss函数替换原有的损失函数,取代了了原有的在线选择难分样本(onlinehardexamplemining,ohem)机制,解决了正负样本失衡的;
步骤s4:输入数据集,训练新的ssd网络;
步骤s5:使用经过训练的ssd网络对实时输入的图片进行目标检测;
其中步骤s1进一步包括:
步骤s11:将视频每隔3秒提取一帧,删除没有目标的图片,存储起来。
步骤s12:得到的图片分辨率为3000*2000,剪切为2000*1500大小,可有效的去除路边无效信息的干扰;
步骤s13:对得到的图片数据集进行标注,标注信息存入label数据库里,作为标签;
所述步骤s2进一步包括:
步骤s21:统计标注信息里各个标签目标框的长宽尺寸,分别记为w,h,画出各个目标框长宽w_h分布图,其中w为横坐标,h为纵坐标,参见图4为部分目标类别w_h分布图;
步骤s22:观察w-h图中的分布情况,在每个分布比较集中的的区域中选择一个中心附近的点作为该区域的中心,假设选择k个中心构成集合为whs={(w1,h1),(w2,h2)…(wk,hk)};
步骤s23:计算每个点到每个聚类中心的欧式距离,距离哪个聚类中心近,就让该点属于哪个点群,得到其属于的点群。x={x1,x2…xn}是所用的样本点,其对应的长宽分别为w={wx1,wx2...wxn},h={hx1,hx2...hxn}计算聚类的公式如下:
其中dij表示,第i个样本到第j个聚类中心的距离;
步骤s24:更新每个点所属的点群后,重新计算每个点群的中心,点群j中每个点的w的集合为w={wj1,wj2...wjm},h的集合为h={hj1,hj2...hjm},那么点群j新的聚类中心的坐标分别为:
步骤s25:重复步骤s23,步骤s24,直到聚类中心不再变化。便得到k个聚类中心。
步骤s26:根据聚类得出的聚类中心,设定锚框的长宽尺寸和长宽比;
所述步骤s3进一步包括:
步骤s31:设置focalloss需要的参数α,γ;
步骤s32:删除原有的ohem机制;
步骤s33:替换原有的损失函数;
所述步骤s4进一步包括:
步骤s41:初始化修改后的网络;
步骤s42:分别从数据库里获取训练图片和对应的标签,输入网络;
步骤s43:softmax函数输出的置信度pi如下:
其中d(i)为上一层的输入。计算pi对d(j)的偏导数:
当i等于j时:
当i不等于j时:
通过最小化置信度损失函数,来更新参数,其中我们设置的置信度损失函数如下:
其中pos为正样本,neg为负样本。
步骤s44:计算新引入的损失函数的梯度,
通过最小化位置损失函数,来更新参数,其中位置损失函数如下:
其中,
步骤s45:将新的损失函数的梯度替换原损失函数的梯度,根据链式求导法则以及小批量梯度下降法,进行反向传播,更新参数。
步骤s46:训练结束,输出模型。
步骤s5进一步包括:
步骤s51:去除最后的损失函数层;
步骤s52:输入测试数据,得到目标输入每个类别的置信度,以及四个回归量;
步骤s53:根据回归量,修改锚框对应的变量,得到检测框。
与现有技术相比较,本发明具有的有益效果:
高效性:本发明使用focalloss函数替换原有深度学习卷积神经网络中的损失函数,既起到了损失函数的作用,也解决了正负样本失衡的问题,区分了难易样本的关注度,建立了高效的分类回归模型,提高了检测性能,改善了现有的深度卷积目标检测网络对于样本失衡问题需要额外存储空间和时间的缺点,提高了检测的效率。另外本发明使用统计学习的方法,分析了目标框的分布情况,针对具体情况,设置对应的锚框尺寸和长宽比,这样就加快了网络收敛的速度。
准确性:本发明使用focalloss函数替代ohem机制,解决正负样本失衡问题,不仅加大了对难分样本的关注度,而且没有消除对易分样本的关注,改善了现有ssd网络基于ohem机制的完全忽略易分样本对训练网络的贡献的缺点。另外使用k-means聚类的方法,得到适合本发明数据集的锚框尺寸和长宽比,相较于直接使用原ssd网络,对本数据集进行目标检测,该改进提高平均准确度(meanaverageprecision,简称map)。
附图说明
图1为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法的框架流程图;
图1为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法的框架流程图;
图2为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法中步骤s1的框架流程图;
图3为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法中步骤s2的框架流程图;
图4为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法中步骤s21得到的每个类别的长宽分布图;
图5为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法中步骤s4的框架流程图;
图6为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法中步骤s5的框架流程图;
图7为本发明提供的一种基于改进型ssd网络的车辆行人多目标检测方法新构建的ssd网络结构。
图8为本发明与ssd原模型基于本实验数据集的平均准确度(meanaverageprecision,简称map)对比图;
如下具体实施例将结合上述附图进一步说明本发明。
具体实施方式
以下将结合附图对本发明提供的技术方案作进一步说明。
参见图1-6,本发明提供一种基于改进型ssd网络的车辆行人多目标检测方法,图1基于改进型单发多目标检测器(singleshotmultiboxdetector,ssd)网络的车辆行人等多目标检测方法的架构图,整体而言,本发明包括5大步骤,步骤s1:将通过行车记录仪采集的海量行车视频,制作为合适大小的图片输入集;步骤s2:根据k-means聚类方法得到的分布数据修改ssd网络中锚框的尺寸和长宽比,使其适合本数据集;步骤s3:使用focalloss函数替换原有的损失函数,取代了了原有的在线选择难分样本(onlinehardexamplemining,ohem)机制,解决了正负样本失衡的;步骤s4:输入数据集,训练新的ssd网络;步骤s5:使用经过训练的ssd网络对实时输入的图片进行目标检测;
步骤s1:将通过行车记录仪采集的海量行车视频,制作为合适大小的图片输入集,图2所示为详细流程图,具体包括如下步骤:
步骤s11:将视频每隔3秒提取一帧,删除没有目标的图片,存储起来。
步骤s12:得到的图片分辨率为3000*2000,剪切为2000*1500大小,可有效的去除路边无效信息的干扰;
步骤s13:对得到的图片数据集进行标注,标注信息存入label数据库里,作为标签;
参见图3所示为本发明步骤s2详细流程图,其进一步包括:
步骤s21:统计标注信息里各个标签目标框的长宽尺寸,分别记为w,h,画出各个目标框长宽w_h分布图,其中w为横坐标,h为纵坐标,参见图4为部分目标类别w_h分布图;
步骤s22:观察w-h图中的分布情况,在每个分布比较集中的的区域中选择一个中心附近的点作为该区域的中心,假设选择k个中心构成集合为whs={(w1,h1),(w2,h2)…(wk,hk)};
步骤s23:计算每个点到每个聚类中心的欧式距离,距离哪个聚类中心近,就让该点属于哪个点群,得到其属于的点群。x={x1,x2…xn}是所用的样本点,其对应的长宽分别为w={wx1,wx2...wxn},h={hx1,hx2...hxn}计算聚类的公式如下:
其中dij表示,第i个样本到第j个聚类中心的距离;
步骤s24:更新每个点所属的点群后,重新计算每个点群的中心,点群j中每个点的w的集合为w={wj1,wj2...wjm},h的集合为h={hj1,hj2...hjm},那么点群j新的聚类中心的坐标分别为:
步骤s25:重复步骤s23,步骤s24,直到聚类中心不再变化。便得到k个聚类中心。
步骤s26:根据聚类得出的聚类中心,设定锚框的长宽尺寸和长宽比;
所述步骤s3进一步包括:
步骤s31:设置focalloss需要的参数α,γ;
步骤s32:删除原有的ohem机制;
步骤s33:替换原有的损失函数;
参见图5所示为本发明中步骤s4的详细流程图,其进一步包括以下步骤:
步骤s41:初始化修改后的网络;
步骤s42:分别从数据库里获取训练图片和对应的标签,输入网络;
步骤s43:softmax函数输出的置信度pi如下:
其中d(i)为上一层的输入。计算pi对d(j)的偏导数:
当i等于j时:
当i不等于j时:
通过最小化置信度损失函数,来更新参数,其中我们设置的置信度损失函数如下:
其中pos为正样本,neg为负样本。
步骤s44:计算新引入的损失函数的梯度,
通过最小化位置损失函数,来更新参数,其中位置损失函数如下:
其中,
步骤s45:将新的损失函数的梯度替换原损失函数的梯度,根据链式求导法则以及小批量梯度下降法,进行反向传播,更新参数。
步骤s46:训练结束,输出模型。
参见图6所示为本发明步骤s5的流程图,其进一步包括:
步骤s51:去除最后的损失函数层;
步骤s52:输入测试数据,得到目标输入每个类别的置信度,以及四个回归量;
步骤s53:根据回归量,修改锚框对应的变量,得到检测框。
在本发明中我们收集了大量的行车视频,将其制作为图片数据集。总共有1500张图片,将数据集分割成训练集和测试集,其中1200张作为实验的训练集,500张作为测试集,有200张作为交叉验证。然后基于caffe深度学习框架,搭建高性能cuda运算平台设备,同时使用cudnn加速,来提高计算速度,训练得到最终的检测网络。
在上述技术方案中,本发明将原ssd网络中的resize机制去掉,输入较高分辨率的图片。本实验采用的是2000*1500的输入。即通过增大小目标的分辨率,来提高对小目标的识别效果。
另外,本发明中,统计标签中目标框的长宽信息,画出每个目标的长宽分布图,根据分布图进行k-means聚类,最后聚类的中心便是新的锚框的尺寸,然后根据尺寸再来引入新的长宽比(步骤s2中有详述)。这种方法,通过统计学习方法,得到锚框的尺寸和长宽比,使得锚框的分布与标签目标框的分布非常相似,这样锚框与真实框(标签框)的匹配度就越高,这样就可以避免冗余的背景噪声对准确率的影响。并且锚框与真实框(标签框)差异越小,位置回归也越容易,因为当锚框与真实框(标签框)相近时,是个线性回归模型,如果差异较大,则必须通过建立复杂的非线性回归模型求解。
进一步的,本发明通过采用focalloss函数来解决正负样本失衡的问题,并提高了检测的map。原因如下:focalloss以更有效的方式解决正负样本失衡的问题。ssd、yolo此类网络都会存在样本失衡的问题。这与他们采集正负样本的方法密切相关的。
一张图片中,我们会对所有的锚框进行分类。当锚框与目标标签框的iou大于一定阈值,就会设定该锚框为正样本,相反就设置为负样本。一张图片里面目标占据整张图的比例往往远小于背景所占的比例。所以以这种方法得到的样本大部分是负样本。这就会导致负样本的损失会淹没正样本的损失,从而影响正样本对于参数修改的作用。另外还存在难分样本和易分样本的问题。只包含背景的负样本,通过softmax得到的得分往往很高。我们称此类样本为易分样本。对于另外一些负样本,其中有一部分目标信息,但是它与标签框的iou小于阈值,此类目标框,往往比较难分类,称之为难分样本。对难分样本增加关注度,有利于提高收敛速度,提高检测准确度。ssd网络模型针对正负样本失衡的问题,使用的解决方法是ohem机制。该方法通过将负样本按损失值从大到小的顺序进行排列,取前几个损失较高的负样本,从而将正负样本控制在1:3的比例。但是这种方法存在两个缺点:1、需要额外的存储空间来存储各个负样本的损失值,额外的时间来对负样本进行排序。2、这种方法虽然重视了难分样本,但是完全忽略了易分样本,这就导致易分样本没有参与参数的更新,不利于训练的收敛。本发明采用focalloss作为损失函数来解决正负样本失衡的问题,避免了上面提到的两个缺点。
首先focalloss通过引入调制系数,降低了负样本对整个损失的影响,公式如下:
loss=-αtlog(pt)其中αt就是我们提到的权重
这样,通过控制α的大小就可以控制负样本在总损失里面占的比重,从而避免了负样本的损失淹没正样本损失的问题。但是这仅仅解决了正负样本不平衡的问题,没有把难分易分样本区分开来,为了进一步提高性能,又做了如下改进。
loss=-αt(1-pt)γlog(pt)
分析式子,根据softmax的特性,样本越易分,p就越大,则其对损失的贡献就越小,相反的,难分样本对损失的贡献就越大,对应反向传播的梯度也就越大。即对难分易分样本加上了重视度,对难分样本的重视度更强,对易分样本的重视度更弱,让难分样本更大程度的影响参数的更新,这样就使得每次训练更有效,收敛速度更快,减少了网络收敛于局部最小值的风险,故提高了检测精度。采用这种方法高效,简洁的解决了正负样本失衡的问题,而且进一步提高了检测的准确度。
为了验证本发明的技术效果,将通过算法对比验证本发明的有效性:
通过将300*300_ssd,512*512_ssd与本发明新构建的网络new_ssd,进行对比,发现本发明的算法对小目标的检测效果更好,map更高。参见表1、图7所示,为本发明与上述两个模型及相关改进的对比。其中表1对比了各个模型的map与对小目标的检测准确率;图7为本发明与512*512_ssd网络的map对比图。
表1
上表1列出了300*300_ssd、512*512_ssd以及使用focalloos改进后的他们和本发明构建的new_ssd对于本数据集的map和对小目标的检测准确率,其形象的显示了focalloss函数对于本实验数据集准确率提高的效果,也显示了本实验提出的new_ssd对小目标和整体网络检测效果的提升。进一步实验,图7显示了在本实验数据集下,本发明算法和原512*512_ssd算法的ap曲线对比。综上所述,本发明通过海量行车图片数据集对用统计方法修改后的ssd网络进行训练,结合focalloss函数,极大程度上提高了多目标检测的准确率。
以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本发明中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本发明所示的这些实施例,而是要符合与本发明所公开的原理和新颖特点相一致的最宽的范围。