首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于yolov8的100种中草药智能识别系统python源码+pt模型+训练日志+精美GUI界面

基于yolov8的100种中草药智能识别系统python源码+pt模型+训练日志+精美GUI界面

作者头像
云未归来
发布2025-07-22 11:40:05
发布2025-07-22 11:40:05
9500
代码可运行
举报
运行总次数:0
代码可运行

【算法介绍】

基于YOLOv8的100种中草药智能识别系统是一款利用最新的YOLOv8算法开发的高效、准确的识别工具。该系统能够精准快速地识别100种不同的中草药类别,对于传统中药行业是一次重要的革新。

该系统通过搜集不同中草药的相关数据图片,并基于YOLOv8的深度学习技术进行训练,构建了一个强大的识别模型。该模型可以支持图片、批量图片、视频以及摄像头等多种输入方式进行检测,能够实时显示识别结果、置信度以及用时等信息。

在实际应用中,该系统具有广泛的应用前景。例如,在药材市场监管方面,可以协助监管部门对药材市场进行质量监督,有效识别伪劣药材,保护消费者权益。在中药企业的质量控制方面,企业可以利用此系统进行药材质量的快速检验,保障产品质量,减少人工鉴别成本。此外,该系统还可以用于药学教育与培训、药用植物保护、中药配方颗粒生产以及消费者个人使用等多个方面。

总的来说,基于YOLOv8的100种中草药智能识别系统的开发和应用,对于提升中药行业的科技水平、保障药品安全以及推广中草药文化都具有重要的作用。该系统不仅具有高效、准确的识别能力,而且具有广泛的应用前景和深远的社会意义。

【效果展示】

【测试环境】

windows10 anaconda3+python3.8 torch==1.9.0+cu111 ultralytics==8.2.95

【模型可以检测出类别】

代码语言:javascript
代码运行次数:0
运行
复制
anxixiang
baibiandou
baifan
bailian
baimaogen
baiqian
baishao
baizhi
baiziren
beishashen
bibo
bichengqie
biejia
binglang
cangzhu
caodoukou
chenxiang
chuanlianzi
chuanmuxiang
chuanniuxi
dafupi
dandouchi
daoya
dilong
dongchongxiacao
fangfeng
fanxieye
fengfang
gancao
ganjiang
gansong
gaoben
ghishizhi
gouqizi
guizhi
gujingcao
guya
haiiong
haipiaoxiao
hehuanpi
huangbo
huangqi
huangqin
hubeibeimu
jiangcan
jiezi
jiguanhua
jindenglong
jineijin
jingjiesui
jinguolan
jinqianbaihuashe
jiuxiangchong
juhe
kudiding
laifuzi
lianfang
lianxu
lianzi
lianzixin
lingzhi
lizhihe
longyanrou
lugen
lulutong
maidong
mudingxiang
qianghuo
qiannianjian
qinpi
quanxie
rendongteng
renshen
roudoukou
sangjisheng
sangpiaoxiao
sangshen
shancigu
shannai
shanzhuyu
shayuanzi
shiliupi
sigualuo
suanzaoren
sumu
taizishen
tianhuafen
tianma
tujingpi
walengzi
wujiapi
xixin
yinchaihu
yiyiren
yujin
zhebeimu
zhiqiao
zhuru
zhuyazao
zirantong

训练数据集

https://download.csdn.net/download/FL1623863129/88980711

【训练信息】

参数

训练集图片数

8958

验证集图片数

1025

accuracy_top1

80.0%

accuracy_top5

93.0%

训练轮数

100

batch_size

512

模型输入

(256,256)

