随着中医药数字化与人工智能技术的深入融合,中草药材的图像识别成为近年来计算机视觉领域的一个重要研究方向。中草药在品类、形态、颜色、质地上差异显著,但部分药材之间又具有高度相似性,人工区分难度大。因此,构建一个高质量、系统化的 中药材图像数据集,对促进智能药材识别、溯源管理与智能审方系统的发展具有重要意义。

本文介绍一个覆盖 163类常见中草药材 的标准化图像数据集,适用于中药识别、分类、检索、辅助诊断等多种任务。

一、数据集概述

该数据集包含 163种中草药材,均为临床常用或药典收录品种。每张图像都按所属品种进行了标注,并存放在对应的类别文件夹下,可直接用于监督式图像分类任务。

二、类别标签定义

本数据集共收录 163 种常见中草药材,每个类别平均包含 约 1200 张高清图像,数据总量超过 26 万张。所有样本均经过人工筛选与分类标注,确保图像质量与类别准确性。以下展示部分具有代表性的药材类别:

类别英文名 中文名 常见功效简述
binglang 槟榔 行气消积、驱虫截疟
baizhi 白芷 解表、祛风止痛
fangfeng 防风 祛风解表、胜湿止痛
gancao 甘草 调和诸药、清热解毒
renshen 人参 大补元气、复脉固脱
huangqi 黄芪 益气固表、托疮生肌
fuling 茯苓 健脾渗湿、宁心安神
danshen 丹参 活血化瘀、凉血消肿
niuxi 牛膝 补肝肾、强筋骨
duzhong 杜仲 补肝肾、安胎
chuanxiong 川芎 活血行气、祛风止痛
jinyinhua 金银花 清热解毒、疏散风热
chaihu 柴胡 解表散热、疏肝解郁
xiakucao 夏枯草 清肝泻火、散结消肿
lingzhi 灵芝 补气安神、扶正固本

数据集中所有图像均来源于真实中药材实拍场景,涵盖药材的原植物形态、切片、干品及炮制品等多种状态,具有较强的多样性与代表性。所有图像均为 .jpg 格式,分辨率为 299×299,画质清晰稳定,可直接用于训练 ResNet、MobileNet、EfficientNet、Vision Transformer(ViT) 等主流图像分类模型。

三、数据组织结构

数据集按类别文件夹存储,结构如下所示,便于直接加载训练:

中草药数据集/
├── train/                      # 训练集
│   ├── 槟榔/
│   │   ├── img_001.jpg
│   │   ├── img_002.jpg
│   │   └── ...
│   ├── 白芷/
│   │   ├── img_001.jpg
│   │   └── ...
│   ├── 甘草/
│   │   ├── img_001.jpg
│   │   └── ...
│   └── ...
│
├── val/                        # 验证集
│   ├── 槟榔/
│   │   ├── img_101.jpg
│   │   ├── img_102.jpg
│   │   └── ...
│   ├── 白芷/
│   │   ├── img_101.jpg
│   │   └── ...
│   ├── 甘草/
│   │   ├── img_101.jpg
│   │   └── ...
│   └── ...
│
└── class_map.txt               # 中药中文-拼音对照表

四、训练集和验证集划分

这段代码用于将图像分类数据集中每个类别下约20%的图像从训练集划分为验证集(可自行修改比例)。它首先读取训练集根目录下的所有类别文件夹,并对每个类别中的图像文件列表进行随机打乱,然后按比例选取20%的图像作为验证集。对于选中的图像,程序会将其从训练集路径移动到验证集对应类别的子文件夹中(若目标文件夹不存在则自动创建),从而完成数据集的训练集与验证集划分操作,适用于基于文件夹结构的图像分类任务。其中文件存放结构和划分代码分别如下:

datasets/
├── train/
│   ├── 阿胶/
│   ├── 侧柏叶/
│   ├── ...
├── val/
import os
import shutil
import random
import cv2
 
train_root = "../datasets/train"
val_root = "../datasets/val"
 
name_list = os.listdir(train_root)
for name in name_list:
    image_root = os.path.join(train_root, name)
    image_list = os.listdir(image_root)
 
    # 随机打乱文件名列表
    random.shuffle(image_list)
    num_images = len(image_list)
    num_val = int(num_images * 0.2)
    val_names = image_list[:num_val]
 
    for image_name in val_names:
        image_path = os.path.join(image_root, image_name)
        print(image_path)
        save_root = os.path.join(val_root, name)
        if not os.path.exists(save_root):
            os.makedirs(save_root)
        save_image_path = os.path.join(save_root, image_name)
        print(save_image_path)
        if os.path.exists(save_image_path) is False:
            shutil.move(image_path, save_image_path)

五、应用场景

可以基于本数据集开展以下研究与扩展:

  • 🔬 药材分割与检测:结合语义分割模型识别药材形态区域

  • 🧾 多模态中医AI研究:将图像与药性文字描述结合

  • 🧍 智能中药识别APP:实现移动端拍照识别药材种类

  • 📚 中药知识图谱构建:结合图像与药理属性数据,建立知识关联模型

(1 封私信 / 4 条消息) 7类茶叶嫩芽图像分类数据集 - 知乎

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