当前位置: 首页 > news >正文

Yolov5水果分类识别+pyqt交互式界面

Yolov5 Fruits Detector

  • Yolov5 是一种先进的目标检测算法,可以应用于水果分类识别任务。结合 PyQT
    框架,可以创建一个交互式界面,使用户能够方便地上传图片并获取水果分类结果。以下将详细阐述 Yolov5 水果分类识别和 PyQT
    交互式界面的实现。
  • Yolov5 是由 Ultralytics
    公司开发的一种基于深度学习的目标检测算法,它采用了一种称为单阶段目标检测的方法,具有高准确率和实时性的特点。在水果分类识别任务中,Yolov5
    可以检测图像中的水果,并将其分类为不同的类别,例如苹果、香蕉、橙子等。
  • 为了实现 Yolov5 水果分类识别的交互式界面,可以使用 PyQT 框架进行开发。PyQT 是一个功能强大且易于使用的 Python
    GUI 开发工具包,它提供了丰富的界面组件和布局选项,可以轻松创建用户友好的界面。
  • 在界面设计方面,可以使用 PyQT 创建一个包含上传图片按钮和显示分类结果的窗口。当用户点击上传图片按钮时,可以调用 Yolov5
    模型对上传的图片进行识别,并将分类结果显示在界面上。同时,还可以添加其他功能,如清除界面、保存结果等。

image56

要求

  • 可以使用 Linux 或者 Windows。我们推荐使用 Linux 以获得更好的性能。
  • 需要安装 Python 3.6+ 和 PyTorch 1.7+。

安装

运行以下命令来安装依赖项:

pip install -r requirements.txt
  • 下载模型,请使用此链接:https://drive.google.com/file/d/1W6qZeutnqnp3YX9w4iYgR44xsoi_64ff/view?usp=sharing
  • 将下载的文件放置在 weights 目录下

代码

运行此部分检测ui界面代码

import sys
import osfrom PySide6.QtWidgets import QApplication, QWidget, QFileDialog
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
from PySide6.QtGui import QPixmap, QImage
from PySide6.QtCore import QThread, Signal, QDir
import cv2def convertCVImage2QtImage(cv_img):cv_img = cv2.cvtColor(cv_img, cv2.COLOR_BGR2RGB)height, width, channel = cv_img.shapebytesPerLine = 3 * widthqimg = QImage(cv_img.data, width, height, bytesPerLine, QImage.Format_RGB888)return QPixmap.fromImage(qimg)class ProcessImage(QThread):signal_show_frame = Signal(object)def __init__(self, fileName):QThread.__init__(self)self.fileName = fileNamefrom detector import Detectorself.detector = Detector()def run(self):self.video = cv2.VideoCapture(self.fileName)while True:valid, self.frame = self.video.read()if valid is not True:breakself.frame = self.detector.detect(self.frame)self.signal_show_frame.emit(self.frame)cv2.waitKey(30)self.video.release()def stop(self):try:self.video.release()except:passclass show(QThread):signal_show_image = Signal(object)def __init__(self, fileName):QThread.__init__(self)self.fileName = fileNameself.video=cv2.VideoCapture(self.fileName)def run(self): while True:valid, self.frame = self.video.read()if valid is not True:breakself.signal_show_image.emit(self.frame)cv2.waitKey(30)self.video.release()def stop(self):try:self.video.release()except:passclass MainWindow(QWidget):def __init__(self):super(MainWindow, self).__init__()loader = QUiLoader()self.ui = loader.load("ui/form.ui")self.ui.btn_browse.clicked.connect(self.getFile)self.ui.btn_start.clicked.connect(self.predict)self.ui.show()def getFile(self):self.fileName = QFileDialog.getOpenFileName(self,'Single File','C:\'','*.jpg *.mp4 *.jpeg *.png *.avi')[0]self.ui.txt_address.setText(str(self.fileName))self.show=show(self.fileName)self.show.signal_show_image.connect(self.show_input)self.show.start()def predict(self):self.process_image = ProcessImage(self.fileName)self.process_image.signal_show_frame.connect(self.show_output)self.process_image.start()def show_input(self, image):pixmap = convertCVImage2QtImage(image)self.ui.lbl_input.setPixmap(pixmap)def show_output(self, image):pixmap = convertCVImage2QtImage(image)self.ui.lbl_output.setPixmap(pixmap)if __name__ == "__main__":app = QApplication(sys.argv)widget = MainWindow()sys.exit(app.exec())

