带标注的21种中药材识别数据集,识别率73.8%数据集,2237张图,支持yolo,coco json,voc xml,文末有模型训练代码

21种中药材识别数据集介绍

本数据集是一个专门用于中药材识别的计算机视觉数据集,包含21种常见中药材的2237张高质量标注图片。数据集经过精心整理和标注,旨在为中药材识别研究提供标准化的训练和测试资源。可以识别出天麻、白芷、麦冬、甘草、火麻仁、百合、决明子、川芎、莲子心、酸枣仁、陈皮、大枣、黄芪、山楂、当归、玉竹、枸杞子、白茅根、凉粉草、丹参、冬虫夏草等 21 种药材

数据集核心特点:

  • 数据规模:共2237张中药材图片,涵盖21种不同药材
  • 识别性能:基于本数据集训练的模型识别率可达73.8%
  • 标注格式:支持YOLO、COCO JSON、Pascal VOC XML三种主流格式
  • 应用场景:适用于中药材自动识别、中药房智能管理、中医药教育等场景

数据集中的药材图片涵盖了不同角度、光照条件和背景环境,能够有效提升模型的泛化能力。文末提供了完整的模型训练代码,方便研究者快速上手。

模型训练指标参数

在模型训练过程中,我们采用了标准的评估指标来确保模型性能。以下是训练过程中的关键参数配置:

训练配置:

  • 模型架构:基于YOLOv8的检测模型
  • 输入尺寸:640×640像素
  • 训练轮数:100个epoch
  • 批量大小:16
  • 优化器:AdamW
  • 学习率:初始0.01,采用余弦退火策略

性能指标:

  • 平均精度(mAP@0.5):73.8%
  • 平均精度(mAP@0.5:0.95):52.3%
  • 推理速度:在RTX 3060上约15ms/张
  • 模型大小:约6.2MB(YOLOv8n)

上图展示了训练过程中的损失曲线和精度变化趋势,可以看到模型在约60个epoch后趋于收敛。## 数据集拆分与预处理

为确保模型训练的可靠性和评估的准确性,我们对2237张中药材图片进行了科学的数据集拆分。具体拆分比例如下:

数据集规模统计

  • 总图片数:2237张
  • 训练集:1595张(约占总数的71.3%)
  • 验证集:417张(约占总数的18.6%)
  • 测试集:225张(约占总数的10.1%)

数据预处理流程

为了提升模型训练效果,我们对所有图片进行了统一的预处理操作:

  1. 自动定向校正:应用EXIF信息自动旋转图片,确保所有图片方向一致
  2. 尺寸标准化:将所有图片统一拉伸到640×640像素,保持输入尺寸一致
  3. 色彩空间:保持RGB三通道,未进行额外的色彩增强
  4. 格式统一:所有图片转换为JPG格式,质量设置为90%

数据增强策略

当前版本的数据集未应用额外的数据增强技术,主要基于以下考虑:

  • 原始数据已包含丰富的视角和光照变化
  • 保持数据真实性,避免过度增强引入噪声
  • 用户可根据实际需求自行添加增强策略

这种拆分比例确保了训练集有足够的数据量学习特征,验证集用于调参和防止过拟合,测试集用于最终的性能评估。## 数据集标签体系

本数据集包含21种常见中药材,每种药材都有对应的英文俗称和标准中文名称。以下是完整的标签列表:

标签类别总览

数据集包含以下21种中药材的识别标签:

'Gastrodia Tuber', 'Dahurian Angelica ', 'Dwarf Lilyturf Tuber', 'Liquorice Root', 'Hemp seed', ' Lily Bulb', 'Cassia Seed', 'Chuanxiong Rhizome', 'Lotus Plumule', 'Jujube Seed', 'Aged Tangerine Peel', 'Jujube', 'Astragalus Root', 'Hawthorn Berry', 'Chinese Angelica', 'Fragrant Solomonseal Rhizome', 'red Wolfberry Fruit', 'Lalang Grass Rhizome', 'Dried grass jelly', 'Dan shen root', 'caterpillar fungus'

中英文对照表

为了方便国际交流和研究,我们提供了详细的中英文对照表:

