发明内容
为了解决现有技术中存在的问题,本发明提供的一种基于行人区域合并的安全设备穿戴检测方法,能够自动化检测施工场所工人的安全设备穿戴情况。
为了实现本发明目的,本发明提供的一种基于行人区域合并的安全设备穿戴检测方法,包括以下步骤:
使用行人检测网络对待检测图片进行行人检测,得到行人区域集合Q;
遍历行人区域集合Q,基于IoA实现行人区域的合并,并得到新的区域合并后行人区域集合
遍历区域合并行人区域集合中每一个行人区域坐标,并根据合并后的行人区域坐标将合并后的行人区域图片从图片中分割出来,得到合并后的行人区域图片集合/>
遍历行人区域图片集合使用安全设备检测网络对行人区域图片集合/>中的每张行人区域图片进行安全穿戴设备检测,得到安全穿戴设备坐标集合/>
将行人区域集合Q与安全穿戴设备坐标集合进行合并,输出最终的行人检测结果以及安全穿戴设备检测结果。
进一步地,在对待测图片进行行人检测前,还包括步骤:对行人检测网络和安全设备检测网络进行训练。
进一步地,在训练网络前,还包括步骤:建立数据集并进行标注,所述建立数据集的步骤包括:
下载施工现场的监控录像;
对监控录像进行等时间间距抽帧;
划分数据集,其中,划分数据集时,训练集与验证集,以及训练集与测试集的监控录像机位不一致;
对数据集中的图片进行标注,标注类别为行人和安全穿戴设备。
进一步地,所述安全穿戴设备包括安全帽和反光衣。
进一步地,所述行人检测网络采用yolov5s模型、yolov3和EfficientDet中任一种。
进一步地,所述安全设备检测网络为yolov5s模型、yolov3和EfficientDet中任一种。
进一步地,所述将行人坐标集合Q与安全设备坐标集合进行合并是取行人坐标集合Q与安全设备坐标集合/>的并集。
进一步地,所述基于IoA实现行人区域的合并,具体步骤包括:
获取行人区域集合Q;
初始化合并后行人区域集合
从行人区域集合Q中取出第一个行人区域q,并从行人区域集合Q中删除第一个行人区域q;
判断第一个行人区域q的得分是否大于分数s,是则继续,不是则跳过此次循环,进入下一次循环;
进入一个死循环;
创建标志位,用于退出死循环;
遍历行行人区域集合Q中剩下的行人区域,并取出第一个行人区域
计算行人区域q与的/>得到qioa,/>
判断qioa是否大于分数k,是则从行人区域集合Q中取出更新行人区域q的位置坐标;
判断标志位的值,如果标志位的值为1,代表此次循环中行人区域q的行人位置坐标没有被更新,跳出循环;
结束循环后将合并完成的行人区域q放进最后的合并行人位置坐标集合
进一步地,的计算方式为:
进一步地,行人区域q的更新规则为将行人区域q的行人位置坐标更新为行人区域q与的最小外接矩形位置坐标,行人区域q的得分保持不变。
与现有技术相比,本发明能够实现的有益效果至少如下:
本发明在得到行人位置后,进一步检测行人之间的重叠程度,并对行人检测框进行合并,从而得到更加合理的行人区域图片,在检测时不会出现假阳样本,能够有效提高检测精度。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都是本发明保护的范围。
请参阅图1、图2,本发明提供的一种基于行人区域合并的安全设备穿戴检测方法,包括以下步骤:
步骤1:收集数据集并进行标注。
本发明中,数据集获取流程如下:
步骤1.1、下载施工现场的监控录像;
步骤1.2、对监控录像进行等时间间距抽帧;
在本发明的其中一些实施例中,采用ffmpeg对录像进行等时间间距抽帧,间隔时间为1s,即每秒钟抽取一帧图像。
步骤1.3、划分数据集。划分数据集时,训练集与验证集,以及训练集与测试集的监控录像机位不一致,确保了不存在数据信息泄露的情况,即训练集与验证集,以及训练集与测试集不存在交集。
在本发明的其中一些实施例中,数据集:验证集:测试集=3.5:1:1,最终得到的训练集图片数量为8566,验证集图片数量为:2435,测试集图片数量为2469。
在本发明的其中一些实施例中,使用labelimg对数据集进行标注,标注类别为行人、安全帽、反光衣,一共3个类别,标注格式采用VOC标注格式。应该理解的是,本发明的安全穿戴设备包括但不限于安全帽和反光衣,一切可穿戴在人体上且能被检测的穿戴设备皆可,当需要检测其他穿戴设备时,在标注时需要一并进行标注。
步骤2:对行人检测网络和安全设备检测网络进行训练。
在本发明的其中一些实施例中,采用的行人检测网络为yolov5s模型,采用coco数据集预训练模型进行模型初始化,并在步骤1自建的数据集上进行微调,采用SGD优化器进行优化,采用余弦退火学习率更新方法进行学习率调整,初始学习率为0.1,目标学习率为0.01,批处理数为16,迭代轮次为300,训练图片尺寸为640。安全设备检测网络为yolov5s模型,采用coco数据集预训练模型进程模型初始化,并在步骤1自建数据集上进行微调,采用SGD优化器进行优化,采用余弦退火学习率更新方法进行学习率调整,初始学习率为0.1,目标学习率为0.01,批处理数为16,迭代轮次为300,训练图片尺寸为320。
步骤3:使用行人检测网络对图片进行行人检测,得到行人区域集合Q。
在本发明的其中一些实施例中,所述行人检测网络采用yolov5s模型。可以理解的是,在其他实施例中也可以采用其他的算法模型,如yolov3、EfficientDet等。
步骤3:遍历行人区域集合Q,基于IoA实现行人区域的合并,并得到新的区域合并后行人区域集合
在本发明的其中一些实施例中,基于IoA进行行人区域的合并的步骤包括:
步骤3.1:获取行人区域集合Q;
步骤3.2:初始化合并后行人区域集合
步骤3.3:进入合并循环,当行人区域集合Q不为空时,一直处于循环当中;
步骤3.4:从行人区域集合Q中取出第一个行人区域q,并从行人区域集合Q中删除第一个行人区域q;
步骤3.5:判断第一个行人区域q的得分(该得分代表行人区域q的置信度,由目标检测网络得到)是否大于分数s(在本发明的其中一些实施例中,根据经验,s取经验值0.1),是则继续,不是则跳过此次循环,进入下一次循环;
步骤3.6:进入一个死循环;
步骤3.7:创建标志位flage,用于退出死循环;
步骤3.8:开始遍历行行人区域集合Q中剩下的行人区域,并取出第一个行人区域
步骤3.9:计算行人区域q与的/>得到qioa;
步骤3.10:判断qioa是否大于分数k(在本发明的其中一些实施例中,根据经验,k取经验值0.2),是则从行人区域集合Q中取出更新行人区域q的位置坐标,并将标志位flag置0,代表行人区域q的边界框被更新;
在本发明的其中一些实施例中,行人区域q的更新规则为将行人区域q的行人位置坐标更新为行人区域q与的最小外接矩形位置坐标,行人区域q的得分保持不变。
每个行人区域包括一个得分以及行人位置坐标,得分代表该行人区域的置性度,行人位置坐标代表行人区域的位置坐标。
步骤3.11:判断flag的值,如果flage为1,代表此次循环中行人区域q的行人位置坐标没有被更新,跳出循环;
步骤3.12:结束循环后将合并完成的行人区域q放进最后的合并行人位置坐标集合
基于IoA进行行人区域的合并的算法实现为:
q.score是行人区域的得分,q.minx是行人区域的左边界,q.maxx是行人区域的右边界,q.miny是行人区域的上边界,q.maxy是行人区域的下边界。第8行设置死循环的原因是,当q的行人边界框被更新过后,其余行人区域边界框与其的IoA得分将会改变,所以需要一直循环直至q的行人区域边界框没有被更新。因为合并总会到达无法再合并的情况,所以总会跳出死循环。
本步骤通过使用基于IoA的行人区域合并算法对行人区域进行合并,可以有效减少级联检测中安全穿戴设备检测的计算量。对行人区域进行合并后,分割出来的行人区域图片会更加合理,也能够减小出现被部分分割的实例,非极大值抑制后假阳样本将减少,如已有算法中会产生的黄色假阳样本,在本发明提出的算法中将不会产生,提升了检测的精度。
步骤4:遍历区域合并后行人区域集合中每一个行人区域的行人位置坐标,并根据合并后的行人区域坐标将合并后的行人区域图片从图片中分割出来,得到合并后的行人区域图片集合/>
步骤5:遍历行人区域图片集合使用安全设备检测网络对行人区域图片集合/>中的每张行人区域图片进行安全穿戴设备检测,得到安全穿戴设备坐标集合/>
在本发明的其中一些实施例中,所述安全穿戴设备检测网络采用yolov5s模型。可以理解的是,yolov5s只是本示例选取的方法,可以使用任意的检测算法对yolov5s进行替换,如yolov3、EfficientDet等。
步骤:6:将行人坐标集合Q与安全设备坐标集合进行合并(取两个集合的并集),输出最终的行人检测结果以及安全穿戴设备检测结果。
在本发明的其中一些实施例中,安全穿戴设备包括安全帽和反光衣。
通过实验对本发明实施例提供方法的有效性进行验证,实验数据见表1。
实验说明:
实验一、为非级联的目标检测实验,具体过程是使用一个目标检测网络,同时检测行人、安全帽、反光衣的位置,这一实验采用的模型时yolov5s模型,模型同时检测行人、安全帽、反光衣;
实验二、采用已有方法,即背景技术所说的技术路线1,流程如图2,这一实验采用yolov5s模型检测行人,采用yolov5s模型检测安全帽和反光衣;
实验三、采用本发明提出的方法,这一实验采用yolov5s模型检测行人,采用yolov5s模型检测安全帽和反光衣,相较于实验二,采用了基于IoA的行人区域合并算法。
表1
表中,AP50,AP50:95,AP为平均精准度,计算方式采用COCO数据集的计算方法,AP50代表IoU=0.5下计算得到的AP值,AP50:95代表IOU=0.5开始,每隔0.05计算一次AP,之后求平均,即是目标检测中常用的指标,代表检测精度。FPS代表帧率,即每秒钟能处理的图片数量。测试环境为Ubuntu18.04,CUDA11.3,Pytorch1.8,RTX3060。
实验一所提供的算法需要对每个检测出来的行人框都进行安全穿戴设备检测,
从表1中可以看出,本发明提出的方法在精度方面相较同时检测行人、安全帽、反光衣的实验一以及已有方法先检测行人、再将行人图片分割出来直接检测安全帽和反光衣的实验二都有着较大的提升。而在运行速度方面,本发明所提出的方法也比已有方法的实验二快,且能保证实时运行。
此外,本发明实施例在crowdhuman行人数据集上也做了测试,CrowdHuman数据集是旷世发布的用于行人检测的数据集,训练集15000张,测试集5000张,验证集4370张。训练集和验证集中共有470K个实例,约每张图片包含23个人,同时存在各种各样的遮挡。每个人类实例都用头部边界框、人类可见区域边界框和人体全身边界框注释。使用该数据集的vbox、hbox标注进行训练测试。vbox指可见行人检测框标注(可见行人是Crowdhuman的一种标注形式,crowdhuman包括三种标注,fbox完整行人,vbox可见行人,hbox头部),hbox指头部标注。总体流程与自建数据集一致。这里用头部标注代指安全穿戴设备标注。同时检测行人和安全穿戴设备代表一个网络同时检测vbox以及hbox。采用已有方法,即背景技术所说的技术路线1代表先检测vbox,然后根据vbox得到行人子图像,再在行人子图像中检测hbox。本发明提出方法代表先检测vbox,使用基于IoA的行人区域合并算法得到合理的行人子图像,再在行人子图像检测vbox,测试结果如表2所示,可以看到,本发明所提供的一种基于行人区域合并的安全设备穿戴检测方法相较于其他两种方法都有很大程度的性能提升。
表2
通过验证,在自建数据集以及crowdhuman数据集上,本发明方法比现有方法均能取得更好的效果。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。