运行界面

要对图像或视频进行推断,请运行以下命令:

python main.py 

数据集:

  • 数据集可以在此链接中找到https://t.ly/NZWj
  • 在 Yolov5 水果分类识别的实现过程中,需要使用训练好的 Yolov5 模型来进行目标检测和分类。可以使用已经预训练好的 Yolov5 模型,也可以自己训练一个适用于水果分类的模型。

总结

总结起来,Yolov5 水果分类识别结合 PyQT 交互式界面可以提供一个方便用户上传图片并获取水果分类结果的工具。Yolov5 算法具有高准确率和实时性,在水果分类任务中表现出色。PyQT 框架提供了丰富的界面组件和布局选项,使得界面开发更加简单。通过 Yolov5 水果分类识别和 PyQT 交互式界面的结合,用户可以轻松地进行水果分类识别,并获得准确的分类结果。
在这里插入图片描述

相关文章:

Yolov5水果分类识别+pyqt交互式界面

Yolov5 Fruits Detector Yolov5 是一种先进的目标检测算法,可以应用于水果分类识别任务。结合 PyQT 框架,可以创建一个交互式界面,使用户能够方便地上传图片并获取水果分类结果。以下将详细阐述 Yolov5 水果分类识别和 PyQT 交互式界面的实现…...

正式环境和sandbox中的RecordTypeId不一样应该怎么办

如果在 Salesforce 正式环境和 Sandbox 中,RecordTypeId 不一样,通常需要在代码或配置中进行适配,以确保代码在不同环境中的兼容性。以下是一些常见的方法: 使用自定义设置或自定义标签: 创建自定义设置或自定义标签来…...

7种常见的网络安全设备及其功能

网络安全设备在现代网络环境中起着至关重要的作用,帮助保护个人和组织免受恶意攻击。本文将介绍7种常见的网络安全设备,包括防火墙、入侵检测系统、反病毒软件、数据加密设备、虚拟私人网络、安全信息和事件管理系统以及网络访问控制设备,并详…...

vue3实现pinia仓库状态持久化

使用 pinia-plugin-persistedstate 实现pinia仓库状态持久化 安装 pnpm i pinia-plugin-persistedstate # or npm i pinia-plugin-persistedstate # or yarn add pinia-plugin-persistedstatemain.ts引入 import persist from pinia-plugin-persistedstate const app creat…...

Node.js(三)-模块的加载机制

1. 优先从缓存中加载 模块在第一次加载后会被缓存,这就意味着多次调用require()不会导致模块的代码被执行多次。 注意:不论是内置模块、用户自定义模块、还是第三方模块,它们都会优先从缓存中加载,从而提高模块的加载效率. 2. 内置模块的加…...

函数

1、概述 1.1、函数分类 1)系统函数(库函数) 2)用户定义函数 1.2、函数的作用 降低代码重复率让程序更加模块化,利于阅读、修改和完善 1.3、函数的调用:随机数 函数调用 5 要素: 头文件&…...

第四周:机器学习知识点回顾

前言: 讲真,复习这块我是比较头大的,之前的线代、高数、概率论、西瓜书、樱花书、NG的系列课程、李宏毅李沐等等等等…那可是花了三年学习佳实践下来的,现在一想脑子里就剩下几个名词就觉得废柴一个了,朋友们有没有同感…...

韩版传奇 2 源码分析与 Unity 重制(一)服务端 TCP 状态管理

专题介绍 该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。 相关资料 官方论坛: https://www.lomcn.org/fo…...

python编程(2)之灯光秀的按钮