【部分实现源码】
代码语言:javascript
代码运行次数:0
运行
复制
class Ui_MainWindow(QtWidgets.QMainWindow):
    signal = QtCore.pyqtSignal(str, str)
 
    def setupUi(self):
        self.setObjectName("MainWindow")
        self.resize(1280, 728)
        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
 
        self.weights_dir = './weights'
 
        self.picture = QtWidgets.QLabel(self.centralwidget)
        self.picture.setGeometry(QtCore.QRect(260, 10, 1010, 630))
        self.picture.setStyleSheet("background:black")
        self.picture.setObjectName("picture")
        self.picture.setScaledContents(True)
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(10, 10, 81, 21))
        self.label_2.setObjectName("label_2")
        self.cb_weights = QtWidgets.QComboBox(self.centralwidget)
        self.cb_weights.setGeometry(QtCore.QRect(10, 40, 241, 21))
        self.cb_weights.setObjectName("cb_weights")
        self.cb_weights.currentIndexChanged.connect(self.cb_weights_changed)
 
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(10, 70, 72, 21))
        self.label_3.setObjectName("label_3")
        self.hs_conf = QtWidgets.QSlider(self.centralwidget)
        self.hs_conf.setGeometry(QtCore.QRect(10, 100, 181, 22))
        self.hs_conf.setProperty("value", 25)
        self.hs_conf.setOrientation(QtCore.Qt.Horizontal)
        self.hs_conf.setObjectName("hs_conf")
        self.hs_conf.valueChanged.connect(self.conf_change)
        self.dsb_conf = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.dsb_conf.setGeometry(QtCore.QRect(200, 100, 51, 22))
        self.dsb_conf.setMaximum(1.0)
        self.dsb_conf.setSingleStep(0.01)
        self.dsb_conf.setProperty("value", 0.25)
        self.dsb_conf.setObjectName("dsb_conf")
        self.dsb_conf.valueChanged.connect(self.dsb_conf_change)
        self.dsb_iou = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.dsb_iou.setGeometry(QtCore.QRect(200, 160, 51, 22))
        self.dsb_iou.setMaximum(1.0)
        self.dsb_iou.setSingleStep(0.01)
        self.dsb_iou.setProperty("value", 0.45)
        self.dsb_iou.setObjectName("dsb_iou")
        self.dsb_iou.valueChanged.connect(self.dsb_iou_change)
        self.hs_iou = QtWidgets.QSlider(self.centralwidget)
        self.hs_iou.setGeometry(QtCore.QRect(10, 160, 181, 22))
        self.hs_iou.setProperty("value", 45)
        self.hs_iou.setOrientation(QtCore.Qt.Horizontal)
        self.hs_iou.setObjectName("hs_iou")
        self.hs_iou.valueChanged.connect(self.iou_change)
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(10, 130, 72, 21))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(10, 210, 72, 21))
        self.label_5.setObjectName("label_5")
        self.le_res = QtWidgets.QTextEdit(self.centralwidget)
        self.le_res.setGeometry(QtCore.QRect(10, 240, 241, 400))
        self.le_res.setObjectName("le_res")
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1110, 30))
        self.menubar.setObjectName("menubar")
        self.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)
        self.toolBar = QtWidgets.QToolBar(self)
        self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.toolBar.setObjectName("toolBar")
        self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.actionopenpic = QtWidgets.QAction(self)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/images/1.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionopenpic.setIcon(icon)
        self.actionopenpic.setObjectName("actionopenpic")
        self.actionopenpic.triggered.connect(self.open_image)
        self.action = QtWidgets.QAction(self)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/images/2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action.setIcon(icon1)
        self.action.setObjectName("action")
        self.action.triggered.connect(self.open_video)
        self.action_2 = QtWidgets.QAction(self)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/images/3.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_2.setIcon(icon2)
        self.action_2.setObjectName("action_2")
        self.action_2.triggered.connect(self.open_camera)
 
        self.actionexit = QtWidgets.QAction(self)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/images/4.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionexit.setIcon(icon3)
        self.actionexit.setObjectName("actionexit")
        self.actionexit.triggered.connect(self.exit)
 
        self.toolBar.addAction(self.actionopenpic)
        self.toolBar.addAction(self.action)
        self.toolBar.addAction(self.action_2)
        self.toolBar.addAction(self.actionexit)
 
        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
        self.init_all()

使用步骤: (1)首先根据官方框架https://github.com/ultralytics/ultralytics安装教程安装好yolov8环境,并安装好pyqt5 (2)切换到自己安装的yolov8环境后,并切换到源码目录,执行python main.py即可运行启动界面,进行相应的操作即可

项目提供文件有: python源码 yolov8n-cls.pt 训练的日志csv文件(在weights\results.csv) 测试图片(在test_img文件夹下面)

完整源码下载地址:

https://download.csdn.net/download/FL1623863129/89826624

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【部分实现源码】
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档