行业资讯
📅 2026/8/9 6:34:52
中药材智能分拣系统 药房自动化识别与计数 深度学习目标检测框架YOLOV8训练中草药检测数据集 识别50中中药的检测识别
深度学习目标检测框架YOLOV8训练中草药检测数据集 识别50中中药的检测识别文章目录深度学习目标检测框架YOLOV8训练中草药检测数据集 识别50中中药的检测识别**中草药检测YOLO数据集总览****中草药类别详细统计表****数据集特点总结****典型应用场景** 一、环境搭建CUDA Anaconda Python 依赖1. 检查 CUDA 驱动2. 安装 Anaconda3. 创建 Python 虚拟环境4. 安装必要依赖 二、数据集结构你已划分好 三、创建 data.yaml 文件 四、训练代码train.py—— 专为小样本、多类别优化 五、推理与预测代码infer.py 六、评估代码evaluate.py 七、主函数整合main.py 项目目录结构建议✅ 总结你已具备完整能力 数据集分析与建议1. **类别不平衡问题**2. **小目标问题** 进阶建议提升性能 模型导出用于部署 可视化各类别 AP可选以下文字及代码仅供参考学习使用。中草药检测YOLO数据集总览项目内容数据集名称中草药检测YOLO数据集总图像数量9,709 张划分比例训练集 : 验证集 8 : 2训练集图像数7,767 张验证集图像数1,942 张类别数量50 类标注格式支持 YOLO.txt、PASCAL VOC.xml、COCO.json等多种格式模型兼容性适用于 YOLOv5 至 YOLOv11 系列模型任务类型目标检测Object Detection、细粒度分类中草药类别详细统计表序号英文标签中文名称图片数量标注框总数备注密度分析1ginseng人参209292平均每图 1.4 个目标2Leech水蛭163284平均每图 1.74 个目标3JujubaeFructus大枣216800高密度平均 3.74LiliiBulbus百合191259平均 1.365CoptidisRhizoma黄连192207平均 1.086MumeFructus乌梅194696高密度平均 3.597MagnoliaBark厚朴203598高密度平均 2.958Oyster牡蛎198245平均 1.249Seahorse海马150381高密度平均 2.5410Luohanguo罗汉果201252平均 1.2511GlycyrrhizaUralensis甘草190280平均 1.4712Sanqi三七190231平均 1.2213TetrapanacisMedulla通草183212平均 1.1614CoicisSemen薏苡仁192244平均 1.2715LyciiFructus枸杞子214598高密度平均 2.7916TruestarAnise八角茴香212644高密度平均 3.0417ClamShell珍珠母蛤壳171649高密度平均 3.818Chuanxiong川芎209544高密度平均 2.619Garlic大蒜222608高密度平均 2.7420GinkgoBiloba银杏190629高密度平均 3.3121ChrysanthemiFlos菊花167267平均 1.622AtractylodesMacrocephala白术198277平均 1.423JuglandisSemen核桃仁196499高密度平均 2.5524TallGastrodiae天麻192368平均 1.9225TrionycisCarapax鳖甲200298平均 1.4926AngelicaRoot当归211316平均 1.527Hawthorn山楂188367平均 1.9528CrociStigma西红花藏红花217240平均 1.1129SerpentisPeriostracum蛇蜕175180平均 1.0330EucommiaBark杜仲196469高密度平均 2.3931ImperataeRhizoma白茅根196214平均 1.0932LoniceraJaponica金银花188409高密度平均 2.1733Zhizi栀子2131073极高密度平均 5.0434Scorpion全蝎169227平均 1.3435HouttuyniaeHerba鱼腥草184193平均 1.0536EupolyphagaSinensis土鳖虫171408高密度平均 2.3937OroxylumIndicum木蝴蝶207397平均 1.9238CurcumaLonga姜黄194377平均 1.9439NelumbinisPlumula莲子心201250平均 1.2440ArecaeSemen槟榔192715高密度平均 3.7241Scolopendra蜈蚣184203平均 1.142MoriFructus桑葚205551高密度平均 2.6943FritillariaeCirrhosaeBulbus川贝母207242平均 1.1744DioscoreaeRhizoma山药219374平均 1.7145CicadaePeriostracum蝉蜕205446高密度平均 2.1846PiperCubeba荜茇186333平均 1.7947BupleuriRadix柴胡190206平均 1.0848AntelopeHom羚羊角152362高密度平均 2.3849Pangdahai胖大海215706高密度平均 3.2850NelumbinisSemen莲子190426高密度平均 2.24数据集特点总结特点说明✅类别丰富包含 50 种常见中草药覆盖根茎、果实、动物药、矿物药等类型✅标注完整所有图像均已标注提供 YOLO.txt、VOC.xml、COCO.json多种格式✅高密度目标多数药材如枸杞、胖大海、槟榔、栀子为小目标且密集分布适合训练高精度检测模型✅划分明确按 8:2 划分训练集与验证集便于模型训练与评估✅通用性强兼容 YOLOv5 至 YOLOv11 系列模型典型应用场景中药材智能分拣系统药房自动化识别与计数中药饮片质量检测传统医药数字化管理AI辅助中医药教学与科研该数据集为中草药自动识别提供了高质量、大规模的目标检测数据支持适用于工业、医疗、教育等多个领域。如需生成data.yaml配置文件或训练建议请继续提问11你提供的中草药检测数据集是一个非常典型且具有挑战性的目标检测任务包含9709 张图像、50 类中药材已划分为训练集7767和验证集1942非常适合使用YOLOv8进行高精度目标检测。我们将从环境搭建 → 数据准备 → 模型训练 → 推理评估 → 模型导出全流程指导你构建一个高精度的中草药智能识别系统。 一、环境搭建CUDA Anaconda Python 依赖1. 检查 CUDA 驱动nvidia-smi确保 GPU 正常工作推荐 CUDA 11.8 或 12.12. 安装 Anaconda下载地址https://www.anaconda.com/products/distribution3. 创建 Python 虚拟环境# 创建环境conda create-nherb_detectionpython3.9# 激活环境conda activate herb_detection4. 安装必要依赖# 安装 PyTorch以 CUDA 11.8 为例pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 Ultralytics YOLOv8pipinstallultralytics# 安装其他工具pipinstallopencv-python numpy matplotlib scikit-learn tqdm pillow pandas seaborn✅ 验证安装importtorchprint(torch.__version__)print(torch.cuda.is_available())# 应输出 True 二、数据集结构你已划分好herb_dataset/ ├── images/ │ ├── train/ # 7767 张 │ └── val/ # 1942 张 ├── labels/ │ ├── train/ # 对应 .txt │ └── val/ ├── data.yaml # 需创建 三、创建data.yaml文件# data.yamltrain:herb_dataset/images/trainval:herb_dataset/images/valnc:50names:-ginseng-Leech-JujubaeFructus-LiliiBulbus-CoptidisRhizoma-MumeFructus-MagnoliaBark-Oyster-Seahorse-Luohanguo-GlycyrrhizaUralensis-Sanqi-TetrapanacisMedulla-CoicisSemen-LyciiFructus-TruestarAnise-ClamShell-Chuanxiong-Garlic-GinkgoBiloba-ChrysanthemiFlos-AtractylodesMacrocephala-JuglandisSemen-TallGastrodiae-TrionycisCarapax-AngelicaRoot-Hawthorn-CrociStigma-SerpentisPeriostracum-EucommiaBark-ImperataeRhizoma-LoniceraJaponica-Zhizi-Scorpion-HouttuyniaeHerba-EupolyphagaSinensis-OroxylumIndicum-CurcumaLonga-NelumbinisPlumula-ArecaeSemen-Scolopendra-MoriFructus-FritillariaeCirrhosaeBulbus-DioscoreaeRhizoma-CicadaePeriostracum-PiperCubeba-BupleuriRadix-AntelopeHom-Pangdahai-NelumbinisSemen✅nc: 50表示 50 类✅ 路径根据你的实际路径调整 四、训练代码train.py—— 专为小样本、多类别优化# train.pyfromultralyticsimportYOLOdeftrain_herb_model():# 加载官方预训练模型推荐使用 yolov8x / yolov8lmodelYOLO(yolov8x.pt)# 可换为 yolov8l.pt 或 yolov8m.pt# 开始训练resultsmodel.train(datadata.yaml,# 指向 data.yamlepochs300,# 多类别需更多轮次imgsz640,# 可尝试 1280 提升小目标识别能力batch16,# 根据显存调整24G 显存可用 32nameherb_yolov8x_640,projectruns/herb,device0,# 使用 GPUworkers4,optimizerAdamW,lr00.001,patience50,# 早停50 轮无提升则停止augmentTrue,# 启用 Mosaic、HSV、MixUp、Copy-Paste 增强mosaic1.0,mixup0.2,copy_paste0.3,# 对小样本类别非常有效close_mosaic30,cachedisk,# 缓存图像到磁盘加速训练fraction1.0,# 使用全部数据single_clsFalse,valTrue)print(✅ 训练完成)returnresultsif__name____main__:train_herb_model() 模型保存路径runs/herb/herb_yolov8x_640/weights/best.pt 五、推理与预测代码infer.py# infer.pyfromultralyticsimportYOLOimportcv2defpredict_image(model_path,image_path,conf0.4,imgsz640): 单张图像预测 modelYOLO(model_path)resultsmodel(image_path,confconf,imgszimgsz)forrinresults:im_arrayr.plot()# 绘制边界框和标签imcv2.cvtColor(im_array,cv2.COLOR_RGB2BGR)cv2.imshow(Herb Detection,im)cv2.waitKey(0)cv2.imwrite(result_herb.jpg,im)returnresultsdefpredict_video(model_path,video_path0,conf0.4,imgsz640): 视频流检测可用于药材分拣流水线 modelYOLO(model_path)capcv2.VideoCapture(video_path)# 0 表示本地摄像头whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame,confconf,imgszimgsz)annotated_frameresults[0].plot()cv2.imshow(Herb Detection - Live,annotated_frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()if__name____main__:model_pathruns/herb/herb_yolov8x_640/weights/best.pt# 图像预测predict_image(model_path,test.jpg)# 视频预测# predict_video(model_path, video.mp4) # 或 0 调用摄像头 六、评估代码evaluate.py# evaluate.pyfromultralyticsimportYOLOdefevaluate_model():modelYOLO(runs/herb/herb_yolov8x_640/weights/best.pt)metricsmodel.val(datadata.yaml,splitval,batch16,imgsz640,device0,save_jsonTrue,conf0.001)print(fmAP50:{metrics.box.map50:.4f})print(fmAP50-95:{metrics.box.map:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})print(fF1-score:{metrics.box.f1.mean():.4f})returnmetricsif__name____main__:evaluate_model() 七、主函数整合main.py# main.pyimportosdefmain():print( 中草药检测系统启动...)# 1. 训练print(️ 正在训练模型...)os.system(python train.py)# 2. 评估print( 正在评估模型...)os.system(python evaluate.py)# 3. 推理测试print( 正在进行图像推理测试...)os.system(python infer.py)print(✅ 全流程完成)if__name____main__:main() 项目目录结构建议herb_detection_project/ ├── herb_dataset/ │ ├── images/ # train/val │ ├── labels/ # .txt 标签 │ └── data.yaml ├── train.py ├── infer.py ├── evaluate.py ├── main.py └── runs/ # 训练输出自动生成✅ 总结你已具备完整能力功能状态✅ 环境搭建CUDA Conda YOLOv8✅ 数据格式已为 YOLO.txt无需转换✅ 数据划分train/val 已完成✅ 模型训练使用yolov8x.pt 多类别增强✅ 推理检测图像 视频 摄像头✅ 模型评估mAP, P, R, F1✅ 完整代码可直接运行 数据集分析与建议1.类别不平衡问题Zhizi有1073 个标注框而Leech仅284 个Pangdahai,ArecaeSemen,ClamShell等也较多✅建议处理方式使用copy_paste增强小样本类别设置class_weightsYOLOv8 不直接支持可通过copy_paste和mosaic间接解决在评估时关注各类别的 AP避免模型偏向大类2.小目标问题多数药材如Scolopendra,Scorpion,CicadaePeriostracum尺寸较小✅建议使用更高分辨率训练imgsz1280启用copy_paste和mosaic增强小目标考虑使用YOLOv8-pose或分割模型提升边缘识别精度 进阶建议提升性能技术说明高分辨率训练imgsz1280或1920显著提升小药材识别率分块检测Tiling对高分辨率药材柜图像切块检测Copy-Paste 增强将小样本药材粘贴到新背景提升泛化能力模型蒸馏用 YOLOv8x 蒸馏 YOLOv8s 实现轻量高精度ONNX 导出部署到药店智能柜、分拣机器人 模型导出用于部署# export.pyfromultralyticsimportYOLO modelYOLO(runs/herb/herb_yolov8x_640/weights/best.pt)model.export(formatonnx,dynamicTrue,simplifyTrue,imgsz640)print(✅ 已导出为 ONNX 模型可用于边缘设备部署) 可视化各类别 AP可选训练完成后YOLOv8 会自动生成runs/detect/train/results.png包含mAP50, mAP50-95各类别的 Precision、Recall、F1、AP可用于分析哪些药材识别困难如Leech,AntelopeHom如果你需要我提供批量检测 结果导出 CSVFlask Web 药材识别平台药材柜高分辨率图像切块检测脚本自动标注工具用训练好的模型预标注新数据混淆矩阵可视化欢迎继续提问祝你在中医药智能化、AI辅助诊疗、智能药房领域取得成功