首页 > 其他分享 >基于YOLOv3的交通标志检测的实现和测试​

基于YOLOv3的交通标志检测的实现和测试​

时间:2023-08-13 12:33:00浏览次数:38  
标签:文件 YOLOv3 训练 标签 py 测试 path txt 交通标志

1 搭建环境

1.1 YOLO实践应用之搭建开发环境 Anaconda3

Anaconda是一个开源的Python语言发行版及其包管理器,在数据科学、机器学习和科学计算领域广受欢迎。Anaconda使用Conda进行包管理。Conda可以创建虚拟环境来隔离不同项目所需的包和依赖,并可以方便地提交代码和环境设置,它包含了众多的Python常用库和工具,可以大大简化开发和管理环境中的Python库和依赖事务。Anaconda的下载:可以通过官网直接下载Anaconda3,运行安装程序,选择Installation Type为"Add Anaconda to my PATH environment variable",安装路径自定义。其次配置Anaconda镜像源,提升软件包下载安装速度并选择将Anaconda添加到系统环境变量中并选择将Anaconda作为默认Python环境,也可以在后续安装过程中选择创建多个环境。选择启动Anaconda3,看到Windows资源管理器的界面。从中可以方便地打开和管理Anaconda集成的各种工具。

基于YOLOv3的交通标志检测的实现和测试​_Python


1.2 YOLO实践应用之配置安装pycharm

PyCharm是一种非常流行的Python集成开发环境(IDE),具有代码自动完成、语法高亮显示、调试功能等

1.首先,下载PyCharm:从官网进行下载并选择适合你操作系统的版本。

2.安装PyCharm:运行下载的安装包,按照提示进行安装。安装完成后,打开PyCharm。

3.配置虚拟环境:虚拟环境是一种隔离Python环境的方式,可以为每个项目提供独立的Python环境。在PyCharm中,你可以创建虚拟环境来管理你的Python依赖项。

4.在PyCharm的主界面中,选择File -> New Project…。在左侧面板中选择“Project Interpreter”,然后点击右侧的下拉菜单,在弹出的菜单中选择“New Environment”。

5.在弹出的对话框中选择Python解释器的位置和版本。

6.配置项目:创建一个新项目或者导入一个已有的项目。在PyCharm中,可以使用“Project”菜单中的“New Project”或“Import Project”选项。

7.运行代码:在PyCharm中,可以使用“Run”菜单中的“Run”选项运行代码。如果需要调试代码,可以使用“Run”菜单中的“Debug”选项。

基于YOLOv3的交通标志检测的实现和测试​_数据集_02



2数据集的准备

  1. 收集图像数据集:使用中国交通标志检测数据集(CCTSDB),把CCTSDB中需要的图像数据按照定义好的种类和标准进行收集,收集过程需要保证采集质量的可靠性和准确性。

2. 标注图像:对于每张图像,需要用框标注出感兴趣的对象的位置和大小。可以使用许多标注工具,例如LabelImg、RectLabel等。

3. 分割数据集:首先定义分割比例,通常将整个数据集分成两个部分,即训练集和测试集。确定每个部分所占的比例,根据具体的任务和算法进行选择。其次分层采样,根据数据集中类别或其他特征,分层采样来确保每个子集中的样本数量相当,并且样本代表性均匀分布在每个子集中。进一步提高算法的泛化能力和鲁棒性。

4. 生成YOLOv3所需的标签:对于每张标注好的图像,需要生成YOLOv3所需的标签文件。一个标签文件应该对应一个图像文件,标签文件中包含物体的类别、坐标和尺寸信息。

(1)生成

使用了一个现成的python脚本,用于生成txt文件,脚本自动会获取图片名称,按比例生成不同的集图片名,使用的时候注意修改路径。

生成完毕后,可以看到Main文件夹下会有四个txt文件,如果生成失败可以检查一下当前目录权限及脚本内的路径,注意图片命名不能有中文字符。

(2)voc标签文件.xml转yolo标签文件.txt

下载voc_label.py文件,将文件下载到VOCdevkit同级的路径下,生成训练和验证的文件列表。

这个文件在darknet-master里面也有可以拿过来用,需要改下样本集的名称,及类的标签。

(3)yolo的文件结构

