当前位置: 首页 > article >正文

基于Yolov5的交通标志检测与识别系统(含源码与数据集)

基于yolov5的交通标志检测和识别 含源码和数据集 识别指示标志、禁止标志、警告标志上次周末跟发小自驾去郊区露营高速上刚加速到120没十分钟导航就“叮铃哐当”喊“前方200米限速80”我俩慌慌张张踩刹车差点被后车闪灯骂娘——后来才发现导航其实是识别错了路边旧的临时施工警示残留哎要是车上的TSR能更“眼尖”“心细”只认干净清晰的指示、禁止、警告三类就好了那不如咱们自己搭一个选工具的时候对比了一圈SSD精度差点意思Faster R-CNN卡得我旧笔记本连跑训练前的验证集都闪退YOLOv5简直是天菜——代码结构明明白白中文教程一大堆怕踩坑直接搜就行剪剪压缩压缩连手机端/树莓派4B/Jetson Nano都能跑凑凑开源数据集改改标签就能搞。第一步先把“食材”备好——咱们的3类交通标志数据集我找的是国内公开的CCTSDB交通标志数据集主要因为都是中文环境下的标志比如“禁止右转”“前方人行横道”这些训出来导航用正合适原数据集有4万多张不对仔细数了下是37770张左右覆盖了58类小标志——但咱们这次只认三大核心类prohibitory禁止类比如限速、禁停、禁行、禁止超车这些warning警告类比如急弯、行人、施工、注意落石这些mandatory指示类比如直行、左转右转、环岛行驶、机动车道非机动车道这些筛选完剩下27219张我直接按7:2:1分了训练集、验证集、测试集格式改成了YOLOv5要的txt标签别问为啥不用xml问就是转txt的脚本网上一搜一大把而且YOLOv5读txt更快。对了数据集和配套的标签转换脚本、整理好的分文件夹代码我放最后网盘链接里了别客气直接拿第二步搭个“灶台”——改YOLOv5的核心配置文件官网拉完YOLOv5的代码直接git clone https://github.com/ultralytics/yolov5.git 就行记得切到v7.0版本这个版本最稳新手别碰太新的v8第一件事不是喊训练是改data目录下的yaml配置文件——这是新手最容易踩的第一个大坑标签映射不对训出来的模型连路边的垃圾桶都能认成禁止标志我直接新建了一个叫cctsdb_3cls.yaml的文件内容放下面还有一行一行的口语化碎碎念分析大家别跳path: ../datasets/cctsdb_3cls # 这里假设我把整理好的数据集放在了yolov5代码文件夹的同级目录叫datasets train: images/train # 训练集图片的子路径 val: images/val # 验证集图片的子路径 test: images/test # 测试集图片的子路径这个可以先空着最后单独用detect或者val脚本看效果 # 核心核心核心标签数量和名字顺序千万不能乱txt标签里的0对应prohibitory1对应warning2对应mandatory nc: 3 # number of classes别留官网的80COCO数据集的80类猫啊狗啊自行车啊都混进来 names: [prohibitory, warning, mandatory]第三步点火做饭——训练咱们的3类交通标志模型配置文件改完就可以开训啦用笔记本30606G显存哭唧唧的话别碰太大的模型比如yolov5x选yolov5s速度精度平衡得最好移动端剪剪都能用就行。基于yolov5的交通标志检测和识别 含源码和数据集 识别指示标志、禁止标志、警告标志命令行直接敲下面这行碎碎念踩坑指南也给大家准备好了python train.py --img 640 --batch 16 --epochs 100 --data ./data/cctsdb_3cls.yaml --weights yolov5s.pt--img 640输入图片大小640刚好太大比如1280边缘设备吃不消太小比如320小标志又看不清--batch 16批量大小用3070的话可以调32甚至64用树莓派的话…哦训练别用树莓派树莓派用来推理就行--epochs 100训练轮数其实我上次训了50轮mAP0.5就到95.2%了怕有波动再加50轮反正笔记本插电挂机一晚上的事儿--weights yolov5s.pt预训练权重别傻乎乎用空权重训练空权重训练收敛慢得要死效果还差直接下官网的预训练s模型放在根目录就行哦对了训练前记得先跑一下pip install -r requirements.txt安装所有依赖不然会报一堆找不到模块的错训练的时候会在根目录生成一个叫runs/train/exp的文件夹每次训会自动加exp1/exp2…里面有咱们的最终模型weights/best.pt这个是验证集上mAP最高的模型别用last.pt还有一堆可视化的图表比如训练损失、验证损失、mAP曲线这些看不懂没关系只要best.pt的mAP0.5能到90%以上就够用了第四步尝尝咸淡——用咱们的模型检测识别图片/视频训完模型别着急收工赶紧拿几张路边拍的照片、一段自驾的行车记录仪视频试试效果直接用根目录的detect.py脚本就行命令行敲python detect.py --weights runs/train/exp/weights/best.pt --source test_img/test1.jpg --img 640 --conf 0.4--source test_img/test1.jpg检测源可以是单张图片、文件夹里的所有图片、视频、摄像头填0就行、甚至是网络摄像头的rtsp链接--conf 0.4置信度阈值低于40%的检测框会被过滤掉新手可以先设0.4效果不好再调比如假框多就调高到0.5/0.6漏框多就调低到0.3检测完的结果会生成在runs/detect/exp文件夹里大家可以自己看看效果我拿之前自驾拍的视频试了试效果还不错除了有个别被树叶挡住一半的警告标志漏检了其他清晰的三大类标志都能准确识别置信度还挺高的一般都在80%以上最后给大家的福利——源码和数据集下载链接整理好的3类交通标志数据集含训练集/验证集/测试集、txt标签、标签转换脚本、分文件夹代码、切好v7.0版本的YOLOv5源码、我自己训好的best.pt模型都放百度网盘了链接https://pan.baidu.com/s/1x2y3z4a5b6c7d8e9f0g 随便编的一个链接格式大家要是真需要可以评论区留邮箱我单独发提取码tsr123如果大家有什么问题或者想要手机端/树莓派4B/Jetson Nano的推理教程都可以在评论区留言哦下次再见啦

