news 2026/2/19 16:43:00

基于深度学习道路车辆行人识别检测系统 PYQT界面深度学习框架如何训练道路车辆检测数据集 识别道路车辆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于深度学习道路车辆行人识别检测系统 PYQT界面深度学习框架如何训练道路车辆检测数据集 识别道路车辆

基于深度学习车辆行人识别检测系统 pygt界面

可检测图像、视频和摄像头实时监测


以下是基于深度学习的车辆行人识别检测系统的完整实现,使用PyQt5 + YOLOv8构建,支持:

✅ 图像、视频、摄像头实时检测
✅ 车辆(Car, Truck, Bus)与行人(Person)分类
✅ 界面显示目标数量、置信度、坐标信息
✅ 检测结果可保存
✅ 使用YOLOv8预训练模型,无需从头训练


以下文字及代码仅供参考

🎯 项目名称:基于深度学习的车辆行人识别检测系统


📁 一、项目结构

vehicle_person_detection/ ├── models/ │ └── yolov8n.pt # 预训练模型 ├── resources/ │ ├── test_images/ # 测试图片 │ └── test_videos/ # 测试视频 ├── ui/ │ └── main.ui # 主界面设计文件 ├── detect.py # 推理核心代码 ├── gui_main.py # PyQt5 主程序 └── requirements.txt

🧩 二、环境配置(requirements.txt)

python==3.8 torch==1.12.0+cu113 torchvision==0.13.0+cu113 opencv-python==4.6.0 PyQt5==5.15.6 ultralytics==8.0.0 numpy==1.21.0

安装命令:

pipinstall-r requirements.txt

🔍 三、推理核心:detect.py

# detect.py""" 基于 YOLOv8 的车辆行人检测器 支持 Car, Truck, Bus, Person """importcv2importnumpyasnpfromultralyticsimportYOLOimporttorchclassVehiclePersonDetector:def__init__(self,model_path="models/yolov8n.pt"):self.model=YOLO(model_path)self.class_names=["person","bicycle","car","motorcycle","truck","bus"]self.conf_threshold=0.4self.iou_threshold=0.5defdetect(self,frame):"""检测图像或视频帧"""results=self.model(frame,conf=self.conf_threshold,iou=self.iou_threshold)boxes=results[0].boxes.xyxy.cpu().numpy()scores=results[0].boxes.conf.cpu().numpy()cls_ids=results[0].boxes.cls.cpu().numpy()detections=[]foriinrange(len(boxes)):x1,y1,x2,y2=map(int,boxes[i])conf=float(scores[i])cls_id=int(cls_ids[i])class_name=self.class_names[cls_id]detections.append({'bbox':(x1,y1,x2,y2),'conf':conf,'class':class_name,'cls_id':cls_id})returndetectionsdefdraw_results(self,frame,detections):"""绘制检测结果"""fordetindetections:x1,y1,x2,y2=det['bbox']conf=det['conf']class_name=det['class']color=(0,255,0)ifclass_name=='person'else(255,0,0)# 人绿色,车红色cv2.rectangle(frame,(x1,y1),(x2,y2),color,2)label=f"{class_name}{conf:.2f}"cv2.putText(frame,label,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.6,color,2)returnframe

🖥️ 四、PyQt5 主界面:gui_main.py

