毕业项目推荐:基于yolov8/yolo11的100种中药材检测识别系统(python+卷积神经网络)
文章目录
- 概要
- 一、整体资源介绍
- 技术要点
- 功能展示:
- 功能1 支持单张图片识别
- 功能2 支持遍历文件夹识别
- 功能3 支持识别视频文件
- 功能4 支持摄像头识别
- 功能5 支持结果文件导出(xls格式)
- 功能6 支持切换检测到的目标查看
- 二、数据集
- 三、算法介绍
- 1. YOLOv8 概述
- 简介
- 2. YOLO11 概述
- YOLOv11:Ultralytics 最新目标检测模型
- 🌟 四、模型训练步骤
- 🌟 五、模型评估步骤
- 🌟 六、训练结果
- 🌟完整代码
往期经典回顾
| 项目 | 项目 |
|---|---|
| 基于yolov8的车牌检测识别系统 | 基于yolov8/yolov5的钢铁缺陷检测系统 |
| 基于yolov8的人脸表情检测识别系统 | 基于深度学习的PCB板缺陷检测系统 |
| 基于yolov8/yolov5的茶叶等级检测系统 | 基于yolov8/yolov5的农作物病虫害检测识别系统 |
| 基于yolov8/yolov5的交通标志检测识别系统 | 基于yolov8/yolov5的课堂行为检测识别系统 |
| 基于yolov8/yolov5的海洋垃圾检测识别系统 | 基于yolov8/yolov5的垃圾检测与分类系统 |
| 基于yolov8/yolov5的行人摔倒检测识别系统 | 基于yolov8/yolov5的草莓病害检测识别系统 |
| 基于yolov8/yolov5/yolo11的动物检测识别系统 |
概要
本文将详细介绍如何以官方yolov8、yolov11为主干,实现对100种中药材的检测识别,且利用PyQt5设计了两种简约的系统UI界面。在界面中,您可以选择自己的视频文件、图片文件进行检测。此外,您还可以更换自己训练的主干模型,进行自己数据的检测。
中药材种类繁多且形态特征复杂,传统鉴别方法依赖人工经验,存在效率低、主观性强及易受炮制加工干扰等局限,难以满足大规模标准化生产与质量监管需求。基于深度学习的百种中药材检测系统通过多模态数据融合与细粒度特征分析,可精准识别药材品类、真伪及品质差异,显著提升复杂样本(如碎片、粉末及相似药材)的鉴别准确率。该系统为中药材智能分选、质量追溯及中医药产业数字化升级提供技术保障,对传承中医药文化、保障用药安全及推动产业高质量发展具有重要意义。
我们的系统界面不仅外观优美,而且具备出色的检测精度和强大的功能。它支持多目标实时检测,并允许您自由选择感兴趣的检测目标。
yolov8界面如下

yolo11界面如下 
关键词:100种中药材;目标检测;深度学习;特征融合;注意力机制;卷积神经网络

一、整体资源介绍
项目中所用到的算法模型和数据集等信息如下:
算法模型:
yolov8、yolov8 + SE注意力机制 或 yolo11、yolo11 + SE注意力机制
数据集:
网上下载的数据集,格式都已转好,可直接使用。
以上是本套代码算法的简单说明,添加注意力机制是本套系统的创新点 。
技术要点
- OpenCV:主要用于实现各种图像处理和计算机视觉相关任务。
- Python:采用这种编程语言,因其简洁易学且拥有大量丰富的资源和库支持。
- 数据增强技术: 翻转、噪点、色域变换,mosaic等方式,提高模型的鲁棒性。
功能展示:
部分核心功能如下:
- 功能1: 支持单张图片识别
- 功能2: 支持遍历文件夹识别
- 功能3: 支持识别视频文件
- 功能4: 支持摄像头识别
- 功能5: 支持结果文件导出(xls格式)
- 功能6: 支持切换检测到的目标查看
功能1 支持单张图片识别
系统支持用户选择图片文件进行识别。通过点击图片选择按钮,用户可以选择需要检测的图片,并在界面上查看所有识别结果。该功能的界面展示如下图所示:


功能2 支持遍历文件夹识别
系统支持选择整个文件夹进行批量识别。用户选择文件夹后,系统会自动遍历其中的所有图片文件,并将识别结果实时更新显示在右下角的表格中。该功能的展示效果如下图所示:


功能3 支持识别视频文件
在许多情况下,我们需要识别视频中的目标。因此,系统设计了视频选择功能。用户点击视频按钮即可选择待检测的视频,系统将自动解析视频并逐帧识别多个目标,同时将识别结果记录在右下角的表格中。以下是该功能的展示效果:


功能4 支持摄像头识别
在许多场景下,我们需要通过摄像头实时识别目标。为此,系统提供了摄像头选择功能。用户点击摄像头按钮后,系统将自动调用摄像头并进行实时识别,识别结果会即时记录在右下角的表格中。


功能5 支持结果文件导出(xls格式)
本系统还添加了对识别结果的导出功能,方便后续查看,目前支持导出xls数据格式,功能展示如下:


功能6 支持切换检测到的目标查看


二、数据集
提供全面、结构化的数据集,它不仅包含了丰富的类别,而且已经细致地划分为训练集、验证集和测试集,以满足不同阶段的模型训练需求。而且数据集的格式,可直接支持YOLO训练,无需额外的格式转换工作。
100个种类,8000多张数据集
部分数据样式如下:

三、算法介绍
1. YOLOv8 概述
简介
YOLOv8算法的核心特性和改进如下:
- 全新SOTA模型
YOLOv8 提供了全新的最先进(SOTA)的模型,包括P5 640 和 P6 1280分辨率的目标检测网络,同时还推出了基于YOLACT的实例分割模型。与YOLOv5类似,它提供了N/S/M/L/X五种尺度的模型,以满足不同场景的需求。 - Backbone
骨干网络和Neck部分参考了YOLOv7 ELAN的设计思想。
将YOLOv5的C3结构替换为梯度流更丰富的C2f结构。
针对不同尺度的模型,调整了通道数,使其更适配各种任务需求。

网络结构如下:

相比之前版本,YOLOv8对模型结构进行了精心微调,不再是“无脑”地将同一套参数应用于所有模型,从而大幅提升了模型性能。这种优化使得不同尺度的模型在面对多种场景时都能更好地适应。
然而,新引入的C2f模块虽然增强了梯度流,但其内部的Split等操作对特定硬件的部署可能不如之前的版本友好。在某些场景中,C2f模块的这些特性可能会影响模型的部署效率。
2. YOLO11 概述
YOLOv11:Ultralytics 最新目标检测模型
YOLOv11 是 Ultralytics 公司在 2024 年推出的 YOLO 系列目标检测模型的最新版本。以下是对 YOLOv11 的具体介绍:
主要特点
-
增强的特征提取:
- 采用改进的骨干和颈部架构,如在主干网络中引入了 c2psa 组件,并将 c2f 升级为 c3k2。
- c3k 允许用户自定义卷积模块的尺寸,提升了灵活性。
- c2psa 通过整合 psa(位置敏感注意力机制)来增强模型的特征提取效能。
- 颈部网络采用了 pan 架构,并集成了 c3k2 单元,有助于从多个尺度整合特征,并优化特征传递的效率。
-
针对效率和速度优化:
- 精细的架构设计和优化的训练流程,在保持准确性和性能最佳平衡的同时,提供更快的处理速度。
- 相比 YOLOv10,YOLOv11 的延迟降低了 25%-40%,能够达到每秒处理 60 帧 的速度,是目前最快的目标检测模型之一。
-
更少的参数,更高的准确度:
- YOLOv11m 在 COCO 数据集上实现了比 YOLOv8m 更高的 mAP,参数减少了 22%,提高了计算效率,同时不牺牲准确度。
-
跨环境的适应性:
- 可无缝部署在 边缘设备、云平台 和配备 NVIDIA GPU 的系统上,确保最大的灵活性。
-
支持广泛的任务范围:
- 支持多种计算机视觉任务,包括 目标检测、实例分割、图像分类、姿态估计 和 定向目标检测(OBB)。
架构改进
-
主干网络:
- 引入了 c2psa 组件,并将 c2f 升级为 c3k2。
- c3k 支持用户自定义卷积模块尺寸,增强灵活性。
- c2psa 整合了 psa(位置敏感注意力机制),提升特征提取效能。
-
颈部网络:
- 采用 pan 架构,并集成了 c3k2 单元,帮助从多个尺度整合特征并优化特征传递效率。
-
头部网络:
- YOLOv11 的检测头设计与 YOLOv8 大致相似。
- 在分类(cls)分支中,采用了 深度可分离卷积 来增强性能。
性能优势
-
精度提升:
- 在 COCO 数据集上取得了显著的精度提升:
- YOLOv11x 模型的 mAP 得分高达 54.7%。
- 最小的 YOLOv11n 模型也能达到 39.5% 的 mAP 得分。
- 与前代模型相比,精度有明显进步。
- 在 COCO 数据集上取得了显著的精度提升:
-
速度更快:
- 能够满足实时目标检测需求
🌟 四、模型训练步骤
-
使用pycharm打开代码,找到
train.py打开,示例截图如下:

