一种基于视频流的智能交通信号灯故障识别方法

文档序号:35537961发布日期:2023-09-23 13:55阅读:48来源:国知局
一种基于视频流的智能交通信号灯故障识别方法与流程

本发明涉及计算机视觉与深度学习,具体涉及一种基于视频流的智能交通信号灯故障识别方法。


背景技术:

1、在城市交通管理中,交通信号灯对交通流的控制和引导起着至关重要的作用,一旦发生错误,会对交通安全和城市通行效率带来巨大影响。然而,城市交通信号灯数量多、分布广,且人工巡检效率低下,使得交通信号灯故障的实时监测工作变得困难,影响交通的正常运行。如何准确、高效地检测交通信号灯的故障状态是当前城市交通管理迫切需要解决的问题。因此,构建实时视频流的交通信号灯故障检测系统,力保当交通信号灯出现故障时,能尽早被发现和处理,是目前提高道路通行效率和市民出行体验最有效的策略。

2、目前交通信号灯故障检测主要依靠电子电路检测设备结合人工观察的方式来发现故障。电子电路检测方法需要设计一种交通信号灯故障检测电路,该电路包括对信号灯内部及信号机输出的电压和电流进行检测。缺点是对城市交通信号灯模块的维护和更换成本非常高,包括路口新增检测模块的远程维护和保障工作。且通过信号机输出的检测方式来判断信号灯状态,需要适应不同供电类型和功率类型的信号灯,复杂度高,同时外部供电环境的变化也会影响检测的准确性。

3、对于交通信号灯检测和识别的算法从基于手工特征的传统算法已经发展到现阶段应用广泛的基于深度神经网络的相关算法。从2013年提出overfeat算法,到r-cnn算法,2015年提出的fast rcnn和yolo算法,以及后续出现的ssd算法、faster rcnn、yolov2和yolov3算法,并且到现阶段已经提出的yolov5。短短几年从网络结构方面而言,从自下到上(bottom-up)到自上到下(top-down),从二阶段(two stage)到一阶段(one stage),产生了一大批检测性能和识别效果俱佳的算法。但是,因信号灯检测目标偏小,既有的研究方法识别准确率低,即便在光线情况良好视野清晰的实际道路场景中,仍然会出现明显的对小尺度交通信号灯漏检、误检的情况。因此,如何提高对小尺度交通信号灯故障检测的准确率,成为了当前研究的重要方向。


技术实现思路

1、针对现有目标检测与识别技术对于小尺度目标的检测精度低、实时性差、人工巡检信号灯故障成本高的问题,本发明提供了一种基于视频流的交通信号灯故障检测方法,通过计算机视觉与深度学习技术相结合取代传统的电子电路故障检测方法,显著提高了工作效率,降低了人工巡检、维修的成本,同时本发明将注意力机制se模块引入yolov5网络,将焦点损失函数focalloss引入模型的训练过程,提高了对小尺度交通信号灯故障检测的准确率,确保第一时间识别出交通信号灯的故障,以提高道路通行效率和市民出行体验。

2、为了实现上述目的,本发明的具体技术方案如下:

3、步骤1,读取电子警察视频流:

4、读取电子警察视频流,获取制作数据集所需的视频流。(包含“东南西北”四个方向的信号灯)

5、步骤2,数据集制作:根据步骤1获取的多个路口电子警察“东南西北”四个方位的信号灯视频流,使用python脚本,对四个方位的视频流进行拼接,定义拼接函数为“videopj”,再使用ffmpeg对拼接成功后的mp4视频进行分帧截取,即可得到数据集,数据集共2025张图像,图像分辨率为1280×720。

