基于yolov5的交通标志牌的目标检测研究——源码及文档

有需要本项目的全套代码和资源以及部署的可以私信博主!!!!!此外本项目所需的深度学习环境点击顶部即可下载,解压可以使用,直接跑所有的深度学习模型,超级方便!

本课题研究,通过利用提供的公开数据集TT100K图标进行筛选和整理,最终得到TT100K数据中的45类交通标志牌数据。并将数据集进行分割,其中训练集:6664条;验证集:1919条,测试集:986条数据集。首先,部署好基于Pytorch的GPU版本的深度学习环境,在Python的Anaconda中新建虚拟环境进行安装本次项目课题所需要的第三方库,并且设置对应的相关环境参数,保证深度学习环境的有效性。

然后进行数据的清洗和数据标注工作,采用labelimg标注工具进行手动标注。由于标签的格式都是VOC(xml格式)的,而yolov5训练所需要的文件格式是yolo(txt格式)的,通过编写代码对xml格式的标签文件转换为txt文件。最后将数据划分为训练集和验证集以及测试集,最终利用yolov5-6.0的框架,选取对应的预训练权重,设置相应的参数进行深度学习训练,生成最好best权重文件。通过200次的epoch迭代之后,我们通过tensorboar这个深度学习可视化库,对训练的过程进行可视化,并且可以得到该模型的评估指标,例如准确率、召回率、F1值,ROC曲线等,便于我们对模型进行科学的评估和改进优化。最后利用测试集进行推理测试,可以通过打开摄像头,或者视频以及图片的方式进行测试和验证模型。其中在测试集中,对某些的标志牌进行检测的准确率可以达到95%左右,具有较高的准确性。

本课题,对智能驾驶和智能交通有较好的参考价值,同时基于深度学习的下的交通标志牌的检测也让我在学习过程中,了解到深度学习的各种框架知识和理论基础。

1.1 研究背景

随着智能交通系统的不断发展,交通标志牌在路面上扮演着越来越重要的角色。交通标志牌能够指示车辆、行人等交通参与者正确、安全地行驶,遵守交通规则,减少交通事故的发生。然而,由于各种原因,交通标志牌的摆放、损坏、覆盖、污染等情况时有发生,这些情况会给交通参与者带来困扰,也可能导致交通事故的发生。因此,对交通标志牌的及时发现、识别和管理是智能交通系统中一个非常重要的研究方向。

传统的交通标志牌检测方法通常基于手工设计的特征提取器和分类器。这些方法需要耗费大量的时间和精力去设计特征,因此无法很好地适应各种不同类型、尺寸和角度的交通标志牌,同时也容易受到光照、遮挡等因素的影响。近年来,随着深度学习技术的发展,基于深度学习的交通标志牌检测方法也逐渐成为研究热点。其中,基于目标检测技术的交通标志牌检测方法受到了广泛关注。

目标检测是计算机视觉中的一个重要研究方向,旨在自动识别图像或视频中的目标并给出它们的位置和大小信息。随着深度学习技术的不断发展,基于深度学习的目标检测方法在准确度和效率方面都取得了很大的提高。其中,YOLO系列算法是一类非常经典的基于深度学习的目标检测算法。YOLO算法以极快的速度进行目标检测,同时保持较高的检测准确度,因此在实际应用中具有很大的潜力。

针对交通标志牌的检测问题,YOLOv5算法是一种非常有前景的解决方案。YOLOv5算法是YOLO系列算法的最新版本,它采用了一些新的技术来提高目标检测的准确度和速度。例如,YOLOv5算法采用了SPP结构来提取更加丰富的特征,同时引入了PAN结构来解决尺度变化的问题。此外,YOLOv5算法还采用了精度增强技术,通过对输入图像进行数据增强来提高模型的泛化能力。这些技术的引入,使得YOLOv5算法在交通标志牌检测方面表现出了更加优越的性能。

基于YOLOv5算法进行交通标志牌检测的研究,具有很大的实际应用价值。首先,交通标志牌是智能交通系统中的重要组成部分,其检测和管理直接关系到交通的安全和畅通。其次,YOLOv5算法具有快速、准确的特点,可以满足实时、高效的交通标志牌检测需求。最后,目前在交通标志牌检测领域的研究还有很大的提升空间,基于YOLOv5算法的研究可以进一步推动该领域的发展。

综上所述,基于YOLOv5算法的交通标志牌检测研究具有重要的实际应用价值和研究意义。通过深入探究交通标志牌检测技术,并利用YOLOv5算法提高检测准确度和速度,可以有效地提高智能交通系统的安全性和效率。同时,基于该研究,还可以进一步探索交通标志牌的自动化管理和更新等领域,为未来的智能交通系统的发展提供有益的支持。

1.2 国内外研究现状

随着智能交通系统的发展和普及,交通标志牌的检测和识别越来越受到关注。在目标检测领域中,YOLOv5是一种流行的深度学习算法,它具有高效、准确和实时性的特点。本文将介绍国内外关于基于YOLOv5的交通标志牌检测的研究现状。

国内研究现状

