深度学习目标检测算法如何训练 焊接缺陷检测数据集 飞溅 重叠 焊接线 孔隙 缺口 裂纹 坑洞 穿透 过填等检测识别 焊接缺陷检测数据集8876张存在数据增强处理yolo和voc两种标注方式10类标注数量Overlap: 173 — 重叠Spatter: 2491 — 飞溅Welding_line: 10738 — 焊接线Porosity: 4023 — 孔隙Undercut: 319 — 缺口Crack: 1434 — 裂纹Overfill: 494 — 过填Weld Bead Irregularity: 433 — 焊缝不规则Burn-through: 449 — 穿透Crater: 449 — 坑洞Image num: 8876焊接缺陷检测 YOLOv11一、数据集基础信息汇总焊接缺陷检测数据集总图片数量8876张已做数据增强标注格式YOLO‑txt、VOC‑xml双格式缺陷类别10类序号类别名称中文释义标注框数量0Overlap重叠1731Spatter飞溅24912Welding_line焊接线107383Porosity孔隙40234Undercut缺口(咬边)3195Crack裂纹14346Overfill过填(余高)4947Weld Bead Irregularity焊缝不规则4338Burn‑through烧穿/穿透4499Crater弧坑/坑洞449⚠️ 类别样本不均衡提醒Overlap、Undercut标注数量很少属于小样本缺陷训练时建议开启损失权重、马赛克增强、复制粘贴增强改善效果。二、数据集划分建议总样本8876 训练集(train)7101张 80% 验证集(val)888张 10% 测试集(test)887张 10%三、YOLO配置文件 weld_defect.yamlpath:./datasets/weld_defecttrain:images/trainval:images/valtest:images/testnames:0:Overlap1:Spatter2:Welding_line3:Porosity4:Undercut5:Crack6:Overfill7:Weld_Bead_Irregularity8:Burn-through9:Crater四、训练脚本 train_weld.pyYOLOv11fromultralyticsimportYOLO# 加载YOLOv11模型可选 n/s/m/l/xmodelYOLO(yolo11s.pt)resultsmodel.train(dataweld_defect.yaml,epochs100,imgsz640,batch12,device0,workers4,patience15,mosaic1.0,mixup0.1,copy_paste0.2,# 小样本缺陷增强缓解类别不均衡projectruns/train,nameweld_defect_yolo11)五、验证测试脚本 val_weld.pyfromultralyticsimportYOLO modelYOLO(./runs/train/weld_defect_yolo11/weights/best.pt)# 在测试集上评估metricsmodel.val(splittest)print(fmAP0.5:{metrics.box.map50:.3f})print(fmAP0.5:0.95:{metrics.box.map:.3f})六、预测推理脚本 predict_weld.pyfromultralyticsimportYOLO modelYOLO(./runs/train/weld_defect_yolo11/weights/best.pt)#图片检测resmodel.predict(sourceweld_test.jpg,saveTrue,conf0.4)#视频检测#res model.predict(sourceweld_video.mp4,saveTrue,conf0.4)#摄像头实时检测#res model.predict(source0,saveTrue,conf0.4)七、PyQt5 焊接缺陷可视化检测界面完整源码weld_gui.pyimportsysimportcv2fromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QPushButton,QLabel,QFileDialog,QTextEdit)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromultralyticsimportYOLO modelYOLO(./runs/train/weld_defect_yolo11/weights/best.pt)classDetThread(QThread):send_imgpyqtSignal(object)send_resultpyqtSignal(list)def__init__(self,source):super().__init__()self.sourcesource self.run_flagTruedefrun(self):capcv2.VideoCapture(self.source)whileself.run_flag:ret,framecap.read()ifnotret:breakresmodel(frame,conf0.4)boxesres[0].boxes det_info[]forboxinboxes:x1,y1,x2,y2map(int,box.xyxy[0])conffloat(box.conf[0])clsint(box.cls[0])det_info.append([x1,y1,x2,y2,conf,cls])cv2.rectangle(frame,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(frame,f{model.names[cls]}{conf:.2f},(x1,y1-8),cv2.FONT_HERSHEY_SIMPLEX,0.45,(0,255,0),1)self.send_img.emit(frame)self.send_result.emit(det_info)cap.release()classWeldDetWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOv11焊接缺陷检测系统)self.resize(1250,820)self.init_ui()self.det_threadNonedefinit_ui(self):self.img_labelQLabel(self)self.img_label.setGeometry(20,60,780,650)self.img_label.setStyleSheet(border:1px solid #777;)self.btn_imgQPushButton(图片缺陷检测,self)self.btn_img.setGeometry(840,60,200,40)self.btn_img.clicked.connect(self.detect_image)self.btn_videoQPushButton(视频缺陷检测,self)self.btn_video.setGeometry(840,120,200,40)self.btn_video.clicked.connect(self.detect_video)self.btn_camQPushButton(摄像头实时检测,self)self.btn_cam.setGeometry(840,180,200,40)self.btn_cam.clicked.connect(self.detect_camera)self.result_textQTextEdit(self)self.result_text.setGeometry(840,250,340,450)self.result_text.setPlaceholderText(缺陷检测结果、坐标、置信度信息)defshow_frame(self,frame):rgbcv2.cvtColor(frame,cv2.COLOR_BGR2RGB)h,w,chrgb.shape bytes_per_linech*w q_imgQImage(rgb.data,w,h,bytes_per_line,QImage.Format_RGB888)self.img_label.setPixmap(QPixmap.fromImage(q_img).scaled(self.img_label.size(),Qt.KeepAspectRatio))defshow_result(self,det_list):self.result_text.clear()totallen(det_list)self.result_text.append(f检测缺陷总数{total}\n)foridx,iteminenumerate(det_list):x1,y1,x2,y2,conf,clsitem cls_namemodel.names[cls]self.result_text.append(f[{idx1}]缺陷:{cls_name}\n置信度:{conf:.2f}\nf位置:xmin{x1},ymin{y1},xmax{x2},ymax{y2}\n)defdetect_image(self):path,_QFileDialog.getOpenFileName(self,打开焊接图像,,Image(*.jpg *.png *.jpeg))ifnotpath:returnframecv2.imread(path)resmodel(frame,conf0.4)boxesres[0].boxes info[]forboxinboxes:x1,y1,x2,y2map(int,box.xyxy[0])conffloat(box.conf[0])clsint(box.cls[0])info.append([x1,y1,x2,y2,conf,cls])cv2.rectangle(frame,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(frame,f{model.names[cls]}{conf:.2f},(x1,y1-8),cv2.FONT_HERSHEY_SIMPLEX,0.45,(0,255,0),1)self.show_frame(frame)self.show_result(info)defdetect_video(self):path,_QFileDialog.getOpenFileName(self,打开焊接视频,,Video(*.mp4 *.avi))ifnotpath:returnself.det_threadDetThread(path)self.det_thread.send_img.connect(self.show_frame)self.det_thread.send_result.connect(self.show_result)self.det_thread.start()defdetect_camera(self):self.det_threadDetThread(0)self.det_thread.send_img.connect(self.show_frame)self.det_thread.send_result.connect(self.show_result)self.det_thread.start()if__name____main__:appQApplication(sys.argv)winWeldDetWindow()win.show()sys.exit(app.exec_())环境依赖pipinstallultralytics opencv-python pyqt5

