【深度学习目标检测】十七、基于深度学习的洋葱检测系统-含GUI和源码(python,yolov8)

2024-01-22 14:04

本文主要是介绍【深度学习目标检测】十七、基于深度学习的洋葱检测系统-含GUI和源码(python,yolov8),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用AI实现洋葱检测对农业具有以下意义:

  1. 提高效率:AI技术可以快速、准确地检测出洋葱中的缺陷和问题,从而提高了检测效率,减少了人工检测的时间和人力成本。
  2. 提高准确性:AI技术通过大量的数据学习和分析,能够更准确地识别出有缺陷的洋葱,降低了误判和漏检的可能性。
  3. 提高农产品质量:通过AI技术对洋葱进行检测,可以及时发现并处理有缺陷的产品,从而提高了农产品的整体质量。
  4. 提供决策支持:AI技术可以通过数据分析,预测洋葱的品质、产量和市场趋势等,为决策者提供科学依据,帮助制定更合理的生产和营销策略。
  5. 促进农业现代化:AI技术的引入可以推动农业的现代化进程,提高农业生产的科技含量和创新能力,促进农业的可持续发展。

总之,使用AI实现洋葱检测可以提高农业生产的效率和农产品质量,促进农业现代化发展。

以下是此项目的一些用例:

1.杂货库存管理:洋葱检测器可用于超市和杂货店,通过准确识别和计数存储区域或展示架上的洋葱,自动监控和管理洋葱的库存和库存。

2.洋葱收获自动化:使用洋葱检测器模型开发收获自动化设备可以帮助农民和农业公司检测和分离除草植物或土壤中的洋葱,显着提高洋葱收获过程的速度和效率。

3.食品工业质量控制:洋葱检测仪可以集成到食品加工厂的生产线中,使系统能够自动检测各个加工阶段的洋葱 - 例如分类,清洁和分级 - 以确保最终产品的质量一致。

4.减少洋葱浪费:该模型可用于零售、餐厅或家庭环境,以识别可能开始变质的洋葱,使消费者或餐饮服务经营者能够在需要丢弃之前优先使用这些洋葱,最终限制食物浪费。

5.智能厨房辅助:通过将洋葱检测器集成到智能厨房电器中,用户可以根据可用成分(包括洋葱)接收自动食谱建议,从而更轻松地确定膳食选项,而无需手动搜索食谱数据库。

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

检测结果如下图:

一、安装YoloV8

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

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

二、数据集准备

本文使用的数据集来自https://www.cvmart.net/dataSets/detail/924。

该数据集共包含2425条训练数据,688条验证数据,363条测试数据,数据集图片示例如下:

本文提供整理后的洋葱实例分割数据集yolov8格式,可用于yolov8的训练,包含2425条训练数据,688条验证数据,363条测试数据。

三、模型训练

1、数据集配置文件

在ultralytics/ultralytics/cfg/datasets目录下添加onion.yaml,添加以下内容(path修改为自己的路径):

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128-seg dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco/
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco128-seg  ← downloads here (7 MB)# 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: datasets/instance_seg/onion_yolo8  # dataset root dir
train: images/train  # train images (relative to 'path') 128 images
val: images/val  # val images (relative to 'path') 128 images
test:  # test images (optional)# Classes
names:0: onion
2、修改模型配置文件

新建ultralytics/cfg/models/v8/yolov8_onion.yaml ,添加以下内容:,添加以下内容:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8-seg instance segmentation model. For Usage examples see https://docs.ultralytics.com/tasks/segment# Parameters
nc: 1  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n-seg.yaml' will call yolov8-seg.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 768]l: [1.00, 1.00, 512]x: [1.00, 1.25, 512]# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2- [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]]  # 9# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 6], 1, Concat, [1]]  # cat backbone P4- [-1, 3, C2f, [512]]  # 12- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 4], 1, Concat, [1]]  # cat backbone P3- [-1, 3, C2f, [256]]  # 15 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]]  # cat head P4- [-1, 3, C2f, [512]]  # 18 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]]  # cat head P5- [-1, 3, C2f, [1024]]  # 21 (P5/32-large)- [[15, 18, 21], 1, Segment, [nc, 32, 256]]  # Segment(P3, P4, P5)
3、训练模型

使用如下命令训练模型,相关路径更改为自己的路径,建议绝对路径:

yolo detect train project=deploy name=yolov8_onion exist_ok=True optimizer=auto val=True amp=True epochs=100  imgsz=640 model=ultralytics/cfg/models/v8/yolov8_onion.yaml  data=ultralytics/cfg/datasets/oniono.yaml
4、验证模型

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

yolo detect val imgsz=640 model=deploy/yolov8_onion/weights/best.pt data=ultralytics/ultralytics/cfg/datasets/onion.yaml

四、推理

训练好了模型,可以使用如下代码实现推理,将权重放到同级目录:

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代码可在下方链接下载):

六、代码下载

1、洋葱实例分割数据集yolov8格式,可用于yolov8的训练,包含2425条训练数据,688条验证数据,363条测试数据

2、洋葱检测系统,包含训练好的权重和推理代码,GUI界面,支持图片、视频、摄像头输入,支持检测结果导出

这篇关于【深度学习目标检测】十七、基于深度学习的洋葱检测系统-含GUI和源码(python,yolov8)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633200

相关文章

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指