-
修改
model_yaml的值,根据自己的实际情况修改,想要训练yolov8s模型 就 修改为model_yaml = yaml_yolov8s, 训练 添加SE注意力机制的模型就修改为model_yaml = yaml_yolov8_SE -
修改
data_path数据集路径,我这里默认指定的是traindata.yaml文件,如果训练我提供的数据,可以不用改 -
修改
model.train()中的参数,按照自己的需求和电脑硬件的情况更改# 文档中对参数有详细的说明 model.train(data=data_path, # 数据集imgsz=640, # 训练图片大小epochs=200, # 训练的轮次batch=2, # 训练batchworkers=0, # 加载数据线程数device='0', # 使用显卡optimizer='SGD', # 优化器project='runs/train', # 模型保存路径name=name, # 模型保存命名) -
修改
traindata.yaml文件, 打开traindata.yaml文件,如下所示:

在这里,只需修改 path 的值,其他的都不用改动(仔细看上面的黄色字体),我提供的数据集默认都是到yolo文件夹,设置到 yolo 这一级即可,修改完后,返回train.py中,执行train.py。 -
打开
train.py,右键执行。

-
出现如下类似的界面代表开始训练了

-
训练完后的模型保存在runs/train文件夹下

🌟 五、模型评估步骤
-
打开
val.py文件,如下图所示:

-
修改
model_pt的值,是自己想要评估的模型路径 -
修改
data_path,根据自己的实际情况修改,具体如何修改,查看上方模型训练中的修改步骤 -
修改
model.val()中的参数,按照自己的需求和电脑硬件的情况更改model.val(data=data_path, # 数据集路径imgsz=300, # 图片大小,要和训练时一样batch=4, # batchworkers=0, # 加载数据线程数conf=0.001, # 设置检测的最小置信度阈值。置信度低于此阈值的检测将被丢弃。iou=0.6, # 设置非最大抑制 (NMS) 的交叉重叠 (IoU) 阈值。有助于减少重复检测。device='0', # 使用显卡project='runs/val', # 保存路径name='exp', # 保存命名) -
修改完后,即可执行程序,出现如下截图,代表成功(下图是示例,具体以自己的实际项目为准。)

-
评估后的文件全部保存在在
runs/val/exp...文件夹下

🌟 六、训练结果
我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:

如果大家对于上面生成的这些内容(confusion_matrix.png、results.png等)不清楚是什么意思,可以在我的知识库里查看这些指标的具体含义,示例截图如下:

🌟完整代码
如果您希望获取博文中提到的所有实现相关的完整资源文件(包括测试图片、视频、Python脚本、UI文件、训练数据集、训练代码、界面代码等),这些文件已被全部打包。以下是完整资源包的截图:

您可以通过下方演示视频的视频简介部分进行获取:
演示视频:
基于深度学习的100种中药材检测识别系统(v8)
基于深度学习的100种中药材检测识别系统(v11)
相关文章:
毕业项目推荐:基于yolov8/yolo11的100种中药材检测识别系统(python+卷积神经网络)
文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...
kill -9 结束某个用户所有进程的方式-linux019
1. 使用 pkill 命令 pkill 命令可以通过用户名直接终止该用户的所有进程。加上 -9 参数,表示强制结束进程。 pkill -9 -u XXXX 说明:这个命令会使用 SIGKILL 信号(即 kill -9)强制终止 ttlsa 用户的所有进程。 2. 使用 killal…...
自用题库---面试使用
1、css中如何实现水平垂直居中 方法一:flex: display: flex; justify-content: center; align-item: center;方法二:绝对定位margin:auto: position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin:auto;方法三:已…...
蓝桥杯好数
样例输入: 24 输出:7 输入:2024 输出: 150 思路:本题朴素方法的时间复杂度是O(n * log10(n)) ,不超时。主要考察能否逐位取数,注意细节pi,这样不会改变i,否则会导致循环错误。 #in…...
Jenkins 配置 Credentials 凭证
Jenkins 配置 Credentials 凭证 一、创建凭证 Dashboard -> Manage Jenkins -> Manage Credentials 在 Domain 列随便点击一个 (global) 二、添加 凭证 点击左侧 Add Credentials 四、填写凭证 Kind:凭证类型 Username with password: 配置 用…...
用openresty和lua实现壁纸投票功能
背景 之前做了一个随机壁纸接口,但是不知道大家喜欢对壁纸的喜好,所以干脆在实现一个投票功能,让用户给自己喜欢的壁纸进行投票。 原理说明 1.当访问http://demo.com/vote/时,会从/home/jobs/webs/imgs及子目录下获取图片列表&…...
Vue 监听属性(watch)
Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 监听属性(watch) 目录 监听属性 监听值改变 使用watch实现 区别 总结 监听属性 通过watch来响应数据的变化。 虽然大多数情况计算属性都可以满足需要,但有时还是需要使用侦听器。…...
mysql查看binlog日志
mysql 配置、查看binlog日志: 示例为MySQL8.0 1、 检查binlog开启状态 SHOW VARIABLES LIKE ‘log_bin’; 如果未开启,修改配置my.ini 开启日志 安装目录配置my.ini(mysql8在data目录) log-binmysql-bin(开启日志并指定日志前缀ÿ…...
BiRefNet C++ TensorRT (二分类图像分割)
BiRefNet C TensorRT (二分类图像分割) 利用TensorRT和CUDA的双边参考网络(BiRefNet)的高性能c实现,针对实时高分辨率二分类图像分割进行了优化。 BiRefNet c TENSORRT旨在有效地在GPU上运行双边参考分割任务。通过利…...
蓝桥杯篇---IAP15F2K61S2矩阵键盘
文章目录 前言简介矩阵键盘的工作原理1.行扫描2.检测列状态3.按键识别 硬件连接1.行线2.列线 矩阵键盘使用步骤1.初始化IO口2.扫描键盘3.消抖处理4.按键识别 示例代码:4x4矩阵键盘扫描示例代码:优化后的矩阵键盘扫描注意事项1.消抖处理2.扫描频率3.IO口配…...
【ARM】MDK在编译 i.MXRT1芯片的时候出现报错Error: L6079E
1、 文档目标 解决MDK在编译 i.MXRT1芯片的时候出现报错Error: L6079E 2、 问题场景 客户在使用NXP 的NXP i.MXRT1050的芯片进行工程构建的时候出现下面的报错信息: Error: L6079E: Subtool invocation error: Error executing armcc. The system could not find…...
论文笔记(七十二)Reward Centering(二)
Reward Centering(二) 文章概括摘要2 简单的奖励中心 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…...
LeetCode 2595.奇偶位数:位运算
【LetMeFly】2595.奇偶位数:位运算 力扣题目链接:https://leetcode.cn/problems/number-of-even-and-odd-bits/ 给你一个 正 整数 n 。 用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。 用 odd 表示…...
推荐几款较好的开源成熟框架
一. 若依: 1. 官方网站:https://doc.ruoyi.vip/ruoyi/ 2. 若依SpringBootVueElement 的后台管理系统:https://gitee.com/y_project/RuoYi-Vue 3. 若依SpringBootVueElement 的后台管理系统:https://gitee.com/y_project/RuoYi-Cl…...
基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
基于知识图谱的问答系统:后端PythonFlask,数据库Neo4j,前端Vue3 引言 随着人工智能技术的不断发展,知识图谱作为一种结构化的知识表示方式,逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...
【华为机试】HJ80 整型数组合并
解法一: HashSet>List列表 Collections.sort(list)对列表进行排序 import java.util.*; import java.util.HashSet;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner sc new Scanner(…...
day17-后端Web原理——SpringBoot原理
目录 SpingBoot原理1. 配置优先级2. Bean管理2.1 获取Bean2.2 Bean作用域2.3 第三方Bean 3. SpringBoot原理3.1 起步依赖3.2 自动配置3.2.1 概述3.2.2 常见方案3.2.2.1 概述3.2.2.2 方案一3.2.2.3 方案二 3.2.3 原理分析3.2.3.1 源码跟踪3.2.3.2 Conditional 4. Web后端开发总结…...
我们来学nginx -- work process
题记 工作进程能处理大量的并发请求几乎不会阻塞Worker进程可绑定到固定的核,避免CPU频繁地上下文切换看样子,还得转为人话 大白话 作为一般的应用的开发大部分人没有很强的底层技术基础如果深究,涉及复杂技术点,很容易迷惘为什…...
马拉车算法
Manacher算法 ,用于处理最长回文字符串的问题,可以在O(n)的情况下,求出一个字符串的最长回文字符串 回文串的基础解法: 以每个点为中心对称点,看左右两边的点是否相同。这种算法的时间复杂度为O࿰…...
【PLL】应用:同步
1. 用于时钟去偏移的PLL 时钟频率增加内部时钟与外部时钟的偏移,在芯片之间通信时很重要时钟偏移可能是由时钟树引起的,该时钟树缓冲外部时钟以驱动大量内部节点 芯片间通信中的时钟偏移问题 芯片1和芯片2共享外部时钟CKext芯片内部逻辑电路操作的实际时…...
golang常用库之-swaggo/swag根据注释生成接口文档
文章目录 golang常用库之-swaggo/swag库根据注释生成接口文档什么是swaggo/swag golang常用库之-swaggo/swag库根据注释生成接口文档 什么是swaggo/swag github:https://github.com/swaggo/swag 参考文档:https://golang.halfiisland.com/community/pk…...
Go入门之数组与切片
var arr1 [...]int{1, 2, 3}fmt.Println(len(arr1)) 数组长度不能扩展 var arr2 [...]int{0: 100, 5: 101}fmt.Println(len(arr2)) } 指定索引初始化 可以通过for和range遍历 值类型:基本数据类型和数组都是值类型,改变副本的值不会改变本身的值 切片为引用数…...
30天开发操作系统 第22天 -- 用C语言编写应用程序
前言 在昨天的最后我们成功干掉了crack2.hrb, 今天我们要尝试一下更厉害的攻击手段。 所以说, 从现在开始又要打开坏人模式了哟,嘿嘿嘿 虽然把操作系统的段地址存入DS这一招现在已经不能用了,不过我可不会善罢甘休的。我要想个更厉害的招数,…...
后端开发:开启技术世界的新大门
在互联网的广阔天地中,后端开发宛如一座大厦的基石,虽不直接与用户 “面对面” 交流,却默默地支撑着整个互联网产品的稳定运行。它是服务器端编程的核心领域,负责处理数据、执行业务逻辑以及与数据库和其他后端服务进行交互。在当…...
20250220解决使用top指令查看荣品PRO-RK3566开发板的CPU占用率为400%的问题
20250220解决使用top指令查看荣品PRO-RK3566开发板的CPU占用率为400%的问题 2025/2/20 19:14 缘起,使用荣品PRO-RK3566开发板配套的百度网盘中的SDK:Android13编译之后,查看RK3566的CPU占用率为400%。 开机就是400%,什么时候都是4…...
win32汇编环境,窗口程序中使用月历控件示例二
;运行效果 ;win32汇编环境,窗口程序中使用月历控件示例二 ;以下示例有2个操作,即将每周的开始日进行改变,将默认的周日开始改为周一开始,同时实现点击哪个日期,则设定为哪个日期 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>…...
java毕业设计之医院门诊挂号系统(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的医院门诊挂号系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 医院门诊挂号系统的主要使用者…...
今日行情明日机会——20250220
明日投资机会分析 根据提供的数据,市场热点集中在机器人、人工智能、军工、化工、AI医疗等板块,结合涨停梯队和资金动向,建议关注以下方向: 1. 机器人概念(20家涨停) 核心标的:七板龙头杭齿前…...
Linux 实操篇 组管理和权限管理、定时任务调度、Linux磁盘分区和挂载
一、组管理和权限管理 (1)Linux组基本介绍 在linux中的每个用户必须属于一个组,不能独立于组外 在linux中每个文件有所有者、所在组、其他组的概念 (2)文件/目录 所有者 一般为文件的创建者,谁创建了该…...
对CSS了解哪些?
CSS(Cascading Style Sheets,层叠样式表)是用来描述HTML文档外观和布局的语言。以下是对CSS的常见了解范围: 1. CSS 基础 选择器:如通用选择器 (*)、类型选择器、类选择器 (.class)、ID选择器 (#id)、后代选择器、伪类…...