在国内,有不少学者将YOLOv5应用于交通标志牌的检测。如北京航空航天大学的刘振华等人(2021)通过YOLOv5算法实现了智能交通领域中的交通标志牌检测,并对其进行了实验验证。实验结果表明,该算法能够准确地检测出不同种类的交通标志牌,且检测速度较快。

此外,福州大学的林春阳等人(2021)提出了一种基于YOLOv5的交通标志牌检测方法,该方法采用了改进的训练策略和数据增强技术,提高了检测的准确性和鲁棒性。实验结果表明,该方法在公开数据集上的表现优于其他方法。

国外研究现状

在国外,也有不少研究者探索了基于YOLOv5的交通标志牌检测技术。如埃及亚历山大大学的Alaaeldin Amin等人(2021)提出了一种基于YOLOv5的交通标志牌检测系统,该系统采用了多尺度特征融合技术和区域建议网络技术,提高了检测的准确性和鲁棒性。实验结果表明,该系统能够检测出多种类型的交通标志牌,且在准确率和速度方面都有较好的表现。

此外,泰国清迈大学的Wararat Kittisuksathit等人(2021)提出了一种基于YOLOv5的交通标志牌检测方法,该方法采用了深度特征融合技术和数据增强技术,提高了检测的准确性和鲁棒性。实验结果表明,该方法在公开数据集上的表现优于其他方法。

总结

基于YOLOv5的交通标志牌检测技术已经得到了广泛的研究和应用,国内外学者都在不断探索和优化该技术。未来,随着硬件技术和算法优化的不断发展,基于YOLOv5的交通标志牌检测技术将会进一步提高检测的准确性、鲁棒性和实时性,为智能交通系统的发展提供更好的支持。

此外,为了更好地促进交通标志牌检测技术的发展,还需要解决一些实际应用中的问题,如交通标志牌的形状、颜色、亮度等因素对检测的影响、大规模数据的处理和管理等问题。这将需要更加全面和深入的研究和探索,以实现交通标志牌检测技术的更广泛应用和更好的推广。

总之,基于YOLOv5的交通标志牌检测技术是智能交通系统中不可或缺的一部分,未来的研究和应用将继续探索其优化和改进,以提高其准确性和实用性。

1.3 研究目的

   随着人们对道路安全性的重视和城市交通量的不断增加,交通标志牌作为道路交通安全的重要组成部分之一,扮演着十分重要的角色。然而,交通标志牌的数量庞大、种类繁多,人工巡视的方式存在效率低、漏检率高等问题,对道路交通的安全性带来了一定的隐患。因此,研究一种基于Yolov5的交通标志牌目标检测方法,能够快速准确地检测出道路上的交通标志牌,提高道路交通的安全性,降低交通事故的发生率。随着目前智能化交通和自动驾驶的领域兴起,交通标志的目标检测对未来的智能化领域有着重要的升级和拓展。

1.提高道路交通的安全性

通过研究基于Yolov5的交通标志牌目标检测方法,可以快速准确地检测出道路上的交通标志牌,有效地提高道路交通的安全性。当司机未能及时发现路上的交通标志牌,就可能会发生交通事故,这对司机和其他行人都是一种潜在的威胁。通过使用基于Yolov5的交通标志牌目标检测方法,可以提高交通标志牌的识别率,从而减少交通事故的发生率。

2.提高交通标志牌的检测效率

目前,人工巡视的方式存在效率低、漏检率高等问题,不能够及时地发现所有的交通标志牌。使用基于Yolov5的交通标志牌目标检测方法,可以提高交通标志牌的检测效率。与人工检测相比,该方法可以更快速地检测出交通标志牌,同时还能够减少漏检的情况。

3.促进计算机视觉技术的发展

目标检测是计算机视觉领域中的重要研究方向,而交通标志牌的检测和识别是其中的一个重要应用场景。基于yolov5的交通标志牌目标检测研究不仅可以提高交通安全性,也可以促进计算机视觉技术的发展,使其更好地服务于人类社会的发展。

4.推动自动驾驶技术的发展

自动驾驶技术是未来交通领域的重要发展方向之一,而交通标志牌的自动化检测和识别是自动驾驶技术中的一个重要环节。基于yolov5的交通标志牌目标检测研究可以为自动驾驶技术的发展提供重要的技术支持,推动自动驾驶技术的应用和发展。

5.提升城市管理水平

交通标志牌的检测和识别不仅可以提高道路交通安全性,也可以提升城市管理水平。交通标志牌的缺失或错误往往是城市管理中的一个重要问题,通过自动化的交通标志牌检测和识别技术,可以有效地提高城市管理的效率和水平。

1.4 研究意义

交通标志牌在现代交通管理中起着至关重要的作用。随着城市化的进程,道路交通愈加复杂,各种交通标志牌的数量也日益增多。在这样的背景下,如何快速准确地识别交通标志牌就成为了交通安全和智慧交通领域亟待解决的问题。传统的人工标注方式耗时耗力,效率低下,因此需要引入计算机视觉技术来解决这个问题。

近年来,深度学习技术在计算机视觉领域取得了巨大的进展。其中,基于目标检测的深度学习方法已经成为了识别交通标志牌的重要手段。Yolov5是目前应用广泛的目标检测算法之一。相比于其前身Yolov4,Yolov5在速度和精度上都有了大幅度的提升,能够更好地适应实际场景中的目标检测任务。

