尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
交通标志数据集 识别交通道路中的警告,禁止性,强制性交通标识
使用 Python 深度学习 YOLOv8训练 CCTSDB 交通标志数据集 识别交通道路中的警告禁止性强制性交通标识文章目录使用 Python 深度学习 YOLOv8训练 CCTSDB 交通标志数据集 识别交通道路中的警告禁止性强制性交通标识**1. 安装依赖****2. 准备数据集**数据集结构data.yaml 文件**3. 训练 YOLOv8 模型**训练脚本**4. 推理代码****5. 训练评估****6. 构建 GUI 应用程序****7. 运行应用程序**以下文字及代码仅供参考。CCTSDB 交通标志数据集3 个分类分别为 mandatory、prohibition、warning 。标签 txt 格式train12499 张val3571 张test1786 张 total:17856 张安装依赖、准备数据集、训练 YOLOv8 模型、推理代码、评估模型性能到构建 GUI 应用程序的详细步骤。使用 Python 和相关的深度学习工具如 Ultralytics 的 YOLOv8。1. 安装依赖首先确保你已经安装了必要的库和依赖项。# 创建虚拟环境可选python-mvenv yolov8_envsourceyolov8_env/bin/activate# Linux/MacOSyolov8_env\Scripts\activate# Windows# 升级 pippipinstall--upgradepip# 安装依赖pipinstallultralytics opencv-python matplotlib pyqt52. 准备数据集数据集结构假设你的数据集已经标注为 YOLO 格式并按照以下目录结构组织CCTSDB/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ ├── img2.jpg │ │ └── ... │ ├── val/ │ │ ├── img1.jpg │ │ ├── img2.jpg │ │ └── ... │ └── test/ │ ├── img1.jpg │ ├── img2.jpg │ └── ... ├── labels/ │ ├── train/ │ │ ├── img1.txt │ │ ├── img2.txt │ │ └── ... │ ├── val/ │ │ ├── img1.txt │ │ ├── img2.txt │ │ └── ... │ └── test/ │ ├── img1.txt │ ├── img2.txt │ └── ... └── data.yamldata.yaml文件创建一个data.yaml文件来描述数据集的配置train:CCTSDB/images/trainval:CCTSDB/images/valtest:CCTSDB/images/testnc:3# 类别数量names:[mandatory,prohibition,warning]# 类别名称3. 训练 YOLOv8 模型训练脚本使用 Ultralytics 提供的 YOLOv8 API 进行训练fromultralyticsimportYOLO# 加载预训练模型modelYOLO(yolov8n.pt)# 使用 YOLOv8 Nano 模型# 开始训练resultsmodel.train(dataCCTSDB/data.yaml,# 数据集配置文件路径epochs50,# 训练轮数imgsz640,# 输入图像大小batch16,# 批量大小device0# GPU 设备编号使用 CPU 设置为 cpu)# 导出最佳权重model.export(formatonnx)# 可导出为 ONNX 格式以用于部署4. 推理代码训练完成后可以使用保存的模型进行推理。fromultralyticsimportYOLOimportcv2# 加载训练好的模型modelYOLO(runs/detect/train/weights/best.pt)# 测试图像image_pathCCTSDB/images/test/img1.jpgresultsmodel(image_path)# 显示结果forresultinresults:boxesresult.boxes.xyxy.cpu().numpy()# 边界框classesresult.boxes.cls.cpu().numpy()# 类别索引confidencesresult.boxes.conf.cpu().numpy()# 置信度# 绘制边界框imagecv2.imread(image_path)forbox,cls,confinzip(boxes,classes,confidences):x1,y1,x2,y2map(int,box)labelf{model.names[int(cls)]}{conf:.2f}cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(image,label,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,255,0),2)# 显示图像cv2.imshow(Result,image)cv2.waitKey(0)cv2.destroyAllWindows()5. 训练评估Ultralytics 的 YOLOv8 会在训练过程中自动生成评估指标如 mAP。你可以查看runs/detect/train/results.csv文件中的详细信息。此外可以使用以下代码手动评估模型fromultralyticsimportYOLO# 加载模型modelYOLO(runs/detect/train/weights/best.pt)# 验证模型metricsmodel.val(dataCCTSDB/data.yaml)print(metrics.box.map)# 输出 mAP 值6. 构建 GUI 应用程序使用 PyQt5 构建一个简单的 GUI 应用程序用于加载图像并显示检测结果。fromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QFileDialogfromPyQt5.QtGuiimportQPixmap,QImagefromultralyticsimportYOLOimportcv2importsysclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(交通标志检测)self.setGeometry(100,100,800,600)# 加载模型self.modelYOLO(runs/detect/train/weights/best.pt)# UI 元素self.labelQLabel(self)self.label.setGeometry(50,50,700,400)self.buttonQPushButton(选择图片,self)self.button.setGeometry(300,500,200,50)self.button.clicked.connect(self.load_image)defload_image(self):# 打开文件对话框file_path,_QFileDialog.getOpenFileName(self,选择图片,,Images (*.jpg *.png))iffile_path:# 检测图像imagecv2.imread(file_path)resultsself.model(image)forresultinresults:boxesresult.boxes.xyxy.cpu().numpy()classesresult.boxes.cls.cpu().numpy()forbox,clsinzip(boxes,classes):x1,y1,x2,y2map(int,box)cv2.rectangle(image,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(image,self.model.names[int(cls)],(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,255,0),2)# 转换为 Qt 图像格式height,width,channelimage.shape bytes_per_line3*width q_imgQImage(image.data,width,height,bytes_per_line,QImage.Format_RGB888).rgbSwapped()# 显示图像self.label.setPixmap(QPixmap.fromImage(q_img))if__name____main__:appQApplication(sys.argv)windowMainWindow()window.show()sys.exit(app.exec_())7. 运行应用程序运行上述代码启动 GUI 应用程序。用户可以通过界面加载图像并查看检测结果。
RELATED