6、步骤3,改进yolov5网络模型,并基于该模型识别信号灯:引入se-net注意力机制网络,将se模块分别嵌入yolov5网络的backbone、neck、head三个网络模块中,产生三个新的网络模型sea_yolov5s、seb_yolov5s和sec_yolov5s。sea_yolov5s中,将se模块嵌入backbone网络的bottleneckcsp结构,具体嵌入位置在conv卷积特征融合concat的输出端与bn的输入端之间;seb_yolov5s中,将se嵌入neck,将se嵌入每一个contact模块的输出端与bottleneckcsp2_1的输入端之间;sec_yolov5s中,将se嵌入head,具体嵌入位置在neck网络的bottleneckcsp2_1输出端与head网络的yolo检测头卷积的输入端之间。

7、步骤4,改进yolov5网络模型的损失函数,引入焦点损失函数,包含正负样本的权重控制、易分类和难分类样本的权重控制、两种权重控制方法合并。

8、步骤5,训练和验证改进后的yolov5网络模型:基于yolov5模型以及预训练权重yolov5s.pt,创建模型配置文件并修改训练所需的超参数,进行交通信号灯训练集的训练,最终得到模型检测准确率、召回率最高的权重文件best.pt。

9、步骤6,将权重文件best.pt配置于yolov5模型中进行信号灯识别及故障判定。

10、作为优选,步骤2包括:步骤2-1,视频流关键帧采样之后,使用labelimg软件对2025张图像中的交通信号灯进行标注和预处理。在此过程中,需要对数据集图片中的绿灯、红灯、黄灯和熄灭这四种工作状态进行标注,以提高模型的判别能力,保证识别效果的准确性。

11、步骤2-2,将标注后的数据集按比例划分为训练集与验证集。这一步骤是为了给模型提供较为准确的初始训练数据,并使用验证集进行模型的评估。另外,在进行数据集标注时,需要注意所标注的区域要尽量紧贴信号灯的灯板边缘,可以避免出现过多的背景干扰。

12、作为优选,步骤3包括:

13、步骤3-1,开发环境配置:搭建开发环境,包括操作系统、cuda版本、cudnn、python版本、深度学习框架、gpu、cpu、内存和硬盘等,设置好高算力的设备部署方案。

14、步骤3-2,模型改进:

15、yolov5采用one-stage结构,由四个模块组成,分别是input输入端、backbone主干网络、neck网络层、head输出端。目标检测模型随着网络层次的加深,提取的信息越来越抽象,对于监控图像中远处小目标交通信号灯的检测就更加困难,难以准确检测。

16、yolov5的基本组件:

17、focus:沿用yolov2网络的passthrough。

18、cbl:由conv+bn+leakyrelu激活函数三者组成。

19、csp1_x:在cspnet网络的基础上,由三个卷积层和x个res unint模块concate组成。

20、csp2_x:取消res unint模块,改为使用cbl模块。

21、spp:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合

22、基于yolov5的性能优势,在其基础上进行改进,以提高城市道路交通中信号灯检测的准确率,同时降低误检和漏检率。

23、se-net是典型的通道注意力网络,se模块的有效性在一些应用中已经得到验证,但是在具体将其嵌入网络中的哪些位置更有效果,目前还没有完整的理论说明。

24、本发明针对yolov5设计了三种融se模块的网络模型形成yolov5s。yolov5包含四个模块,input输入端主要进行图像的预处理,没有任何提取特征的操作,因此无需引入注意力机制。因此,将se模块分别嵌入backbone、neck、head三个网络模块中,由此产生的三个新的网络模型分别记为sea_yolov5s、seb_yolov5s和sec_yolov5s。

25、作为优选,步骤4中,原始yolov5的损失函数包括目标损失函数和分类损失函数、边界框回归损失函数。本发明在原始损失函数的基础上对损失函数进行改进,提出焦点损失函数(focal loss),具体的:

26、yolov5使用bce with logits作为目标损失函数和分类损失函数,二分类交叉熵损失函数的计算公式见公式(1)。式中,y为真实样本标签;p为经过sigmoid函数的预测输出,见公式(2),取值在[0,1]之间。

27、

28、

29、使用giou作为边界框回归损失函数,其中iou是真实框与预测框的交并比,损失函数的计算公式见式(3)。

30、

