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

手把手教你用YOLOv5训练自己的交通标志数据集(从LabelImg标注到模型部署)

从零构建YOLOv5交通标志检测器的实战指南在自动驾驶和智能交通系统快速发展的今天准确识别道路标志已成为计算机视觉领域的重要应用场景。不同于传统图像处理方法基于深度学习的目标检测技术能够适应复杂环境变化而YOLOv5以其卓越的速度-精度平衡成为工业界首选。本教程将带您完整走通数据标注、模型训练到部署的全流程特别针对初学者可能遇到的坑点提供解决方案。1. 数据准备与标注规范1.1 构建高质量数据集的黄金法则交通标志检测的特殊性在于目标通常只占图像的极小部分约3%-8%像素面积这对数据质量提出了更高要求。建议采集数据时注意多场景覆盖包含白天/夜间、晴天/雨雪、城市/高速等不同环境视角多样性前视、斜视、仰视等不同拍摄角度分辨率标准单目标至少占据50×50像素区域推荐使用德国交通标志检测基准数据集(GTSDB)作为基础配合自行采集的本地化数据。典型数据目录应遵循以下结构dataset/ ├── raw_images/ │ ├── daytime/ │ ├── night/ │ └── adverse_weather/ └── labeled_data/ ├── train/ │ ├── images/ │ └── labels/ └── val/ ├── images/ └── labels/1.2 LabelImg标注实战技巧安装LabelImg只需执行pip install labelImg labelImg # 启动图形界面标注时需特别注意边界框应紧贴标志边缘保留约2-5像素余量同类标志在不同光照条件下应保持标签一致遮挡超过30%的标志建议标记为difficult类别标注过程中频繁使用快捷键可提升效率W创建边界框CtrlS保存当前标注D下一张图像A上一张图像完成标注后会生成PASCAL VOC格式的XML文件需转换为YOLO格式的txt文件。转换脚本示例import xml.etree.ElementTree as ET import os def convert(size, box): dw 1./size[0] dh 1./size[1] x (box[0] box[1])/2.0 y (box[2] box[3])/2.0 w box[1] - box[0] h box[3] - box[2] x x*dw w w*dw y y*dh h h*dh return (x,y,w,h) def convert_annotation(xml_file, classes): in_file open(xml_file) out_file open(xml_file.replace(.xml, .txt), w) tree ET.parse(in_file) root tree.getroot() for obj in root.iter(object): cls obj.find(name).text if cls not in classes: continue cls_id classes.index(cls) xmlbox obj.find(bndbox) b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text), float(xmlbox.find(ymax).text)) bb convert((width, height), b) out_file.write(str(cls_id) .join([str(a) for a in bb]) \n)2. YOLOv5环境配置与训练优化2.1 高效训练环境搭建推荐使用conda创建隔离环境conda create -n yolov5 python3.8 conda activate yolov5 pip install torch1.10.0cu113 torchvision0.11.1cu113 -f https://download.pytorch.org/whl/torch_stable.html git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt关键依赖版本控制组件推荐版本作用PyTorch1.10.0深度学习框架CUDA11.3GPU加速cuDNN8.2.0深度神经网络加速库OpenCV4.5.4图像处理2.2 数据配置文件精调data.yaml文件是训练的核心配置文件示例如下train: ../dataset/train/images val: ../dataset/val/images test: ../dataset/test/images nc: 58 # 根据实际类别数调整 names: [前方障碍, 牛群, 小心, ..., 限速(30)] # 完整类别列表建议添加以下高级参数提升性能rect: True启用矩形训练减少填充像素cache: ram使用内存缓存加速训练pad: 0.5图像填充比例2.3 训练参数调优策略启动基础训练命令python train.py --img 640 --batch 16 --epochs 100 --data data.yaml --weights yolov5s.pt针对交通标志检测的特殊调参技巧学习率设置初始值0.01大批量或0.001小批量使用余弦退火调度lr0: 0.01 lrf: 0.2 # 最终学习率lr0*lrf锚框优化python utils/autoanchor.py --data data.yaml小目标检测增强启用mosaic数据增强使用--multi-scale参数添加小目标检测层修改models/yolov5s.yaml常见报错解决方案CUDA out of memory减小batch_size或图像尺寸标签加载失败检查txt标签文件路径和格式NaN损失降低学习率或使用梯度裁剪3. 模型评估与性能提升3.1 关键指标解读训练完成后在runs/train/exp目录下会生成关键结果文件results.png损失函数和mAP变化曲线confusion_matrix.png类别混淆矩阵val_batchX_labels.jpg验证集预测示例重点关注以下指标指标优秀值改进方法mAP0.50.85增加数据多样性mAP0.5:0.950.65调整锚框尺寸推理速度5ms使用更小模型变体3.2 模型压缩与加速使用TensorRT加速推理的典型流程python export.py --weights best.pt --include engine --device 0模型优化前后对比指标FP32TensorRT-FP16提升推理速度12ms3ms4倍模型大小14MB4MB3.5倍mAP0.870.86-1%4. 部署实战与边缘设备优化4.1 多种部署方案对比根据应用场景选择合适方案平台推荐方案优势适用场景服务器FlaskONNX高吞吐量云端处理嵌入式TensorRT低延迟车载设备移动端CoreML/TFLite跨平台手机APP4.2 树莓派部署实例在树莓派4B上的优化步骤安装必要依赖sudo apt install libatlas-base-dev libopenblas-dev pip install onnxruntime opencv-python-headless转换模型为ONNX格式python export.py --weights best.pt --include onnx --dynamic编写推理脚本import cv2 import onnxruntime as ort session ort.InferenceSession(best.onnx) def preprocess(img): img cv2.resize(img, (640, 640)) img img.transpose(2, 0, 1) return img.astype(float32) / 255.0 frame cv2.imread(test.jpg) inputs {session.get_inputs()[0].name: preprocess(frame)[None]} outputs session.run(None, inputs)4.3 性能瓶颈分析使用py-spy进行性能分析pip install py-spy py-spy top --pid $(pgrep -f python infer.py)典型优化方向图像预处理耗时使用OpenCV的UMat加速模型计算瓶颈量化到INT8精度后处理耗时优化NMS实现在Jetson Nano上的实测数据显示经过优化后推理速度可从原始的120ms提升至28ms满足实时性要求。