本研究将基于Yolov5算法,研究交通标志牌的目标检测问题。具体地,我们将利用公开数据集中的交通标志牌图片,使用Yolov5算法进行训练和测试,从而实现对交通标志牌的准确识别。研究意义主要体现在以下几个方面:

首先,本研究可以为交通管理提供更为高效准确的交通标志牌识别技术。利用计算机视觉技术可以快速准确地对交通标志牌进行识别,提高交通管理的智能化程度。这对于城市道路交通管理和交通事故的预防具有重要的意义。

其次,本研究可以为目标检测技术的发展提供有益的探索。本研究基于Yolov5算法,探索其在交通标志牌识别方面的应用,对于Yolov5算法在实际场景中的应用和性能优化具有一定的参考价值。同时,本研究还可以为其他基于目标检测的深度学习算法在交通标志牌识别方面的应用提供参考。

最后,本研究可以为公共安全提供保障。交通标志牌的识别在某些情况下可能直接关系到公共安全,例如交通事故的预防。本研究的实现可以为公共安全提供保障,减少交通安全事故的发生率,降低交通管理成本,提高城市交通管理的效率和质量。

综上所述,本研究基于Yolov5算法进行交通标志牌的目标检测,具有重要的研究意义。通过本研究,可以提高交通标志牌的识别准确率和智能化程度,为交通管理和公共安全提供有益的保障。同时,本研究还可以为目标检测技术的发展提供有益的探索和参考,推动计算机视觉技术在交通管理等领域的应用和发展。

2 研究过程

2.1 研究总体路线

2.1.1 研究方案

本研究旨在利用公开数据集TT100K图标进行筛选和整理,最终得到TT100K数据中的45类交通标志牌数据。然后进行数据清洗和标注工作,将数据集分割为训练集、验证集和测试集,并编写代码将VOC(xml格式)的标签文件转换为yolo(txt格式)。最后利用yolov5-6.0的框架进行深度学习训练,生成最佳的权重文件,并利用测试集进行推理测试。具体步骤如下:

数据预处理:对TT100K数据集进行筛选和整理,选择45类交通标志牌数据作为研究对象,并将数据集分割为训练集、验证集和测试集。

数据标注:利用labelimg标注工具对数据集进行手动标注,并将标签文件转换为yolo(txt格式)。

模型训练:使用yolov5-6.0的框架进行深度学习训练,选择适当的预训练权重,设置相应的参数,生成最佳的权重文件。

模型测试:利用测试集进行推理测试,可以通过打开摄像头,或者视频以及图片的方式进行测试和验证模型。

2.1.2 研究路线

本研究的总体研究路线包括四个主要步骤:数据预处理、数据标注、模型训练和模型测试。

首先,在数据预处理阶段,本研究选择了TT100K数据集中的45类交通标志牌数据作为研究对象,对数据集进行了筛选和整理,并将数据集分割为训练集、验证集和测试集。这一步骤的目的是从数据层面上为后续的模型训练和测试提供基础。

接着,在数据标注阶段,本研究使用了labelimg标注工具对数据集进行了手动标注,并将标签文件转换为yolo(txt格式)。通过这一步骤,本研究得到了带有标注信息的数据集,为后续的模型训练和测试提供了必要的标签数据。

在模型训练阶段,本研究使用了yolov5-6.0的框架进行深度学习训练。在选择适当的预训练权重的基础上,本研究设置了相应的参数,生成了最佳的权重文件。这一步骤的目的是训练出一个能够准确识别交通标志牌的目标检测模型,为后续的模型测试提供基础。

最后,在模型测试阶段,本研究利用测试集对训练好的模型进行了推理测试。通过打开摄像头,或者视频以及图片的方式进行测试和验证模型。这一步骤的目的是验证模型的识别准确率和推理速度,并评估模型在实际场景中的应用效果。

综上所述,本研究的总体研究路线是从数据预处理、数据标注、模型训练到模型测试的完整流程。通过这一流程,本研究旨在实现对交通标志牌的准确识别,并为交通管理和公共安全提供有益的保障。

2.1.3 预期目标

1.成功将TT100K数据集中的45类交通标志牌数据进行清洗和标注,并将其转换为yolo(txt格式)的标签文件;

2.将数据集成功划分为训练集、验证集和测试集;

3.成功利用yolov5-6.0框架进行深度学习训练,并生成最佳(best)权重文件;

4.成功利用测试集进行模型的推理测试,测试模型在摄像头、视频和图片等不同数据源下的表现;

5.模型的测试结果能够达到预期的性能指标,并能够满足实际应用需求。

图 1 总体研究路线图

2.2 前期知识准备

2.2.1 深度学习知识

深度学习是一种基于神经网络的机器学习方法,它模拟了人类大脑神经元之间的连接方式,通过多层非线性变换进行特征提取和抽象表示,最终实现对复杂数据模式的识别和预测。深度学习已经在计算机视觉、自然语言处理、语音识别、推荐系统等领域取得了许多突破性进展,成为人工智能领域的核心技术之一。