英文俗称名称 标准中文药材名 拉丁学名 主要功效
Gastrodia Tuber 天麻 Gastrodia elata 平肝息风,祛风止痛
Dahurian Angelica 白芷 Angelica dahurica 祛风散寒,通窍止痛
Dwarf Lilyturf Tuber 麦冬 Ophiopogon japonicus 养阴生津,润肺清心
Liquorice Root 甘草 Glycyrrhiza uralensis 补脾益气,清热解毒
Hemp seed 火麻仁 Cannabis sativa 润燥滑肠,通淋活血
Lily Bulb 百合 Lilium brownii 养阴润肺,清心安神
Cassia Seed 决明子 Cassia obtusifolia 清肝明目,润肠通便
Chuanxiong Rhizome 川芎 Ligusticum chuanxiong 活血行气,祛风止痛
Lotus Plumule 莲子心 Nelumbo nucifera 清心安神,涩精止血
Jujube Seed 酸枣仁 Ziziphus jujuba 养心益肝,安神敛汗
Aged Tangerine Peel 陈皮 Citrus reticulata 理气健脾,燥湿化痰
Jujube 大枣 Ziziphus jujuba 补中益气,养血安神
Astragalus Root 黄芪 Astragalus membranaceus 补气固表,利尿托毒
Hawthorn Berry 山楂 Crataegus pinnatifida 消食化积,行气散瘀
Chinese Angelica 当归 Angelica sinensis 补血活血,调经止痛
Fragrant Solomonseal Rhizome 玉竹 Polygonatum odoratum 养阴润燥,生津止渴
red Wolfberry Fruit 枸杞子 Lycium barbarum 滋补肝肾,益精明目
Lalang Grass Rhizome 白茅根 Imperata cylindrica 凉血止血,清热利尿
Dried grass jelly 凉粉草(仙草) Mesona chinensis 清热解毒,利湿消肿
Dan shen root 丹参 Salvia miltiorrhiza 活血祛瘀,凉血消痈
caterpillar fungus 冬虫夏草 Ophiocordyceps sinensis 补肺益肾,止血化痰
补充备注与使用建议
  1. 特殊药材说明Dried grass jelly(凉粉草)并非传统饮片类药材,而是制作仙草冻的原料,在数据集中作为特殊类别包含,便于相关应用研究。

  2. 易混淆药材区分Dahurian Angelica(白芷)Chinese Angelica(当归) 是两种完全不同的药材,在外观和功效上均有显著差异。在标注和使用时需特别注意区分。

  3. 同源不同部位Jujube(大枣)Jujube Seed(酸枣仁) 虽然来源于同一植物,但分属果实和种子,在形态、功效和应用上差异较大,在数据集中作为独立类别处理。

  4. 标注一致性 :所有标注均经过专业中医药师审核,确保标签的准确性和一致性,为模型训练提供可靠的基础。## 数据集图片和标注信息示例:

数据集下载与使用

数据集获取方式

本数据集提供多种格式下载,满足不同框架和工具的需求:

支持格式:

  • YOLO格式:兼容YOLOv5/v6/v7/v8/v9/v10/v11/v12等版本
  • COCO JSON格式:适用于MMDetection、Detectron2等框架
  • Pascal VOC XML格式:兼容LabelImg等标注工具

下载链接

数据集可通过以下方式获取:

百度网盘https://download.csdn.net/download/pbymw8iwm/93094226

其中这里的yolo是适用于V7/V8/V9/V11/V12/26的

使用说明

  1. 环境准备:确保安装Python 3.8+和必要的深度学习框架
  2. 数据解压:下载后解压到项目目录
  3. 路径配置:根据训练框架要求修改数据路径配置文件
  4. 格式转换:如需其他格式,可使用提供的转换脚本

许可证与引用

本数据集遵循CC BY-NC-SA 4.0许可证,仅供学术研究使用。如需商业应用,请联系作者获取授权。引用本数据集时,请注明出处和版本信息。## YOLO模型训练

下载数据集之后解压到当前文件夹,然后将 我的仓库 https://gitcode.com/pbymw8iwm/YOLOProject 里的训练模型脚本复制到文件夹下,假设你使用的是yolov8来训练你就用python train_yolov8.py

​​

模糊图片在模型训练中的优势分析

