【AI加持】基于PyQt5+YOLOv8+DeepSeek的太阳能电池板缺陷检测系统(详细介绍)

文章目录


本系统功能强大支持对太阳能板的裂纹、栅线、脏污三类缺陷进行检测,支持多种数据数据并且接入了AI实现了对当前分析结果的评估,欢迎了解!

一.前言

近年来光伏产业迅速扩张,太阳能电池板的生产规模逐年攀升,随之而来的是对高效率、高可靠性的缺陷检测需求的不断增强。传统人工目检方式在面对组件数量庞大、缺陷类型多样、产线节奏高速等现实条件时,逐渐暴露出效率低、漏检率高、稳定性不足等问题,已经难以满足现代光伏制造的质量控制要求。在此背景下,深度学习与机器视觉技术的结合成为新的发展方向,其中 YOLOv8 以其检测速度快、准确率高、适应性强的优势,成为识别裂纹、断栅、脏污等多类复杂缺陷的理想模型。同时,为了使检测流程更贴近实际工厂使用场景,系统通常需要具备稳定的桌面端交互界面,因此 PyQt5 被选用于构建操作友好、易维护的可视化平台。随着大模型技术兴起,DeepSeek 的集成使系统在数据分析、模型优化与智能辅助方面具备更强能力,从而推动检测平台从"自动识别"迈向"智能决策"。在多项技术共同成熟的推动下,基于 PyQt5、YOLOv8 与 DeepSeek 的太阳能电池板缺陷检测系统应运而生,为光伏行业带来更高效、更智能的质量检测解决方案。

二.核心技术&知识

在这章我将要介绍本系统的核心技术。

1.PyQt5

PyQt5 是一套用于创建跨平台桌面应用程序的 Python GUI 工具包,它是 Qt 应用框架的 Python 绑定。通过 PyQt5,开发者可以使用 Python 编写具有现代图形界面的应用程序,支持丰富的控件、信号与槽机制、窗口管理、事件处理等功能。它兼容主流操作系统(如 Windows、macOS 和 Linux),适用于开发各种规模的桌面软件,常与 Qt Designer 配合使用以加快开发效率。

2.YOLOv8

YOLOv8(You Only Look Once version 8)是由 Ultralytics 推出的最新一代实时目标检测模型,属于 YOLO 系列的改进版本。相比前代模型,YOLOv8 在精度、速度和灵活性上都有显著提升,支持目标检测、图像分割、姿态估计等多任务处理。它采用了更加高效的网络结构和训练策略,并提供开箱即用的 Python 接口和命令行工具,适用于边缘设备和云端部署,广泛应用于安防监控、自动驾驶、工业检测等场景。

3.DeepSeek

DeepSeek是由深度求索公司开发的AI大模型助手,作为纯文本模型,我擅长自然语言处理、文档分析和智能对话。当与YOLO(You Only Look Once)实时目标检测系统结合时,可以形成强大的多模态应用架构------YOLO系统负责实时视觉识别和目标检测,快速准确地识别图像或视频流中的物体;而我则对YOLO检测到的结果进行深度语义分析和上下文理解,提供物体属性的详细解读、场景描述、行为分析以及决策建议。这种结合使得计算机视觉的"看到"与AI的"理解"完美融合,可广泛应用于智能监控、自动驾驶、工业质检等领域,实现从视觉感知到智能决策的完整闭环。

4.CSV

本系统使用CSV进行数据的存储与数据导出。

CSV(Comma-Separated Values)是一种简单通用的文本文件格式,以纯文本形式存储表格数据。它用逗号分隔不同的字段,每行代表一个数据记录,类似于电子表格或数据库中的行。由于其格式简单、易于读写且兼容性强,CSV被广泛应用于数据交换、导出和存储,支持几乎所有常见的办公软件和编程语言处理,是数据分析和系统间传输结构化信息时最常用的轻量级格式之一。

5.多线程

PyQt5 的多线程通常通过 QThread 类实现,它允许在 GUI 程序中运行耗时的操作而不阻塞主线程(即界面线程),从而保持界面响应。使用 PyQt5 的多线程方法通常有两种方式:继承 QThread 或使用 QRunnable 搭配 QThreadPool。推荐方式是将耗时任务写在一个独立的工作对象中,并通过 moveToThread() 将其移到子线程中运行,同时使用信号(pyqtSignal)与主线程通信。这种方式更加安全、结构清晰,适合复杂项目的线程管理。

6.光伏组件常见缺陷