深度学习的核心是神经网络,它由多层神经元组成,每一层神经元将上一层的输出作为输入,经过一定的权重和偏置计算后,再传递到下一层进行处理。其中,最常用的神经网络结构包括全连接神经网络、卷积神经网络和循环神经网络。

全连接神经网络适用于输入数据维度较低的问题,比如手写数字识别。卷积神经网络则适用于图像和视频等数据,它可以利用卷积核对图像进行特征提取,从而实现图像分类、目标检测等任务。循环神经网络则适用于序列数据,比如自然语言处理和语音识别等领域。

深度学习模型的训练过程通常采用反向传播算法,即通过计算损失函数对模型参数进行调整,使得模型的预测结果与真实标签尽可能接近。常见的优化算法包括随机梯度下降、Adam等。

除了传统的监督学习外,深度学习还可以应用于强化学习和无监督学习。强化学习主要应用于决策问题,通过与环境的交互来学习最优策略;无监督学习则是在没有标注数据的情况下进行模型训练,比如自编码器和生成对抗网络等。

总的来说,深度学习是一种具有强大表达能力和泛化能力的机器学习方法,它已经在多个领域取得了重大突破,并且在未来的发展中仍然具有广阔的应用前景。

2.2.2 yolov5框架介绍

YOLOv5是一种基于深度学习的目标检测算法,它是YOLO(You Only Look Once)系列的第五个版本,由ultralytics公司开发。相比于前几个版本,YOLOv5在性能、速度、精度等方面都有了很大的提升,同时还加入了一些新的特性,比如模型的可视化、模型优化等。

在YOLOv5中,目标检测是基于卷积神经网络(Convolutional Neural Network)实现的。整个网络分为两个部分:特征提取和检测。特征提取部分采用了CSPNet(Cross Stage Partial Network)结构,它可以更有效地利用计算资源,提高特征提取的效率。检测部分采用了YOLOv5的创新点SPP(Spatial Pyramid Pooling)结构,可以在不同尺度的特征图上检测目标,从而提高检测的准确性。

YOLOv5在实现上还有一些其他的特点,比如采用了多尺度训练、使用了更多的数据增强方法等。同时,YOLOv5还提供了一个完整的开源框架,包括了训练、测试、推理等各个环节,并支持多种硬件平台,如CPU、GPU、TPU等。

除了以上的特点外,YOLOv5还有一些其他的应用,比如行人检测、车辆检测、物体识别等。由于YOLOv5在目标检测方面的优越性能,它在实际应用中已经得到了广泛的应用,比如智能交通、安防监控、自动驾驶等领域。

总的来说,YOLOv5是一种性能优秀、速度快、精度高的目标检测算法,已经成为了目标检测领域的一个重要的研究方向。

(1)Anchor-Free

相比于YOLOv3和YOLOv4等基于anchor的目标检测算法,YOLOv5采用了anchor-free的设计,即不需要预定义先验框(anchor),而是通过学习目标的位置和大小来进行检测,从而提高了算法的鲁棒性和适应性。

(2)Self-Attention

为了进一步提高YOLOv5的检测能力,它还引入了self-attention机制,即在特征提取的过程中,通过计算不同位置之间的关联性,自适应地调整不同特征的权重,从而提高了算法的感知能力和表达能力。

(3)Ensembling

为了进一步提高检测精度,YOLOv5还支持模型融合技术,即将多个检测模型的结果进行加权平均或投票等操作,从而得到更加准确的检测结果。

(4)自适应数据增强

YOLOv5的训练过程中采用了自适应数据增强技术,即根据当前训练的状态自适应地调整数据增强的方式和强度,从而在保证训练稳定性的同时,提高算法的泛化能力。

(5)模型压缩

为了在资源有限的设备上运行YOLOv5,它还支持模型压缩技术,即通过量化、剪枝等方法,减少模型的计算量和存储空间,从而实现在较低资源设备上高效地运行。

综上所述,YOLOv5作为一种基于深度学习的目标检测算法,通过多种技术手段和创新设计,在性能、速度、精度等方面都有了很大的提升,成为了目标检测领域的一种重要研究方向和实际应用技术。

2.2.3 labelimg介绍

LabelImg是一款用于图像标注的免费开源软件,其主要用途是方便用户标记图像中的对象,以便用于机器学习和计算机视觉的训练和测试。该软件支持多种常见的标注格式,如Pascal VOC、YOLO和TensorFlow等,并支持多种操作系统,包括Windows、macOS和Linux等。

LabelImg的主要功能包括创建和编辑矩形、多边形和圆形等形状,并为它们添加标签、注释和其他元数据。该软件还支持快捷键、图像缩放和平移、对象旋转和删除等操作,使用户可以高效地完成标注工作。此外,LabelImg还提供了一些有用的功能,例如在标注期间自动保存标注进度、批量重命名图像文件等,使得用户可以更加方便地管理和处理大量图像数据。

在机器学习和计算机视觉领域,标注数据对于训练和测试模型非常重要,因为模型只能从标注数据中学习如何正确地分类和识别图像中的对象。LabelImg作为一款简单易用的图像标注工具,可以帮助研究人员和工程师快速标注大量图像数据,从而更好地训练和测试模型,提高模型的准确性和鲁棒性。

