首页 > 编程语言 >基于yolov10的PCB板缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python】

基于yolov10的PCB板缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python】

时间:2024-10-14 14:21:24浏览次数:8  
标签:python 检测 self list label pytorch location conf setText

更多目标检测和图像分类识别项目可看我主页其他文章

功能演示:

yolov10,PCB板缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python】_哔哩哔哩_bilibili

(一)简介

基于yolov10的PCB板缺陷检测系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模型权重,模型训练记录,ui界面和各种模型指标(准确率、精确率、召回率等)等。ui界面由pyqt5设计实现。

该项目是在pycharm和anaconda搭建的虚拟环境执行,pycharm和anaconda安装和配置可观看教程:

超详细的pycharm+anaconda搭建python虚拟环境-CSDN博客

(二)项目介绍

1. 模型训练、验证

​该项目可以使用已经训练好的模型权重,也可以自己重新训练,自己训练也比较简单:

第一步:修改data/data.yaml中的数据集路径

第二步:模型训练,即运行train.py文件 

第三步:模型验证,当模型训练完后,运行val.py文件

第四步:使用模型,即运行gui.py文件即可通过GUI界面来展示模型效果

2. 数据集 

​​​

部分数据展示: 

​​

3.GUI界面(技术栈:pyqt5+python) 
a.GUI初始界面

​​​

b.图像检测界面

c.视频或摄像实时检测界面 

4.模型训练和验证的一些指标及效果

 

(三)代码

由于篇幅有限,只展示核心代码

    def upload_img(self):
        """上传图片"""
        # 选择录像文件进行读取
        self.comboBox.setDisabled(False)
        self.pushButton_4.setEnabled(False)
        # 上传图像
        fileName, fileType = QFileDialog.getOpenFileName(self, 'Choose file', '', '*.jpg *.png *.tif *.jpeg')
        if fileName:
            self.file_path = fileName
            """检测图片"""
            org_path = self.file_path
            # 目标检测
            t1 = time.time()
            # 图像检测
            results = self.model.predict(source=org_path, imgsz=self.output_size, conf=self.conf_threshold)[0]
            names = results.names
            t2 = time.time()
            self.label_6.setText('{:.3f} s'.format(t2 - t1))
            now_img = results.plot()
            # 调整图像大小
            self.resize_scale = self.output_size / now_img.shape[0]
            im0 = cv2.resize(now_img, (0, 0), fx=self.resize_scale, fy=self.resize_scale)
            cv2.imwrite("images/tmp/single_result.jpg", im0)
            # 自适应图像大小
            self.label_3.setScaledContents(True)
            # 显示图像
            self.label_3.setPixmap(QPixmap("images/tmp/single_result.jpg"))
            # 获取位置信息
            location_list = results.boxes.xyxy.tolist()
            location_list = [list(map(int, e)) for e in location_list]
            # 获取类别信息
            cls_list = results.boxes.cls.tolist()
            cls_list = [int(i) for i in cls_list]
            # 获取置信度信息
            conf_list = results.boxes.conf.tolist()
            conf_list = ['%.2f %%' % (each * 100) for each in conf_list]
            # 目标总数
            total_nums = len(location_list)
            self.label_11.setText(str(total_nums))
            choose_list = ['全部']
            target_names = [names[id] + '_' + str(index) for index, id in enumerate(cls_list)]
            choose_list = choose_list + target_names
            # 复合框信息
            self.comboBox.clear()
            self.comboBox.addItems(choose_list)

            self.results = results
            self.names = names
            self.cls_list = cls_list
            self.conf_list = conf_list
            self.location_list = location_list
            
            # 显示目标框
            if total_nums >= 1:
                # 渲染类别和置信度信息
                self.label_16.setText(names[cls_list[0]])
                self.label_15.setText(str(conf_list[0]))
                #   默认显示第一个目标框坐标
                #   设置坐标位置值
                self.label_13.setText(str(location_list[0][0]))
                self.label_19.setText(str(location_list[0][1]))
                self.label_21.setText(str(location_list[0][2]))
                self.label_23.setText(str(location_list[0][3]))
            else:
                # 清空显示框
                self.label_16.setText(' ')
                self.label_15.setText(' ')
                self.label_13.setText(' ')
                self.label_19.setText(' ')
                self.label_21.setText(' ')
                self.label_23.setText(' ')