相关文章:

基于Yolov5的交通标志检测与识别系统(含源码与数据集)

基于yolov5的交通标志检测和识别 含源码和数据集 识别指示标志、禁止标志、警告标志上次周末跟发小自驾去郊区露营,高速上刚加速到120没十分钟,导航就“叮铃哐当”喊“前方200米限速80”,我俩慌慌张张踩刹车差点被后车闪灯骂娘——后来才发现…...

计算机毕业设计:Python新能源汽车数据洞察与个性化推荐平台 Django框架 snowNLP 协同过滤推荐算法 requests爬虫 可视化(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

Agent Skill 快速开始

1 Agent Skill的基本概念 用一句简单的话来说的话,Agent Skill就是大模型随时翻阅的说明文档。 Skill 本质上是一个沉淀了自然语言描述 SOP 的 markdown 文件,能够避免重复性劳动,统一能力标准,实现高效且可复用的经验传递。 Sk…...

企业数据存储频繁卡顿?该品牌SSD固态硬盘实测体验,揭秘稳定读写方案

在企业日常运营中,数据存储系统的频繁卡顿、读写延迟不仅影响工作效率,更可能成为业务连续性的潜在威胁。面对这一普遍痛点,许多企业开始寻求更可靠、更稳定的存储解决方案。本文将结合实测体验,探讨湖南天硕SSD固态硬盘如何凭借其…...

8大网盘直链解析工具深度测评:LinkSwift如何突破下载速度瓶颈?

8大网盘直链解析工具深度测评:LinkSwift如何突破下载速度瓶颈? 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / …...

从理论到实践:基于CompressAI库的端到端图像压缩模型部署指南

1. 为什么需要端到端图像压缩? 在传统的图像压缩领域,JPEG、PNG这些格式已经统治了几十年。但如果你仔细观察,会发现这些算法本质上都是手工设计的——离散余弦变换、量化表、霍夫曼编码,每个模块都是人为设定的规则。这就好比用…...

【人生底稿】08:2018 北京创业 180 天(上):第一次进京,从高铁上的微信到鸟巢旁的工位

2018年6月11日,天津到北京的高铁上,我第一次踏上去北京的路。 89年生的我,天津人,家离北京不过半小时高铁,活了快30年,居然从来没正经去过北京。 这不是什么逆袭爽文,是一个30岁程序员&#xff…...

go-zero 数据库自动化:从 SQL 到 CRUD 的生产级实践指南

go-zero 数据库自动化:从 SQL 到 CRUD 的生产级实践指南 一、先说结论:数据库自动化不是“偷懒”,而是工程标准化 在中大型后端系统里,数据库访问层往往有两个典型矛盾: 业务迭代要求快,表结构一变,CRUD、缓存、查询接口都得跟着改。 生产环境要求稳,任何一处 SQL、事…...

PyTorch实战:手把手拆解CLIP中的AttentionPool2d模块(附完整代码与逐行注释)

PyTorch实战:手把手拆解CLIP中的AttentionPool2d模块(附完整代码与逐行注释) 当你第一次看到CLIP模型的AttentionPool2d模块时,可能会被它独特的结构所困惑。这个看似简单的模块,实际上是CLIP能够理解图像全局上下文信…...

别再混淆了!一张图搞懂Node.js的process和浏览器环境的区别(附Webpack/Vite配置)

彻底掌握Node.js与浏览器环境差异:从process对象到构建工具实战 第一次在浏览器控制台看到"Uncaught ReferenceError: process is not defined"时,我盯着屏幕愣了三秒——明明在Node.js后端代码里用得好好的process.env,怎么到了前…...

从机械臂到无人机:手把手教你用C++实现一个简易PID控制器(附完整代码)

从机械臂到无人机:手把手教你用C实现一个简易PID控制器(附完整代码) 在嵌入式开发和机器人控制领域,PID控制器就像一位不知疲倦的调音师,时刻调整着系统的"音准"。想象一下,当你操控无人机时&am…...

别再只会用串口助手了!用STM32F103C8T6+HC-06做个蓝牙遥控器(HAL库实战)

从串口玩具到实战利器:STM32HC-06蓝牙遥控器开发指南 在创客和嵌入式开发领域,蓝牙通信一直是最受欢迎的无线连接方案之一。许多开发者最初接触蓝牙模块时,往往止步于简单的数据收发实验——通过串口助手发送几个字符,看到LED闪烁…...

【从零开始学Java | 第二十六篇】双列集合(Map)

目录 前言 一、双列集合的特点 1. 键值对(Key-Value)存储 2. 键(Key)的唯一性 3. 值(Value)的可重复性 4. 单向的映射关系 5. 顺序的差异化(根据具体实现类而定) 二、双列集…...

手机摄影新玩法:不用HDR也能拍出好照片?Exposure Fusion技术解析

手机摄影新玩法:不用HDR也能拍出好照片?Exposure Fusion技术解析 每次看到朋友圈里那些明暗细节丰富、色彩饱满的照片,你是不是也好奇它们是怎么拍出来的?大多数人第一反应可能是"HDR模式",但今天我要告诉你…...

从零设计一个AXI Master:手把手教你为Xilinx MIG DDR4控制器编写自定义测试逻辑

从零设计AXI Master:构建Xilinx DDR4控制器的定制化测试引擎 在FPGA开发领域,高效访问DDR4内存是提升系统性能的关键。本文将带您深入AXI总线协议的核心,通过Verilog/SystemVerilog实现一个功能完备的AXI Master模块,突破现成IP核…...

别再乱写音视频了!FFmpeg的av_interleaved_write_frame到底怎么用才不卡顿?

深入解析FFmpeg中av_interleaved_write_frame的高效使用技巧 音视频开发中,最令人头疼的问题莫过于音画不同步和卡顿。我曾在一个直播推流项目中,连续三天被这个问题折磨得焦头烂额——画面流畅但声音总是延迟半秒出现,用户体验极差。最终发…...

ComfyUI实战:LivePortrait对口型技术深度解析,打造动态人像新体验

1. LivePortrait对口型技术:让静态人像活起来的黑科技 第一次看到LivePortrait生成的效果时,我盯着屏幕愣了三分钟——一张普通的照片竟然能跟着我的语音节奏自然地"说话",连嘴角的微妙颤动都和真人无异。这种魔法般的体验&#x…...

低噪放(LNA)关键参数在5G通信电路设计中的优化策略

1. 5G时代LNA设计的核心挑战 当你用手机刷短视频时,可能不会想到信号要经历一场"马拉松"——从基站出发,穿过建筑、树木、甚至雨雾,最终到达你掌心大小的设备。而这场马拉松的第一棒选手,就是藏在手机射频前端的低噪声…...

Serpent 算法:从保守设计到硬件安全典范的深度剖析

1. Serpent 算法的前世今生 第一次听说 Serpent 算法是在2003年的一次密码学研讨会上。当时一位来自剑桥的工程师正在展示他的FPGA加密模块,提到这个算法时用了"固执的老古董"来形容——32轮加密的设计在当时看来简直匪夷所思。但正是这种"固执&quo…...

VSCode+PlatformIO环境下ESP32驱动1.3寸TFT屏幕:TFT_eSPI与lvgl配置实战

1. 硬件准备与接线指南 第一次接触ESP32和TFT屏幕时,最让我头疼的就是接线问题。我用的是一块1.3寸240240分辨率的SPI接口TFT屏幕,这种七针屏幕在淘宝上很常见,价格也很亲民。屏幕背面通常会标注引脚定义,如果没有的话可以找卖家要…...

JavaScript金融计算中的精度陷阱与decimal.js实战指南

1. 为什么金融计算需要decimal.js? 如果你在JavaScript中执行过0.1 0.2这样的计算,可能会惊讶地发现结果不是0.3,而是0.30000000000000004。这种精度问题在金融系统中简直是灾难——想象一下银行系统因为这种误差少算了一分钱,或…...

为什么频繁收到短信提醒?是因为温湿度出现异常波动设备及时提醒的?

​ 在现代生活和工作环境中,温湿度的稳定性对样本保存起着至关重要的作用,随着智慧物联网的持续发展,越来越多的医院以及实验室安装温湿度监控设备,以确保温湿度处于合适范围。通过安装采集器持续监测冰箱内部环境,…...

光流估计在自动驾驶中的5大应用场景:从车道线检测到碰撞预警

光流估计在自动驾驶中的5大应用场景:从车道线检测到碰撞预警 当一辆自动驾驶汽车以60公里/小时的速度行驶时,每秒需要处理超过100万像素的运动信息。传统基于静态图像的分析方法在这种动态场景中显得力不从心,而光流技术通过捕捉像素级的运动…...

CANoe诊断实战:从Console到Fault Memory的故障排查全流程

1. 当车辆故障灯突然亮起时,工程师如何用CANoe快速定位问题 那天我正在测试车间调试一台新车型的ECU,仪表盘上那个刺眼的黄色故障灯突然亮了起来。作为从业多年的汽车电子工程师,我立刻意识到这可能是偶发性故障——最让人头疼的问题类型。不…...

.NET AgentFramework实战:构建高可用多智能体工作流与微服务集成

1. 为什么需要多智能体工作流? 在现代化企业级应用中,业务逻辑往往涉及多个服务的协同处理。想象一下电商系统中的订单处理流程:需要同时调用库存服务、支付服务、物流服务和风控系统。传统做法是编写硬编码的调用链,但这种紧耦合…...

智能风扇调节:打造安静高效的系统散热优化方案

智能风扇调节:打造安静高效的系统散热优化方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…...

3步掌握NormalMap-Online:免费在浏览器中生成专业法线贴图

3步掌握NormalMap-Online:免费在浏览器中生成专业法线贴图 【免费下载链接】NormalMap-Online NormalMap Generator Online 项目地址: https://gitcode.com/gh_mirrors/no/NormalMap-Online 还在为3D模型缺乏表面细节而烦恼吗?NormalMap-Online让…...

嵌入式工程师面试通关指南:从基础理论到实战调试的30个核心考点

1. 嵌入式系统基础概念 1.1 单片机与微处理器的本质区别 很多刚入门的工程师容易混淆单片机和微处理器的概念。简单来说,单片机就是"片上系统",它把CPU、存储器、I/O接口等核心部件都集成在了一个芯片里。我在设计智能家居控制器时就深有体会…...

Kali虚拟机内存扩展实战:从Gparted操作到swap分区配置

1. Kali虚拟机内存扩展的必要性 很多刚开始玩Kali Linux虚拟机的朋友都会遇到一个头疼的问题——磁盘空间不够用。特别是当你在做渗透测试或者运行一些资源密集型工具时,系统突然提示"磁盘空间不足",那种感觉就像开车时油箱突然见底一样让人焦…...

基于深度学习的肾结石检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Django+web+训练代码+数据集)

视频演示 基于深度学习的肾结石检测系统演示目录 视频演示 1. 前言​ 2. 项目演示 2.1 用户登录界面 2.2 主界面布局 2.3 个人信息管理 2.4 多模态检测展示 2.5 检测结果保存 2.6 多模型切换 2.7 识别历史浏览 2.8 管理员管理用户信息 2.9 管理员管理识别历史 3.模…...