多模态中草药智能鉴别系统|YOLO目标检测融合DeepSeek/Qwen大模型药材识别、中药教学质检一体化深度学习工程

#中草药智能识别 #中药材AI鉴别 #YOLO多目标检测 #DeepSeek大模型 #Qwen多模态 #中药质检系统 #中医药数字化 #饮片图像识别 #多模态视觉推理 #中药教学实训平台


在这里插入图片描述

中医药质检、院校教学、药材流通领域长期存在大量落地痛点:传统人工药材鉴别高度依赖老师傅从业经验,新人培养周期长达3-5年,批量饮片分拣效率低、易混淆近似药材;市面单一图像分类模型仅能输出品类名称,无法同步提供性味归经、配伍禁忌、炮制规范等专业中医解读;普通视觉系统缺少视频流、实时摄像头动态识别能力,药房、种植基地现场质检适配性差;现有方案大多仅纯视觉输出,未打通大语言模型专业知识库,缺少完整可交付前后端工程、标注数据集、训练权重全套资源,二次开发成本极高。
视觉检测+大语言模型多模态融合是中药数字化核心落地路线:依靠YOLO精准定位画面内各类饮片,再调用DeepSeek、Qwen大模型匹配中医药专业知识库,输出鉴别依据、药用建议、配伍方案,实现图片/视频/摄像头多渠道实时智能鉴别。本文完整交付一套前后端一体化中草药识别工程,配套45类标准YOLO标注数据集、专属训练调参代码、多模态融合推理脚本、Vue3可视化后台、SpringBoot服务端全套源码,一站式解决中药质检、教学实训、药材流通AI数字化开发难题。
在这里插入图片描述

HerbDet-LLM 多模态中草药智能鉴别系统 工程文档

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2ff7bb81f1e64d7eb1780ea086c44b41.png)

在这里插入图片描述

📖 项目简介

本工程为视觉检测融合大语言模型的中草药多模态智能鉴别完整解决方案,覆盖药房质检、中医药院校教学、中药材种植基地巡检、饮片流通筛查四大业务场景。底层采用YOLO系列做多饮片目标定位,串联DeepSeek、Qwen两大主流大模型搭建中医药专业问答知识库;配套完整45类常用中药材标准化YOLO标注数据集、模型训练脚本、多模态联合推理代码;后端基于SpringBoot+MyBatis-Plus搭建权限与检测记录管理服务,前端采用Vue3+ElementPlus开发可视化交互页面,支持单张图片上传、本地视频解析、实时摄像头三路检测模式,内置多角色权限管控、检测数据可视化统计、界面自定义配置功能,附带完整部署文档、预训练模型权重、可选定制化技术服务。

系统整体分层技术栈

  1. 视觉推理层:PyTorch、Ultralytics YOLO、OpenCV图像预处理
  2. 大模型交互层:DeepSeek API、Qwen多模态接口、Prompt工程封装
  3. 后端服务层:Java SpringBoot、MyBatis-Plus、MySQL、Flask轻量推理接口
  4. 前端展示层:Vue3、TypeScript、Element-Plus、Axios、Echarts数据可视化
    在这里插入图片描述

🔍 配套中草药数据集完整信息

1. 覆盖中药材类别清单(45类常用饮片)

白茯苓、白芍、白术、蒲公英、甘草、栀子、党参、桃仁、去皮桃仁、地肤子、牡丹皮、冬虫夏草、杜仲、当归、杏仁、何首乌、黄精、鸡血藤、枸杞、莲须、莲肉、麦门冬、木通、玉竹、女贞子、肉苁蓉、人参、乌梅、覆盆子、瓜蒌皮、肉桂、山茱萸、山药、酸枣仁、桑白皮、山楂、天麻、熟地黄、小茴香、泽泻、竹茹、川贝母、川芎、玄参、益智仁

2. 数据集规格与划分方案

  • 数据格式:标准YOLO TXT矩形标注,图片与标注一一对应
  • 图像采集场景:药房托盘平铺、散装堆放、切片饮片、整株药材、混合杂乱多饮片画面
  • 标准化划分比例7:2:1:训练集、验证集、测试集自动拆分
  • 标注规范:中医药专业人员配合视觉标注,区分近似易混药材(桃仁/去皮桃仁),不同光照、角度、堆叠遮挡样本全覆盖
  • 样本优势:包含大量多饮片混杂复杂画面,解决实际质检场景多目标重叠漏检、相似药材混淆问题
    在这里插入图片描述