1.裂纹(Cracks)

裂纹是硅片内部或表面出现的微小断裂,包括 微裂(Micro-crack) 和 贯穿裂纹。

原因:

运输搬运中的冲击和振动

热膨胀/冷缩造成的应力

生产过程(切片、焊接)残余应力

安装时的夹持或支架不均匀受力

影响:

载流子迁移路径被切断,导致局部失效

可能扩大成"隐裂",形成严重的功率衰减

易在 EL 图像中显现,肉眼不易识别

2.栅线缺陷(Grid)

问题:

栅线断裂:电流被阻断,形成热点

脱落、印刷不良:串联电阻增大、效率下降

腐蚀、氧化:长期性能衰退

原因:

印刷或烧结工艺不稳定

高湿、高盐环境导致腐蚀

焊接张力、机械损伤

影响:

电流分布不均,局部高温

整体输出功率下降

严重时可能损坏组件封装结构

3.脏污/斑点(Spots)

组件表面或内部出现的异常点状、块状污染或缺陷,来源多样。

类型与成因:

表面遮挡:灰尘、鸟粪等造成短时功率下降

封装老化斑点:EVA 褐化(Browning)、背板衰减

电池片表面污染:印刷前工艺不洁

热点斑点:在红外图中为高温点

PID 暗斑:高电压导致漏电形成的暗区

影响:

降低组件输出

斑点导致局部过热,可能加速封装老化

若形成热点,可进一步损坏电池片

三.核心功能

1.登录注册

1.登录

软件启动后首先进入登录页面,用户需要输入正确的用户名和密码才能使用本系统的正式功能,登录页面整体采用了垂直布局,局部采用了水平布局,登录界面简约不简单,登录功能后端采用CSV本地文件存储用户信息,每次登录都是通过查库进行验证的,实现了流程标准化。

我们设计了简约的登录注册界面展示与用户交互的所有组件,登录注册界面的标题展示了系统的名称。

2.注册

没有账号的用户需要进行注册,注册操作流程十分简单,用户点击登录界面的注册按钮就跳转到了注册窗口,用户需要输入自定义的用户名和两次匹配的密码才能完成登录,值得一提的是,成功注册的用户软件会自动填写用户名和密码到登录界面,实现了登录流程路径的简化。

2.主界面

用户通过输入自己的用户名和密码登录到本系统后进入主界面,主界面内容十分丰富,我来一一介绍:首先软件整体是垂直布局,顶部是系统的标题,从左到右依次展示了系统的作者信息、系统名称、当前时间以及CPU内存占用情况,下方为水平布局,左侧是系统的导航区域,我们设计了windows风格支持展开与收缩的内容导航区域,右侧是内容核心区域,通过点击导航按钮切换展示内容,主界面主要展示了以日期为维度统计的数据、用户信息操作按钮、系统信息、系统环境信息以及实时CPU、内存可视化折线图

3.图像检测界面

1.检测结果展示

用户通过点击左侧导航栏按钮切换到图像检测界面,在此界面支持选择图像进行输入,用户选择完之后被选择的图像会展示在左侧并且展示图像绝对路径信息,用户可以通过点击右侧的"进行检测"按钮对输入的图像数据进行检测,系统会自动调用YOLOv8相关算法根据指定的参数对输入图像内容进行检测,最后将检测结果展示到右侧,这样用户可以通过比对左右图像的区别得到直观的检测结果,系统自动使用红色边框框选出目标区域并且使用红色文字展示出目标类别以及它的置信度,这些参数和展示效果都可以在设置页面进行详细设置。

2.导出检测结果

我们设置了检测结果区域,包括检测目标数量的展示以及详细检测结果表格,用户可以更加直观地看到检测结果数据,另外当用户检测结束之后右侧的三个按钮自动设置为可以点击,这三个按钮的作用分别是:

导出结果:用户可以将检测结果进行导出,导出的文件格式可以是Excel、CSV、TXT,可以根据情况自行选择导出格式,我截图给大家看下导出的CSV文件内容格式。

3.可视化展示

然后就是可视化展示,用户可以点击进行可视化按钮,查看对于本次检测的可视化效果,系统内置了四种可视化效果:分别是:目标位置热力图、目标面积占比、置信度分布直方图、检测能力柱状图,这些图标通过不同维度对当前数据进行了可视化展示,更便于用户理解,这里指的一体的是,支持可视化图表进行导出操作,用户可以点击紫色的导出按钮,对当前的可视化效果图表进行导出,生成一张本地的PNG图像文件。