相关推荐

滚动轴承故障检测 基于双路神经网络滚动轴承故障诊断系统 系统融合原始振动信号和二维时频图像进行多输入(多通道)故障诊断。PyTorch框架实现模型,可单双路

滚动轴承故障检测 基于双路神经网络滚动轴承故障诊断系统 系统融合原始振动信号和二维时频图像进行多输入(多通道)故障诊断。PyTorch框架实现模型,可单双路

基于双路神经网络的滚动轴承故障诊断 文章目录基于双路神经网络的滚动轴承故障诊断文字及内容代码仅供参考!1. 数据准备2. 完整代码实现2.1 数据加载和预处理2.2 模型构建2.3 模型训练2.4 结果可视化运行步骤实际运行情况如图 融合了原始振动信号 和 二维信号时频图…

📅 2026/8/23 7:23:15
从点应用走向意图驱动,Joule Work 正在重写 SAP 企业软件的人机交互方式

从点应用走向意图驱动,Joule Work 正在重写 SAP 企业软件的人机交互方式

2026 年 5 月的 SAP Sapphire 上,SAP 把 Joule Work 推到了一个非常关键的位置。过去谈 Joule,很多 SAP 从业者脑海里浮现出来的还是一个嵌入 SAP S/4HANA、SAP SuccessFactors、SAP BTP 等产品里的生成式 AI 助手,可以问问题,可以查业务数据,也可以帮助完成一些具体任务。…

📅 2026/8/23 7:23:15
STM32F405驱动24位DAC1220:高精度SPI接口实战与波形生成

STM32F405驱动24位DAC1220:高精度SPI接口实战与波形生成

1. 项目概述:从需求到方案选型 最近在做一个高精度信号源的项目,核心需求是生成一个超低噪声、超高分辨率的模拟电压。市面上常见的12位、16位DAC在音频或一般控制领域够用,但到了精密仪器、高端音频或者某些科研场景,其量化台阶带…

📅 2026/9/26 17:02:33
MORE NEWS

更多资讯

📰

C++游戏开发中enum class实战:从传统enum坑到类型安全迁移

做游戏客户端这几年,C枚举是几乎每个系统都会用到的基础设施:角色状态、怪物AI、技能类型、消息通道、资源分类,随手一数就是一大串。以前项目里到处是C风格的enum,写起来确实爽——不用敲那么多字,还自动兼容整数。可…

📰

Android纵向滑动页面实战:三容器选型与避坑指南

简介:这是一份面向Android初中级开发者的纵向滑动页面实现资源,围绕ViewPager详细讲解如何构建上下滑动、翻页并显示页码的交互效果。压缩包内共61个文件,主要包括Java源码、XML布局与资源文件、编译生成的class与dex、android-support-v4.ja…

📰

低附着路面半挂汽车列车折叠失稳仿真与差动制动控制

我自己真正开始较真“半挂汽车列车横向稳定性控制”这个问题,是因为冬天在服务区门口亲眼看了一场折叠事故。一辆满载的半挂列车在匝道口的冰面上稍微带了点方向,挂车就开始左右甩,车头几乎被拽着转了180度,场面很吓人。从那以后&…

📰

OMA-VMD自动寻优:告别手动调参的变分模态分解实战

变分模态分解(VMD)这个算法,懂的人不少,但真正把它用好的人不多。十次上手有八次都卡在同一个地方:惩罚系数 alpha 和分解模态数 K 到底怎么定。K 拍脑袋给了个 5,alpha 随手填了 2000,结果分解…

📰

包管理器三剑客:npm、Yarn、pnpm底层原理与工程实践对比

1. 先想清楚一件事:包管理器到底在管什么做前端这些年,几乎每个新项目开工第一步就是npm install,可真正追问一句“包管理器是怎么工作的”,很多人其实答不上来。早年间我也只是把它当“下载依赖的神奇按钮”,直到后来…

📰

MySQL JDBC驱动版本与连接参数配置实战指南

简介:本资源是Java开发者连接MySQL数据库所需的官方JDBC驱动合集,面向初学者及企业级应用开发人员,解决Java项目中因驱动版本不匹配导致的连接失败、SQL异常或特性兼容问题。压缩包内含635个文件,主体为589个Java源码(…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