《博主简介》

小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍 感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、 AI应用软件开发实战专栏【链接】

项目名称 项目名称
1.【 人脸识别与管理系统开发 2.【 车牌识别与自动收费管理系统开发
3.【 手势识别系统开发 4.【 人脸面部活体检测系统开发
5.【 图片风格快速迁移软件开发 6.【 人脸表表情识别系统
7.【 YOLOv8多目标识别与自动标注软件开发 8.【 基于YOLOv8深度学习的行人跌倒检测系统
9.【 基于YOLOv8深度学习的PCB板缺陷检测系统

二、 机器学习实战专栏【链接】 ,已更新31期,欢迎关注,持续更新中~~
三、 深度学习【Pytorch】专栏【链接】

《------正文------》

基本功能演示

摘要: PCB板缺陷检测 在电子制造行业中具有重要的意义。随着电子产品的普及和需求的不断增长,对PCB板的质量和可靠性要求也越来越高。PCB板作为电子产品的核心组件,其质量直接影响到整个产品的性能和稳定性。因此,对PCB板进行缺陷检测是确保产品质量的关键步骤。本文基于 YOLOv8深度学习框架 训练一个进行 PCB板缺陷检测 的模型,开发了一款 PCB板缺陷检测系统 ,可用于检测常见的 6种PCB板缺陷 。并结合 python PyQT5 实现了UI界面,更方便进行功能的展示。该软件支持 图片 视频 以及 摄像头 进行 PCB板缺陷检测 ,并保存 缺陷检测结果 。本文提供了完整的Python代码和使用教程,给感兴趣的小伙伴参考学习, 完整的代码资源文件获取方式见文末

点击跳转至文末 《完整相关文件及源码》 获取

PCB板缺陷检测 在电子制造行业中具有重要的意义。随着电子产品的普及和需求的不断增长,对PCB板的质量和可靠性要求也越来越高。PCB板作为电子产品的核心组件,其质量直接影响到整个产品的性能和稳定性。因此,对PCB板进行缺陷检测是确保产品质量的关键步骤。

PCB板缺陷检测的应用场景非常广泛,主要包括以下几个方面:
工业生产 :在PCB板的生产过程中,通过实时检测和识别各种缺陷类型,可以有效地提高生产效率和产品质量。同时,通过对缺陷数据的统计和分析,可以为生产过程提供优化建议,降低生产成本。
维修与维护 :在电子产品的使用过程中,可能会出现PCB板损坏的情况。通过对损坏的PCB板进行缺陷检测,可以快速定位问题所在,为维修人员提供有效的参考信息,缩短维修周期。
质量控制 :在PCB板的出厂检验环节,通过对PCB板进行缺陷检测,可以确保产品符合质量标准,提高客户满意度。此外,通过对历史缺陷数据的分析,可以发现潜在的质量问题,为企业的质量改进提供依据。
研发与设计 :在PCB板的设计阶段,通过对设计方案进行缺陷预测和评估,可以在设计初期发现并解决潜在问题,提高产品的可靠性和性能。同时,通过对不同设计方案的缺陷比较,可以为设计师提供优化建议,提高设计水平。

博主通过搜集PCB板缺陷的相关数据图片,根据YOLOv8的目标检测技术,基于 python与Pyqt5 开发了一款界面简洁的 PCB板缺陷检测系统 ,可以检测 常见的6种PCB板缺陷 。可 支持图片、视频以及摄像头跌倒检测 ,同时可以 将图片或者视频检测结果进行保存

软件基本界面如下图所示:
在这里插入图片描述

觉得不错的小伙伴,感谢点赞、关注加收藏!如果大家有任何建议或意见,欢迎在评论区留言交流!

一、软件核心功能介绍及效果演示

软件主要功能

1. 可用于检查常见的6种PCB板缺陷,缺陷分别为: 【缺失孔、老鼠咬痕、开路、短路、毛刺、铜渣】 ;
2.支持 图片、视频及摄像头 进行PCB板缺陷检测,同时 支持图片的批量检测
2. 界面可实时显示 目标位置 目标总数 置信度 用时 等信息;
3. 支持 图片 或者 视频 检测结果保存