4.AI(DeepSeek)智能分析

将YOLOv8球体检测系统与DeepSeek等AI大模型深度融合,能够实现从"单纯检测"到"智能认知"的跨越式升级。该系统在YOLOv8高效精准的球体定位能力基础上,融入了DeepSeek强大的语义理解和推理决策能力,不仅可以实时识别球体位置,还能深度分析场景语义、生成战术策略并提供智能决策支持,从而在体育分析、工业质检和机器人视觉等领域构建出更加智能化、自适应的一体化解决方案。

这里是软件的另外一个核心:AI智能分析,我们的目标检测系统接入了DeepSeek大模型,支持对当前检测结果数据进行AI分析,AI会通过不同维度对当前检测结果进行多角度分析,最后生成检测结果分析报告,用户可以根据这个结果对系统进行调整,不断完善系统功能和目标检测准确度!

在AI分析结束后下方会展示一些按钮,用户可以方便地复制结果、导出文本内容、生成PDF报告、重新生成以及关闭,多重的操作方式给于用户了多种选择!

4.视频检测界面

1.视频文件检测

我们的系统支持视频内容中的球体检测,支持输入的视频类型包括:视频文件、视频流以及摄像头,通过识别视频画面的内容对内容中的目标球体进行检测,试试标注与展示,通过相关帧率控制保证了视频的流畅性,用户可以通过比对左右两侧的画面使用肉眼评估当前检测结果,我们的视频检测界面拥有图像检测界面相同的操作功能,这里不多赘述。

2.摄像头内容检测

用户点击"进行检测"按钮之后系统会自动调用摄像头,打开摄像头展示摄像头画面,实时检测目标画面中的球体,通过左右画面比对让用户看到检测结果,这里本人就不露脸啦~

5.系统设置界面

我们的系统是支持简单的参数设置的,具体可以设置目标检测模型、置信度阈值(Conf)、交并比阈值(IOU)、还有一些检测结果控制参数,比如检测框展示、目标类别展示、目标置信度展示,用户可以点击绿色的刷新按钮刷新可用模型,亦可通过点击退出按钮退出系统或者退出登录,本设置页面实现了目标检测参数的灵活配置!

6.关于软件界面

我们使用富文本html的形式展示了软件相关的信息,包括系统用到的相关技术,对于二维的数据使用二维表进行了展示,最底部放置了四个按钮,分别是:关于YOLO、关于软件、关于作者、关于QT,点击之后都会弹出对应的信息提示框,这个页面的作用是让用户更多的了解软件和创作者信息,跨过技术的鸿沟!

四.数据集

在太阳能电池板缺陷检测任务中,YOLOv8 以其高实时性和强鲁棒性,突破了传统检测方式在速度、精度与复杂场景适应性上的瓶颈。过去依赖人工巡检或基于固定阈值的简单图像处理算法,在裂纹、热斑、遮挡、失配等多类型缺陷共存的情况下,极易出现漏检与误检,其处理效率也难以满足大规模光伏电站、组件生产线等高频检测场景的要求。相比之下,YOLOv8 能稳定保持 30 FPS 以上的实时推理速度,对多类别细微缺陷的识别准确率可达到 95%+,显著提升光伏运维与质检系统的自动化与智能化水平。

随着智能制造与智慧能源的持续推进,电池板缺陷检测逐渐成为组件生产质控、无人化巡检、故障预警与健康评估中的关键环节。本系统将 YOLOv8 的端到端检测能力与 DeepSeek 的特征分析、推理优化结合,不仅可精准输出缺陷位置与类别,还能进一步辅助判断缺陷成因、扩散趋势等关键信息。结合 PyQt5 构建的可视化界面,实现检测、展示、管理的一体化流程,为打造高可靠度的光伏智能检测平台提供坚实技术基础,加速光伏场站与制造流程的数字化升级。

1.数据准备

本系统附带4800张太阳能电池板缺陷检测测试集、验证集,大家可以根据自己的情况自行训练数据自己的数据集!

我们为模型训练准备了几百张球体图像,其中大多数为网络图片,然后使用VOC的格式存储数据标注文件

数据标注文件格式为YOLO格式,如下:

2.数据集处理、划分

划分数据集,YOLO官方推荐的是测试集:验证集为8:2,我们这里撰写了一个随机划分的脚本,能够按照8:2随机划分数据。
脚本用于从原始数据集中自动构建 YOLO 训练所需的目录结构。它会读取标签文件列表,按 8:2 的比例随机划分为训练集和验证集,并在输出目录中分别创建对应的 images 与 labels 文件夹。随后,程序根据标签文件名匹配同名图像,找到后将图像和标签一并复制到相应的数据集分区,从而生成可直接用于模型训练的标准化数据集。

