摘要:中医药作为中国传统医学的重要组成部分,历史悠久、渊源深远,其起源可追溯至数千年前的古代中国[1]。中药饮片是中医临床辨证施治必需的传统武器,也是中成药的重要原料,是由天然药材经过加工制成的[2]。中药饮片含丰富活性成分,具多种药效,对其准确、高效识别至关重要。
中医药作为中国传统医学的重要组成部分,历史悠久、渊源深远,其起源可追溯至数千年前的古代中国[1]。中药饮片是中医临床辨证施治必需的传统武器,也是中成药的重要原料,是由天然药材经过加工制成的[2]。中药饮片含丰富活性成分,具多种药效,对其准确、高效识别至关重要。在基层药检单位、药材市场、医院中药房乃至多数饮片企业的实际生产过程中,依赖传统人工经验的鉴别方法仍然是主要手段。而传统的人工分类方式需要丰富的专业知识和经验,且存在工作量大、效率低、易出错等问题,亟需新的技术手段来提高识别效率和准确性[3]。
近年来,随着深度学习目标检测算法的快速发展,有助于传统医药领域更好地整合现代技术,推动中药饮片的自动化识别和应用。在中药饮片识别的研究领域,许多学者已经进行了大量的研究。例如,孙鑫等[4]在VGG16网络上进行了50类中药饮片的识别,其结果准确度达到了70%;谭代庆等[5]融合残差网络和Transformer对5组易混淆的中药饮片进行构建,每组准确度均超过95%;王健庆等[6]采用GoogLeNet模型,其识别准确度为92%;胡继礼等[7]通过迁移学习的方法,在Inception-V3模型中结合了自适应度量,在137种中药饮片数据集上的识别精度达到了88.3%。
虽然以上研究致力于中药饮片识别,但其往往专注于提升模型精度,却忽略了减少模型参数、提高推理速度的重要性,也未将改进后的模型部署到实际应用。为解决上述问题,并给中药饮片识别领域的未来工作提供参考,本研究主要从以下几个方面展开:首先,使用轻量化的GhostC2f模块和增强识别纤细结构的DySnakeC2f模块来替换YOLOv8网络中的部分C2f模块,从而减少模型参数量并提高对饮片纤细结构识别的灵敏度。同时,将主干网络中的池化层替换为SimSPPF模块,提高了模型的推理速度。然后,加入坐标注意力(coordinate attention,CA)机制,增强了模型对小尺寸饮片的检测准确性。最后,设计了一个中药饮片自动识别标注系统,该系统能够准确识别中药饮片,自动扩充数据并支持系统升级,从而实现对中药饮片的全自动识别。本研究旨在将深度学习技术应用于中药饮片领域,为中医药现代化发展贡献新的力量[8-9]。
1 材料与方法
1.1 实验环境
实验采用Linux操作系统,主要使用Python开发语言,基于PyTorch框架,并通过CUDA 12.2进行加速。CPU选用Intel® Xeon®Gold 6248R CPU@3.00 GHz,GPU选用NVIDIA的RTX A6000,48 Gb显存。在模型训练过程中,输入图像的尺寸设定为640×640,采用AdamW优化器,训练持续200个周期,批量大小为32,初始学习率为0.01,并使用原YOLOv8的数据增强方法。
1.2 数据集
本研究建立了包含201种中药饮片共3 879张图像的数据集,数据图像来自中国中医科学院中药研究所门诊药房。为了确保图像的质量和一致性,所有图像均在标准化条件下使用佳能相机(EOS 80D)拍摄,背景统一为白色。同时,所有图像均调整为统一分辨率,以确保模型输入的一致性和训练效果。此外,通过去噪、旋转、平移和亮度增强等多种操作对原始图像进行预处理,生成了更加多样化的训练样本,以进一步提升数据集的整体质量和使用效果,丰富模型的训练数据[10-12]。
数据集按照7∶2∶1的比值划分为训练集、验证集和测试集,涵盖根及茎切段类(A)45种、根及茎切片类(B)56种、果实或种子类(C)36种、皮类(D)17种、叶类(E)9种以及其他类(F)38种共6大类中药饮片,数据集具体样例见图1。数据集中的每张图像包含单个或多个中药饮片样本,图1展示了部分样本在一张图像中的多种形态,包括不同的形状、角度和排列方式。这种多样化的图像使得模型能够更全面地学习和识别各种形态的中药饮片,从而提高了模型的泛化能力和实际应用中的表现。为进一步验证模型的泛化性,本研究还引入了从网络爬取的公开中药饮片数据,作为外部测试集进行可视化验证。这些外部数据为模型的性能提供了额外的验证,帮助评估其在不同拍摄条件和环境下的适应性,进一步证明其在处理多样化中药饮片时的稳定性与鲁棒性。
1.3 算法
1.3.1 YOLOv8n YOLOv8算法是Ultralytics公司于2023年发布的一种目标检测算法,与之前版本相比,YOLOv8引入了一些关键改进。图2以YOLOv8n网络为例,作为YOLOv8的轻量化版本,详细描述了网络结构的各个组成部分及其特点。首先,在骨干网络中,YOLOv8n用C2f模块替代了YOLOv5的C3模块,增强了特征融合能力,并实现模型的轻量化。其次,在颈部网络中,YOLOv8n去除了部分上采样后的卷积运算以简化结构。在头部网络,YOLOv8n采用了独立的分类和边界框回归分支,这种解耦头结构提高了检测的准确性和效率。尽管YOLOv8在许多方面取得了显著进步,但在某些应用场景中仍存在挑战。例如,在移动设备有限的硬件性能下运行YOLOv8n时,其使用的C2f模块可能会限制设备的运行速度[13]。此外,YOLOv8n在动态检测中药饮片时,容易出现误检和漏检问题。为了适应中药饮片检测的实际需求,需对YOLOv8n模型进行优化。通过减少模型参数量、增强识别纤细结构的灵敏度、加快推理速度和提升识别精度,可以显著增强模型在实际应用中的表现。改进后的网络模型称为YOLOv8-TCM,其结构如图3所示。
1.3.2 GhostC2f 在实际应用场景中,深度学习模型常需移植到嵌入式设备中使用,尤其后续研究中还需将模型部署到移动端。然而,当硬件算力不足时,深度学习的应用会受到极大限制。为了在YOLOv8n的主干网络中降低参数量并加快推理速度,引入了GhostBottleneck模块,这一模块可有效减少C2f模块中的参数量,满足模型轻量化要求[14]。
假定输入矩阵为,其中c是输入通道数,h是输入数据的高度,w是输入数据的宽度。在卷积层中生成m个特征图的计算公式如式(1)所示。
(1)
其中,*表示卷积运算,b是偏差项,是输出的m个通道的特征图,是该层的卷积滤波器,其卷积核大小为k×k,h'和w'是输出数据的高度和宽度。普通卷积的计算量按式(2)计算。
(2)
与普通卷积相比,Ghost模块中的卷积分2步进行,其过程如图4所示。第1步先经过普通卷积生成少量特征图,然后通过cheap operation操作生成冗余特征图,最后将两者结合进行concat操作。假设每个基本特征对应着s个冗余特征,即s≪c,d·d是线性运算的平均核大小,Ghost模块中的卷积计算公式如下。
由上可知,Ghost模块中的卷积计算量约为普通卷积的1/s。与ResNet网络中的基本残差块类似,GhostBottleneck模块由2个堆叠的Ghost模块构成。第1个Ghost模块作为扩展层,负责增加通道数;第2个Ghost模块则减少通道数,使之与输入通道数匹配。最后,通过shortcut连接这2个Ghost模块的输入和输出,实现了特征的有效传递。
GhostC2f如图5所示,其将瓶颈层的Bottleneck替换为GhostBottleneck,从而显著降低了网络的参数计算量和计算成本。公式的推导和比较表明,GhostBottleneck模块能够有效减少卷积层的计算开销,提高推理速度,同时保持较高的检测精度。
1.3.3 DySnakeC2f 对于一些中药饮片(如白薇、莪术、苦地丁和龙胆)常呈现细管或细丝状,模型在识别这些饮片时容易漏检纤细部分,导致识别结果的不完整。对此,本研究设计了一种将动态蛇形卷积(dynamic snake convolution,DSConv)融入C2f模块瓶颈层的DySnakeC2f模块,使其获得蛇形卷积功能[15-16]。将该模块置于颈部网络的小目标检测头(P3)之前,能够有效提高模型对纤细目标的识别精度,确保对中药饮片的全面和准确检测。
DSConv模块允许卷积核在特征学习过程中像蛇一样灵活适应目标结构,其通过引入连续性约束,每个卷积位置的选择参考前1个位置,从而实现对细微管状结构的有效特征提取。该方法不仅增强了卷积核的形状适应性,还确保了特征感知的连贯性,解决了传统卷积核在小比例管状结构上可能失去感知的问题。在毛细血管的分割领域,该设计已取得显著成就。由于饮片的部分结构与毛细血管形状的较为相似,DySnakeC2f模块在识别饮片纤细部分时能有效提高精度,使得模型在处理复杂的细丝结构时更加具有针对性和精确性。
1.3.4 SimSPPF模块 在实际应用中,中药饮片的识别不仅需要高精度,还需要满足实时性要求,以便在繁忙的药房或加工厂中快速处理大量样本。为此,本研究提出了一种改进方案,通过将YOLOv8模型中的原始SPPF模块替换为更高效的SimSPPF结构[17]来提升系统性能。SimSPPF结构最初在YOLOv6中引入,其主要优点在于有效减少了计算复杂度和处理时间。具体而言,SimSPPF通过连接3个5×5最大池化层来处理输入数据,生成固定大小的特征图。这些特征图不仅扩大了模型的感受野,还显著提高了特征表示能力,有助于精确识别中药饮片的细微差异。
与传统的SPPF模块相比,SimSPPF采用了ReLU激活函数,而SPPF模块则使用SiLU激活函数。虽然SiLU函数在某些情况下表现良好,但其指数计算特性增加了计算复杂度,可能会影响实时性能。相反,ReLU函数的计算效率更高,能够有效缓解梯度消失问题,加速模型收敛,进一步提升系统的响应速度。这些激活函数的公式如下。
(4)
(5)
有实验数据显示,单个ConvBNReLU模块的执行速度比ConvBNSiLU模块快18%[18]。这不仅证明了ReLU函数在计算效率上的优势,也表明SimSPPF结构在提高模型整体性能方面的有效性。
1.3.5 CA模块 仅依靠基本的检测算法,仍然难以完全解决中药饮片识别中存在的各种问题,特别是小目标的检测问题。小目标由于其特征较少,容易在检测过程中被忽略。为了解决这一问题,注意力机制被引入到深度学习模型中,用于增强特征图中重要信息的表达和抑制不相关信息的干扰。CA注意力机制[19-20]是一种将位置信息嵌入到通道注意力中的方法,能够在轻量级网络中实现更大区域的注意力聚焦。CA注意力机制分为coordinate信息嵌入和CA生成2步,结构如图6所示。CA注意力机制简单灵活,可以轻松地集成到现有模型的多个部分中,同时不会增加过多的参数和计算负担[21]。
1.4 模型评价指标
本实验所用到的评价指标有精确率(precision)、召回率(recall)和平均精度均值(mAP)。其中,TP代表检测结果中的正确目标数量,FP代表检测结果中的错误目标数量,FN代表正确目标中被遗漏的数量。
精确率为预测正确的样本占所有样本中的比例,公式如下。
精确率=TP/(TP+FP) (6)
召回率为所有正样本中成功检测出正样本的比例,公式如下。
召回率=TP/(TP+FN) (7)
n个类别的平均精度均值公式如下。
(8)
跨阈值平均精度(mAP@50-95%)基于mAP计算,将阈值从50%~95%(每隔5%)的多个mAP 取平均,用于全面评估模型在不同匹配严格度下的检测性。
2 结果与分析
2.1 实验结果
本实验将改进后的YOLOv8-TCM模型与SSD[22]、Fast R-CNN[23]以及YOLO系列的多个基础模型进行了对比,表1列出了模型在中药饮片数据集上的具体指标结果。从整体来看,YOLOv8-TCM模型在准确度、mAP@50-95%和参数量方面均优于其他模型,取得了令人满意的效果。尽管YOLOv8s模型的召回率略高于改进模型,但其参数量约为改进模型的4倍,因此部署到设备的实用性有限。与YOLOv8n模型相比,YOLOv8-TCM模型的mAP@50-95%提高了4.39%,同时参数量减少了约15%。表2展示了各类饮片的准确率,其中75%的中药饮片的精确率超过90%。如图7所示,在第125个epoch时,上述模型的mAP@50-95%达到了80%左右,随后逐渐趋于稳定。从精确率来看,YOLOv8-TCM在第80个epoch之后的表现均优于其他模型。从收敛速度来看,YOLOv8s模型的收敛速度最快,这主要是由于其通道数参数设置远高于其他模型,但最终的精度却低于YOLOv8-TCM模型,且收敛曲线在初期波动较大,稳定性不足。
2.2 结果分析
基于上述结果可知,YOLOv8-TCM模型在多项性能上优于其他模型,表明改进后的模型在更广泛的阈值范围内具有更高的精度。此外,YOLOv8-TCM模型参数量的减少意味着在性能提升的同时,计算资源的需求也有所降低,有助于在实际应用中降低硬件成本。
从不同饮片形状来看,皮类饮片因其通常呈长条状或正方形的规则形状,表面光滑,便于特征提取,因此识别准确度最高。例如,识别海桐皮的精确率为95.1%,白鲜皮为98.7%,陈皮、关黄柏和合欢皮则达到了100%;根及茎切段类饮片与皮类饮片的特征相似,往往为条状或块状,其识别香薷、白茅根、龙胆和白薇的精确率均能超过90%;根及茎切片类饮片因其纹理清晰,常带有明显的切割纹理,易于模型的识别,如干姜的识别精确率为92.5%,大血藤为98.5%,海风藤为96.2%,白芍为94.3%;果实和种子类饮片通常呈圆形、椭圆形或多面体,颜色鲜艳,因而具有较高的识别准确度,如连翘、金樱子、豆蔻和枸杞的精确率均高于94%;相比之下,叶类饮片的形状较难统一,通常呈薄片状,边缘可能呈波浪状或锯齿状,颜色范围从绿色到褐色不等,这使得其识别准确度波动较大。例如,识别夏枯草准确度为68.4%,识别伸筋草和桑叶的精确率约为85%,而淡竹叶和海藻的精确率分别为93.6%和95.1%。
从整体来看,尽管大多数中药饮片的识别准确率较高,但威灵仙、橘络、女贞子和夏枯草的预测精确率仅在70%左右,表现相对较差。此现象主要归因于这些饮片常呈现碎屑状、重叠严重,并伴随明显阴影,导致形态极不规则。例如,威灵仙和女贞子的碎屑结构及阴影效应显著降低了模型的识别能力,其重叠程度约达到了50%,使得特征混淆与视觉干扰现象相对严重。此外,样本数量和类型的匮乏(如女贞子仅有8个样本,且摆放的类型较少)进一步影响了模型的学习效果。这一发现表明,模型在处理碎屑样本或重叠较严重的饮片时确实存在一定局限性。因此,后续研究将重点考虑如何增加样本数量、优化数据预处理及增强模型对特征不规则性适应能力,以提高识别精度。
2.3 可视化分析
为了更清晰直观地检验改进模型的性能,本研究采用可视化方法展示了外部数据和特定模块的有效性。图8展示了常规环境下部分中药饮片的识别结果,包括枸杞、连翘、牡丹皮、白芷、大血藤和黄连等,该数据来源于公开网络数据的爬取。图中仅牡丹皮和黄连的识别存在轻微漏检,这主要是图像清晰度不足和光照角度问题所导致。而其余饮片的识别结果均较为准确,没有出现错检或漏检的情况,这进一步验证了模型在实际应用中具有较强的泛化性。
图9展示了特定模块加入前后的效果对比,其中左侧两列为CA模块,右侧两列为DySnakeC2f模块,上半部分为加入模块前的效果,下半部分为加入模块后的优化效果。由图9可知,改进前白头翁和党参片的小目标识别存在漏检现象,而在加入CA模块后,漏检情况得到了明显改善。此外,在未加入DySnakeC2f模块时,模型对莪术和生山楂的细管或细丝状结构识别不够灵敏,导致识别结果不完整,改进后效果得到了显著提升。
3 系统设计与实现
3.1 系统设计
3.1.1 设计目标 中药饮片识别系统的总体设计目标是在实际应用中实现中药饮片的准确识别、自动扩充数据与系统升级,具体可分为以下几点。
(1)利用改进的YOLOv8模型生成预测坐标和标签文件,并结合OpenCV绘制目标检测框,以实现一键自动检测和标注中药饮片图像[24]。
(2)构建改进YOLOv8的识别模型,将其部署在手机APP和Windows客户端[25-26]。在此系统中,用户能够实时对中药饮片的视频和图像进行检测。此外,用户在客户端还能对标注不准确的图像发起校正请求,专家在收到请求后会进行校正,并将结果返回给用户。
(3)在系统中整合数据集自动划分与标注、更新模型和自动扩充数据等功能,旨在简化人工升级系统的操作流程。
3.1.2 总体架构 本系统分为用户层、应用层、逻辑层和数据层,具体架构如图10所示。用户层有3类角色,分别为用户、领域专家和系统管理员;应用层包括中药饮片识别系统的APP和客户端;逻辑层负责完成图像的检测和标注、数据集处理、模型训练等任务;数据层则存放模型文件、中药饮片图像和标签等数据。
3.1.3 流程设计 系统的流程设计如图11所示,具体步骤如下。
(1)利用中药饮片识别系统的数据自动标注功能实现对中药饮片数据集的自动标注,为模型后续的训练提供依据。
(2)检查中药饮片图像的标注是否准确,若不准确则要进行修改。
(3)待数据集标注完成后,使用系统的数据集自动划分,按照设定比例将数据集划分为训练集、验证集和测试集。
(4)在模型训练与评估中,可直接选择默认参数自动训练,也可以自己对参数做出灵活的调整。
(5)若模型的性能得到提升,则可导出模型到手机APP和客户端,以供用户更精准地对中药饮片进行识别检测。
(6)用户在识别中药饮片的过程中,若出现识别错误或新的中药饮片种类可将数据和情况通过服务器通信反馈给领域专家,等待专家的处理。
(7)专家收到请求后审查中药饮片的识别结果并进行适当校正,将更新后的数据上传至服务器,实现数据的自动扩充,并确保数据得到实时更新。
(8)用户查看校正结果,并根据实际需求决定是否通知管理员对系统进行升级。
(9)系统的数据集会不断地扩充,因此本系统需要不断地更新升级以更广泛准确地识别中药饮片。管理员可根据具体情况执行步骤(3)(4)(5)更新模型。
3.2 系统实现
本系统的主要功能是通过客户端实现的,为了方便用户使用,本系统还支持手机APP识别中药饮片的图像和视频。
3.2.1 手机APP 为了方便用户的使用,本研究将中药饮片的识别模型部署到Android端,如图12所示,其能够支持中药饮片的视频和图像检测。
同时,客户端的模型更新功能可将新的模型导出至APP,以确保应用可以随时更新。
3.2.2 系统客户端 系统客户端可供用户、领域专家和管理员使用,如图13所示,其包含登录、注册、管理员主界面、自动标注、自动划分数据集、专家校正、模型训练和评估以及中药饮片识别8个界面。
在登陆系统时,选择不同的角色将进入不一样的操作界面,其中管理员的权限最高,拥有系统所有功能的操作权限。管理员可先使用“自动标注”,将选择的中药饮片数据集进行初步标注,随后检查标注结果是否准确。然后,管理员通过“自动划分数据集”得到所需的数据集,再通过“模型训练与评估”进行模型的一键自动训练。若模型效果比之前好,则通过“更新模型”一键替换掉系统的模型,从而完成系统的更新。用户主要使用图13的“用户识别中药饮片界面”,其可以导入图片、视频或者打开本地摄像头来识别中药饮片。用户可以点击按钮“上传专家校正”将会通过服务器上传此次识别结果到专家系统,同时右侧的状态“未上传校正信息”将更新为“等待校正”,当专家处理完毕时,状态则再次更新至“矫正完毕”,用户可在系统查看校正后的数据。专家使用图13的“专家校正界面”,其可以对中药饮片图像的边界框、名称等进行灵活的修改校正。该模块主要嵌入了LabelImg工具[27],这是一款开源的图像标注工具,其源代码和具体的使用文档可以在网址https://github.com/ tzutalin/ labelImg找到。此外,为了满足本系统的需求,本研究对LabelImg做出了以下改进:(1)解决了LabelImg只能一次性标注图像的问题,使其支持二次标注功能,用户可以随时打开数据集继续上次的标注工作。(2)增加了同步上传功能,标注结果可以实时保存到服务器,确保数据的及时更新。(3)在界面左侧新增了“矫正完毕”按钮,专家点击后将收到图像校正完成的通知。
3.3 系统测试
用户在使用客户端检测中药饮片时,可以选择将数据保存至本地或服务器中,从而实时更新数据。在系统测试时查看服务器可以发现,用户上传和专家校正时都会自动更新服务器上的数据。经测试,系统的自动标注、模型更新等功能一切正常。
4 结论
本研究建立了1个包含201种中药饮片的数据库,根据中药饮片的特点及便于移动端部署的需求,对YOLOv8算法进行了轻量化改进:采用GhostC2f 模块和DySnakeC2f模块替换部分C2f模块,以实现模型轻量化并增强对管状或细丝状结构的识别灵敏度;使用SimSPPF模块取代主干网络的池化层,以提高模型推理速度;并引入CA注意力机制以提高模型对中药饮片的识别精度。另外,本研究设计了中药饮片自动识别标注系统,该系统支持客户端和移动端应用,结合改进的YOLOv8模型,能够准确识别中药饮片图像和视频,同时支持系统的自动升级。本研究旨在将人工智能应用于中药饮片识别领域,减少人工识别工作量,进而推动中医药的发展[28]。
尽管本研究取得了一定成果,但仍存在提升空间。未来工作可从以下几点开展:首先,数据集对模型识别精度至关重要,需不断提高中药饮片图像的质量和数量,建立一个高质量的大型中药饮片数据集;其次,模型的泛化性在面对复杂的实际情况(如遮挡、阴影和模糊等)时需仍能准确识别中药饮片[29-32],故提高泛化性是一项十分迫切的研究;最后,进一步减少模型参数量,可以满足实际应用中的快速识别需求,并便于在小型设备上部署。
来 源:孙 兴,李 杨,毛天驰,朱佳音,刘 安,闫志翻,马金刚,郭 丛.改进YOLOv8在中药饮片自动识别标注中的研究与应用 [J]. 中草药, 2025, 56(1): 216-226.
来源:天津中草药