【深度学习目标检测】二十一、基于深度学习的葡萄检测系统-含数据集、GUI和源码(python,yolov8)

葡萄检测在农业中具有多方面的意义,具体来说如下:

首先,葡萄检测有助于保障农产品质量安全。通过对葡萄进行质量安全专项监测,可以确保葡萄中的农药残留、重金属等有害物质含量符合标准,从而保障消费者的健康。同时,葡萄检测还可以对葡萄的产量进行精准预测,有助于农业生产者制定科学的种植计划。

其次,葡萄检测可以促进农业科技进步。随着计算机技术和精准农业的发展,图像技术已被广泛应用于葡萄检测中。这种技术可以代替人眼快速、准确地进行检测分析,有助于提高葡萄检测的效率和准确性。此外,葡萄检测还可以推动农业生产的自动化和智能化,提高农业生产的效率和质量。

最后,葡萄检测有助于提升农产品的市场竞争力。随着我国社会经济的发展,农残检测成为保证食品安全的关键措施和影响农产品国际贸易的重要技术壁垒。通过对葡萄进行严格的质量检测,可以确保葡萄的质量符合国内外市场的需求,提高农产品的竞争力。同时,葡萄检测还可以促进农业生产者提高种植技术和管理水平,从而提高农产品的整体质量。

总之,葡萄检测在农业中具有非常重要的意义。它不仅可以保障农产品的质量安全和消费者的健康,还可以促进农业科技进步和提升农产品的市场竞争力。因此,我们应该加强葡萄检测工作,提高检测技术和水平,为农业生产的可持续发展做出贡献。

本文介绍了基于深度学习yolov8的葡萄检测系统,包括训练过程和数据准备过程,同时提供了推理的代码和GUI。对准备计算机视觉相关的毕业设计的同学有着一定的帮助。

检测结果如下图:

一、安装YoloV8

yolov8官方文档:主页 - Ultralytics YOLOv8 文档

安装部分参考:官方安装教程

1、安装pytorch

根据本机是否有GPU,安装适合自己的pytorch,如果需要训练自己的模型,建议使用GPU版本。

①GPU版本的pytorch安装

对于GPU用户,安装GPU版本的pytorch,首先在cmd命令行输入nvidia-smi,查看本机的cuda版本,如下图,我的cuda版本是12.4(如果版本过低,建议升级nvidia驱动):

打开pytorch官网,选择合适的版本安装pytorch,如下图,建议使用conda安装防止cuda版本问题出现报错:

②CPU版本pytorch安装

打开pytorch官网,选择CPU版本安装pytorch,如下图:

2、安装yolov8

在命令行使用如下命令安装:

pip install ultralytics

二、数据集准备

WGISD(Wine Grape Instance Segmentation Dataset)是为了提供图像和注释来研究对象检测和实例分割,用于葡萄栽培中基于图像的监测和现场机器人技术。它提供了来自五种不同葡萄品种的实地实例。这些实例显示了葡萄姿势、光照和焦点的变化,包括遗传和物候变化,如形状、颜色和紧实度。可能的用途包括放宽实例分割问题:分类(图像中是否有葡萄?)、语义分割(图像中的“葡萄像素”是什么?)、对象检测(图像中的葡萄在哪里?)、和计数(每个簇有多少浆果?)。WGISD 还可用于葡萄品种鉴定。每个实例都包含一个 RGB 图像和一个将葡萄簇位置描述为边界框的注释。实例的一个子集还包含标识属于每个葡萄簇的像素的二进制掩码。每幅图像至少呈现一个葡萄串。一些葡萄串可能会出现在背景很远的地方,应该被忽略。

数据集来源:Winegrape检测数据集

数据集示例:

为了使用yolov8进行训练,需要将数据集转为yolo格式,本文提供转换好的数据集连接:WGISD葡萄数据集yolov8检测格式,包含242个训练集和58个测试集,可用于训练yolov8算法(不包含实例分割)

三、模型配置及训练

1、数据集配置文件

创建数据集配置文件wgisd.yaml,内容如下(将path路径替换为自己的数据集路径):

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco  ← downloads here (20.1 GB)# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:\DeepLearning\datasets\csdn\thsant-wgisd-ab223e5\wgisd_yolov8  # 替换为自己的数据集路径
train: images/train 
val: images/test 
test: images/test  # Classes
names:# 0: normal0: wine

2、训练模型

使用如下命令训练模型,数据配置文件路径更改为自己的路径,model根据自己的需要使用yolov8n/s/l/x版本,其他参数根据自己的需要进行设置:

yolo detect train project=wgisd name=train exist_ok data=wgisd/wgisd.yaml model=yolov8n.yaml epochs=100 imgsz=640

3、验证模型

使用如下命令验证模型,相关路径根据需要修改:

yolo detect val imgsz=640 model=wgisd/train/weights/best.pt data=wgisd/wgisd.yaml

精度如下:

# YOLOv8n summary (fused): 168 layers, 3005843 parameters, 0 gradients, 8.1 GFLOPs
# val: Scanning D:\DeepLearning\datasets\csdn\thsant-wgisd-ab223e5\wgisd_yolov8\labels\test.cache... 58 images, 0 backgrounds, 0 corrupt: 100%|██████████| 58/58 [00:00<?, ?it/ 
#                  Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 4/4 [00:06<00:00,  1.72s/it]
#                    all         58        850      0.772      0.714        0.8      0.445
# Speed: 2.3ms preprocess, 11.1ms inference, 0.0ms loss, 6.4ms postprocess per image

四、推理

训练好了模型,可以使用如下代码实现推理,权重路径修改为自己的路径:

from PIL import Image
from ultralytics import YOLO# 加载预训练的YOLOv8n模型
model = YOLO('best.pt')image_path = 'test.jpg'
results = model(image_path)  # 结果列表# 展示结果
for r in results:im_array = r.plot()  # 绘制包含预测结果的BGR numpy数组im = Image.fromarray(im_array[..., ::-1])  # RGB PIL图像im.show()  # 显示图像im.save('results.jpg')  # 保存图像

五、界面开发

使用pyqt5开发gui界面,支持图片、视频、摄像头输入,支持导出到指定路径,其GUI如下图(完整GUI代码可在下方链接下载):

代码下载连接:基于yolov8的葡萄检测系统,包含训练好的权重和推理代码,GUI界面,支持图片、视频、摄像头输入,支持检测结果导出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2813949.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu Mysql Innodb cluster集群搭建+MaxScale负载均衡(读写分离)

Ubuntu系统版本 20.04.3 LTS (Focal Fossa) 、64位系统。 cat /etc/os-release查看Ubuntu系统是32位还是64位 uname -m如果显示“i686”,则表示安装了32位操作系统。如果显示“x86_64”,则表示安装了64位操作系统。 一、安装MySql 参考: https://blog.csdn.net/qq_3712…

Idea安装gideabrowser插件

Idea安装gideabrowser插件 一、安装二、设置教程 一、安装 gideabrowser链接地址 二、设置教程 在人生的舞台上&#xff0c;奋力拼搏&#xff0c;才能演绎出最精彩的人生之歌。面对挑战和困难&#xff0c;不妥协、不气馁&#xff0c;只争朝夕&#xff0c;方显坚韧与智慧。努…

10.题号:编号3227 找到最多的数

题目&#xff1a; ###本题考察map和枚举 #include<bits/stdc.h> using namespace std; map<int,int> mp; int main(){int n,m;cin>>n>>m;for(int i1;i<m*n;i){int x;cin>>x;mp[x];}for(const auto & [x,y] : mp){if(2*y>n*m/2){cout…

【MATLAB】 LMD信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 LMD分解算法 LMD (Local Mean Decomposition) 分解算法是一种信号分解算法&#xff0c;它可以将一个信号分解成多个局部平滑的成分&#xff0c;并且可以将高频噪声和低频信号有效地分离出来。LMD 分解算…

osi模型,tcp/ip模型(名字由来+各层介绍+中间设备介绍)

目录 网络协议如何分层 引入 osi模型 tcp/ip模型 引入 命名由来 介绍 物理层 数据链路层 网络层 传输层 应用层 中间设备 网络协议如何分层 引入 我们已经知道了网络协议是层状结构,接下来就来了解了解下网络协议如何分层 常见的网络协议分层模型是OSI模型 和 …

应用回归分析:弹性网络回归

弹性网络回归&#xff1a;原理、优势与应用 弹性网络回归&#xff08;Elastic Net Regression&#xff09;是一种广泛使用的线性回归方法&#xff0c;它结合了岭回归&#xff08;Ridge Regression&#xff09;和套索回归&#xff08;Lasso Regression&#xff09;的特点。通过…

【c语言】内存函数

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 memcpy函数的使用和模拟实现 memcpy函数的使用 memcpy函数的模拟实现 memmove的使用和模拟实现 memmove的使用 memmove的模拟实现 memset函数的使用 memcmp函数…

深度学习 精选笔记(3)线性神经网络-线性回归

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

【kubernetes】关于k8s集群的资源发布方式(灰度/滚动发布)

