news 2026/10/2 11:47:23

深度学习框架基于YOLOv8➕pyqt5的交通标志与行人车辆检测系统 YOLOV8模型如何训练交通标志与行人车辆检测数据集 识别 [‘交通信号灯‘, ‘停止信号‘, ‘限速信号‘, ‘人行横道信号‘,

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习框架基于YOLOv8➕pyqt5的交通标志与行人车辆检测系统 YOLOV8模型如何训练交通标志与行人车辆检测数据集 识别 [‘交通信号灯‘, ‘停止信号‘, ‘限速信号‘, ‘人行横道信号‘,

基于YOLOv8➕pyqt5的交通标志与行人车辆检测系统,

附1500张交通标志与行人车辆数据集
包括[‘交通信号灯’, ‘停止信号’, ‘限速信号’, ‘人行横道信号’, ‘人行横道’,‘行人’, ‘公交车’, ‘汽车’, ‘卡车’, ],8类

也可自行替换模型,使用该界面做其他检测


1

基于 YOLOv8 + PyQt5 的交通标志与行人车辆检测系统的完整代码实现,支持图片、视频、摄像头实时检测,附带1500 张标注数据集(8 类),可直接运行。


✅ 一、项目概览

项目内容
系统名称基于深度学习的交通标志与行人车辆检测系统
核心技术YOLOv8 + PyQt5 + OpenCV
功能支持图片识别 / 视频分析 / 摄像头实时检测
检测类别8 类:交通信号灯,停止信号,限速信号,人行横道信号,人行横道,行人,公交车,汽车,卡车
输出内容类别、置信度、坐标框、检测耗时
部署方式Python 脚本运行,到手即可使用

✅ 二、项目目录结构

TrafficDetection/ ├── datasets/# 数据集文件夹(含 train/val)│ ├── train/ │ └── val/ ├── models/# 训练好的模型│ └── best.pt# YOLOv8 模型权重├── runs/# 训练结果缓存├── save_data/# 检测结果保存路径├── TestFiles/# 测试用图片├── ui/# UI 相关文件│ └── MainProgram.py# 主程序入口├── CameraTest.py# 摄像头测试脚本├── Config.py# 配置文件├── detect_tools.py# 检测工具函数├── imgTest.py# 图片检测脚本├── VideoTest.py# 视频检测脚本├── yolov8n.pt# 官方预训练模型(可选)├── requirements.txt# 依赖包列表├── setup.cfg# 环境配置└── README.md# 使用说明文档

✅ 三、核心代码:MainProgram.py(主界面)

# MainProgram.pyimportsysimporttimefromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QFileDialog,QVBoxLayout,QWidget,QHBoxLayout,QComboBox,QTextEditfromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQt,QTimerimportcv2importnumpyasnpfromultralyticsimportYOLOclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("基于深度学习的交通标志与行人车辆检测系统")self.setGeometry(100,100,1000,700)# 初始化模型self.model=YOLO('models/best.pt')# 加载训练好的模型self.cap=Noneself.timer=QTimer()self.timer.timeout.connect(self.update_frame)# 创建 UIself.init_ui()definit_ui(self):central_widget=QWidget()self.setCentralWidget(central_widget)layout=QVBoxLayout()# 图像显示区域self.image_label=QLabel("点击打开图片或摄像头")self.image_label.setAlignment(Qt.AlignCenter)self.image_label.setStyleSheet("border: 1px solid gray; background-color: white;")layout.addWidget(self.image_label)# 控制按钮区btn_layout=QHBoxLayout()self.btn_open_image=QPushButton("打开图片")self.btn_open_video=QPushButton("打开视频")self.btn_camera=QPushButton("打开摄像头")self.btn_stop=QPushButton("停止")self.btn_open_image.clicked.connect(self.open_image)self.btn_open_video.clicked.connect(self.open_video)self.btn_camera.clicked.connect(self.open_camera)self.btn_stop.clicked.connect(self.stop_capture)btn_layout.addWidget(self.btn_open_image)btn_layout.addWidget(self.btn_open_video)btn_layout.addWidget(self.btn_camera)btn_layout.addWidget(self.btn_stop)layout.addLayout(btn_layout)# 参数设置param_layout=QHBoxLayout()self.conf_threshold=QSpinBox()self.conf_threshold.setRange(0,100)self.conf_threshold.setValue(25)# 默认 0.25self.conf_threshold.setSuffix("%")self.iou_threshold=QSpinBox()self.iou_threshold.setRange(0,100)self.iou_threshold.setValue(45)# 默认 0.45self.iou_threshold.setSuffix("%")param_layout.addWidget(QLabel("置信度阈值:"))param_layout.addWidget(self.conf_threshold)param_layout.addWidget(QLabel("交并比阈值:"))param_layout.addWidget(self.iou_threshold)layout.addLayout(param_layout)# 检测结果展示result_layout=QVBoxLayout()self.result_label=QLabel("检测结果:")self.result_text=QTextEdit()self.result_text.setReadOnly(True)result_layout.addWidget(self.result_label)result_layout.addWidget(self.result_text)layout.addLayout(result_layout)central_widget.setLayout(layout)defopen_image(self):file_path,_=QFileDialog.getOpenFileName(self,"选择图片","","Image Files (*.jpg *.jpeg *.png)")iffile_path:self.process_image(file_path)defopen_video(self):file_path,_=QFileDialog.getOpenFileName(self,"选择视频","","Video Files (*.mp4 *.avi)")iffile_path:self.cap=cv2.VideoCapture(file_path)self.timer.start(30)self.btn_stop.setEnabled(True)defopen_camera(self):self.cap=cv2.VideoCapture(0)self.timer.start(30)self.btn_stop.setEnabled(True)defstop_capture(self):self.timer.stop()ifself.cap:self.cap.release()self.cap=Noneself.btn_stop.setEnabled(False)defprocess_image(self,image_path):img=cv2.imread(image_path)results=self.model(img,conf=self.conf_threshold.value()/100,iou=self.iou_threshold.value()/100)annotated_img=results[0].plot()self.display_image(annotated_img)self.show_results(results)defupdate_frame(self):ret,frame=self.cap.read()ifret:results=self.model(frame,conf=self.conf_threshold.value()/100,iou=self.iou_threshold.value()/100)annotated_frame=results[0].plot()self.display_image(annotated_frame)self.show_results(results)else:self.timer.stop()self.cap.release()self.cap=Nonedefdisplay_image(self,img):qimg=QImage(img.data,img.shape[1],img.shape[0],img.strides[0],QImage.Format_BGR888)pixmap=QPixmap.fromImage(qimg)self.image_label.setPixmap(pixmap.scaled(640,480,Qt.KeepAspectRatio))defshow_results(self,results):result_str=""forboxinresults[0].boxes:cls_id=int(box.cls.item())conf=float(box.conf.item())x1,y1,x2,y2=map(int,box.xyxy[0])label=self.model.names[cls_id]result_str+=f"类别:{label}, 置信度:{conf:.2f}, 位置: ({x1},{y1})~({x2},{y2})\n"self.result_text.setText(result_str)if__name__=='__main__':app=QApplication(sys.argv)window=MainWindow()window.show()sys.exit(app.exec_())

✅ 四、训练代码(train.py)

# train.pyfromultralyticsimportYOLO model=YOLO('yolov8n.pt')# 使用小模型适合交通图像results=model.train(data='datasets/data.yaml',epochs=100,imgsz=640,batch=16,name='traffic_detection',cache=True,device=0,workers=8,patience=10)

data.yaml示例

path:./datasetstrain:images/trainval:images/valtest:images/testnc:8names:['交通信号灯','停止信号','限速信号','人行横道信号','人行横道','行人','公交车','汽车','卡车']

✅ 五、依赖安装(requirements.txt)

PyQt5==5.15.9 opencv-python==4.8.0 ultralytics==8.3.0 numpy==1.24.0 torch==2.0.1+cu118 torchvision==0.15.2+cu118

安装命令:

pipinstall-r requirements.txt

✅ 六、使用说明

  1. 将best.pt放入models/文件夹
  2. 运行MainProgram.py启动 GUI
  3. 点击“打开图片”或“打开摄像头”进行检测
  4. 结果实时显示在界面中,支持保存

✅ 七、升级版功能(可选)

功能说明
🔐 登录页面添加用户认证,保护系统安全
📊 数据可视化统计不同目标出现频率,生成柱状图
📁 报告导出生成 PDF 检测报告,包含时间、图像、建议
🌐 远程调试使用PyCharm或VS Code远程连接服务器运行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 19:15:12

AI辅助开发实战:如何用claudecode提示词提升代码生成效率

背景与痛点:AI 写代码,为什么总“掉链子”? 过去一年,我把 GitHub Copilot、CodeWhisperer、ChatGPT 挨个试了个遍,省了不少敲键盘的功夫,却也踩出一串坑: 上下文丢失:多文件项目里…

作者头像 李华
网站建设 2026/9/30 2:39:01

ComfyUI图生视频模型实战:从效率瓶颈到性能优化

背景痛点:原生 ComfyUI 在视频生成中的效率瓶颈 ComfyUI 的节点式工作流虽然灵活,但在图生视频(Image-to-Video, I2V)场景下暴露出三大硬伤: 节点级串行:Latent Diffusion 去噪、VAE 解码、光流补帧等阶段…

作者头像 李华
网站建设 2026/9/30 19:28:52

YOLO毕设项目实战:从模型部署到工程化落地的完整链路

YOLO毕设项目实战:从模型部署到工程化落地的完整链路 背景痛点:跑通≠落地 做毕设时,很多同学把官方仓库 clone 下来,跑通 python detect.py --source 0 就以为大功告成。结果一到答辩现场: 笔记本风扇狂转&#xf…

作者头像 李华
网站建设 2026/9/30 8:12:00

【高可用Docker集群调度白皮书】:基于127个企业案例提炼的调度器调优Checklist(含Prometheus+Grafana实时监控模板)

第一章:高可用Docker集群调度的核心挑战与演进路径在容器化生产环境中,单节点Docker引擎已无法满足业务连续性与弹性伸缩需求。高可用Docker集群调度需在动态节点故障、网络分区、资源争抢及服务拓扑约束等多重压力下,持续保障任务分发的正确…

作者头像 李华
网站建设 2026/9/30 12:08:19

ChatGPT导出Word文档的自动化实践:从API调用到格式优化

ChatGPT导出Word文档的自动化实践:从API调用到格式优化 背景痛点:手动复制粘贴的“三宗罪” 上周做竞品调研,我让ChatGPT一口气生成了30份产品分析。结果从网页往Word里搬运时,差点把键盘敲冒烟: 格式全丢&#xff…

作者头像 李华