python 复制代码
import os
import shutil
import random
import math

# 输入路径
labels_dir = r'E:\thunder_download\useful\tabletennis_voc\voc\labels'           # YOLO标签文件目录
images_dir = r'E:\thunder_download\useful\tabletennis_voc\voc\images'       # 图像文件目录
output_dir = r'E:\thunder_download\useful\tabletennis_voc\voc\output_dataset'  # 输出目录

# 创建输出目录结构
for split in ['model_train', 'val']:
    os.makedirs(os.path.join(output_dir, split, 'images'), exist_ok=True)
    os.makedirs(os.path.join(output_dir, split, 'labels'), exist_ok=True)

# 获取所有标签文件(假设图像和标签同名)
label_files = [f for f in os.listdir(labels_dir) if f.endswith('.txt')]
random.shuffle(label_files)

# 按照 8:2 比例划分训练集和验证集
total_files = len(label_files)
train_count = math.floor(total_files * 0.8)
val_count = total_files - train_count

train_files = label_files[:train_count]
val_files = label_files[train_count:]

def copy_samples(file_list, split_name):
    copied_count = 0
    for label_file in file_list:
        base_name = os.path.splitext(label_file)[0]
        image_file = None

        # 匹配图像扩展名
        for ext in ['.jpg', '.png', '.jpeg']:
            possible_image = os.path.join(images_dir, base_name + ext)
            if os.path.exists(possible_image):
                image_file = possible_image
                break

        if image_file is None:
            print(f"⚠️ 图像文件 {base_name} 不存在,跳过。")
            continue

        # 拷贝标签和图像
        shutil.copy(os.path.join(labels_dir, label_file), os.path.join(output_dir, split_name, 'labels', label_file))
        shutil.copy(image_file, os.path.join(output_dir, split_name, 'images', os.path.basename(image_file)))
        copied_count += 1

    print(f"✅ {split_name} 集合完成,共复制 {copied_count} 张图像。")

# 执行复制
copy_samples(train_files, 'model_train')
copy_samples(val_files, 'val')

划分好之后大家就能得到两个文件夹,文件夹分别是训练集和测试集,里面分别存储着图像数据集文件和标注结果文件,大家如果想要加入自己的图像数据可以在这一步自行手动添加。

3.模型训练

数据集准备好之后就可以开始模型训练了,我们首先准备一个训练的配置文件,比如说是data.yaml

然后就可以开始模型训练了,直接执行我们准备好的train.bat文件,内容就是下面的内容

bash 复制代码
yolo task=detect mode=train model=../data/model/yolov8n.pt data=./data.yaml epochs=50 imgsz=640  batch=16 lr0=0.01

然后模型就开始训练了

这里我贴一些训练验证结果截图

最后的results.png见下图,训练效果还是可以的!

我们的检测系统可以用在的应用场景:
1. 太阳能电池片/组件生产线实时质检
在晶硅电池片、PERC、TOPCon 等产线中,通过工业相机采集 EL、PL 或可见光图像,系统可实时检测:
隐裂、碎片、断栅
污染、划痕、针孔
局部衰减和纹理异常
用于替代人工目检,大幅提升良率和产线速度。
2. 出厂前成品组件质量分级
在组件最终封装后,通过 EL 或红外成像配合系统自动识别缺陷,进行:
组件分类(A级、B级、C级)
缺陷定位、标注与自动记录
减少人为判断差异,提高分级标准一致性。
3. 光伏电站运维检测
在光伏电站运维阶段,系统可应用于:
无人机 EL/可见光图像的缺陷自动分析
现场巡检人员拍摄照片的即时识别
发现热斑、烧毁、热不均等隐患
提升运维效率、减少人工排查时间。
4. 实验室研发与工艺优化
在材料研发或工艺验证过程中,用于:
比较不同工艺参数对应的缺陷率
批量分析实验数据、自动汇总报表
利用 DeepSeek 助力分析缺陷成因与趋势
帮助研发人员加速迭代。
5. 教学培训与智能制造示范
系统界面友好、模型可视化能力强,非常适合作为:
智能制造示范系统
高校与培训机构的教学平台
光伏质检自动化课程的实践案例
6. 设备厂商的视觉检测模块集成
可集成到:
自动串焊机
层压前/后检测机
全自动 EL 测试设备
作为 OEM 视觉检测方案,提高设备智能化水平。

