本发明涉及一种基于改进yolov3模型的行人检测方法及系统,属于计算机视觉技术领域。
背景技术:
近年来,基于深度卷积神经网络的计算机视觉技术已取得了举世瞩目的成就,这些成就推动了无人驾驶、监控视频、互联网的视频检索处理、人机交互、虚拟现实、医疗保健、智能安防等技术的发展。行人检测是自动驾驶技术中的一项重要研究内容,也是计算机视觉领域的研究热点之一。
随着深度神经网络,特别是卷积神经网络在目标检测任务中的发展,以及大规模行人检测公共数据集的出现,基于深度神经网络的行人检测算法已在实际问题中得到应用,但仍然存在小尺寸行人目标和被遮挡行人目标被误检、漏检或重复检测的问题。
此外在自动驾驶应用场景下,行人目标检测算法应当同时具备实时性和准确性。r-cnn、fasterr-cnn等二阶段方法由于实时性难以得到保证而较难实现应用,而yolov2、yolov3等一阶段算法在经过不断地改进后,在检测的实时性方面性能十分突出,但需要较大的gpu显存,资源消耗量大,在部署方面存在一定的困难。
技术实现要素:
本发明所要解决的技术问题是克服现有技术的缺陷,提供一种基于改进yolov3模型的行人检测方法及系统。
为解决上述技术问题,本发明提供一种基于改进yolov3模型的行人检测方法,包括:
获取自动驾驶场景下实时采集的监控场景视频,从视频中提取图像帧;
将图像帧输入到预先训练好的改进yolov3模型,利用改进yolov3模型对图像帧中是否包含行人进行判断,若是用边界框标记,若否则不做任何处理;
所述改进yolov3模型的改进包括:
在yolov3模型的resnet34的网络结构的卷积块的近道连接上依次添加平均池化层和卷积层,得到resnet34-d,并作为改进yolov3模型的的主干网络;
在yolov3模型的多特征融合网络中增加空间金字塔池化层,用于提取不同感受野的特征并进行融合;
在yolov3的多特征融合网络的输出层增加dropblock模块,用于随机删除一部分输出层中固定大小的整片区域神经单元,利用保留下来的神经元集中学习剩余部分的特征表示;
利用diou损失函数代替yolov3模型中原先边框位置损失函数。
进一步的,所述改进yolov3模型的训练过程包括:
使用从网络中下载的imagenet数据集训练resnet34_d网络,得到resnet34_d网络的权重文件;
利用所述resnet34_d网络的权重文件初始化改进y0l0v3模型的主干网络的网络参数;
获取自动驾驶场景下的历史行人图像,根据历史行人图像构建初始数据集,对初始数据集中的图像进行标注,得到行人数据集,按随机方式从行人数据集中选择训练集和验证集;
根据训练集和所述diou损失函数,利用梯度下降反向传播方法,对初始化网络参数后的改进yolov3模型中的深度卷积神经网络的参数进行迭代更新;将迭代至最大设定次数后得到的网络参数作为最优的网络参数,完成训练,得到初步的改进yolov3模型;
使用验证集对初步的改进yolov3模型进行测试,根据测试结果调整网络结构,根据检测不出的图片在网上下载类似图片,标注后加入训练集,并重新训练直至测试结果达到预期为止,得到最终的训练好的改进yolov3模型。
进一步的,所述获取自动驾驶场景下的历史行人图像,根据历史行人图像构建初始数据集,对初始数据集中的图像进行标注,得到行人数据集的过程包括:
通过自行拍摄和网上爬虫收集包含自动驾驶场景下的行人图像构建初始数据集;
从初始数据集中的图像中提取行人图像帧,并使用labelimg工具对所有图像标注行人区域,生成voc格式的行人数据集。
进一步的,
在每一次迭代更新时使用图像增强方法对训练集进行处理,得到行人图像特征增强后的训练集;
所述数据增强方法的操作包括对行人图像执行缩放、翻转、平移、旋转、灰度填补、均值、方差标准化、颜色变换、混合图像和随机多尺度操作,得到特征增强后的行人图像。
进一步的,所述获取自动驾驶场景下实时采集的监控场景视频,从视频中提取图像帧的过程包括:
获取自动驾驶场景下实时采集的监控场景视频,从监控场景视频中的每n帧提取一张图像,根据现场光通量、照度、亮度情况对图像进行预处理操作,得到要提取的图像帧;
所述预处理操作包括图像去噪、对比度增强、亮度和饱和度调整;n取值范围为[25,30]。
进一步的,所述用边界框标记的过程包括:
利用改进yolov3模型输出式(1)中的五个值;
(x,y,w,h,score_confidence)(1)
其中x,y表示预测的边界框的中心与网格界线的相对值;w,h表示预测的边界框的宽度和高度相对于整幅图像的宽、高度的比例,其值在0~1之间;score_confidence代表行人目标的置信度,由式(2)确定,
其中pr(object)表示网格中是否真正有行人目标出现,出现则为1,不出现则为0;
进一步的,所述diou损失函数的表达式为:
其中,b表示预测框的面积,bgt表示标注框的面积,b∩bgt表示预测框与标注框相交的面积,b∪bgt表示预测框的面积加上标注框面积减去两个框相交的面积;ρ表示预测框和标注框中心点间的欧氏距离;c表示能够同时覆盖预测框和标注框的最小矩形的对角线距离。
一种基于改进yolov3模型的行人检测系统,包括:
获取模块,用于获取自动驾驶场景下实时采集的监控场景视频,从视频中提取图像帧;
处理模块,用于将图像帧输入到预先训练好的改进yolov3模型,利用改进yolov3模型对图像帧中是否包含行人进行判断,若是用边界框标记,若否则不做任何处理;
所述处理模块包括模型改进模块,用于对yolov3模型进行如下改进:
在yolov3模型的resnet34的网络结构的卷积块的近道连接上依次添加一个平均池化层和一个卷积层,得到resnet34-d,并作为改进yolov3模型的的主干网络;
在yolov3模型的多特征融合网络中增加空间金字塔池化层,用于提取不同感受野的特征并进行融合;
在yolov3的多特征融合网络的输出层增加dropblock模块,用于随机删除一部分输出层中固定大小的整片区域神经单元,利用保留下来的神经元集中学习剩余部分的特征表示;
利用diou损失函数代替yolov3模型中原先边框位置损失函数。
进一步的,所述处理模块包括训练模块,包括:
第一确定模块,用于使用从网络中下载的imagenet数据集训练resnet34_d网络,确定resnet34_d网络的权重文件;
初始化模块,用于利用所述resnet34_d网络的权重文件初始化改进y0l0v3模型的主干网络的网络参数;
数据集确定模块,用于获取自动驾驶场景下的历史行人图像,根据历史行人图像构建初始数据集,对初始数据集中的图像进行标注,得到行人数据集,按随机方式从行人数据集中选择训练集和验证集;
迭代模块,用于根据训练集和所述diou损失函数,利用梯度下降反向传播方法,对初始化网络参数后的改进yolov3模型中的深度卷积神经网络的参数进行迭代更新;将迭代至最大设定次数后得到的网络参数作为最优的网络参数,完成训练,得到初步的改进yolov3模型;
测试模块,用于使用验证集对初步的改进yolov3模型进行测试,根据测试结果调整网络结构,根据检测不出的图片在网上下载类似图片,标注后加入训练集,并重新训练直至测试结果达到预期为止,得到最终的训练好的改进yolov3模型。
进一步的,所述数据集确定模块包括:
构建模块,用于通过自行拍摄和网上爬虫收集包含自动驾驶场景下的行人图像构建初始数据集;
生成模块,用于从初始数据集中的图像中提取行人图像帧,并使用labelimg工具对所有图像标注行人区域,生成voc格式的行人数据集;
所述迭代模块包括增强模块,
用于在每一次迭代更新时使用图像增强方法对训练集进行处理,得到行人图像特征增强后的训练集;所述数据增强方法的操作包括对行人图像执行缩放、翻转、平移、旋转、灰度填补、均值、方差标准化、颜色变换、混合图像和随机多尺度操作,得到特征增强后的行人图像。
本发明所达到的有益效果:
本发明创新性地提出基于改进yolov3的行人检测方法。使用训练好的深度卷积神经网络模型,自动检测重要场所内的行人,不仅可以自动提取特征,避免人工提取特征的复杂工作,而且具有检测成本低,检测速度快、准确率高等优点。该方法有效的将计算机技术、图像处理技术应用到行人检测任务中,可以广泛的应用到电力场所、医院、图书馆等重要场所。
附图说明
图1是本发明的基于yolov3的行人检测方法流程示意图;
图2是改进yolov3模型结构;
图3-1、3-2、3-3和3-4是行人检测样例。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
一种基于改进yolov3模型的行人检测方法,其通过现场的视频监控系统,对重要场所进行行人监控。如图1所示,该方法包括如下步骤:
步骤1,收集包含自动驾驶场景下的行人图像和数据集,建立初始数据集,并对初始数据集中的图像进行标注,得到行人数据集。按随机方式从行人数据集中选择80%作为训练集,20%作为验证集;
步骤2,根据自动驾驶场景需求,对yolov3模型进行改进,得到改进yolov3模型的行人检测模型;
步骤3,使用行人数据集分别训练改进yolov3模型,得到行人检测模型;
步骤4,嵌入式视频监控系统的摄像头实时采集监控场景视频,并从视频中提取图像帧;
步骤5,将步骤4获得的帧图像输入至所述步骤3的改进yolov3行人检测模型中,对帧图像中是否包含行人进行判断,如果包含用边界框标记,否则不做任何处理。
所述的步骤1具体包括以下步骤:
步骤1-1,通过自行拍摄和网上爬虫收集包含自动驾驶场景下的行人图像和数据集,建立初始数据集;
步骤1-2,从视频中提取行人图像帧,并使用labelimg工具对所有图像标注行人区域,分别生成voc格式的行人数据集。
如图2所示,所述的步骤2具体包括以下步骤:
步骤2-1,修改resnet34的网络结构,通过在卷积块的近道连接上依次添加一个平均池化层(卷积核大小为2×2,步长为2)和一个卷积层(卷积核大小为1×1、步长为1),得到resnet34-d,并作为yolov3的主干网络;
步骤2-2,在yolov3的多特征融合网络中增加空间金字塔池化(spatialpyramidpooling,spp),通过5×5、9×9和13×13三个不同尺度的最大池化层对特征图分别进行池化,以提取不同感受野的特征并进行融合;
步骤2-3,在yolov3的多特征融合网络的输出部分增加dropblock模块,随机删除一部分3×3大小的整片区域神经单元,使得保留下来的神经元集中学习剩余部分的特征表示,提高对被遮挡目标的识别能力;
步骤2-4,引入diou损失函数代替原先边框位置损失函数,充分考虑预测框与标注框之间重叠比、中心点距离以及长宽比,提高检测网络对于多尺寸目标的检测能力;
所述的步骤3具体包括以下步骤:
步骤3-1,首先使用从网络中下载的imagenet数据集训练resnet34_d网络,为了提高训练的速度训练前将imagenet数据集中的训练图片分辨率调整至224×224,得到resnet34_d网络的权重文件。
步骤3-2,将步骤3-2得到的resnet34_d网络权重文件初始化改进y0l0v3模型的主干网络的网络参数,并采用行人数据集训练集训练改进yolov3模型;为了提高训练的速度训练前将行人数据集中的训练图片分辨率调整至416×416;依据选择的损失函数,利用梯度下降反向传播方法,对改进yolov3模型中的深度卷积神经网络的参数进行迭代更新;在每一次迭代中使用图像增强方法,所述数据增强操作包括对图像执行缩放、翻转、平移、旋转、灰度填补、均值、方差标准化、颜色变换、混合图像和随机多尺度等操作;将迭代至最大设定次数后得到的网络参数作为最优的网络参数,完成训练,得到初步的行人检测模型;
步骤3-3,使用验证集对初步的行人检测模型进行测试,根据测试结果调整网络结构,根据检测不出的图片在网上下载类似图片,标注后加入训练集,并重新训练直至测试结果达到预期为止,得到最终的行人检测模型;
所述的步骤4具体包括以下步骤:
步骤4-1,摄像头通过无线或硬件接线的方式与嵌入式设备连接,将实时拍摄的视频输入嵌入式设备中;
步骤4-2,每n帧提取一张图像,根据现场光通量、照度、亮度情况对图像进行预处理操作;所述预处理操作包括图像去噪、对比度增强、亮度和饱和度调整;优选地,n取值范围为[25,30]。
所述的步骤5的边界框标记采用如下方法:
(x,y,w,h,score_confidence)(1)
yolov3模型实际检测行人时会直接输出式(1)中的五个值;其中(x,y)表示预测的边界框的中心与网格界线的相对值;(w,h)代表预测的边界框的宽度和高度相对于整幅图像的宽、高度的比例,其值在0~1之间;score_confidence代表行人目标的置信度,由式(2)确定,其中pr(object)表示网格中是否真正有行人目标出现,出现则为1,不出现则为0;
所述训练过程选用的位置损失函数使用了diou损失函数,其表达式为:
其中,b∩bgt表示预测框与标注框相交的面积,b∪bgt表示预测框的面积加上标注框面积减去两个框相交的面积;ρ表示预测框和标注框中心点间的欧氏距离;c表示能够同时覆盖预测框和标注框的最小矩形的对角线距离;
行人边界框标记结果如图3-1、图3-2、图3-3、图3-4所示,本文提出的算法有效的改善提高对被遮挡目标和小尺度目标的识别能力。
本实施例中,网络参数设定:网络训练时设定学习率为0.001,当迭代到150000次时学习率衰减10倍,当迭代到200000次时再衰减10倍,当迭代到240000次时再衰减10倍;网络动量参数为0.9;权重衰减正则项为0.0005;批次大小为64,子批次大小为8;训练时阈值为0.5,迭代次数为250000次。
与现有技术相比,本发明具有如下有益效果:本发明创新性地提出基于改进yolov3模型的行人检测算法。使用训练好的深度卷积神经网络模型,自动监测行人,不仅可以自动提取特征,避免人工提取特征的复杂工作,而且具有检测成本低,检测速度快、准确率高等优点。本发明为了训练出最好的yolov3行人检测模型,从小区、地铁站、马路等监控场景中收集了大量的行人图片制作成数据集,故在检测精度、速度上大大的提高。该方法有效的将计算机技术、图像处理技术应用到行人检测中,可以广泛的应用到电力场所、医院、图书馆等重要场所。除此之外,与现有技术相比,本发明方法的网络参数量小,计算速度快,具有良好的泛化性能。
一种基于改进yolov3模型的行人检测系统,包括:
获取模块,用于获取自动驾驶场景下实时采集的监控场景视频,从视频中提取图像帧;
处理模块,用于将图像帧输入到预先训练好的改进yolov3模型,利用改进yolov3模型对图像帧中是否包含行人进行判断,如果包含用边界框标记,否则不做任何处理;
所述处理模块包括模型改进模块,用于对yolov3模型进行如下改进:
在yolov3模型的resnet34的网络结构的卷积块的近道连接上依次添加一个平均池化层和一个卷积层,得到resnet34-d,并作为改进yolov3模型的的主干网络;
在yolov3模型的多特征融合网络中增加空间金字塔池化层,用于提取不同感受野的特征并进行融合;
在yolov3的多特征融合网络的输出层增加dropblock模块,用于随机删除一部分输出层中固定大小的整片区域神经单元,利用保留下来的神经元集中学习剩余部分的特征表示;
利用diou损失函数代替yolov3模型中原先边框位置损失函数。
所述处理模块包括训练模块,包括:
第一确定模块,用于使用从网络中下载的imagenet数据集训练resnet34_d网络,确定resnet34_d网络的权重文件;
初始化模块,用于利用所述resnet34_d网络的权重文件初始化改进y0l0v3模型的主干网络的网络参数;
数据集确定模块,用于获取自动驾驶场景下的历史行人图像,根据历史行人图像构建初始数据集,对初始数据集中的图像进行标注,得到行人数据集,按随机方式从行人数据集中选择训练集和验证集;
迭代模块,用于根据训练集和所述diou损失函数,利用梯度下降反向传播方法,对初始化网络参数后的改进yolov3模型中的深度卷积神经网络的参数进行迭代更新;将迭代至最大设定次数后得到的网络参数作为最优的网络参数,完成训练,得到初步的改进yolov3模型;
测试模块,用于使用验证集对初步的改进yolov3模型进行测试,根据测试结果调整网络结构,根据检测不出的图片在网上下载类似图片,标注后加入训练集,并重新训练直至测试结果达到预期为止,得到最终的训练好的改进yolov3模型。
所述数据集确定模块包括:
构建模块,用于通过自行拍摄和网上爬虫收集包含自动驾驶场景下的行人图像构建初始数据集;
生成模块,用于从初始数据集中的图像中提取行人图像帧,并使用labelimg工具对所有图像标注行人区域,生成voc格式的行人数据集;
所述迭代模块包括增强模块,
用于在每一次迭代更新时使用图像增强方法对训练集进行处理,得到行人图像特征增强后的训练集;所述数据增强方法的操作包括对行人图像执行缩放、翻转、平移、旋转、灰度填补、均值、方差标准化、颜色变换、混合图像和随机多尺度操作,得到特征增强后的行人图像。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。