31、iouloss中如果两个检测框没有相交,则iou=0,两框的重合度不能直接反映出来,没有梯度回传,无法学习训练,而giou基于iou损失函数改进提出,计算公式见式(4)。

32、

33、式中,ac为两框的最小区域面积。

34、在原始损失函数的基础上对损失函数进行改进,提出利用权重控制不平衡样本的损失计算方案——焦点损失函数focal loss。主要包含三个步骤:

35、①正负样本的权重控制。

36、正样本是指生成的候选框中有目标,没有则为负样本。以交叉熵的一种典型情况二分类交叉熵为例,见公式(2)。要在此函数的基础上降低负样本的影响,可以在交叉熵损失前增加一个系数αt,见公式(5),范围为[0,1]。将αt与bce(p,y)公式合并形成公式(6)。

37、

38、

39、通过设置α实现控制正负样本对损失的贡献:当的取值设在[0,0.5],就可以降低正样本的损失权重,增加负样本的损失权重;当α取值为(0.5,1],就可以增加正样本损失的权重,减少负样本损失的权重。

40、②易分类和难分类样本的权重控制。如果样本1和样本2属于目标种类概率的大小分别为0.9和0.6,显然样本2相比样本1则很难分类,因此,称样本2为难分类样本。实现这两类样本的控制,在bce(p,y)基础上乘以(1-p)γ或者pγ,将此因子称为调制系数(modulatingfactor),γ取值范围为[0,5],见公式(7)。

41、

42、通过调整指数γ的大小来实现调制系数的改变,以调制系数的大小来控制两类样本的权重大小。当γ=0,是标准的二分类交叉熵损失函数;当0<γ≤5,就可以实现控制易分类样本对损失的权重,降低此类样本的影响,使得模型更加关注于难分类样本。

43、③两种权重控制方法合并。

44、通过将两种方法得到的公式合并得到focalloss(p,y,α,γ),见公式(8)

45、

46、在二分类交叉熵损失函数基础上添加平衡因子α,平衡单级结构中正负样本数量不均;添加调制系数,用来控制难易样本分类;两个参数α和γ协调来控制,可以通过focalloss实现对不平衡样本的控制,输出比较小的损失。

47、作为优选,利用预处理后的数据集进行模型训练,使用改进后的yolov5模型进行训练。基于yolov5模型以及预训练权重,创建模型配置文件并修改训练所需的超参数,并进行交通信号灯训练集的训练,最终得到模型检测准确率、召回率最高的权重文件。

48、预训练权重yolov5s.pt通过在大规模数据集上进行有监督的训练,使得网络能够有效地从输入图像中提取出具有判别性的特征。预训练权重包含了在大规模数据集上获得的丰富知识和模式。这些知识可以通过迁移学习的方式传递给新的任务。在yolov5中,通过加载预训练权重,网络可以利用先前学习到的知识,加快收敛速度,并且避免从零开始训练。

49、作为优选,修改训练开始前所需的超参数:epoch、batch_size、初始锚框大小,并创建了模型数据集配置文件,规定了交通信号灯图片训练集以及验证集的绝对路径,并将分类数量(number of classes)设置为2,分类名称(class names)设置为[‘red’,‘green’,‘yellow’,‘black’],使用制作好的数据集对改进后的yolov5模型进行训练学习,通过反复迭代训练,让模型逐渐提高其精度和泛化能力。

50、作为优选,采用验证集对训练后的yolov5模型进行验证,对输出结果的准确度、召回率进行综合评价。这一步骤是为了验证模型的效果,并找出其中可能存在的缺陷和不足之处,以便于进一步的优化。

51、作为优选,步骤6包括:

52、步骤6-1,信号灯具有明确的形状特征和颜色特征,并且特征固定和明显,其中形状主要包括圆形和箭头形,而颜色主要包括红色、绿色、黄色、黑色(熄灭)。