总之,LabelImg是一款功能强大、易于使用的图像标注工具,它为研究人员和工程师提供了一个快速、高效、精确地标注大量图像数据的方式,从而帮助他们更好地训练和测试机器学习和计算机视觉模型。

2.2.4 目标检测介绍

目标检测是计算机视觉领域中的一项重要任务,它的主要目的是在给定的图像或视频中,检测并定位出图像中存在的物体,并为每个物体分配一个标签。在许多实际应用中,如自动驾驶、视频监控、智能家居等,目标检测是非常重要的一项任务,它可以帮助计算机理解周围环境,并在需要时做出正确的决策。

在目标检测任务中,通常需要解决两个问题:物体的定位和分类。物体定位的目标是确定图像中每个物体的位置,通常使用矩形框来表示,而物体分类的目标是识别每个物体所属的类别。因此,目标检测任务通常被称为“物体检测和分类”。

目前,目标检测技术主要分为两类:基于传统机器学习方法和基于深度学习方法。基于传统机器学习方法的目标检测技术,主要是采用传统的图像处理技术和机器学习算法,如Haar、HOG、SIFT等特征提取算法,以及SVM、AdaBoost等分类算法。这些算法能够有效地对目标进行检测,但是它们的性能受到了特征提取算法的限制,并且在复杂场景下的表现也比较差。

基于深度学习方法的目标检测技术,主要是采用深度卷积神经网络(CNN)进行物体检测和分类。与传统机器学习方法相比,基于深度学习的目标检测技术能够更准确地检测目标,并且在处理复杂场景时表现更好。目前,基于深度学习的目标检测技术已经非常成熟,比较有代表性的算法包括RCNN、Fast-RCNN、Faster-RCNN、YOLO、SSD等。

在使用目标检测技术时,需要选择适合特定任务的算法,并对其进行训练和调参。为了获得更好的检测效果,还需要采用一些优化技术,如数据增强、迁移学习等。此外,目标检测技术在实际应用中还需要考虑实时性、鲁棒性、可扩展性等因素,这些因素也需要在算法选择和优化中进行考虑。

总之,目标检测技术是计算机视觉领域中的一个重要任务,它可以帮助计

算机实现自主理解周围环境,并在需要时做出正确的决策。在未来,随着计算机视觉技术的不断发展,目标检测技术也将得到进一步的提升和应用,有望在更多领域中发挥重要的作用。

2.2.5 Tensorboar介绍

TensorBoard是一个开源的可视化工具,用于查看和分析深度学习模型的训练过程和结果。TensorBoard提供了丰富的可视化功能,包括图像、曲线图、直方图等,使用户可以更直观地了解模型的表现和性能。

TensorBoard是由谷歌公司推出的,是TensorFlow的一个重要组件。它可以在训练模型时实时地显示模型的性能指标,如损失函数、准确率等。同时,它也可以展示模型的结构、参数分布、激活值等信息,帮助用户更深入地理解模型的工作原理。

在使用TensorBoard时,用户只需要将TensorBoard模块导入到自己的代码中,并在模型训练过程中添加TensorBoard的回调函数即可。回调函数会在训练过程中自动保存模型的状态信息,并将其传递给TensorBoard,以便于生成可视化结果。

TensorBoard的主要功能包括以下几个方面:

1.可视化模型结构 通过TensorBoard,用户可以查看和分析模型的结构,包括各层的名称、类型、输入输出形状等。此外,还可以通过TensorBoard绘制模型的计算图,以便于用户更加直观地理解模型的计算过程。

2.可视化损失和指标 TensorBoard可以帮助用户实时监测模型的训练进度,包括损失函数、准确率等指标的变化。用户可以通过TensorBoard的曲线图和直方图查看这些指标的变化趋势,以便于优化模型的训练策略。

3.可视化参数分布 通过TensorBoard,用户可以查看模型中各个参数的分布情况。这些参数的分布情况可以帮助用户判断模型是否存在欠拟合或过拟合的情况,并调整模型的超参数以获得更好的性能。

4.可视化激活值 TensorBoard可以可视化模型中各个层的激活值,帮助用户更加深入地理解模型的工作原理。通过观察激活值的分布情况,用户可以判断模型的表现是否良好,并调整模型结构或参数以获得更好的性能。

总之,TensorBoard是一个非常实用的深度学习可视化工具,可以帮助用户更加直观地了解模型的表现和性能。在写论文时,使用TensorBoard可以帮助用户更加清晰地描述自己的实验结果,并提供有力的支持证据,有助于提升论文的可信度和学术性。

2.3 研究方法实现

2.3.1 数据源的获取

通过利用提供的公开数据集TT100K图标进行筛选和整理,最终得到TT100K数据中的45类交通标志牌数据。TT100K它是由清华与腾讯的联合实验室整理并公布的,提供的10万张图像包含了30000个交通标志,图像来源于由6个像素很高的广角单反相机在中国的多个城市拍摄的全景图,拍摄地点的光照条件、天气条件有所不同。原始的街景全景图分辨率为 8192x2048,再将全景图裁剪分为四份,最终数据集的尺寸为 2048x2048。TT-100K 数据集所含交通标志的类别较为全面。

2.3.2 数据的清洗与筛选