(四)总结

以上即为整个项目的介绍,完整的项目包括代码,数据集,训练好的模型权重,模型训练记录,ui界面和各种模型指标等 。

若项目使用过程中出现问题,请及时交流!

标签:python,检测,self,list,label,pytorch,location,conf,setText
From: https://blog.csdn.net/lanbo_ai/article/details/142753434

相关文章

  • python中global关键字的作用
    python中global关键字的作用python中初始化一个变量y_axis_RA=[]一个函数中给y_axis_RA赋值,但是该变量显示未使用,在另外一个函数中使用y_axis_RA提示变量为空在Python中,变量作用域的问题可能会导致你遇到的情况。如果你在函数外部初始化了一个变量y_axis_RA=[],然后在函数......
  • 先到先得!字节内疯传的380页《从零开始大模型开发与微调基于PyTorch与ChatGLM》大模型
    大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch2.0作为学习大模型的基本框架,以ChatGLM为例详细讲解大模型的基本理论、算法、程序实现、应用实战以及微调技术,为读者揭示大模型开发技术。实战案例丰富基于Py......
  • 基于python+flask框架的影片个性化推荐系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网的广泛应用,影视娱乐已成为人们日常生活中不可或缺的一部分。在海量影片资源面前,用户往往难以快速找到符合......
  • 基于python+flask框架的游泳馆会员管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着现代生活水平的提高,人们越来越注重身体健康与休闲娱乐的结合,游泳馆作为重要的健身场所,其管理效率与服务质量直接关系到顾客满意度与经......
  • 基于python+flask框架的在线诊疗健康管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,医疗行业正逐步向数字化、智能化转型。传统的诊疗模式受限于地域、时间等因素,难以满足广大患者日益增长的医疗需......
  • 校园网python认证
    认证采用的是get的方式,参数大家可以根据自己校园网情况更改。importrequestsimportsocketimportjsonimportosdefget_local_ip():try:withsocket.socket(socket.AF_INET,socket.SOCK_DGRAM)ass:s.connect(("8.8.8.8",80))#连接到......
  • Python决策树算法:面向对象的实现与案例详解
    目录Python决策树算法:面向对象的实现与案例详解引言一、决策树算法概述1.1决策树的基本思想1.2分类与回归树1.3决策树的构建过程1.4决策树的优缺点优点缺点二、面向对象的决策树实现2.1类的设计2.2Python代码实现2.3代码详解三、案例分析3.1案例一:鸢尾花分类......
  • 改进YOLOv8:通过注意力机制与模块优化实现高效目标检测【附保姆级代码】(YOLOv8)
    本专栏专为AI视觉领域的爱好者和从业者打造。涵盖分类、检测、分割、追踪等多项技术,带你从入门到精通!后续更有实战项目,助你轻松应对面试挑战!立即订阅,开启你的YOLOv8之旅!专栏订阅地址:https://blog.csdn.net/mrdeam/category_12804295.html文章目录改进YOLOv8:通过注意力......
  • pytorch与cuda对应版本
      ......
  • Python面向对象编程:继承和多态③
    文章目录一、继承1.1什么是继承1.2定义父类和子类1.3子类重写父类的方法1.4多继承二、多态2.1什么是多态2.2多态的实现2.3抽象类和接口三、综合详细例子3.1项目结构3.2模块代码init.pyshape.pycircle.pyrectangle.py3.3主程序代码main.py3.4运行结果四......