(1)图片检测演示

点击 图片 图标,选择需要检测的图片,或者点击 文件夹图标 ,选择需要批量检测图片所在的文件夹,操作演示如下:
点击目标下拉框后,可以选定指定目标的结果信息进行显示。 点击 保存 按钮,会对视频检测结果进行保存,存储路径为: save_data 目录下。
注:1.右侧目标位置默认显示置信度最大一个目标位置。所有检测结果均在左下方表格中显示。
单个图片检测操作如下:
在这里插入图片描述

批量图片检测操作如下:
在这里插入图片描述

(2)视频检测演示

点击 视频 图标,打开选择需要检测的视频,就会自动显示检测结果。点击 保存 按钮,会对视频检测结果进行保存,存储路径为: save_data 目录下。
在这里插入图片描述

(3)摄像头检测演示

点击 摄像头 图标,可以打开摄像头,可以实时进行检测,再次点击 摄像头 图标,可关闭摄像头。
在这里插入图片描述

(4)保存图片与视频检测结果

点击 保存 按钮后,会将当前选择的 图片【含批量图片】或者视频 的检测结果进行保存。检测的图片与视频结果会存储在 save_data 目录下。
在这里插入图片描述
在这里插入图片描述

二、模型的训练、评估与推理

1.YOLOv8的基本原理

YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性。主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数, 可以在从 CPU 到 GPU 的各种硬件平台上运行
其主要网络结构如下:
在这里插入图片描述

2. 数据集准备与训练

通过网络上搜集关于PCB缺陷的各类图片,并使用LabelMe标注工具对每张图片中的PCB缺陷目标边框(Bounding Box)与类型进行标注。一共包含 683张图片 ,其中 训练集包含544张图片 验证集包含139张图片 ,部分图像及标注如下图所示。
在这里插入图片描述
在这里插入图片描述

图片数据的存放格式如下,在项目目录中新建 datasets 目录,同时将跌倒检测的图片分为训练集与验证集放入 PCB_DATASET 目录下。
在这里插入图片描述
同时我们需要新建一个 data.yaml 文件,用于存储训练数据的路径及模型需要进行检测的类别。YOLOv8在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。 data.yaml 的具体内容如下:

train: E:\MyCVProgram\PCBDetection\datasets\PCB_DATASET\train  # train images (relative to 'path') 128 images
val: E:\MyCVProgram\PCBDetection\datasets\PCB_DATASET\val  # val images (relative to 'path') 128 images
test:  # val images (optional)
# number of classes
nc: 6
# Classes
names: ["missing_hole", "mouse_bite", "open_circuit", "short", "spur", "spurious_copper"]

注:train与val后面表示需要训练图片的路径,建议直接写自己文件的绝对路径。
数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,batch参数用于调整训练的批次大小【根据内存大小调整,最小为1】,代码如下:

# 加载模型
model = YOLO("yolov8n.pt")  # 加载预训练模型
# Use the model
if __name__ == '__main__':
    # Use the model
    results = model.train(data='datasets/PCB_DATASET/data.yaml', epochs=250, batch=4)  # 训练模型
    # 将模型转为onnx格式
    # success = model.export(format='onnx')

3. 训练结果评估

在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况。YOLOv8在训练时主要包含三个方面的损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss),在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:
在这里插入图片描述

各损失函数作用说明:
定位损失box_loss:预测框与标定框之间的误差(GIoU),越小定位得越准;
分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;
动态特征损失(dfl_loss):DFLLoss是一种用于回归预测框与目标框之间距离的损失函数。在计算损失时,目标框需要缩放到特征图尺度,即除以相应的stride,并与预测的边界框计算Ciou Loss,同时与预测的anchors中心点到各边的距离计算回归DFLLoss。这个过程是YOLOv8训练流程中的一部分,通过计算DFLLoss可以更准确地调整预测框的位置,提高目标检测的准确性。
本文训练结果如下:
在这里插入图片描述