五.项目运行环境

本项目名称为yolov8-solar-defect

1.项目依赖

博主是在Windows电脑上使用Python3.8开发的本系统,建议大家使用的Python版本别太高。

其中项目依赖为:

bash 复制代码
PyQt5==5.15.11
QtAwesome==1.3.1
torch==2.4.1
torchvision==0.19.1
Pillow==9.3.0
pyqtgraph===0.13.3
PyQtWebEngine==5.15.5
opencv-python==4.10.0.82
ultralytics==8.3.98
Requests==2.32.5
pandas==2.0.3
numpy==1.24.4
Markdown==3.4.4

我已经整理到了requirements.txt,大家直接使用命令
pip install -r requirements.txt

即可一键安装项目依赖,其中的torch和torchvision只要匹配即可,不一定非要和博主开发环境的版本一致。

2.项目结构

很多小伙伴担心拿到代码后项目看不懂,这个大家不必担心,我们采用文件+类名对相关功能进行了模块化定义,大家见名知意。

下图博主采用tree命令生成了文件、目录树

bash 复制代码
tree "D:\projects\gitee\2025\yolov8-solar-defect" /f /a
bash 复制代码
D:\PROJECTS\GITEE\2025\yolov8-solar-defect
|   .gitignore
|   main.py(程序入口)
|   record.txt(开发记录)
|   requirements.txt(项目依赖)
|
|
+---script
|       create_qrc.py
|
+---src(源代码核心目录)
|   +---conf(配置内容)
|   |   |   icon_conf.py
|   |   |   style_conf.py
|   |   |   system_conf.py
|   |   |   test_data.py
|   |   |   __init__.py
|   |
|   +---engine(核心引擎)
|   |       engines.py
|   |       __init__.py
|   |
|   +---resource(资源目录)
|   |   |   resource.qrc
|   |   |   resource_rc.py
|   |   |   __init__.py
|   |   |
|   |   \---imgs
|   |           ai.svg
|   |           bg.jpg
|   |
|   +---threads(线程、信号总线)
|   |       main_threads.py
|   |       signal_bus.py
|   |       __init__.py
|   |
|   +---utils(工具方法、工具类)
|   |       custom_utils.py
|   |       user_manager.py
|   |       __init__.py
|   |
|   \---widgets(组件目录)
|           base_widgets.py
|           custom_pages.py
|           custom_widgets.py
|           main_page.py
|           unique_widgets.py
|           __init__.py

五.总结

本次给大家介绍了我使用PyQt5+YOLOv8+DeepSeek开发的智能球体检测系统,本系统功能强大,支持多种数据源输入,包含多种用户交互按钮以及模式,内置数据可视化方案、大模型AI加持,是您学习、工作使用的不错选择!

需要代码的朋友可以点击箭头下方的二维码加我好友,欢迎您了解!

相关推荐
CoovallyAIHub1 小时前
AI 项目如何避免“烂尾”?怎么选择才能让AI项目长期奔跑?
人工智能·算法·计算机视觉
lxmyzzs1 小时前
【图像算法 - 36】医疗应用:基于 YOLOv12 与 OpenCV 的高精度脑肿瘤检测系统实现
python·深度学习·opencv·yolo·计算机视觉·脑肿瘤检测
Hcoco_me2 小时前
大模型面试题11:余弦相似度 & 牛顿迭代法
人工智能·python·决策树·机器学习·计算机视觉
大写-凌祁2 小时前
大模型强化学习(LLM-RL)最前沿综述:从 DPO 到 System 2 推理与后训练扩展
人工智能·深度学习·机器学习·计算机视觉·agi
yolo_guo2 小时前
opencv 学习: 11 图片像素位置变换,以图片加水波纹特效为例
c++·opencv·计算机视觉
棒棒的皮皮2 小时前
【OpenCV】Python图像处理之开发环境搭建
人工智能·python·opencv·计算机视觉
mingo_敏2 小时前
OpenCV中Blob检测的全面解析与实战技巧
人工智能·opencv·计算机视觉
Mrliu__2 小时前
Opencv(十七) : 绘制图像轮廓
人工智能·opencv·计算机视觉
点云SLAM2 小时前
四元数 (Quaternion)微分-单位四元数 q(t) 的导数详细推导(10)
算法·计算机视觉·机器人·slam·imu·四元数·单位四元数求导