53、考虑到信号灯正常工作状态时灯光颜色的组合太过复杂,特别是信号灯处于转换时期时,灯光颜色不稳定,会出现短暂的“闪烁”,判定难度大,因此,本发明不考虑正常工作状态的各类情况,只针对故障的状态进行识别。

54、信号灯故障类型包括:“熄灭”故障和“冲突”故障,“熄灭”故障有“红灯熄灭”、“绿灯熄灭”、“单灯板熄灭”、“全部熄灭”等。“冲突”故障有“绿冲突”、“红冲突”、“黄冲突”、“红绿冲突”、“红黄冲突”、“黄绿冲突”等。

55、由于信号灯故障时出现的瞬时状态(比如灯熄灭)和信号灯处于信号正常转换期间时出现的状态存在重叠,因此对于信号灯识别出来的结果,需要放进足够长的一个周期内去看,才能判断是否真的出现故障。

56、步骤6-2,所述交通信号灯组包括红灯、黄灯、绿灯和熄灭;红灯表示禁止通行,绿灯表,示允许通行,黄灯表示警示,熄灭时灯光呈现黑色;

57、按当前路口一个完整的信号灯周期时长作为基准,统计一个信号灯周期内出现的红灯、绿灯、黄灯、灭灯;

58、如果信号灯周期内统计的红灯没亮过,则存在红灯熄灭故障;

59、如果信号灯周期内统计的绿灯没亮过,则存在绿灯熄灭故障;

60、如果信号灯周期内统计的黄灯没亮过,则存在黄灯熄灭故障;

61、如果信号灯周期内统计的单灯板的红灯、绿灯、黄灯都没亮过,则存在单灯板熄灭故障;

62、如果信号灯周期内统计的所有红灯、绿灯、黄灯都没亮过,则存在全部熄灭故障;

63、如果信号灯周期内统计的红灯同时亮的时间t>t,t为阈值时间,则判定红冲突故障;

64、如果信号灯周期内统计的绿灯同时亮的时间t>t,t为阈值时间,则判定绿冲突故障;

65、如果信号灯周期内统计的黄灯同时亮的时间t>t,t为阈值时间,则判定黄冲突故障;

66、如果信号灯周期内统计的红灯和黄灯同时亮的时间t>t,则判定红黄冲突故障;

67、如果信号灯周期内统计的红灯和绿灯同时亮的时间t>t,则判定红绿冲突故障;

68、如果信号灯周期内统计的黄灯和绿灯同时亮的时间t>t,则判定黄绿冲突故障。

69、本发明的有益效果是:

70、本发明有效解决了人工巡检信号灯故障效率低、误报率高的问题,提高了对小尺度交通信号灯故障检测的准确率,构建了实时的交通信号灯故障检测系统,力保当交通信号灯出现故障时,能尽早被发现和处理。

71、本发明应用yolov5模型进行交通信号灯故障检测。在已有电子警察系统抓拍数据中挖掘信息,提取信号灯的运行状态,很巧妙的实现了需求功能。本发明分析和针对特征提取网络以及损失函数进行改进,以利于识别精确度的提高和减少小尺度的交通信号灯漏检情况的发生。将注意力机制se模块分别引入yolov5网络的backbone、neck、head,经过试验对比得出se模块引入的最佳位置。针对yolov5模型存在的正负样本不平衡问题,将焦点损失函数focal loss引入模型的训练过程。试验表明,将se模块与backbone进行融合,模型的平均准确率map提高了0.03%,引入focal loss之后,map提高了0.012%,同时准确率precision和召回率recall均有提高。

72、对自建的数据集进行测试,结果表明:改进的yolov5模型能有效地提高交通监控场景中对信号灯工作状态的识别。再通过修改yolov5模型的detect.py程序,对路口四路信号灯的判别结果进行统计和逻辑分析,可以有效地判断信号灯的故障状态,包括灭灯故障或冲突异常等信息。本方法除了具有高精度和实时性的优势之外,还具备鲁棒性强、适应性好和可扩展性好等优点,为未来的交通管理和人工智能技术研究提供了有益的参考和借鉴。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1