刘子涵,魏书伟,王新娇,赵浩天,李康宁
(青岛恒星科技学院信息工程学院,山东青岛 266000)
中药作为中华民族的瑰宝,是中华民族历经几千年保留下来的珍贵经验,在时代的长河中发挥的作用是功不可没的。但由于中草药种类繁多,属于同一科的中草药具有极高的相似性,导致错用和滥用的情况发生,危害身体健康。
经过调查发现,因为中草药难以分辨的特性,导致中草药的识别技术和文章并不常见。据现有的资料与情况分析,目前只有对植物进行分类,而几乎没有对制成的中草药成品识别。近几年来,深度学习技术发展迅速,在人工智能方面出现多优秀的深度学习算 法,如LeNet[1](1998) 、AlexNet[2](2012) 、VGGNet[3](2014)、InceptionNet[4](2014)、ResNet[5]等优良的卷积神经网络模型,如在2020 年王艳等人[6]利用AlexNet和YOLO 网络对15 种中草药进行识别。在2022 年张志光等人[7]用改进的EfficientNet-b0 作为中草药特征提取网络对16种中草药进行优化,由此可以得出,使用深度学习作为本次实验识别和分类中草药药材具有极大的帮助,使用深度学习卷积神经网络的相关技术制作一个能够兼容微信的H5 模型,为对药材了解不足的医生和广大人民群众给予便利。项目的开发是使用百度的EasyDL 平台发,该平台支持使用少量的数据集训练,使用平台所包含的主流算法去进行训练,就能很快得到一个图像分类或者物体检测的模型,AutoDL Transfer(高精度算法)是百度EasyDL近几年研发的一种高精度算法,是百度研发的AutoDL 技术之一,结合模型网络结构搜索、迁移学习技术、近30层可灵活调整的神经网络、12 层卷积操作,并针对用户数据进行自动优化的模型,与通用算法相比,训练所耗费的时间多,但更适用于像中草药这种难以区分的图像。
实验样本共计89种中草药图像,分别为:白芍、白头翁、白鲜皮、白芷、薄荷、百部、北豆根、百合、扁南、板蓝根、苍术、侧柏叶、川木通、赤芍、川牛膝、川高、穿破石、川楝子、大黄、淡竹叶、当归、丁香、冬瓜子、独活、断续、法半夏、瓜蒌子、槐花、甘草、合欢皮、黄芩、葛根、何首乌、黄芪、瓜蒌、厚朴、藿香、绞股蓝、齐子、炙甘草、炙黄芪、韭菜子、酒女贞子、决明子、苦杏仁、刘寄奴、龙胆、漏芦、罗布麻、麦冬、木香、墨早莲、木贼、牡丹皮、牛蒡子、门木瓜、胖大海、佩兰、青蒿、忍冬藤、肉桂、三棱、桑白皮、山药、山楂、伸筋草、石菖蒲、太子参、菟丝子、仙茅、薏苡仁、威灵仙、小茴香、玉竹、五倍子、薤白、月季花、五味子、业边参、泽兰、珍珠母、枳实、枳子、紫苏梗、紫苏子。本次实验的数据集由少部分实拍和大部分在图片数据库中爬虫获得。
数据集的获取前期是通过线下市场购买获取,共采集89 种中草药,通过预处理处理成相同格式的图片。之后发现数据集的数量不足,后期通过爬虫进行数据集的补充。
1)归一化处理[8]
归一化处理是图片数据预处理的重要步骤之一。归一化能够将图片转化为标准模式,从而不会影响后续对图像进行的仿射变换及其他几何变换操作。它在加快卷积神经网络识别模型的梯度下降过程中求出最优解的速度方面,发挥着至关重要的作用。对于中草药数据集而言,有多种可供选择的归一化方法。在平常实验中经常使用对数函数转换法、线性函数转换法、反余切函数转换法。
①对数函数转换的表达式为:
y= log 10(x)
②线性函数转换的表达式为:
y=(x-Min)/(Max-Min)
这里的Max 和Min 参数分别指的是输入样本数据的最大值和最小值。
③反余切函数转换的表达式为:
y= arctan(x)2/π
本次实验对数据集归一化的处理方式为线性函数转换,在遍历数据集中的所有数据,遍历完成后,可以获得最大值和最小值,已达到完成归一化的目的。
2)中草药图像的水平移动
假设点(x0,y0)为原始中草药药材数据集上的某一个像素点,向某一方向移动一段距离后到达位置(x1,y1)点,x 轴方向移动了△x,y 轴方向移动了△y,图像的水平移动表达式为:
x1=x0+ Δx
y1=y0+ Δy
3)中草药的图像旋转
选取一张图片的中心点为坐标原点进行图像旋转操作,向某一方向旋转一定角度,设图像中一点为p0(x0,y0),旋转后的点为p1(x1,y1),用表达式表示为:
x1=x0cosβ+x0sinβ
y1=y0cosβ+y0sinβ
硬件方面,采用TeslaGPU_P4_8G 显存,单卡_12核CPU_40G 内存了,算力为5.5 TeraFLOPS。通过云服务器中进行训练,AutoDL Transfer 是基于自动化机器学习衍生出的一种深度学习的算法。自动化机器学习(AutoML)的热度逐渐增长,是机器学习下一阶段主要的趋势。目前研究一个网络结构要花费大量的时间精力,并且还需要深厚的知识储备,神经网络有复杂的超参数,会使其搜索空间庞大。NAS即是在此巨大的搜索空间里自动地找到最优的网络结构,实现深度学习的自动化。所以基于自动化机器学习百度继而提出自动化深度学习,AutoDL 分成三个部分,分别 是 AutoDL Design、AutoDL Transfer 和 AutoDL Edge。本次训练的网络采用AutoDL Transfer,更适用于区分形态大小相近的中草药。
AutoDL Transfer(高精度算法)是百度EasyDL 近几年研发的一种高精度算法,是百度研发的AutoDL技术之一,结合模型网络结构搜索、迁移学习技术、近30层可灵活调整的神经网络、12层卷积操作,并针对用户数据进行自动优化的模型。选用AutoDL Transfer 的其中一项主要的原因是该算法可以基于小数据模型把训练好的模型迁移到预训练里的庞大数据模型中,并且采用该算法的动态模型,动态模型则会根据本次训练所提交的数据集在不同组件以及超参的组合中重新进行一次搜索。和静态模型相比,动态模型能够针对用户数据进行更加精细的优化,每种中草药都会去补充大量的数据集去支持动态模型。
使用百度的EasyDL 平台中的物体检测模块里创建出一个空白模型,将其模型名称命名为中草药识别系统。
在EasyData 数据服务中将本次实验所需的89 种中草药分别建立89组数据集,每组数据集以每种草药的名称名,共计上传图片总量为30 340 张图片,将每个种类分别上传图片,目的是使用AutoDL Transfer 数据增强技术将简单少量的数据扩充为较为复杂的数据组。
将标注完成的数据集在平台首页中点击模型训练的入口进行训练参数的配置,选择算力和配置,本次训练采用的GPU 为百度的P4,具体配置为:TeslaGPU_P4_8G显存,单卡_12核CPU_40G内存。该配置可以为本次实验提供5.5 TeraFLOPS 的算力,但由于中草药的部分种类之间相似度极高,且特征点高度吻合,因此训练采用算法的超高精度模式,在该模式下,能更细微辨别相似的特征点,保证训练能够正常进行,但在该模式下训练时间会大幅度增加。部署方式选择了公有云部署,并加入自动超参搜索,该训练的具体网络结构如图1所示。
图1 算法网络结构
本次实验共训练了48 小时10 分钟,训练结果为map为80.2,该模型的精确率为88.0(精确率则是在阈值下正确预测的物体数与预测物体总数之比),该模型的召回率为76.9,实验数据及曲线图如图2所示。
图2 实验数据及曲线图
将训练好的模型进行系统校验,校验结果显示,每个标签的训练都有较好的反馈,达到申请线上H5页面发布的要求。H5 页面发布申请通过以后,生成调用H5 页面的二维码,用户可以通过微信扫一扫调用H5页面。
扫描成功的后界面如图3 所示,选择拍照上传和从图库中选择上传两种方式,极大方便了使用人群,该H5页面内置了许多图像处理的接口,如无损放大、对比度增强、旋转剪切等功能。
图3 H5页面的UI界面
将需要识别的中草药上传到H5页面即可获得检测结果,由图4结果可以看出,该模型成功识别被测物体为胖大海,识别的预测值为96.84。
图4 H5页面的识别结果
卷积神经网络已发展较为成熟,从20世纪最开始的时间延迟网络和LeNet-5到如今配合着比较成熟的深度学习的辅助,使得识别物品的精准度和预测值得到大幅度提升。百度提出的AutoDL Transfer 是在ResNet、DenseNet、VGG、Inception 等一些经典网络的基础上,进行了人为经验的改良,并配合着超参等机器算法。
本文的创新点如下:
1)在AutoDL中,百度将其分为三个子类,这三个子类分别为AutoDL Design,AutoDL Transfer 和AutoDL Edge,每一种子类都有其独特的特点。而本文选择了AutoDL Transfer,有好几个方面的原因,利用该算法方便训练,并且可以利用静态模型使用百度预先处理好的数据迁移到H5页面上,配合用户使用。
2)本作品没有采用做App应用程序的方案,而是通过H5 页面来实现功能,从而达到轻量化和便利。这种方法大大减轻了前端开发的工作量,使得该系统能够更快速地部署到手机端,并且为后续的更新工作省去了大量的时间成本,缩短了开发周期。用户可以通过将图片上传到H5 页面,利用已有的数据集进行测试,选择最佳的优良模型,然后利用其自身的数据进行精细调整以获得最佳的模型参数效果。