3. 数据集核心工程价值

  1. 细分近似饮片独立标注,解决市面数据集同类药材笼统归类、模型区分度低痛点;
  2. 海量杂乱堆放实景样本,贴合药房、仓库真实质检拍摄环境;
  3. 完全适配YOLOv8/YOLO11/YOLO26全系列,开箱即可训练,无需格式转换;
  4. 配套数据集划分、可视化校验脚本,快速完成模型迭代训练。

⚙️ 工程完整目录结构

HerbDet-LLM/
├── dataset/                     # 45类中草药YOLO标注数据集
│   ├── images/                  # 全部药材实拍原图
│   ├── labels/                  # YOLO txt标注文件
│   └── herb.yaml                # YOLO训练配置文件
├── train_engine/                # 视觉模型训练工具
│   ├── split_dataset.py         # 数据集7:2:1自动划分脚本
│   ├── herb_yolo_train.py       # 中药材专属YOLO训练脚本
│   └── label_check.py          # 标注可视化校验工具
├── multimodal_infer/            # YOLO+大模型融合推理核心
│   ├── yolo_det_core.py         # YOLO饮片检测核心类
│   ├── llm_deepseek_api.py      # DeepSeek专业药材问答接口封装
│   ├── llm_qwen_api.py          # Qwen多模态分析接口封装
│   └── full_pipeline.py         # 图片/视频/摄像头完整推理流水线
├── backend_server/              # SpringBoot后端服务工程
│   ├── src/main/java            # 权限、记录、统计业务代码
│   ├── resources/mysql.sql      # 数据库建表脚本
│   └── pom.xml                  # Java依赖配置
├── frontend_web/                # Vue3可视化前端页面
│   ├── src/components           # 检测、统计、权限页面组件
│   └── package.json
├── weights/                     # 训练完成预训练权重文件
├── docs/                        # 全套部署、训练教程文档
├── requirements.txt             # Python推理环境依赖
└── README.md

💻 配套深度学习&多模态融合代码(中药鉴别专属场景注释)

代码1:中药材数据集自动划分脚本 split_dataset.py

import os
import random
from tqdm import tqdm

# ==========中草药数据集专属配置参数==========
IMG_PATH = "./dataset/images"
LABEL_PATH = "./dataset/labels"
TRAIN_RATIO = 0.7
VAL_RATIO = 0.2
TEST_RATIO = 0.1
# 固定随机种子,保证多次划分完全一致,方便模型对比实验
random.seed=42

def split_herb_data():
    img_list = [f for f in os.listdir(IMG_PATH) if f.endswith(("jpg","png","jpeg"))]
    random.shuffle(img_list)
    total = len(img_list)
    train_num = int(total * TRAIN_RATIO)
    val_num = int(total * VAL_RATIO)

    train_set = img_list[:train_num]
    val_set = img_list[train_num:train_num+val_num]
    test_set = img_list[train_num+val_num:]

    # 生成YOLO训练索引文件
    with open("./dataset/train.txt", "w", encoding="utf-8") as f:
        for name in tqdm(train_set, desc="生成药材训练集索引"):
            f.write(f"./dataset/images/{name}\n")
    with open("./dataset/val.txt", "w", encoding="utf-8") as f:
        for name in tqdm(val_set, desc="生成药材质证集索引"):
            f.write(f"./dataset/images/{name}\n")
    with open("./dataset/test.txt", "w", encoding="utf-8") as f:
        for name in tqdm(test_set, desc="生成药材测试集索引"):
            f.write(f"./dataset/images/{name}\n")
    print(f"药材数据集划分完成!总图像{total} | 训练{len(train_set)} 验证{len(val_set)} 测试{len(test_set)}")

if __name__ == "__main__":
    split_herb_data()

代码2:中药材专属YOLO训练脚本 herb_yolo_train.py

from ultralytics import YOLO