相关文章:

手把手教你用YOLOv5训练自己的交通标志数据集(从LabelImg标注到模型部署)

从零构建YOLOv5交通标志检测器的实战指南 在自动驾驶和智能交通系统快速发展的今天,准确识别道路标志已成为计算机视觉领域的重要应用场景。不同于传统图像处理方法,基于深度学习的目标检测技术能够适应复杂环境变化,而YOLOv5以其卓越的速度-…...

Project Sistine核心代码剖析:从图像分割到鼠标事件模拟

Project Sistine核心代码剖析:从图像分割到鼠标事件模拟 【免费下载链接】sistine Turn a MacBook into a Touchscreen with $1 of Hardware 项目地址: https://gitcode.com/gh_mirrors/si/sistine Project Sistine是一个创新的开源项目,它能让普…...

F3D动画播放教程:如何轻松展示和播放3D模型动画

F3D动画播放教程:如何轻松展示和播放3D模型动画 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d 想要快速查看和播放3D模型动画吗?F3D(Fast and minimalist 3D viewer&am…...

EDK II代码质量门禁报告:全面解析门禁检查结果与最佳实践

EDK II代码质量门禁报告:全面解析门禁检查结果与最佳实践 【免费下载链接】edk2 EDK II 项目地址: https://gitcode.com/gh_mirrors/ed/edk2 EDK II作为现代、功能丰富的跨平台UEFI和PI规范固件开发环境,其代码质量门禁系统是确保固件可靠性和安全…...

brpc跨平台构建自动化:Jenkins与GitHub Actions终极指南

brpc跨平台构建自动化:Jenkins与GitHub Actions终极指南 【免费下载链接】brpc brpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recomm…...

MySQL局域网远程连接测试教程

MySQL局域网远程连接测试教程1本地服务器安装MySQL服务器,安装MySQL shell, Workbench(非必须)防火墙配置2远程访问用户电脑配置IP配置安装 Workbench客户端1本地服务器 安装MySQL服务器,安装MySQL shell, Workbench(非必须) 点击右下角的Advanced Opt…...

老旧设备的开源OCR解决方案:技术适配与性能优化指南

老旧设备的开源OCR解决方案:技术适配与性能优化指南 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHub…...

F3D开发环境搭建:从零开始编译和构建这个开源3D项目

F3D开发环境搭建:从零开始编译和构建这个开源3D项目 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d F3D是一款快速且极简的3D查看器,本指南将带你从零开始搭建其开发环境&#xff0…...

语音合成延迟优化:IndexTTS-2-LLM网络IO调优实战

语音合成延迟优化:IndexTTS-2-LLM网络IO调优实战 1. 为什么语音合成总在“等”?从用户卡顿说起 你有没有试过在语音合成页面点下“开始合成”,然后盯着进度条数秒——明明只是一句话,却要等3秒、5秒,甚至更久&#x…...

如何高效访问优质内容?bypass-paywalls-chrome-clean工具全方位使用指南

如何高效访问优质内容?bypass-paywalls-chrome-clean工具全方位使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,大量优质内容被…...

3步打造Windows字体终极体验:MacType高清渲染全攻略

3步打造Windows字体终极体验:MacType高清渲染全攻略 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype 一、视觉痛点全解析:谁在忍受模糊字体的煎熬? 设计师的色彩…...

BootstrapBlazor通知组件:如何实现声音提示功能

BootstrapBlazor通知组件:如何实现声音提示功能 【免费下载链接】BootstrapBlazor 项目地址: https://gitcode.com/gh_mirrors/bo/BootstrapBlazor BootstrapBlazor是一个功能丰富的Blazor组件库,提供了各种UI组件来增强Web应用的用户体验。其中…...

Fish Speech 1.5入门指南:无需Python基础,5步完成高质量语音生成

Fish Speech 1.5入门指南:无需Python基础,5步完成高质量语音生成 你是不是也遇到过这些烦恼?想给视频配音,但自己的声音不好听,找配音员又太贵;想制作有声书,但录制过程繁琐,效果还…...

HP-Socket创新项目原型迭代记录:变更、原因与效果

HP-Socket创新项目原型迭代记录:变更、原因与效果 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为一款高性能TCP/UDP/HTTP通信组件,其…...

Guohua Diffusion 数据库集成方案:MySQL管理生成任务与作品元数据

Guohua Diffusion 数据库集成方案:MySQL管理生成任务与作品元数据 如果你用过Guohua Diffusion这类图像生成工具,可能会遇到一个头疼的问题:生成的图片越来越多,管理起来越来越乱。今天想找上周生成的那张“赛博朋克风格的城市夜…...

LiuJuan Z-Image Generator参数详解:CFG Scale=2.0与12步生成高质量人像

LiuJuan Z-Image Generator参数详解:CFG Scale2.0与12步生成高质量人像 想用AI生成一张惊艳的人像照片,却发现要么细节模糊,要么风格怪异,怎么调参数都达不到理想效果?如果你也遇到过类似问题,那今天这篇文…...

告别卡顿闪烁!在Cesium 1.134中集成SOG格式,让400万高斯秒级加载

突破性能瓶颈:Cesium 1.134集成SOG格式实现400万高斯秒级渲染 在三维地理空间可视化领域,Cesium一直是开发者构建高精度场景的首选引擎。但当项目涉及数百万级高斯泼溅数据时,传统加载方式往往导致令人崩溃的卡顿和视角移动时的闪烁问题。最近…...

JPEXS Free Flash Decompiler社区大使选拔流程:申请与评审完全指南

JPEXS Free Flash Decompiler社区大使选拔流程:申请与评审完全指南 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler是一款功能强大的Flash反编译…...

Llama-3.2V-11B-cot部署案例:中小企业低成本构建AI图文分析工作台

Llama-3.2V-11B-cot部署案例:中小企业低成本构建AI图文分析工作台 1. 项目概述 Llama-3.2V-11B-cot是基于Meta最新多模态大模型开发的专业级视觉推理工具,专为中小企业打造的低成本AI图文分析解决方案。该工具针对双卡RTX 4090环境进行了深度优化&…...

如何为Rainmeter贡献多语言翻译:完整指南

如何为Rainmeter贡献多语言翻译:完整指南 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具,支持全球用户通过多语言界…...

HP-Socket技术演讲视频描述撰写指南:关键词与吸引力

HP-Socket技术演讲视频描述撰写指南:关键词与吸引力 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket是一款高性能跨平台网络通信框架,专为…...

BootstrapBlazor滑块组件:如何实现垂直方向滑动控制

BootstrapBlazor滑块组件:如何实现垂直方向滑动控制 【免费下载链接】BootstrapBlazor 项目地址: https://gitcode.com/gh_mirrors/bo/BootstrapBlazor BootstrapBlazor滑块组件为Blazor开发者提供了强大的数值输入控件,而垂直方向滑块则是构建现…...

基于springboot运动服装销售系统设计与开发(源码+精品论文+答辩PPT等资料)

博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...

Blazor组件测试工具:BootstrapBlazor测试库完整指南

Blazor组件测试工具:BootstrapBlazor测试库完整指南 【免费下载链接】BootstrapBlazor 项目地址: https://gitcode.com/gh_mirrors/bo/BootstrapBlazor BootstrapBlazor测试库是企业级Blazor UI组件库的质量保障体系,提供了一套完整的组件测试解…...

基于springboot美食分享平台设计与开发(源码+精品论文+答辩PPT等资料)

博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...

Rainmeter皮肤模板循环控制:break/continue实现终极指南

Rainmeter皮肤模板循环控制:break/continue实现终极指南 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具,其皮肤模板…...

Label Studio实战:如何为NLP项目自定义标注模板(含模板代码分享)

Label Studio实战:如何为NLP项目自定义标注模板(含模板代码分享) 在自然语言处理项目中,数据标注的质量往往直接决定模型性能的上限。Label Studio作为当前最主流的开源标注工具之一,其灵活的自定义模板功能让NLP工程师…...

6个高效突破内容访问限制的开源工具使用指南

6个高效突破内容访问限制的开源工具使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代,优质内容常常被付费墙限制访问。本文将系统介绍基于开源…...

UEFI安全启动恢复流程文档:详细操作指南与故障排除

UEFI安全启动恢复流程文档:详细操作指南与故障排除 【免费下载链接】edk2 EDK II 项目地址: https://gitcode.com/gh_mirrors/ed/edk2 UEFI安全启动是现代计算机系统的重要安全功能,它通过数字签名验证确保只有受信任的操作系统和引导加载程序能够…...

新手也能懂的RAIM算法:用Python复现GNSS完好性监测(附代码与数据)

新手也能懂的RAIM算法:用Python复现GNSS完好性监测(附代码与数据) 当你用手机导航时,是否想过这些定位信号有多可靠?RAIM(Receiver Autonomous Integrity Monitoring)算法就像GNSS系统的"质…...