yolov3 这处可自定义,backup存储训练好的模型,cfg用于存放配置文件.cfg和.data文件,data存放图片、标签文件、名字文件(.names),images存放图片和yolo的txt文本,图片名和txt文本名对应,labels存放用于opencv绘制图片框的图片文件。

5. 配置YOLOv3所需的训练参数:使用Anaconda框架来训练YOLOv3,并设置训练参数,例如批次大小、学习率、迭代次数等等。

.data文件的配置

cfg文件夹下新建:myv3_det.data文件

.data存放的各个文件的路径,修改成自己的路径

.names文件的配置

data文件夹下新建myv3.names文件

.name文件存放标签的名字,内部是通过ID转换的名字

3数据集处理

1. 读取图像及其对应的标签文件。

(1)首先,定义一个函数用于读取图像文件。在Python中,使用OpenCV、Pillow或者matplotlib等第三方库来实现图片读取。读取图像时需要指定图片的路径和格式,读取后的图像会被转换为一个numpy数组。

(2)接着,定义一个函数用于读取标签文件。标签文件是一个txt文件,用于存储每个图像对应的类别信息或者位置信息等。在读取标签文件时,可以使用Python内置的文件操作函数打开并读取文件内容。读取后的标签信息会被保存为一个字典或者列表等数据结构,方便后续使用。

(3)最后,可以将图像和标签信息整合到一个数据集中。

2. 进行数据增强操作,通过数据增强,可以扩展你的训练数据集,提高模型的泛化能力。常用的数据增强技术包括旋转、缩放、平移、翻转、裁剪、随机填充等等,可以使用如OpenCV这样的图像处理库实现数据增强。

3. 进行数据预处理, 读取原始图片,并将其转换为 RGB 模式;

将图片缩放到固定大小;对图片进行归一化,并去均值和方差。YOLOv3要求输入图像的尺寸必须为416x416,因此需要对输入图像进行预处理,使其满足模型的输入要求。预处理过程包括将图像进行缩放、裁剪或填充操作,再将其转换为模型所需的数据格式,例如Darknet支持的图像通道顺序为RGB、尺度为0~255等,图像缩放到416x416,转换颜色通道顺序等。

4. 对标签文件进行相应的坐标变换以适应图像增强。利用变换的公式,将原有的标签坐标转换成适用于增强后的图像的坐标。

5. 最后将图像和标签文件作为模型的输入进行训练。需要注意的是,数据预处理和数据增强需要同时应用于图像和标签文件,以确保图像和标签文件的一致性。



4 网络训练

打开安装好的pycharm环境,使用VOC格式进行训练,训练前在根目录打开VOC07+12的数据集,将标签文件放在VOCdevkit文件夹下的文件夹下的Annotation中,并将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的中。

基于YOLOv3的交通标志检测的实现和测试​_Python_03


修改voc_annotation.py里面的annotation_mode=2,运行voc_annotation.py生成根目录下的2007_train.txt和2007_val.txt。train.py的默认参数用于训练VOC数据集,载入yolo3的环境,classes_path用于指向检测类别所对应的txt,这个txt和voc_annotation.py里面的txt一样进入VOC2007,进入到子目录train模块右键启动程序,从JPEGImages训练数据集中提取图片路径加载到yolo3的VOC2007 predict模块中,开始训练,训练分为两个阶段,分别是冻结阶段和解冻阶段。显存不足与数据集大小无关,提示显存不足请调小batch_size。受到BatchNorm层影响,batch_size最小为1。运行train.py就可以开始训练了,在训练多个epoch后,权值会生成在logs文件夹中。图片训练完成。

基于YOLOv3的交通标志检测的实现和测试​_数据_04



3.5训练结果预测

训练结果预测需要用到两个文件,分别是yolo.py和predict.py。我们首先需要去yolo.py里面修改两个参数model_path以及classes_path,model_path指向训练好的权值文件,在logs文件夹里,classes_path指向检测类别所对应的txt。完成修改后就可以运行子模块predict.py进行检测了。运行后输入图片路径即可检测如果出现shape不匹配,同时要注意训练时的model_path和classes_path参数的修改。

修改voc_annotation.py中的classes_path,使其对应cls_classes.txt,并运行voc_annotation.py。使用预训练权重,下载完库后解压,在下载yolo_weights.pth,放入model_data,运行predict.py,输入 img/street.jpg,之后在predict.py里面进行设置可以进行fps测试和video检测。

在yolo.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类。

基于YOLOv3的交通标志检测的实现和测试​_数据集_05