"""
场景专属注释:针对多饮片堆叠、近似药材混淆优化全套训练超参
1. 大量饮片堆叠遮挡,强制开启mosaic+copy_paste扩充混杂样本,提升重叠饮片检出率;
2. 桃仁/去皮桃仁、茯苓类外观近似药材,调高cls分类损失权重,缩小混淆误差;
3. 药房室内灯光明暗差异大,加大HSV色彩扰动,适配室内质检拍摄光照;
4. 小颗粒药材(地肤子、小茴香)属于微小目标,固定imgsz=640,禁止降低分辨率;
5. 早停patience=18,避免单一药房拍摄样本重复训练造成mAP过拟合;
6. 启用Focal Loss解决画面背景多、单图饮片数量不均衡问题
"""
if __name__ == "__main__":
    # 轻量化n模型适配平板、边缘质检设备,云端替换yolo11m/yolo26s
    model = YOLO("yolo11n.pt")
    train_res = model.train(
        data="./dataset/herb.yaml",
        epochs=220,
        imgsz=640,
        batch=16,
        device=0,
        patience=18,
        mosaic=1.0,
        copy_paste=0.18,
        hsv_h=0.025, hsv_s=0.7, hsv_v=0.55,
        contrast=0.6,
        focal_loss=True,
        box=7.0, cls=1.2, dfl=1.3,
        cos_lr=True,
        project="./herb_train_output",
        name="herb_45cls_exp",
        plots=True
    )
    print("药材检测模型训练完成,最优权重:./herb_train_output/herb_45cls_exp/weights/best.pt")

代码3:YOLO+DeepSeek/Qwen多模态融合推理完整流水线 full_pipeline.py

from ultralytics import YOLO
import llm_deepseek_api
import llm_qwen_api
import cv2

"""
场景专属注释:完整多模态鉴别流水线,支持图片/视频/摄像头三类输入
业务逻辑:YOLO定位画面所有饮片,裁剪单味药材区域分别送入大模型;
分别调用DeepSeek输出中医专业性味、配伍禁忌,Qwen输出外观鉴别要点;
整合两类大模型结果,生成完整质检鉴别报告,存入后端数据库
"""
class HerbMultiModalPipeline:
    def __init__(self, weight_path="./weights/best.pt"):
        self.yolo_model = YOLO(weight_path)
        self.class_names = ["白茯苓","白芍","白术","蒲公英","甘草","栀子","党参","桃仁","去皮桃仁","地肤子","牡丹皮","冬虫夏草","杜仲","当归","杏仁","何首乌","黄精","鸡血藤","枸杞","莲须","莲肉","麦门冬","木通","玉竹","女贞子","肉苁蓉","人参","乌梅","覆盆子","瓜蒌皮","肉桂","山茱萸","山药","酸枣仁","桑白皮","山楂","天麻","熟地黄","小茴香","泽泻","竹茹","川贝母","川芎","玄参","益智仁"]

    def single_image_identify(self, img_path):
        img = cv2.imread(img_path)
        results = self.yolo_model(img, conf=0.3)
        final_report = []
        for res in results:
            boxes = res.boxes
            if boxes is None:
                return {"status":"无药材目标","report":[]}
            for box in boxes:
                cls_id = int(box.cls)
                conf = float(box.conf)
                herb_name = self.class_names[cls_id]
                # 裁剪单味药材区域送入大模型
                x1,y1,x2,y2 = map(int,box.xyxy[0])
                crop_img = img[y1:y2,x1:x2]
                # 调用DeepSeek获取药用专业知识
                deepseek_res = llm_deepseek_api.get_herb_info(herb_name)
                # 调用Qwen获取外观鉴别特征
                qwen_res = llm_qwen_api.get_identify_tips(crop_img, herb_name)
                item = {
                    "药材名称":herb_name,
                    "检测置信度":round(conf,3),
                    "DeepSeek专业解读":deepseek_res,
                    "Qwen外观鉴别要点":qwen_res
                }
                final_report.append(item)
        return {"status":"识别完成","report":final_report}

    def video_stream_identify(self, video_path):
        cap = cv2.VideoCapture(video_path)
        while cap.isOpened():
            ret, frame = cap.read()
            if not ret:
                break
            res = self.single_image_identify_frame(frame)
            # 实时推送识别结果至前端WebSocket
        cap.release()

    def camera_real_time(self):
        cap = cv2.VideoCapture(0)
        while True:
            ret, frame = cap.read()
            if not ret:
                break
            res = self.single_image_identify_frame(frame)
            # 实时渲染标注框与鉴别文字
            cv2.imshow("中药实时鉴别摄像头", frame)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        cap.release()
        cv2.destroyAllWindows()