目录 一、常见的发布方式 二、详解kubectl陈述式方式做灰度发布&#xff08;金丝雀发布&#xff09; 步骤一&#xff1a;先基于deployment控制器创建pod&#xff0c;然后发布 步骤二&#xff1a;基于命令行灰度发布 步骤三&#xff1a;测试等到版本稳定以后&#xff0c;再完…

排序算法--堆排序

堆排序的时间复杂度是O&#xff08;N*logN&#xff09;&#xff0c;优于选择排序O&#xff08;N^2&#xff09; 一、堆 1.堆的概念&#xff1a;堆一般指的是二叉堆&#xff0c;顾名思义&#xff0c;二叉堆是完全二叉树或者近似完全二 2.堆的性质&#xff1a;①完全二叉树 ②每…

python cookbook内容提炼-第一章数据结构和算法

python cookbook内容提炼 博主打算做一篇python cookbook内容提炼的文章&#xff0c;这篇博客会很实用。 第一章&#xff1a;数据结构和算法 第一章的内容很实用&#xff0c;博主做了一些内容上的提炼&#xff0c;把一些最重要的知识点写在了下面。 下面内容中&#xff0c;…

【论文阅读】基于人工智能目标检测与跟踪技术的过冷流沸腾气泡特征提取

Bubble feature extraction in subcooled flow boiling using AI-based object detection and tracking techniques 基于人工智能目标检测与跟踪技术的过冷流沸腾气泡特征提取 期刊信息&#xff1a;International Journal of Heat and Mass Transfer 2024 级别&#xff1a;EI检…

《opencv实用探索·二十二》支持向量机SVM用法

1、概述 在了解支持向量机SVM用法之前先了解一些概念&#xff1a; &#xff08;1&#xff09;线性可分和线性不可分 如果在一个二维空间有一堆样本&#xff0c;如下图所示&#xff0c;如果能找到一条线把这两类样本分开至线的两侧&#xff0c;那么这个样本集就是线性可分&#…

docker 容器修改端口

一般在运行容器时&#xff0c;我们都会通过参数 -p&#xff08;使用大写的-P参数则会随机选择宿主机的一个端口进行映射&#xff09;来指定宿主机和容器端口的映射&#xff0c;例如 docker run -it -d --name [container-name] -p 8088:80 [image-name]这里是将容器内的80端口…

针对KZG承诺和高效laconic OT的extractable witness encryption

1. 引言 2024年以太坊基金会等成员论文 Extractable Witness Encryption for KZG Commitments and Efficient Laconic OT&#xff0c;开源代码实现见&#xff1a; https://github.com/rot256/research-we-kzg&#xff08;Rust&#xff09; 在该论文中&#xff0c;提供了一种…

R语言数学建模(一)—— 基础知识

R语言数学建模&#xff08;一&#xff09;—— 基础知识 文章目录 R语言数学建模&#xff08;一&#xff09;—— 基础知识前言一、建模软件1.1 软件建模的基础1.2 模型的分类1.3 不同类型模型间的联系1.4 一些术语1.5 建模如何适应数据分析过程 二、Tidyverse基础2.1 tidyvers…

Linux学习笔记11——用户组添加删除

Linux 是多用户多任务操作系统&#xff0c;换句话说&#xff0c;Linux 系统支持多个用户在同一时间内登陆&#xff0c;不同用户可以执行不同的任务&#xff0c;并且互不影响。 例如&#xff0c;某台 Linux 服务器上有 4 个用户&#xff0c;分别是 root、www、ftp 和 mysql&…

【README 小技巧】在项目README.md 中展示发布到maven 仓库版本

在项目README.md 中展示发不到nexus 的快照版本 <p align"center"><a target"_blank" href"https://search.maven.org/search?qwu-lazy-cloud-network%20wu-lazy-cloud-network"><img src"https://img-home.csdnimg.cn/ima…

逆向案例二:关键字密文解密,自定义的加密解密。基于企名片科技的爬取。

import requests import execjsfor i in range(4):i i1url https://vipapi.qimingpian.cn/Activity/channelInformationByChannelNamedata {channel_name: 24新声,page: f{i},num: 20,unionid: W9wLD4rHIZrB3GLTUncmHgbZcEepR78xJa5Zit6XTMtata86DehdxDt/fDbcHeeJWqqIs6k…

idea 更新maven java版本变化

今天遇到个问题就是&#xff0c;点击maven的reload&#xff0c;会导致setting 里的java compiler 版本变化 这里的话&#xff0c;应该是settings.xml文件里面的这个限定死了&#xff0c;修改一下或者去掉就可以了 <profile><id>JDK-1.8</id><activatio…