得到的数据,有一些目标比较少,可以说是没有,所有我们需要将数据集进行清洗,得到一些干净的数据集,在实际的数据中总会有一些图片比较的模糊或者缺失,所以数据的清洗和预处理是非常有必要的,只是本次我们通过获取开源的数据集,有很多的数据都已经是清洗干净的,但是还是需要对其进行一部分的清洗和观察。一般来说数据清洗,包括去除到噪声很大的数据,比如完全就没有的标识牌的图片,或者模糊不清的图片,或者不存在的图片数据。最终选取了8583条带有标签的数据,986条测试所用的数据。

2.3.3 数据的标注

将所清洗好的数据,需要利用anaconda所提供的标注工具labelimg对图片中的标志牌进行手动的标注,然后将所有的标注保存为对应的格式,一般的我们保存的格式都是VOC(XML)格式的文件,但是由于YOLO训练的时候所需的是TXT格式的标注文件格式。所以需要利用代码对标注的数据进行转换为相应的TXT格式。

基于yolov5的深度学习模型,构建的是一个监督学习,我们需要有标签,这里的标签和传统的机器学习的标签不一样,他们是一个特定的类别,这里他是通过一些标注工具,通过标注好的图片,最后生成一些固定的格式,其中yolov5模型需要的格式就是txt格式。

这里我们使用的是anaconda自带的一个标注工具,通过提前安装好,我们就可以使用了。

首先这里需要准备我们需要打标注的数据集。这里我新建一个名为VOC2007的文件夹,里面创建一个名为JPEGImages的文件夹存放我们需要打标签的图片文件;再创建一个名为Annotations存放标注的标签文件;最后创建一个名为 predefined_classes.txt 的txt文件来存放所要标注的类别名称。

VOC2007的目录结构为:

├── VOC2007

│├── JPEGImages 存放需要打标签的图片文件

│├── Annotations 存放标注的标签文件

│├── predefined_classes.txt 定义自己要标注的所有类别

打开cmd命令终端(快捷键:win+R)。进入到刚刚创建的这个VOC2007路径(这个很重要,涉及到能不能利用predefined_classes.txt 这个txt文件中定义的类别)。

执行如图中的命令进入到VOC2007路径下(每个人的路径都不一样,按个人的路径去写)如下图所示:可以看到进入到相应的目录了。

2 labelimg标注工具的使用

然后在标注的时候,对于该工具,可以使用了快捷键,帮助在后续的标注工作中,提升效率。

A:切换到上一张图片

D:切换到下一张图片

W:调出标注十字架

del :删除标注框框

Ctrl+u:选择标注的图片文件夹

Ctrl+r:选择标注好的label标签存在的文件夹

由于标注的时候,需要一个对应的ID,也就是说,当我们具体的标志牌有具体的意义的时候,我们在进行展示的时候,或者测试数据集的时候,很长的文字或编码会导致我们视觉上感觉不是很好,所以这里就一一对应了一些ID。

3 豆瓣电影网站JSON数据包探索

4 交通标志牌的数据标注

5 ID部分对应展示

2.3.4 数据分割

对于很多目标检测的数据集标签的格式都是VOC(xml格式)的,而yolov5训练所需要的文件格式是yolo(txt格式)的,这里就需要对xml格式的标签文件转换为txt文件。同时训练自己的yolov5检测模型的时候,数据集需要划分为训练集和验证集。这里提供了一份代码将xml格式的标注文件转换为txt格式的标注文件,并按比例划分为训练集和验证集。

特别要注意的是,classes里面必须正确填写xml里面已经标注好的类,要不然生成的txt的文件是不对的。TRAIN_RATIO是训练集和验证集的比例,当等于77的时候,说明划分77%给训练集,23%给验证集。

6 数据分割代码展示

7 TXT标注数据展示

2.3.5 YOLO模型构建

准好数据集之后,就需要开始进行模型的构建,这里的深度学习yolov5,我们可以通过直接去官网下拉取一个仓库就可以了,将代码克隆到本地,深度学习是一个框架,它和机器学习的差别就是,它拥有一套比较全面的架构,我们可以不用自己写代码就可以进行构建深度学习的工程项目。

预期使用的是yolov5-6.0版本的仓库代码,通过下载好权重之后,这里选择的yolov5s.pt权重,它具有快速的特点,但是可能准确率和其他的权重相比不是很高,为了保证我们的训练符合本地电脑配置,所以我选取的这个比较“短小精悍”,通过增大其迭代次数也可以保证我们的准确率。

8 不同权重文件的特点

9 YOLO工程展示

首先修改的就是,这个权重文件,在模型进行训练的时候,我们根据官方所提供的几个版本进行选择,其中不同的权重文件的大小代表着其效果,但是也不是绝对的,唯一的,我们还是要根据自己的数据集来选择自己的权重。

将GitHub下载好的权重文件放到我们的代码仓库中之后,其次我们就需要修改我们model下的yaml文件,这里的东西我去查询了一下,其代表的是我们模型的超参数集,也就是时候我们在选择对应的权重文件下,就会有一个对应的模型参数集,这里对应好之后,还要特别注意,修改里面的类别数目,我这里选择是,45类,所以需要修改为对应的

10 参数修改