相关新闻

最新新闻

基于运动模仿的肌肉骨骼运动控制算法与管理系统实现

基于运动模仿的肌肉骨骼运动控制算法与管理系统实现

每年毕业季,都会有一批计算机专业的学生碰到类似的题目:名字很长、看起来像纯学术,但实际要求里却写着“设计并实现一个系统”。“基于运动模仿的生物合理肌肉骨骼运动控制算法”就是典型的这一类题目。只看题目,你会以为要做的是…

2026/9/1 2:41:17
USBView深度解析:掌握USB调试与描述符分析技巧

USBView深度解析:掌握USB调试与描述符分析技巧

简介:USBView是由微软推出的USB调试工具,面向驱动开发者和系统管理员,用于查看、监控并排查USB设备连接、枚举及数据传输过程中的问题。本资源是USBView的完整工程源码与编译工具包,不仅包含可直接运行的exe程序,还提供…

2026/9/1 2:41:17
PlugClaw深度解析:OpenClaw智能体硬件终端,即插即用部署实战

PlugClaw深度解析:OpenClaw智能体硬件终端,即插即用部署实战

这两年的自主智能体(Agent)项目不少,但真正能让普通用户“开机即用”的硬件方案几乎没有。OpenClaw 作为当前社区热度很高的智能体框架,部署方式虽然覆盖 Windows、macOS、Docker、云服务器,但配置过程仍然劝退大量用户…

2026/9/1 2:41:17
PlugClaw评测:原生安卓如何让OpenClaw部署不再难?

PlugClaw评测:原生安卓如何让OpenClaw部署不再难?

先说一个我自己的感受:之前为了把一个开源 AI 代理框架跑起来,我前前后后折腾了一个周末。先是 Python 环境版本冲突,接着模型接口的密钥配错,进程跑到半夜悄悄退出,最后还得靠写守护脚本才能让它稳定挂着。那之后我就…

2026/9/1 2:41:17
搜狐畅游Java岗秋招笔试复盘:考点、编程题与避坑指南

搜狐畅游Java岗秋招笔试复盘:考点、编程题与避坑指南

我是2023届计算机专业的,秋招主投游戏公司和互联网中厂,搜狐畅游的Java开发岗当时是我重点准备的目标之一。笔试安排在九月中旬,用的牛客网在线笔试系统,全程两个半小时,整体题量不算变态,但知识点覆盖面确…

2026/9/1 2:41:17
STM32人流量检测系统设计:从红外传感器到状态机算法的嵌入式实战

STM32人流量检测系统设计:从红外传感器到状态机算法的嵌入式实战

简介:本资源是一套面向嵌入式初学者与STM32进阶开发者的综合性实践项目包,聚焦人流量检测这一典型物联网应用场景,覆盖传感器驱动、实时计数、无线通信及外设控制等核心能力训练。压缩包共含6个子项目(含程序代码、仿真工程、硬件…

2026/9/1 2:36:17