首页 > 编程语言 >基于yolov10的花卉识别检测,支持图像、视频和摄像实时检测【pytorch框架、python】

基于yolov10的花卉识别检测,支持图像、视频和摄像实时检测【pytorch框架、python】

时间:2024-10-09 15:20:56浏览次数:3  
标签:python 检测 self list label pytorch location conf setText

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

功能演示:

基于yolov10的花卉识别检测系统,支持图像、视频和摄像实时检测【pytorch框架、python】_哔哩哔哩_bilibili

(一)简介

基于yolov10的花卉识别检测系统是在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/142752703

相关文章

  • 用python语言输出乘法口诀表
    乘法口诀表是我们非常熟悉的一个东西,并且通过图片可以看出其形状和我们前面打印的直角三角形是一样的,这也是最简单的一种三角形的打印方式。那我们只需要在输出的时候做文章即可,即将之前的“*”改变为表达式。接下来请看代码:foriinrange(1,10):forjinrange(1,i+1)......
  • 如何用python语言打印菱形?
    上一篇内容,我们打印了各种三角形,今天我们一起看看如何打印出菱形?其实我们可以对菱形进行一个拆分,如下图所示:上半部分是一个等腰三角形,下半部分是一个倒着的等腰三角形的前面再有一个空白三角形。这样分解开来,我们不难发现,有两部分都是我们写过的,只有倒三角没有写过,但是也不难......
  • (2024最新毕设合集)基于SpringBoot的乡村书屋小程序-31881|可做计算机毕业设计JAVA、PHP
    摘要随着信息技术的快速发展和互联网的广泛普及,数字化服务的需求不断增长,乡村书屋作为传统的文化服务机构也需要适应这一变革。本研究将使用Java开发技术,通过springboot作为框架,结合微信小程序,和MySQL作为数据存储的技术,开发一套功能齐备可移动的乡村书屋小程序,旨在提升乡......
  • python静默活体检测接口集成-人脸识别API-人脸认证
    静默活体检测是一种不需要用户主动配合(如眨眼、点头等)的活体检测技术,通常通过摄像头采集用户的人脸图像,结合计算机视觉与AI算法来判断用户是否为真人。这项技术被广泛应用于身份验证、金融交易安全、智能门禁等领域。确定接口供应商和接口规范在集成静默活体检测功......
  • python/NumPy库的使用
    1.NumPy的主要特点:高性能的多维数组对象:NumPy的核心是ndarray,它是一个高性能的多维数组对象。广播功能:NumPy提供了广播(broadcasting)功能,允许不同形状的数组进行数学运算。集成C/C++代码:NumPy可以无缝集成C/C++代码,提高性能。广泛的数学函数库:提供了大量的数学函数,包括线性代数......
  • 基于python+flask框架的研招信息管理和预测系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育普及率的提升和就业竞争的加剧,越来越多的学生选择继续深造,报考研究生的人数逐年攀升。然而,研究生招生信息的管理和获取却面临......
  • 基于python+flask框架的中医古方名方信息管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景中医作为中华民族的传统医学,承载着千年的智慧与经验。在浩瀚的中医典籍中,古方名方犹如璀璨的星辰,闪烁着独特的光芒。这些古方名方不仅蕴含......
  • 基于python+flask框架的医院门诊预约挂号系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的不断进步和人们健康意识的日益增强,医院门诊的就诊需求呈现出快速增长的趋势。传统的挂号方式往往存在排队时间长、挂号效率......
  • 深入理解Python的生成器与迭代器:编写高效的代码
    深入理解Python的生成器与迭代器:编写高效的代码在Python编程中,生成器(Generators)和迭代器(Iterators)是编写高效代码的重要工具。它们帮助我们节省内存、优化性能,尤其在处理大数据时表现尤为出色。这篇博客将深入探讨生成器与迭代器的工作原理、如何使用它们编写高效代码,并通......
  • Python爬虫爬取快手视频代码
    importpprintimportrequestsimportosimportreimportjsondefget_response(url,keywords,pcursor):hearders={‘Accept’:‘/’,‘Accept-Encoding’:‘gzip,deflate,br’,‘Accept-Language’:‘zh-CN,zh;q=0.9’,‘Connection’:‘keep-alive’,......