我们通常用PR曲线来体现精确率和召回率的关系,本文训练结果的PR曲线如下。mAP表示Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值。mAP@.5:表示阈值大于0.5的平均mAP,可以看到本文模型各类缺陷检测的mAP@0.5都达到了0.86以上,平均为0.92,结果还是很不错的。
在这里插入图片描述

4. 检测结果识别

模型训练完成后,我们可以得到一个最佳的训练结果模型best.pt文件,在runs/trian/weights目录下。我们可以使用该文件进行后续的推理检测。
图片检测代码如下:

# 所需加载的模型目录
path = 'models/best.pt'
# 需要检测的图片地址
img_path = "TestFiles/01_missing_hole_09.jpg"
# 加载预训练模型
# conf	0.25	object confidence threshold for detection
# iou	0.7	intersection over union (IoU) threshold for NMS
model = YOLO(path, task='detect')
# model = YOLO(path, task='detect',conf=0.5)
# 检测图片
results = model(img_path)
res = results[0].plot()
res = cv2.resize(res,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
cv2.imshow("YOLOv8 Detection", res)
cv2.waitKey(0)

执行上述代码后,会将执行的结果直接标注在图片上,结果如下:
在这里插入图片描述

以上便是关于此款PCB板缺陷检测系统的原理与代码介绍。基于此模型,博主用pythonPyqt5开发了一个带界面的软件系统,即文中第二部分的演示内容,能够很好的支持图片、视频及摄像头进行检测,同时支持检测结果的保存

关于该系统涉及到的完整源码、UI界面代码、数据集、训练代码、测试图片视频等相关文件,均已打包上传,感兴趣的小伙伴可以通过下载链接自行获取。

【获取方式】

关注下方名片G-Z-H:【阿旭算法与机器学习】,回复【软件】即可获取下载方式

本文涉及到的完整全部程序文件:包括python源码、数据集、训练代码、UI文件、测试图片视频等(见下图),获取方式见文末:
在这里插入图片描述

注意:该代码基于Python3.9开发,运行界面的主程序为MainProgram.py,其他测试脚本说明见上图。为确保程序顺利运行,请按照程序运行说明文档txt配置软件运行所需环境。

关注下方名片GZH:【阿旭算法与机器学习】,回复【软件】即可获取下载方式

以上便是博主开发的基于YOLOv8深度学习的PCB缺陷检测系统的全部内容,由于博主能力有限,难免有疏漏之处,希望小伙伴能批评指正
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!

随着电子产业的快速发展,印制电路PCB)的质量检测变得尤为重要。传统的PCB缺陷检测方法主要依赖人工,这种方法不仅效率低下,而且检测精度易受人为因素影响。为了解决这一问题,本文提出了一种基于YOLOv8PCB缺陷检测系统。该系统结合了深度学习和计算机视觉技术,能够自动、准确地检测出PCB上的各种缺陷。在本文中,我们详细介绍了系统的设计理念、技术架构和实现方法。通过实验验证,该系统在检测速度和准确性上都表现出显著的优势,大大提高了PCB缺陷检测的效率和可靠性。此外,我们还讨论了系统的实际应用前景和潜在改进方向,为电子制造行业的质量控制提供了一种新的解决方案。
随着社会和经济的持续发展,电力系统的投资与建设也日益加速。在电力系统中,输电线路作为电能传输的载体,是最为关键的环节之一。而绝缘子作为输电环节中的重要设备,在支撑固定导线,保障绝缘距离的方面有着重要作用。大多数高压输电线路主要架设在非城市内地区,绝缘子在输电线路中由于数量众多、跨区分布,且长期暴露在空气中,受恶劣自然环境的影响,十分容易发生故障。随着大量输电工程的快速建设,传统依靠人工巡检的模式,已经越来越难以适应高质量运维的要求。随着国网公司智能化要求的提升,无人机技术的快速应用,采取无人机智能化巡视,能够大幅度减少运维人员及时间,提升质量,因此得到快速发展。 深度学习技术的大量应用,计算机运算性能的不断提高,为无人机准确识别和定位绝缘子,实时跟踪拍摄开辟了新的解决途径。本文对输电线路中绝缘子进行识别及定位,利用深度学习技术采取基于YOLOv5 算法的目标检测手段,结合绝缘子数据集的特点,对无人机拍摄图片进行训练,实现对绝缘子精准识别和定位,大幅提升无人机巡检时对绝缘子设备准确跟踪、判定的效率,具有十分重要的应用效果。
数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):693 标注数量(xml文件个数):693 标注类别数:6 标注类别名称:["missing_hole","spurious_copper","spur","mouse_bite","open_circuit","short"] 每个类别标注的框数: missing_hole count = 497 spurious_copper count = 503 spur count = 488 mouse_bite count = 492 open_circuit count = 482 short count = 491 使用标注工具:labelImg 标注规则:对类别进行画矩形框 重要说明:暂无 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注
数据集介绍:PCB 表面缺陷检测数据集,真实采集高质量 PCB 表面含缺陷图片数据,数据集含多款不同 PCB 高清表面图片数据,包括俯拍正拍、旋转拍摄姿态。数据标注标签包括 missing_hole、mouse_bite、open_circuit、short、spur、spurious_copper 六个缺陷类别; ● 适用实际项目应用:PCB 表面缺陷检测项目,以及作为通用工业场景 PCB 表面缺陷检测数据集场景数据的补充; ● 标注说明:采用 labelimg 标注软件进行标注,标注质量高,提供 VOC(xml)、COCO (json)、YOLO (txt) 三种常见目标检测数据集格式,可以直接用于如 YOLO 等的算法训练; ● 附赠训练示例:提供 YOLOv8YOLOv5 一键训练脚本,提供 GPU(GPUs)、CPU、Mac(M芯片) 多平台训练方案支持,提供博主训练结果日志供参考; 注意:由于数据集资源超过 1G,所以托管在我的百度网盘,所以这里的资源格式是 PDF,内附数据集基本情况介绍以及数据集获取方式!
基于YOLOV5的PCB缺陷检测 一、数据集介绍 印刷电路PCB)瑕疵数据集:数据下载链接,是一个公共的合成PCB数据集,由北京大学发布,其中包含1386张图像以及6种缺陷(缺失孔,鼠标咬伤,开路,短路,杂散,伪铜),用于检测,分类和配准任务。选取其中445张图像进行了训练(下载了别人的)。 数据样本示例: 二、环境配置 1、github官网下载yolov5源码:https://github.com/ultralytics/yolov5 2、Anaconda安装(省略) 3、创建新的环境(pytho
YOLOv5是一种流行的目标检测算法,它在PyTorch框架下实现。我将使用PyQt创建一个用户界面,用于调用已经训练好的飞鸟检测模型来检测图像中的飞鸟。 首先,我们需要训练一个飞鸟检测模型。我将使用一个已经标注好的飞鸟数据集,该数据集共有26个样本,每个样本含有一张图像和相应的标注信息。这些标注信息包括飞鸟的边界框和类别标签。我们可以通过YOLOv5来训练这个数据集,并生成一个经过训练的飞鸟检测模型。 接下来,我将使用PyQt框架创建一个简单的用户界面。该界面包含一个文件选择按钮,用于选择待检测的图像文件。当用户选择完图像文件后,我们可以通过调用训练好的模型来进行检测。检测过程中,模型将会在图像中标注出检测到的飞鸟边界框,并显示相应的类别标签。 通过这个简单的用户界面,用户可以方便地选择待检测的图像,并获得飞鸟检测的结果。这个界面可以帮助用户了解飞鸟检测模型的性能,并在需要时进行改进。 总而言之,我将使用PyQt框架创建一个用户界面,用于调用训练好的飞鸟检测模型来检测图像中的飞鸟。这个界面将能够方便地使用训练好的模型来进行飞鸟检测,并提供标注信息以帮助用户了解检测结果。