一、简介
本项目构建了基于 YOLOV8 深度学习网络模型的中草药识别检测系统。凭借 YOLOV8 卓越的性能,该系统能够高效、精准地识别检测大枣、 百合、黄连 、乌梅、厚朴 、牡蛎 、海马 、罗汉果 、甘草、三七、 通草、 薏苡仁、 枸杞子 、八角茴香等 50种常见植物中草药,满足多样化的使用需求。在接下来的内容中会详细阐述数据集介绍、技术栈、模型训练和基于 PyQt5 精心打造的应用界面设计。利用该应用,用户仅需上传中草药图片,系统便能快速检测输出其类别、预测结果的置信度,同时展示该中草药的详细描述信息。
如果您仅需要数据集或者完整系统(含数据集)可以通过下方演示视频的评论区获取下载方式。
项目演示视频:(项目完整文件下载请见参考视频的简介处给出:➷➷➷)
基于YOLOV8的中草药识别检测系统--包配置跑通--Python--PyQt5界面
二、数据集介绍
通过网络上搜集关于不同中草药的相关图片,并使用Labelimg标注工具对每张图片进行标注。本系统数据集一共包含11719张图片,其中训练集包含7699张图片,验证集包含2010张图片、测试集包含2010张图片。 部分图像及标注如下图所示:
三、技术栈
PyTorch
搭建神经网络模型:作为深度学习框架,能便捷定义各类复杂神经网络结构,如在目标检测里常用的卷积神经网络(CNN )。
训练模型:利用 GPU 加速训练过程,通过对大量标注数据的学习,让模型掌握目标的特征模式,以准确检测目标。同时可灵活调整模型参数、损失函数等训练相关设置,优化模型性能。
模型优化与部署:提供工具对训练好的模型进行优化,比如剪枝、量化等操作,减少模型计算量和存储需求。
PyQt5
构建用户界面:提供丰富的 GUI 组件(如按钮、文本框、标签等)和布局管理功能,方便创建出美观、操作便捷的界面。在目标检测系统中,可设计用于导入图像 / 视频、启动检测、展示检测结果等功能模块的界面。
实现交互功能:处理用户与界面的交互事件,如点击 “检测” 按钮触发目标检测操作,选择文件路径导入待检测数据等,让用户能与目标检测系统进行有效交互。
结果展示:将目标检测的结果(如检测框位置、类别、置信度等信息)以直观的方式展示在界面上,还可配合图像、视频显示控件,呈现标注后的检测画面。
OpenCV
图像 / 视频预处理:读取图像或视频数据,进行色彩空间转换、缩放、裁剪、降噪等操作,让数据满足模型输入要求,提升检测效果。比如将彩色图像转为灰度图,调整图像分辨率至模型适配大小。
特征提取与分析:运用自带的特征提取算法(如 SIFT、SURF、ORB 等 )提取图像特征,辅助目标检测,或用于目标跟踪等相关任务。还能进行边缘检测、轮廓提取等操作,为目标定位和识别提供信息。
目标检测算法支持:集成多种经典目标检测算法(如 Haar 级联检测器 ),也可结合深度学习模型,对图像或视频帧中的目标进行检测与定位。同时能实现检测结果的可视化,绘制检测框、标注类别信息等。
Pandas
数据整理与标注:在目标检测数据集准备阶段,可用于整理数据标注信息,如将目标的类别、位置坐标(边界框信息)等存储在 DataFrame 中,方便进行数据清洗、筛选、统计等操作,确保标注数据的准确性和规范性。
检测结果分析:检测完成后,用 Pandas 处理和分析检测结果数据。例如统计不同类别目标的数量、分析目标在不同场景下的出现频率、对比不同模型的检测结果指标等,为评估和优化目标检测系统提供数据支持。
NumPy
高效数值计算:目标检测系统中涉及大量数值运算,如神经网络计算中的矩阵乘法、加法等。NumPy 的多维数组(ndarray)提供高效存储和运算方式,加速模型训练和推理阶段的计算过程。
数据存储与处理:存储图像数据(以数组形式 )、模型参数、检测结果数据等。支持对这些数据进行切片、索引、变形等操作,方便数据的预处理、后处理以及在不同模块间的传递。
四、模型训练
4.1 data.yaml文件
train: E:\YOLO\2Detect\YOLOV8\Detection_v8\datasets\Data\train
val: E:\YOLO\2Detect\YOLOV8\Detection_v8\datasets\Data\val
test: E:\YOLO\2Detect\YOLOV8\Detection_v8\datasets\Data\test
nc: 50
names: ['ginseng', 'Leech', 'JujubaeFructus', 'LiliiBulbus', 'CoptidisRhizoma', 'MumeFructus', 'MagnoliaBark', 'Oyster'……]
注意:这里的train、val、test要修改成你自己电脑的路径(不能有中文,不能有中文,不能有中文)
4.2 模型评估
运行train.py,训练完成之后会获得评估指标文件夹,如下图所示
模型权重与配置
- weights:存放深度学习模型训练后的权重文件,模型参数存储于此,是模型预测的核心。
- args.yaml:存储模型训练和推理时的参数配置信息,如数据集路径、训练超参数等。
评估指标图表
- confusion_matrix.png、confusion_matrix_normalized.png:混淆矩阵图,展示模型预测类别与真实类别的匹配情况,反映分类准确性,归一化版本更便于不同规模数据集对比。
- F1_curve.png:F1 值曲线,F1 值综合精确率和召回率,该曲线展示模型在不同阈值下 F1 值变化,衡量模型整体性能。
- P_curve.png:精确率(Precision)曲线,精确率指预测为正例中实际为正例的比例,曲线反映精确率随阈值变化情况。
- PR_curve.png:精确率 - 召回率(Precision - Recall)曲线,展示精确率和召回率权衡关系,评估模型在不同召回率下精确率表现。
- R_curve.png:召回率(Recall)曲线,召回率指实际正例中被正确预测为正例的比例,曲线展示召回率随阈值变化情况。
- labels.jpg、labels_correlogram.jpg:labels.jpg 展示数据集中标签分布可视化结果 ;labels_correlogram.jpg 是标签相关性图,展示不同类别标签间关联程度。
训练结果文件
- results.csv:以表格形式记录训练过程中的各项指标数据,如损失值、准确率等,方便分析训练趋势。
- results.png:训练结果的可视化图,直观展示训练过程中关键指标变化趋势。
训练数据可视化
- train_batch.jpg:展示训练数据批次图像,便于直观了解训练数据组成、分布及预处理后效果。
验证数据可视化
- val_batch_labels.jpg、val_batch_pred.jpg :前者是验证集图像真实标签标注可视化 ;后者是模型对验证集图像预测结果可视化,对比可评估模型预测效果。
其中比较关键的是性能指标可视化结果图
这些图表是目标检测模型训练过程中的性能指标可视化结果,涉及损失函数和评估指标:
损失函数类
- train/box_loss:训练阶段边界框损失,衡量预测边界框与真实边界框的误差,值不断下降说明模型预测的边界框位置越来越精准。
- train/cls_loss:训练阶段类别损失,反映模型预测类别与真实类别的差异,下降趋势表明模型分类能力在提升。
- train/dfl_loss:训练阶段分布焦点损失(Distribution Focal Loss ),用于优化模型对边界框位置分布的预测,其降低意味着位置预测更准确。
- val/box_loss、val/cls_loss、val/dfl_loss:分别是验证阶段的边界框损失、类别损失、分布焦点损失,作用与训练阶段对应损失类似,用于评估模型在验证集上的性能 ,数值下降且趋于稳定,说明模型泛化能力较好。
评估指标类
- metrics/precision(B):精确率,指预测为正例中实际为正例的比例,曲线上升表示模型预测正例的准确性在提高。
- metrics/recall(B):召回率,即实际正例中被正确预测为正例的比例,曲线上升说明模型能更多地找出真实正例。
- metrics/mAP50(B):在 IoU(交并比)阈值为 0.5 时的平均精度均值,衡量模型在不同类别上的检测性能,值越高表示模型检测效果越好。
- metrics/mAP50 - 95(B):在 IoU 阈值从 0.5 到 0.95 (间隔 0.05)时的平均精度均值,综合评估模型在不同 IoU 阈值下的性能,更全面反映模型检测精度 ,上升趋势表明模型性能持续优化。
总体来看,训练过程中各类损失不断降低,评估指标不断提升且趋于稳定,说明模型在训练过程中不断优化,性能逐步提高。
五、界面展示
5.1 界面设计
1. 操作功能区
- 打开图片:点击此按钮,用户可选择本地存储的单张图片,系统会对图片中的中草药进行识别检测。这适用于有单独图片需要检测的场景,比如拍摄的中草药样本照片。
- 打开文件夹:用于批量处理图片,用户选择包含多张图片的文件夹后,系统会依次对文件夹内的所有图片进行中草药识别检测,提高批量检测效率。
- 打开视频:选择本地视频文件,系统会逐帧分析视频内容,检测其中出现的中草药。这在分析含有中草药的监控视频、科普视频等场景中很有用。
- 打开摄像头:调用设备的摄像头,可进行实时的中草药识别检测。例如在野外考察、药材市场现场鉴定等场景下,能即时对眼前的中草药进行识别。
- 保存:将检测结果保存到本地,包括检测出的中草药类别、置信度、位置信息等数据,方便用户后续查阅和分析。
- 退出:关闭该中草药识别检测系统界面,结束程序运行。
2. 检测结果显示区
- 总目标数:检测完成后,这里会显示识别出的中草药目标的总数量。例如,一张图片中若识别出 3 株不同的中草药,总目标数就显示为 3 。
- 用时:记录系统完成一次检测任务所花费的时间,可反映系统的检测效率。用时越短,说明系统在处理当前任务时速度越快。
- 目标选择:提供下拉菜单,当检测到多个目标时,用户可通过该菜单选择具体查看某个目标的详细信息。
- 类型:显示所选择目标的中草药种类名称,比如 “人参”“枸杞” 等。
- 置信度:表示系统对检测结果的可靠程度判断,是一个介于 0 - 1 之间的数值,越接近 1 说明系统对识别结果的把握越大。例如置信度为 0.9 ,说明系统有 90% 的把握认定检测结果正确。
- 目标位置(xmin、ymin、xmax、ymax ):以图像坐标形式表示目标在图片或视频帧中的位置范围。xmin 和 ymin 是目标边界框左上角的横、纵坐标,xmax 和 ymax 是目标边界框右下角的横、纵坐标 ,用于精确定位目标在画面中的位置。
3. 检测结果与位置信息表格
- 序号:对检测结果进行编号,方便用户区分和查看不同的检测目标。
- 文件路径:记录进行检测的图片或视频文件在本地存储的路径,便于用户追溯原始数据。
- 目标编号:与序号类似,用于标识具体的检测目标。
- 类别:填写识别出的中草药类别。
- 置信度:同上方检测结果显示区中的置信度,体现检测结果的可信度。
- 坐标位置:以更详细的形式记录目标在图像中的位置信息,可能包括更多坐标细节或相关描述。
4. 信息简介区
- 来源信息:说明中草药的植物来源,如所属科属、生长环境。像人参属五加科人参属,多生长于海拔数百米的落叶阔叶林或针叶阔叶混交林下 。
- 药用价值:阐述其在中医药领域的功效,例如枸杞能滋补肝肾、益精明目 ,常用于肝肾阴虚、腰膝酸软等症状的调理。