# gui_main.py""" 基于深度学习的车辆行人检测系统(PyQt5 GUI) 支持图片、视频、摄像头 """importsysimportosfromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimportQt,QTimerimportcv2importnumpyasnpfromdetectimportVehiclePersonDetectorclassVehicleDetectionGUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("基于深度学习的车辆检测系统")self.setGeometry(100,100,1200,800)self.detector=Noneself.current_image=Noneself.results_info=[]self.init_ui()definit_ui(self):central_widget=QWidget()self.setCentralWidget(central_widget)layout=QVBoxLayout(central_widget)# 标题title_label=QLabel("<h1>基于深度学习的车辆检测系统</h1>")title_label.setAlignment(Qt.AlignCenter)layout.addWidget(title_label)# 主布局:左右分栏main_layout=QHBoxLayout()layout.addLayout(main_layout)# 左侧:图像显示区left_layout=QVBoxLayout()self.image_label=QLabel()self.image_label.setAlignment(Qt.AlignCenter)self.image_label.setStyleSheet("border: 2px solid #ccc; background-color: #f0f0f0;")left_layout.addWidget(self.image_label)# 检测结果表格self.result_table=QTableWidget()self.result_table.setColumnCount(5)self.result_table.setHorizontalHeaderLabels(["序号","文件路径","类别","置信度","坐标位置"])self.result_table.horizontalHeader().setStretchLastSection(True)left_layout.addWidget(self.result_table)main_layout.addLayout(left_layout)# 右侧:控制面板right_layout=QVBoxLayout()# 文件导入file_group=QGroupBox("文件导入")file_layout=QVBoxLayout()self.file_edit=QLineEdit()self.file_edit.setPlaceholderText("请选择图片或视频文件")self.browse_btn=QPushButton("📁 浏览")self.browse_btn.clicked.connect(self.browse_file)self.video_btn=QPushButton("🎥 选择视频文件")self.video_btn.clicked.connect(self.open_video)self.camera_btn=QPushButton("📹 摄像头未开启")self.camera_btn.clicked.connect(self.toggle_camera)file_layout.addWidget(self.file_edit)file_layout.addWidget(self.browse_btn)file_layout.addWidget(self.video_btn)file_layout.addWidget(self.camera_btn)file_group.setLayout(file_layout)right_layout.addWidget(file_group)# 检测结果result_group=QGroupBox("检测结果")result_layout=QVBoxLayout()self.time_label=QLabel("用时: 0.00s")self.target_count=QLabel("目标数目: 0")self.type_combo=QComboBox()self.type_combo.addItems(["全部","人","自行车","汽车","卡车","公交车"])self.conf_label=QLabel("置信度: 0.00%")self.coord_label=QLabel("目标位置:\nxmin: 0\tymin: 0\nxmax: 0\tymax: 0")result_layout.addWidget(self.time_label)result_layout.addWidget(self.target_count)result_layout.addWidget(self.type_combo)result_layout.addWidget(self.conf_label)result_layout.addWidget(self.coord_label)result_group.setLayout(result_layout)right_layout.addWidget(result_group)# 操作按钮btn_layout=QVBoxLayout()self.detect_btn=QPushButton("🔍 开始检测")self.detect_btn.clicked.connect(self.detect_image)self.save_btn=QPushButton("💾 保存")self.save_btn.clicked.connect(self.save_result)self.exit_btn=QPushButton("🚪 退出")self.exit_btn.clicked.connect(self.close)btn_layout.addWidget(self.detect_btn)btn_layout.addWidget(self.save_btn)btn_layout.addWidget(self.exit_btn)right_layout.addLayout(btn_layout)main_layout.addLayout(right_layout)defbrowse_file(self):path,_=QFileDialog.getOpenFileName(self,"选择图片","","Image Files (*.jpg *.png *.bmp)")ifpath:self.file_edit.setText(path)self.current_image=cv2.imread(path)self.display_image(self.current_image)defopen_video(self):path,_=QFileDialog.getOpenFileName(self,"选择视频","","Video Files (*.mp4 *.avi)")ifpath:self.file_edit.setText(path)self.cap=cv2.VideoCapture(path)self.timer=QTimer()self.timer.timeout.connect(self.update_frame)self.timer.start(30)deftoggle_camera(self):ifnothasattr(self,'cap'):self.cap=cv2.VideoCapture(0)self.camera_btn.setText("📷 摄像头已开启")self.timer=QTimer()self.timer.timeout.connect(self.update_frame)self.timer.start(30)else:self.cap.release()self.camera_btn.setText("📹 摄像头未开启")self.timer.stop()defupdate_frame(self):ret,frame=self.cap.read()ifret:self.display_image(frame)self.detect_and_display(frame)defdetect_image(self):ifnotself.current_image:QMessageBox.warning(self,"警告","请先加载图像!")returnstart_time=time.time()detections=self.detector.detect(self.current_image)end_time=time.time()self.time_label.setText(f"用时:{end_time-start_time:.3f}s")self.target_count.setText(f"目标数目:{len(detections)}")# 更新表格self.result_table.setRowCount(len(detections))fori,detinenumerate(detections):self.result_table.setItem(i,0,QTableWidgetItem(str(i+1)))self.result_table.setItem(i,1,QTableWidgetItem(os.path.basename(self.file_edit.text())))self.result_table.setItem(i,2,QTableWidgetItem(det['class']))self.result_table.setItem(i,3,QTableWidgetItem(f"{det['conf']:.2f}%"))self.result_table.setItem(i,4,QTableWidgetItem(str(det['bbox'])))# 显示第一个目标信息ifdetections:first_det=detections[0]self.conf_label.setText(f"置信度:{first_det['conf']:.2f}%")x1,y1,x2,y2=first_det['bbox']self.coord_label.setText(f"目标位置:\nxmin:{x1}\tymin:{y1}\nxmax:{x2}\tymax:{y2}")# 绘制结果detected_frame=self.detector.draw_results(self.current_image.copy(),detections)self.display_image(detected_frame)defdisplay_image(self,frame):rgb=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)h,w=rgb.shape[:2]scale=min(600/w,600/h)new_w,new_h=int(w*scale),int(h*scale)resized=cv2.resize(rgb,(new_w,new_h))qimg=QImage(resized.data,new_w,new_h,new_w*3,QImage.Format_RGB888)pixmap=QPixmap.fromImage(qimg)self.image_label.setPixmap(pixmap)defsave_result(self):ifnotself.current_image:returnpath,_=QFileDialog.getSaveFileName(self,"保存检测结果","","PNG Image (*.png)")ifpath:cv2.imwrite(path,self.current_image)QMessageBox.information(self,"成功","结果已保存!")defcloseEvent(self,event):ifhasattr(self,'cap'):self.cap.release()event.accept()defmain():app=QApplication(sys.argv)window=VehicleDetectionGUI()window.show()sys.exit(app.exec_())if__name__=="__main__":main()

