尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

X光PCB缺陷检测全套项目文档(YOLOv11n + PyQt5可视化界面)YOLO11n模型如何训练x光PCB板缺陷检测数据集

X光PCB缺陷检测全套项目文档(YOLOv11n + PyQt5可视化界面)YOLO11n模型如何训练x光PCB板缺陷检测数据集 X光PCB缺陷检测全套项目文档YOLOv11n PyQt5可视化界面一、数据集完整参数统计表项目参数详细信息数据集名称X光PCB电路板缺陷检测数据集总图像数量5955张单图尺寸640×640数据划分训练集4170张验证集1192张测试集593张标注格式YOLO(txt)、VOC(xml)、COCO(json) 三格式全覆盖缺陷总类别7类PCB工艺/元器件缺陷7类缺陷样本标注数量明细类别序号英文类别名中文名称含该缺陷图片数缺陷标注框总数0Damaged components元器件损坏406884641Pin short circuit引脚短路288460352Miscellaneous tin杂锡2492633Missing components元器件缺失5284358644Chip scratches芯片划痕304146335Substrate scratches基板划痕368068226Solder joint burrs焊点毛刺251258数据集特点样本不均衡元器件缺失样本最多杂锡、焊点毛刺属于小样本缺陷X光透视成像可检测电路板内部隐藏缺陷肉眼可见光无法识别三种标注格式可自由转换适配各类检测框架图像统一裁剪640×640无需预处理缩放直接适配YOLO输入尺寸。二、运行环境配置环境版本清单Python3.8深度学习框架torch、torchvision图像处理opencv-pythonUI界面PyQt5检测框架ultralytics(YOLOv11)系统兼容Windows / Linux 双系统通用一键安装依赖命令pipinstalltorch1.11.0torchvision0.12.0 ultralytics opencv-python PyQt5 numpy pillow三、项目文件整体目录结构PCB_Xray_Detect/ ├── dataset/ # 完整数据集 │ ├── images/ │ │ ├── train/ # 训练图片 │ │ ├── val/ # 验证图片 │ │ └── test/ # 测试图片 │ ├── labels/ │ │ ├── train/ # YOLO txt标注 │ │ ├── val/ │ │ └── test/ │ ├── voc_annotations/ # VOC xml标注文件 │ ├── coco_annotations/ # COCO json标注文件 │ └── pcb_defect.yaml # YOLO数据集配置文件 ├── weights/ │ └── best.pt # 训练80轮后最优权重 ├── train.py # 模型训练源码 ├── test_eval.py # 模型测试精度评估源码 ├── ui/ │ ├── main.ui # Qt界面设计文件 │ ├── resource.qrc # 图标资源文件 │ ├── resource_rc.py # qrc编译后的python资源文件 │ └── icons/ # 界面图标素材 ├── pcb_gui.py # PyQt5主界面运行源码 └── 使用说明文档.md四、数据集yaml配置文件pcb_defect.yamlpath:./datasettrain:images/trainval:images/valtest:images/testnc:7names:0:Damaged components1:Pin short circuit2:Miscellaneous tin3:Missing components4:Chip scratches5:Substrate scratches6:Solder joint burrs五、训练代码 train.pyfromultralyticsimportYOLO# 加载YOLOv11n轻量化网络modelYOLO(yolov11n.yaml)# 训练参数设置train_resultmodel.train(data./dataset/pcb_defect.yaml,epochs80,imgsz640,batch16,device0,# 有GPU填0无GPU改为cpuworkers4,patience12,iou0.45,conf0.25,mosaic0.8,mixup0.1,saveTrue,projectPCB_Xray_Result,nameyolov11n_80epoch)print(训练结束最优权重保存在 runs/PCB_Xray_Result/yolov11n_80epoch/weights/best.pt)六、测试评估代码 test_eval.pyfromultralyticsimportYOLO# 载入训练完成的最优权重modelYOLO(./weights/best.pt)# 验证集精度计算metricsmodel.val(data./dataset/pcb_defect.yaml,imgsz640,conf0.25,iou0.45)# 打印核心精度指标print(fmAP0.5:{metrics.box.map50:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})# 单张图片测试推理model.predict(source./dataset/images/test,saveTrue,save_txtTrue,save_confTrue)print(测试图片推理完成结果已保存)七、PyQt5可视化界面全套源码1、资源文件编译说明resource.qrc 存放图标使用命令编译pyrcc5 resource.qrc-oresource_rc.py2、主界面运行代码 pcb_gui.pyimportsysimportcv2importnumpyasnpfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QFileDialog,QMessageBox)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQt,QTimerfromultralyticsimportYOLOfromuiimportUi_MainWindowimportresource_rcclassPCB_Detect_Window(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)# 加载训练好的PCB缺陷模型self.modelYOLO(./weights/best.pt)self.capNoneself.timerQTimer()self.timer.timeout.connect(self.camera_frame)self.save_result_list[]# 按钮绑定事件self.btn_img.clicked.connect(self.image_detect)self.btn_video.clicked.connect(self.video_detect)self.btn_camera.clicked.connect(self.camera_open)self.btn_save.clicked.connect(self.save_all_result)self.btn_exit.clicked.connect(self.close)# 图片检测defimage_detect(self):file_path,_QFileDialog.getOpenFileName(self,选择X光PCB图片,,图片文件(*.jpg *.png *.jpeg))ifnotfile_path:returnresultsself.model(file_path,conf0.3)self.show_result(results[0])# 视频检测defvideo_detect(self):video_path,_QFileDialog.getOpenFileName(self,选择视频文件,,视频(*.mp4 *.avi))ifnotvideo_path:returnself.capcv2.VideoCapture(video_path)self.timer.start(30)# 摄像头实时检测defcamera_open(self):ifself.timer.isActive():self.timer.stop()self.cap.release()returnself.capcv2.VideoCapture(0)self.timer.start(30)# 读取画面帧推理defcamera_frame(self):ret,frameself.cap.read()ifnotret:self.timer.stop()returnresultsself.model(frame,conf0.3)self.show_result(results[0])# 渲染检测画面数据展示defshow_result(self,res):imgres.plot()h,w,cimg.shape bytes_per_linec*w q_imgQImage(img.data,w,h,bytes_per_line,QImage.Format_RGB888).rgbSwapped()self.label_display.setPixmap(QPixmap.fromImage(q_img).scaled(self.label_display.size(),Qt.KeepAspectRatio))# 统计缺陷总数、坐标、置信度boxesres.boxes total_numlen(boxes)self.label_total.setText(f缺陷总数量{total_num})self.table_result.setRowCount(total_num)self.save_result_list.clear()foridx,boxinenumerate(boxes):cls_idxint(box.cls)cls_nameself.model.names[cls_idx]conffloat(box.conf)x1,y1,x2,y2map(int,box.xyxy[0])self.save_result_list.append([cls_name,round(conf,3),x1,y1,x2,y2])self.table_result.setItem(idx,0,QtWidgets.QTableWidgetItem(str(idx1)))self.table_result.setItem(idx,1,QtWidgets.QTableWidgetItem(cls_name))self.table_result.setItem(idx,2,QtWidgets.QTableWidgetItem(f{conf:.2f}))self.table_result.setItem(idx,3,QtWidgets.QTableWidgetItem(f({x1},{y1})-({x2},{y2})))# 导出检测结果defsave_all_result(self):iflen(self.save_result_list)0:QMessageBox.information(self,提示,暂无检测数据)returnsave_path,_QFileDialog.getSaveFileName(self,保存检测报告,pcb缺陷检测结果.txt,txt文件(*.txt))withopen(save_path,w,encodingutf-8)asf:f.write(序号\t缺陷类型\t置信度\t坐标x1,y1,x2,y2\n)forlineinself.save_result_list:f.write(f{line[0]}\t{line[1]}\t{line[2]},{line[3]},{line[4]},{line[5]}\n)QMessageBox.information(self,完成,检测结果保存成功)if__name____main__:appQApplication(sys.argv)windowPCB_Detect_Window()window.show()sys.exit(app.exec_())八、UI界面功能详情核心功能图片检测本地单张X光PCB图片导入推理绘制缺陷框视频检测PCB巡检视频逐帧识别缺陷摄像头实时检测外接工业相机在线实时X光PCB检测数据实时展示缺陷总数量每类缺陷置信度缺陷框像素坐标(xmin,ymin,xmax,ymax)结果导出txt文档批量保存全部检测记录启停切换一键关闭摄像头/视频流九、运行操作步骤Windows系统安装Python3.8配置环境变量执行依赖安装命令解压完整项目文件夹确保路径无中文运行训练python train.py80轮训练完成后自动生成best.pt权重启动可视化界面python pcb_gui.py选择图片/视频/摄像头进行缺陷检测可导出检测报表Linux系统搭建python3.8虚拟环境pip安装依赖包赋予文件执行权限训练、界面启动命令和Windows一致十、补充说明针对杂锡、焊点毛刺小样本缺陷可通过复制增强、自适应缩放提升召回率模型推理速度快适配工业PCB产线在线质检场景界面无需输入命令行纯鼠标可视化操作训练完成后可导出ONNX模型部署嵌入式工业设备。
返回列表