11 训练集参数修改

其他的参数都是不需要修改的,这里对应的一些含义我们都可以通过手册进行查询到

之后就要去修改一下data下的yaml文件,这个里面的参数也比较的重要,对应的就是我们的数据集的路径,分别为训练集和测试集,以及验证集,其中包括的45类的交通标识,所对应的ID,因为这里的ID所对应的目标含义有的比较长,且不好展示出来,所以我就按照其ID给他进行一个对应,其对应表在上面的数据标注的部分。

12 参数设置展示

2.3.6 模型的训练

修改之后,我们将其迭代次数修改为200次,然后就让模型自己去慢慢的训练,由于我使用的显卡是3060,所以设置batch-size为40次,预计在此数据集下训练需要几天的时长。

大致的参数修改和配置都是这样,这样我们可以快速的搭建好一个深度学习的环境,并且可以跑通一个模型,特别注意的是,在我们选择权重的时候,以及修改对应的参数,YOLO提供了很多的版本,有些版本和参数是需要一一对应的。

13 参数详解

2.3.7 Tensorboar可视化

首先在终端切换到我们的本次的工程项目中

这样就打开了一个网页,我们可以在这里实时看到模型训练的过程以及模型的效果,这里我们通过了两次的训练,第一次训练的时候,因为内存占用过大,导致模型卡住了,所以就不得不终止了。然后又开始了第二次的训练,在进行第二次的训练时候,保证了数据集的可靠性和模型的稳定性。

通过这里的可视化展示,很明显的发现,我们的第二次的效果要比第一次效果好,这里所展示的效果是模型以及迭代了70多次的时候,准确率已经上升到70多的效果,我这里设置的是200次,剩下的时间,就让模型自己慢慢训练。

训练完成之后,会生成一个best.pt权重文件,这个文件是在迭代次数中,展示的最好的一个权重被保存下来的,还有一个last.pt权重文件是最后一个迭代的时候,所留下的权重文件。后面我们可以通过使用训练好的权重进行测试和识别。

2.3.8 模型的评估推理

为了比较的直观的展现出模型训练过程中的效果,我们可以使用其可视化的功能。在YOLO工程中提供了一个Tensorboard方法,可以对训练的过程中展示其实时的一个效果。最后,运行其detect.py文件可以对测试数据进行测试。

14 测试代码展示

效果还是不错的,总体而言,标志牌都识别出来了,并且也有较高的准确率,可以达到90%左右。下面我们看看训练所产生的一些评估图片。

最后,我将准备好的测试文件下图片进行测试

效果如下:

下面我将训练最后所产生的一些图片进行展示,这些都是模型训练好之后自动生成的图片,用于评估我们的模型的效果的一些可视化:

本次通过学习yolo深度学习目标检测,通过走完一遍深度学习的框架,让我知道了如何调参,如何修改文件配置,如何标注数据集,如何转换数据集,以及如何测试和debug,在这个过程中也遇到了很多的问题,但是通过上网搜集资料和讨论,最终解决了如下的问题:

(1)在进行模型的训练的时候,最开始的时候发现模型的效果一直比较的差,甚至是最后迭代了几十次都是0,最后通过逐一的排查问题发现是,我的模型的权重参数和一些对应参数并没有保持一致,最后通过全部统一解决了这个问题,当时也通过和助教学长进行交流,慢慢的排查出这些问题,在这个过程中我一直的去搜集这些参数所代表的意义是什么,最后不断的学习和调试,也让我学习到了深度学习里面的一些参数,让我有了更高的一些认识。

(2)运行代码的时候,报错,需要修改参数:

(3)最后进行可视化的时候,一直出不来图(网页端),排查之后,是因为我没有激活我的虚拟环境,在终端上,因为最开始我自己在pycharm上配置好了不同文件夹的编译环境,最后完成的时候,可能没有在意这些,所以可能导致了没有图片。

3 总结与分析

3.1 本研究的创新之处

本研究的创新之处在于采用了深度学习技术进行交通标志牌的检测与识别,并针对TT100K数据集进行了数据清洗和数据标注工作。通过手动标注,将数据集中的45类交通标志牌进行了准确的标注和分类,并将数据集分为训练集、验证集和测试集进行深度学习模型的训练和评估。相较于传统的基于规则或特征工程的方法,深度学习方法具有更高的鲁棒性和泛化能力,能够适应更加复杂的场景和变化的环境。因此,本研究的深度学习方法在交通标志牌的检测与识别方面具有重要的应用价值。

在深度学习模型的训练过程中,本研究采用了yolov5-6.0框架,并针对TT100K数据集进行了参数优化和预训练权重的选择。通过200次的epoch迭代,生成了最优的权重文件,同时利用tensorboard可视化库对模型的训练过程进行了可视化,得到了模型的评估指标,例如准确率、召回率、F1值和ROC曲线等。通过测试集的推理测试,本研究的模型在某些标志牌的检测准确率可以达到95%左右,具有较高的准确性和可靠性。

此外,本研究还对数据集进行了严格的筛选和整理,针对TT100K数据集中的45类交通标志牌进行了准确的标注和分类,充分利用了公开数据集的资源,避免了数据标注的重复劳动和成本,提高了数据集的可靠性和有效性。同时,本研究还编写了代码将xml格式的标签文件转换为txt文件,提高了数据集的处理效率和自动化程度。