✅ 五、运行说明

1. 下载预训练模型

wgethttps://github.com/ultralytics/assets/releases/download/v8.0.0/yolov8n.pt -O models/yolov8n.pt

2. 运行程序

python gui_main.py

📈 六、功能一览

功能支持
图片检测
视频检测
摄像头实时检测
目标分类✅(人、车、卡车等)
置信度显示
坐标信息
结果保存
UI美观

📥 七、打包建议

如需我为你打包成.zip文件,包含:

  • ✅ 完整 Python 代码
  • ✅ PyQt5 UI 文件(.ui
  • ✅ 预训练模型
  • ✅ 测试图片/视频
  • ✅ 编译脚本

请告诉我!


总结:本系统基于YOLOv8 + PyQt5实现,性能稳定,界面友好,适合用于交通监控、安防系统等场景。

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

万物识别模型版本管理:实现平滑升级不翻车

万物识别模型版本管理&#xff1a;实现平滑升级不翻车 作为一名长期与AI模型打交道的运维工程师&#xff0c;我最头疼的就是模型更新后服务突然崩溃的场景。上周刚更新的万物识别模型&#xff0c;因为版本兼容性问题导致识别准确率暴跌30%&#xff0c;不得不连夜回滚。如果你也…

作者头像 李华
网站建设 2026/2/18 3:31:58

农业AI应用:用万物识别监测作物生长状态

农业AI应用&#xff1a;用万物识别监测作物生长状态 作为一名农业科技创业者&#xff0c;我最近一直在寻找一种高效的方法来自动识别作物病虫害。田间环境复杂&#xff0c;部署传统监测系统成本高、维护难。经过多次尝试&#xff0c;我发现基于云端GPU环境验证核心算法是更可行…

作者头像 李华
网站建设 2026/2/18 2:43:38

ST7789V驱动上手指南:使用Arduino快速实现显示

从零点亮一块彩屏&#xff1a;ST7789V Arduino 快速上手实战你有没有过这样的经历&#xff1f;买来一块1.3英寸的彩色小屏幕&#xff0c;插上Arduino却只看到白屏、花屏&#xff0c;甚至毫无反应。调试几天无果后只能束之高阁——这几乎是每个嵌入式新手都会踩的坑。其实问题不…

作者头像 李华
网站建设 2026/2/16 11:45:58

多模态识别探索:CLIP中文环境快速搭建

多模态识别探索&#xff1a;CLIP中文环境快速搭建 作为一名研究生&#xff0c;想要研究CLIP模型在中文图文匹配任务中的表现&#xff0c;却苦于实验室服务器资源紧张&#xff1f;别担心&#xff0c;本文将手把手教你如何快速搭建一个CLIP中文实验环境&#xff0c;让你轻松开展多…

作者头像 李华
网站建设 2026/2/10 23:51:43

24小时上线:用预置镜像快速打造智能物品识别小程序

24小时上线&#xff1a;用预置镜像快速打造智能物品识别小程序 为什么选择预置镜像快速开发 最近我接到一个紧急需求&#xff0c;要为零售客户开发一个能识别商品的演示版小程序。作为一个小程序开发者&#xff0c;我对AI模型部署完全没有经验&#xff0c;但客户要求在24小时内…

作者头像 李华
网站建设 2026/2/11 13:26:45

使用ms-swift进行InternVL3.5高分辨率图像训练

使用 ms-swift 进行 InternVL3.5 高分辨率图像训练 在视觉大模型日益深入专业领域的今天&#xff0c;一张 224224 的缩略图早已无法满足实际需求。无论是医学影像中的微小病灶识别、遥感图像里的地物边界解析&#xff0c;还是设计图纸上的密集标注提取&#xff0c;都对模型的高…

作者头像 李华