今天小编带领大家开始学习python编程的第二节,灯关秀的按钮。 按键在后续的学习和开发过程中,都是很重要的内容,是帮助我们获取外界信息的基础通道,识别按键的方式,在上节的内容给大家介绍了,大家可以进行学…...

pandas将dataframe列中的list转换为多列

在应用机器学习的过程中,很大一部分工作都是在做数据的处理,一个非常常见的场景就是将一个list序列的特征数据拆成多个单独的特征数据。 比如数据集如下所示: data [[John, 25, Male,[99,100,98]],[Emily, 22, Female,[97,99,98]],[Michae…...

小巧的Windows Memory Cleaner内存清理工具-释放内存,提升电脑的性能-供大家学习研究参考

软件介绍 Windows Memory Cleaner是一款非常不错的内存清理工具大小仅200KB,这款免费的 RAM 清理器使用本机 Windows 功能来清理内存区域,帮助用户释放内存,提升电脑的性能,有时程序不会释放分配的内存,从而使计算机变…...

STM32F072 CAN and USB

1 通用描述 1.1 STM8 MOSTek 6502 -> ST7 -> STM8 STM8型号单片机分为STM8A、STM8L、STM8S三个系列。 STM8A:汽车级应用 STM8L:超低功耗MCU STM8S:标准系列 1.2 STM32 - F1系列用的最多,最大工作频率72MHz - STM32固件库&am…...

卷积神经网络基础与补充

参考自 up主的b站链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展: 这一点老师上课的时候也有讲到,BP的出现对CNN的发展至关重要 卷积的特性&#x…...

File Inclusion(Pikachu)

File Inclusion(local) 这里随便点击一个提交 观察url,显示是一个文件file1.php 可以直接通过url修改这个文件 找到自己的文件(本地文件)shell.php的路径写上去 就可以看到 File Inclusion(remote) 提交的是一个目标…...

【Redis刨析】知识图谱的构建与实现

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 ChatGPT体验地址 文章目录 前言引用构建过程Redis的知识图谱构建过程Redis介绍快的原因持久化 引用 对于编程的学习,过了初级阶段,我认为应该减少对视频的依赖&am…...

html学习笔记 标题、段落、换行、列表、超链接、图片、表格

<h1></h1> <p></p> <br>换行&#xff0c;不带线 <hr>换行&#xff0c;带线列表 类似↓ 2 1 无序列表 <ul><li></li><li></li><li></li> </ul>有序列表 <oi><li></l…...

汽车项目管理

项目节点&#xff1a; MR (Management Review)——管理层评审 KO (Kick Off)——项目正式启动 SI (Strategy Intent)——战略意图 SC (Strategy Confirmation)——战略确认 PA (Program Approval)——项目批准 PR (Product Readiness)——产品就绪 VP (Verification Prototype)…...

Tg-5511cb: tcxo高稳定性+105℃高温

爱普生推的一款TG-5511CB是一种高稳定的TCXO温补晶体振荡器&#xff0c;频率范围十分广泛从 10mhz ~ 54mhz&#xff0c;它的电源电压只需要3.3V&#xff0c;无论是手机还是其他电子设备&#xff0c;都能轻松提供稳定的电力支持。频率/温度特性表现出色&#xff0c;0.28 10^6Ma…...

Linux 命令 ifconfig 全面解析!

ifconfig 是 network interfaces configuring 的缩写。 在 Linux 操作系统中&#xff0c;ifconfig 用于显示或配置网络设备的参数信息。 查看网卡信息 $ ifconfig # 显示激活状态&#xff08;up 状态&#xff09;的网卡信息 eth0 Link encap:Ethernet HWaddr 00:0c:29:75:8…...

00-Git 应用

Git 应用 一、Git概述 1.1 什么是Git git 是一个代码协同管理工具&#xff0c;也称之为代码版本控制工具&#xff0c;代码版本控制或管理的工具用的最多的&#xff1a; svn、 git。 SVN 是采用的 同步机制&#xff0c;即本地的代码版本和服务器的版本保持一致&#xff08;提…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...