标签:文件,YOLOv3,训练,标签,py,测试,path,txt,交通标志
From: https://blog.51cto.com/u_15854462/7066299

相关文章

  • 接口压力测试
    接口压力测试参考博客:[接口压测实践-压力测试常见参数解释说明使用场景对指定接口进行性能测试时,一些常见参数解释说明。一键并发详情详见:Postman基础注意:请勿设置太大的并发量或者循环次数,这有可能导致直接将被压服务压崩溃或者将路由器压崩溃。参考参考下方【实践】......
  • 性能测试
    性能测试cProfilePython代码性能分析之cProfilePython编程时,除了要保证代码功能的正确性,还要考虑代码的执行效率。什么是cProfilecProfile(语言编写的测试模块)是一个标准库内建的性能分析工具,可以在标准输出中看到每一个函数被调用的次数和运行的时间,从而找到程序的性能瓶颈......
  • 了解用户需求与反应:Striff.ai 用户测试平台
    在产品开发的早期阶段就能够了解用户的需求和反应是每个项目团队梦寐以求的。然而,在编码之前很难准确地预测用户对产品的感受和期望。现在,有一个革命性的人工智能用户测试平台——Striff.ai可以帮助你实现这一目标。Striff.ai是什么?Striff.ai是一家创新的人工智能用户测试平台......
  • ASPICE流程编码和单元测试
    ASPICE流程编码和单元测试是指根据详细设计,编写符合ASPICE标准的代码,并对每个模块进行单元测试。这一过程包括以下步骤:编写代码:根据详细设计,编写符合ASPICE标准的代码,确保代码质量和可维护性。代码审查:对编写好的代码进行审查,发现并纠正潜在问题,确保代码质量和可靠性。单元测试计划......
  • 【我和openGauss的故事】openGauss索引推荐功能测试
    _openGauss2023-07-2818:22发表于四川收录于合集#第六届openGauss技术文章征集初审合格文章62个一、单索引推荐单索引推荐功能,目前支持select查询,看官方介绍类似oracle中的sql_tunning_adviser,不过只是推荐创建索引。根据sql优化原理,猜测应该时根据选择来推荐索引。1、查看sql......
  • 20230812巴蜀暑期集训测试总结
    T2考场先是想到(根本没想)了一个\(O(n^5)\)的思路,然后猜了一个比较好打的结论开打。结果小样例和答案差一点,大样例就差的多了。确认不是精度问题后就明显是猜的结论有问题了。这下是彻底没办法了,只有打了那个\(O(n^5)\)的暴力。出分我一看——怎么挂了\(20pts\)?而且按照暴力......
  • 2023.8.12测试
    \[\text{暑假NOIP模拟赛-6}\]终于没挂分了T1打工有\(n\)个工作,做一个工作要消耗一个时间单位,可以获得价值\(a_i\),截止日期\(b_i\),求\(T\)单位时间内最多获得多少价值\(1\leqn\leq10^6\),\(1\leqa_i,b_i\leqT\leq10^9\)先按照时间从小到大排序,然后倒序枚举,将两个时......
  • Typora 激活教程(2023最新图文教程,测试有效)
    下载Typora激活补丁下载地址 https://kdocs.cn/l/chV3CWzeXgdE下载成功后解压,目录如下:typora激活补丁目录,选择第二种方式Typora激活补丁包解压目录安装Typora作者在写这篇教程的时候,Typora最新版本号为1.3.8,通过如下链接下载Typora,下载成功后,直接双击安装即可:......
  • 20230810巴蜀暑期集训测试总结
    T1考场打的是一个伪正解(没正确性的那种),评测的时候发现有subtask人都给我吓傻了,还好还有\(50pts\)。就是不知道为什么zxc和我思路一样但是有\(85\)pts。这个正解确实有点难想,而且证明正确性也比较困难。关于题解的正确性:若\(a\)的逆元不是本身。那么如果\(a^{-1}\)......
  • Java+Excel+POI+testNG基于数据驱动做一个简单的接口测试【杭州多测师_王sir】
    一、创建一个apicases.xlsx放入到eclipse的resource里面,然后refresh刷新一下二、在pom.xml文件中加入poi和testng的mvnrepository、然后在eclipse的对应目录下放入features和plugins,重启eclipse就可以看到testNG了<!--poiexcel解析--><dependency>......