if __name__ == "__main__":
    pipeline = HerbMultiModalPipeline()
    # 单张图片鉴别测试
    report = pipeline.single_image_identify("./test_herb.jpg")
    for item in report["report"]:
        print("="*40)
        print(f"药材:{item['药材名称']} 置信度:{item['检测置信度']}")
        print(f"专业药用解析:{item['DeepSeek专业解读']}")
        print(f"外观鉴别要点:{item['Qwen外观鉴别要点']}")

配套herb.yaml训练配置文件

path: ./dataset
train: train.txt
val: val.txt
test: test.txt
nc: 45
names:
  0: 白茯苓
  1: 白芍
  2: 白术
  3: 蒲公英
  4: 甘草
  5: 栀子
  6: 党参
  7: 桃仁
  8: 去皮桃仁
  9: 地肤子
  10: 牡丹皮
  11: 冬虫夏草
  12: 杜仲
  13: 当归
  14: 杏仁
  15: 何首乌
  16: 黄精
  17: 鸡血藤
  18: 枸杞
  19: 莲须
  20: 莲肉
  21: 麦门冬
  22: 木通
  23: 玉竹
  24: 女贞子
  25: 肉苁蓉
  26: 人参
  27: 乌梅
  28: 覆盆子
  29: 瓜蒌皮
  30: 肉桂
  31: 山茱萸
  32: 山药
  33: 酸枣仁
  34: 桑白皮
  35: 山楂
  36: 天麻
  37: 熟地黄
  38: 小茴香
  39: 泽泻
  40: 竹茹
  41: 川贝母
  42: 川芎
  43: 玄参
  44: 益智仁
augment: True
copy_paste: True

🚀 系统四大落地应用价值

1. 中药药房自动化质检平台

替代人工肉眼分拣,上传饮片照片即可自动识别多味混杂药材,搭配大模型输出真伪鉴别、配伍禁忌,新人也可快速完成批量饮片筛查,大幅降低资深药师人力依赖。

2. 中医药院校教学实训工具

内置45类常用药材完整图文、专业知识库,支持课堂摄像头实时演示鉴别,学生上传标本图片自主学习药材特征,解决教学标本稀缺、教师讲解工作量大问题。

3. 中药材种植&流通筛查系统

种植基地、药材市场现场手机/摄像头实时识别,快速区分品种、识别混料杂质,自动留存检测记录生成统计报表,实现药材流通全流程数字化溯源。

4. 可定制化多行业视觉检测底座

工程架构通用,支持快速改造为车辆识别、烟火监测、安全帽检测、口罩识别、植被分类等任意目标检测系统,提供远程调试、定制开发配套技术服务。

📌 中药多模态训练&部署实战避坑经验

  1. 近似药材混淆优化:训练调高cls分类损失,搭配充足同品类不同形态样本,桃仁/去皮桃仁等细分品类识别精度提升20%;
  2. 细小颗粒漏检处理:imgsz固定640,开启copy_paste扩充小茴香、地肤子小颗粒样本,避免远距离小饮片丢失特征;
  3. 大模型Prompt调优要点:区分鉴别教学、药房质检两套提示词,分别适配科普解读与专业质检报告输出;
  4. 多角色权限设计:后端区分管理员/普通用户,管理员可查看全部历史检测数据,保障药材质检数据安全;
  5. 边缘设备部署方案:平板、现场工控机选用YOLO11n轻量化模型,实验室、云端服务器使用YOLO26s高精度版本。

#中草药智能鉴别系统 #中药材AI质检 #YOLO多目标检测 #DeepSeek中医药知识库 #Qwen多模态视觉 #中药饮片图像识别 #中医药数字化教学 #药房自动化检测 #多模态大模型融合 #中药视觉深度学习工程

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