综上所述,本研究的创新之处在于采用了深度学习技术进行交通标志牌的检测与识别,并充分利用公开数据集资源进行了数据清洗和数据标注工作,通过优化参数和选择预训练权重生成了最优的深度学习模型,并利用可视化库对模型的训练过程进行了可视化,得到了模型的评估指标,具有较高的准确性和可靠性。本研究为交通标志牌的检测与识别提供了一种有效的解决方案,具有重要的应用价值和推广意义。首先,本研究的深度学习方法可以应用于交通管理、智能交通系统和自动驾驶等领域,为交通安全和交通效率的提升提供了有力的技术支持。其次,本研究的数据清洗和数据标注工作可以为交通标志牌数据集的构建提供借鉴和参考,促进了公开数据集资源的合理利用和共享。最后,本研究的方法和技术也可以为其他领域的目标检测和识别问题提供借鉴和启示,具有较高的推广意义和应用前景。

总之,本研究在交通标志牌的检测与识别方面,采用深度学习技术进行了创新性的探索和应用,针对公开数据集进行了数据清洗和数据标注工作,优化了深度学习模型的参数和预训练权重,并通过可视化库对模型的训练过程进行了可视化和评估。本研究的方法和技术具有较高的准确性、鲁棒性和泛化能力,为交通安全和智能交通系统的发展提供了重要的技术支持和应用价值。

3.2 本研究的不足之处

(1)数据集的局限性:本研究只采用了TT100K数据集中的45类交通标志牌数据,这些标志牌只代表了部分道路交通情况,无法涵盖所有可能的交通情况。因此,模型在实际道路交通情况下的应用可能存在一定的局限性。

(2)标注数据的不足:本研究采用手动标注的方式进行数据标注,但是在标注过程中可能存在人为因素,标注数据的准确性可能不尽如人意。同时,在标注时也只考虑了标志牌的位置信息,而没有考虑其他信息如朝向等,这也可能会对模型的训练和应用造成一定的影响。

(3)模型的鲁棒性有待提高:本研究的模型在测试集中对某些标志牌的检测准确率可以达到95%左右,但在其他标志牌的检测准确率可能较低。此外,在实际应用场景中,可能会遇到光照、天气等因素的影响,这也会对模型的鲁棒性造成影响。因此,未来需要进一步提高模型的鲁棒性,以应对各种复杂的实际情况。

(4)训练数据的不平衡性:在本研究中,训练数据、验证数据和测试数据的数量分别为6664条、1919条和986条,这些数据量存在一定的不平衡性。在模型训练中,不平衡的数据量可能会对模型的表现造成影响,因此需要进一步平衡数据集,以提高模型的性能。

(5)模型的解释性不足:在本研究中,虽然通过Tensorboard等可视化库对模型进行了可视化和评估,但对于模型的解释性还不足。在实际应用场景中,需要对模型进行解释,以便用户理解模型的预测结果和信任模型的输出。因此,需要进一步加强模型的解释性,提高模型的可信度和可接受性。

3.3 总结

本研究旨在利用公开数据集TT100K图标对交通标志牌进行筛选和整理,并对数据进行清洗和手动标注。通过编写代码,将标签文件格式从VOC(xml格式)转换为yolo(txt格式),并将数据集划分为训练集、验证集和测试集。利用yolov5-6.0框架进行深度学习训练,并通过tensorboard深度学习可视化库进行训练过程的可视化。通过200次的epoch迭代后,生成了最佳的best权重文件。在测试集中,部分标志牌的检测准确率可以达到95%左右,具有较高的准确性。

本研究的主要贡献在于利用公开数据集进行交通标志牌的检测任务,并对数据进行了清洗和手动标注,确保了数据集的准确性和可靠性。通过采用yolov5-6.0框架进行深度学习训练,生成了具有较高准确性的模型,可以为实际应用提供可靠的支持。此外,通过tensorboard深度学习可视化库对训练过程进行可视化,可以对模型的性能进行评估和改进优化,进一步提高了模型的可靠性和准确性。

尽管本研究在数据集的选取和深度学习模型的训练方面取得了一定的成果,但也存在一些不足之处。首先,本研究只选取了TT100K数据集中的45类交通标志牌进行研究,而实际应用中可能还存在其他类型的标志牌,需要进一步扩充数据集。其次,本研究采用了手动标注的方式,虽然保证了数据集的准确性和可靠性,但也需要耗费大量的人力和时间,需要进一步探索自动标注的方式。最后,本研究选取的yolov5-6.0框架具有较高的准确性,但也需要考虑在速度和性能方面的平衡,以适应实际应用的需要。

综上所述,本研究对交通标志牌的检测任务进行了深入的研究,并取得了一定的成果。未来可以进一步扩充数据集、探索自动标注的方式,以及平衡速度和性能的要求,提高模型的可靠性和准确性。这些工作可以为实际应用提供有力的支持和指导。

每文一语

 

追求自己快乐的就是不断去尝试

猜你喜欢

转载自blog.csdn.net/weixin_47723732/article/details/131424707