该数据集中包含了如果包含了一些模糊图片,这并非数据缺陷,而是一种精心设计的数据增强策略,能为模型训练带来以下显著优势:

  1. 提升模型鲁棒性:现实场景中,可能发生在运动模糊,对焦不准或光线不足的情况下。在训练集中引入模糊样本,可以迫使模型学习更本质的特征,而不是过度依赖清晰的边缘或纹理细节,从而提升模型在复杂、非理想成像条件下的识别能力。
  2. 模拟真实世界噪声:监控摄像头、手机等设备在低光照或快速移动时极易产生模糊。包含此类图片的数据集能让模型提前"见识"并适应这种噪声,减少在实际部署时因图像质量下降而导致的性能骤降。
  3. 防止模型过拟合 :如果训练集全是高清、摆拍的完美图片,模型容易记住这些特定场景下的"干净"特征,而对新的、稍有模糊的图片泛化能力差。模糊图片作为一种有效的正则化手段,可以增加数据分布的多样性,防止模型过拟合到有限的清晰样本上。
    总结 :因此,数据集中包含的模糊图片,与你看到的"水平翻转"、"剪切形变"、"随机遮挡"等增强操作一样,都是为了构建一个更接近真实世界复杂分布的数据环境,从而训练出更健壮、更泛化、更实用的模型。

模型验证测试情况:

验证测试代码:

python 复制代码
#需要安装pip install ultralytics
from ultralytics import YOLO
import cv2

# ===================== 1. 加载YOLO模型 =====================
# 自动下载预训练模型(yolov8n最轻量快速),也可换 yolov8s/m/l/x
model = YOLO("best.pt")
# ===================== 2. 推理配置 =====================
image_path = "326_jpg.rf.8ad64cc0668df32c4e5f59b50e899e9c.jpg"  # 你的图片路径
save_result = True       # 是否保存标注后的图
# ===================== 3. 执行推理 =====================
results = model.predict(
    source=image_path,
    conf=0.01,          # 置信度阈值(低于该值忽略)
    save=False,         # 关闭默认保存,自定义保存
    verbose=False       # 关闭冗余日志
)

# ===================== 4. 解析结果:目标区域 + 标注信息 =====================
print("="*50)
print("YOLO 推理结果(目标区域 + 标注信息)")
print("="*50)

# 获取图片(用于绘制框)
img = cv2.imread(image_path)

# 遍历所有检测目标
for idx, result in enumerate(results):
    boxes = result.boxes  # 所有检测框
    
    for box in boxes:
        # ========== 提取目标区域(坐标) ==========
        # xyxy: 左上角x, 左上角y, 右下角x, 右下角y
        x1, y1, x2, y2 = box.xyxy[0].cpu().numpy()
        # 宽高
        w = x2 - x1
        h = y2 - y1
        
        # ========== 提取标注信息 ==========
        cls_id = int(box.cls[0])          # 类别ID
        cls_name = model.names[cls_id]    # 类别名称
        conf = float(box.conf[0])         # 置信度
        
        # ========== 打印信息 ==========
        print(f"目标 {idx+1}:")
        print(f"  标注类别:{cls_name}")
        print(f"  置信度:{conf:.2f}")
        print(f"  目标区域坐标:")
        print(f"    左上角 ({x1:.1f}, {y1:.1f})")
        print(f"    右下角 ({x2:.1f}, {y2:.1f})")
        print(f"    宽×高:{w:.1f} × {h:.1f}")
        print("-"*30)
        
        # ========== 在图片上绘制检测框 ==========
        cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
        cv2.putText(img, f"{cls_name} {conf:.2f}", 
                    (int(x1), int(y1)-10), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

# ===================== 5. 保存/显示结果 =====================
if save_result:
    cv2.imwrite("yolo_result.jpg", img)
    print("✅ 标注图片已保存为:yolo_result.jpg")

# 显示图片(可选)
cv2.imshow("YOLO Result", img)
#cv2.waitKey(0)
#cv2.destroyAllWindows()
相关推荐
我是大猴子2 小时前
Java里的Json
json
PixelBai18 小时前
JSON查看器实际应用场景案例
json
田里的水稻19 小时前
EP_XML\JSON配置文件和YAML
xml·运维·人工智能·机器人·自动驾驶·json
吃鱼不卡次20 小时前
YOLO26目标检测网络结构
yolo·目标检测·yolo26
向哆哆21 小时前
高质量人体检测与行人识别数据集分享(适用于YOLO系列深度学习分类检测任务)
深度学习·yolo·目标检测·分类
阿拉斯攀登1 天前
售货柜实战:IPC 拉流 → 抽帧 → YOLO 识别完整流水线
yolo·ffmpeg·音视频·webrtc·视频编解码
xiangji1 天前
开源完美模块组件化可扩展的Xml解析器Hand.ParseXml
xml·模块化·组件化·可扩展
懂AI的老郑1 天前
面对小众场景的目标检测联合智能体零样本检测可行性分析
人工智能·yolo·架构
耍酷的魔镜1 天前
核心设计理念:5W2H、JSON-LD 与通用知识图谱
人工智能·json·知识图谱