基于YOLOv5的道路标志识别项目(yolov5界面GUI)

在这里插入图片描述

基于YOLOv5的道路标志识别项目(yolov5界面GUI)

English | 简体中文

这是一个关于yolov5的道路标志识别项目,使用Pyqt5开发界面,Yolov5训练模型,数据库Mysql,包含五个模块:初始化参数、标志识别、数据库、数据分析和图像处理。

项目地址https://github.com/Ai-trainee/Traffic-Sign-Recognition-PyQt5-YOLOv5-GUI

软件截图

  • 标志识别模块

    在这里插入图片描述

左下角三个勾选框分别是结果保存、启动数据库录入、以及模型可视化分析

演示视频

基于YOLOV5的道路标志识别系统

安装依赖

pip install -r requirements.txt


快速开始

1. 设置数据库

为了运行应用程序,您需要设置您的 MySQL 数据库。按照以下步骤准备您的数据库:

  • 自动数据库创建(可选)
    • 如果您喜欢自动设置,我们提供了一个批处理脚本。运行 setup_database.bat 脚本来创建数据库。这需要在您的系统上安装并配置 MySQL。
  • 手动数据库创建
    • 或者,您可以在 MySQL 中手动创建数据库。在您的 MySQL 环境中导入并执行 data/regn_mysql.sql 文件,以设置必要的数据库和表。

2. 在代码中配置数据库连接

设置数据库之后,更新代码中的连接设置;这4个变量在代码的开头,请更改成你本地数据库的身份验证信息;这些身份验证信息再代码中有两处调用(大约第111行和第1783行)

# 数据库连接设置作为全局变量
DB_HOST = 'localhost'    # 数据库主机
DB_USER = 'root'         # 数据库用户
DB_PASSWORD = '1234'     # 数据库密码
DB_NAME = 'traffic_sign_recognition'  # 数据库名

关于数据库链接的注意事项

如果遇到 RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods 错误,这是因为数据库身份验证出错了,需要正确地创建数据库并输入密码。

3. 运行 main.py

4. 输入您的账号和密码以登录。

以下是默认的登录凭据:

用户名密码
admin123456
12

或者修改main.py中的主函数:删除登陆逻辑,以直接进入系统而无需进行身份验证。


项目模块

  • pt文件夹:存放模型(best.pt是道路标志识别模型)
  • main_with文件夹:login.py(登陆ui)、win.py(主ui)
  • dialog文件夹:rtsp弹出界面
  • apprcc_rc.py:资源文件
  • login_ji.py:界面登陆逻辑文件
  • data/run/run-exp52:300轮训练后的道路标志识别模型
  • utils/tt100k_to_voc-main文件夹:json转yolo格式
  • result保存一些推理文件,run保存训练文件
  • 数据集:TT100k : Traffic-Sign Detection and Classification in the Wild
  • 数据库文件:data文件夹下-regn_mysql.sql

由于这个项目是在我学习YOLOv5时完成的(已经过了很长一段时间),因此主要的逻辑代码都集中在main.py文件中。换句话说,我没有将不同功能模块化,没有进行模块结构的清晰划分。主要是由于我太懒了,嘻嘻 😄。如果您有兴趣,可以将其模块化,这样它就会更加清晰。

致谢

  • 将TT100K数据集转成VOC格式,并且用Python脚本选出45类超过100张的图片和XML
  • https://github.com/Javacr/PyQt5-YOLOv5

Star History

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/341383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim基本操作命令

一、vi简介 vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vi不是一个排版程序,它不象Word或WPS那样可以…

React18-树形菜单-递归

文章目录 案例分析技巧通信展示效果实现代码技巧点技巧点 Refer to 案例分析 https://github.com/dL-hx/manager-fe/commit/85faf3b1ae9a925513583feb02b9a1c87fb462f7 从接口获取城市数据,渲染出一个树形菜单 要求: 可以展开和收起 技巧 学会递归渲染出一个树形菜单, 并点击后…

21道Java Spring MVC综合面试题详解含答案(值得珍藏)

1.概述 1.1 什么是Spring MVC?简单介绍下你对Spring MVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成…

重定位,进程的创建,线程相关

重定位 进程的重定位指将程序加载到内存中不同的位置执行,在进程换出换入过程中将会发生。通过更新程序中使用的相对地址。 进程的创建——fork() 进程树,在自己的节点下创建进程节点。 使用fork,创建的子进程是父进…

正则表达式、文件访问(Python实现)

一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…

神州数码集团荣获“TiDB 社区最佳贡献企业”

日前,神州数码在 TiDB 开源社区中获得了“TiDB 社区最佳贡献企业”奖。PingCAP 颁发该奖项以认可生态企业在社区中的卓越贡献和积极参与。 神州数码与 PingCAP 最早于 2020 年 12 月 28 日进行战略合作,基于全球领先的开源分布式关系型数据库 TiDB&…

一天一个设计模式---桥接模式

概念 桥接器模式是一种结构型设计模式,旨在将抽象部分与实现部分分离,使它们可以独立变化而不相互影响。桥接器模式通过创建一个桥接接口,连接抽象和实现,从而使两者可以独立演化。 具体内容 桥接器模式通常包括以下几个要素&a…

【软考中级-软件设计师】day7:图

概述 1-2道选择 图的存储 图的遍历 图的最小生成树 prim算法 kruscal算法 2135476 选7不选6是因为4的先删除(vi必须在vj之前)跟4有关的删了以后,入度为0的结点只剩下7,所以选7再6

Docker 安装:在linux系统CentOS7 版本 安装Docker

目录 一,Docker介绍: 1.1Docker是什么? 1.2Docker组成 二,Docker安装: 三,Docker基本使用 3.1服务 3.2镜像 3.3容器 🎉🎉欢迎来到我的CSDN主页!🎉&am…

Java中finally和return的执行顺序

Java中finally和return的执行顺序 try...catch...finally1. finally语句在return语句执行之后return返回之前执行的2. finally块中的return语句会覆盖try块中的return返回3. 如果finally语句中没有return语句覆盖返回值,那么原来的返回值可能因为finally里的修改而改…

机器学习_7、KNN

数据采用:电离层数据 KNN完整的代码电离层数据资源-CSDN文库 代码 import os import csv import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import …

CMake入门教程【高级篇】查找文件、目录、库find_file、find_path、find_library

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1.概述2.详细命令作用3.使用说明4.完整代码示例5.总结与分析1.概述 在复杂的 CMake 项目中,经常需要查找文件、目录或库。CMake 提供了 find_file,find_pat