基于深度学习的中药材饮片识别
基于深度学习的中药材饮片识别
韩勇兰杰 郭瑞瑶 邢聪颖 黄新杰 霍迎秋
西北农林科技大学信息工程学院
摘要:为了解决中药饮片种类繁多、形态相似导致难于快速、准确识别的问题,构建一个包含50种,共计15 622张图像的中药材饮片数据集,并基于Keras框架建立深度学习模型,模型包含4个稠密块和3个过渡层,每个稠密块和过渡层交替连接。最后利用全局最大池化层将稠密块特征向量化,并加入丢弃法来防止过拟合,优化DenseNet-201网络模型。结果表明该模型在43种中药上的识别率可以达90%以上,最高识别率达95.21%。因此,基于深度学习的方法可以有效解决中药饮片快速、智能识别的问题。
中药饮片是中药材经过切制、炮制后可直接用于临床的中药。中国中药资源丰富、品种繁多。药材识别是中药配方及饮片研究的关键技术之一,可用于中药鉴定、分类识别、质量品质统计等领域,对临床应用研究起重要作用,也能够加快推动智能医疗建设,具有重要社会意义。很多中药形态相似,导致鉴定和研究很困难。传统的中草药分类与质量评估涉及到性状鉴别和显微鉴别,鉴别方式过于主观,且鉴别效率偏低,无法满足中医中药产业化发展的客观需求[1,2,3]。
目前基于图像处理与模式识别技术在中药检测中的应用主要是从形状、颜色和纹理中提取底层图像特征[4,5,6]等分类方法进行识别鉴定,陶欧等[5]采用了朴素贝叶斯和十折交叉验证方法,在中药饮片的纹理特征基础上进行饮片辨识模型的构建,具有一定的参考价值,但要先对每张图像提取角二阶矩、对比度、相关等纹理参数;也有学者构建综合颜色特征向量用以进行图像识别[6,7,8,9,10],获得了较好的识别结果,但是浅层特征易受环境因素影响,准确度不高且存在偶然性。为了解决上述问题,可基于深度学习进行图像识别[11,12,13,14],以深度学习为手段,研究建立深度卷积神经网络模型来实现定位检测、品种识别等功能;孙鑫等[15]利用卷积神经网络CNN对50种中药共计2 554张图进行训练和测试,达到了70%的平均识别精度,但是识别精度过低,无法投入实际使用。综上所述,目前利用深度学习对中药材饮片进行识别的工作还仍在初级阶段,仅有的研究中存在着识别精度不高、中药种类数过少等问题,而对大量中药饮片的精准识别鲜有实现;另外,图像的识别环境过于简单,与现实场景中多个饮片相互重叠的图像不符,因此缺乏实际应用意义。
为了弥补上述不足,本试验建立对多种中药直接进行图像识别的深度学习模型,提高识别率和实际可用性,可供药检部门、药材公司和个人方便快捷地鉴别中药,具有潜在的社会意义和经济意义。试验采集50种中药饮片,共计15 622张,构建图像数据集,以稠密网络模型为基础建立深度学习识别模型,以期实现中药饮片图像的有效识别。
1材料与方法
1.1 试验材料在中医饮片图像识别的研究领域中,目前还尚未见到相关用于试验的数据集,因此很难在同一个标准下评估不同方法,为了解决上述问题,本次试验的数据集均由笔者所在团队在陕西省杨凌大寨卫生院的中药部进行拍摄得到,共采集中药类别50种。
拍摄均在白天正常日光下进行,每一种的数目达到300张以上,一共获得图像15 622张。图像均在白色背景板下用2 400万像素的手机相机拍摄,每张图片包含的饮片数量、分辨率、大小、复杂程度、色彩不限。50种常见中药材名称及其图像数量如表1所示。
其中,将数据集按照7∶1.5∶1.5的比例划分成训练集、验证集和测试集,其中2 340张用来测试,其余图像用来训练。在性能评估中使用所有的类别。对于饮片图像的识别问题,将给出每一类的识别精度和所有类别的平均识别精度。图1为部分数据集的展示。
表1 50种常见中药名称及数量
Table 1 Slicenames and quantities of 50 common Chinese herbal medicine
名称Name
数量Quantity
名称Name
数量Quantity
名称Name
数量Quantity
名称Name
数量Quantity
名称Name
数量Quantity
猪苓Polyporus umbellatus(Pers.) Fries
305
枳壳Citrus aurantium (Lour.) Engl.
331
知母Anemarrhena asphodeloides Bge.
323
预知子Akebia quinata(Thunb.)Decne.
320
郁金Curcuma aromatica Salisb.
201
灵芝Ganoderma lucidum (Curtis) P. Karst.
313
西洋参Panax quinquefolium L.
304
天麻Gastrodia elata Bl.
309
天花粉Trichosanthes kirilowii Maxim.
300
锁阳Cynomorium songaricum Rupr.
341
水牛角Bubalus bubalis Linnaeus
349
山楂Crataegus pinnatifida Bge.
324
升麻Cimicifuga foetida L.
311
地龙Pheretima aspergillum(E.Perrier)
315
三棱Sparganium stoloniferum Buch.-Ham.
320
人参Panax ginseng C. A. Mey.
306
青风藤Sinomenium acutum(Thunb.)Rehd. et Wils.
365
木通Akebia quinata(Thunb.)Decne.
310
木瓜Chaenomeles speciosa(Sweet)Nakai
326
金樱子Rosa laevigata Michx.
323
鸡血藤Spatholobus suberectus Dunn
314
黄药子Dioscorea bulbifera L.
341
黄柏Phellodendron chinense Schneid.
305
虎杖Polygonum cuspidatum Sieb. et Zucc.
300
大血藤Sargentodoxa cuneata (Oliv.) Rehd. et Wils.
301
红景天Rhodiola crenulata(Hook. f. et Thoms. )H. Ohba
309
合欢皮Albizia julibrissin Durazz.
305
葛根Pueraria lobata(Willd.)Ohwi
307
藁本Ligusticum sinense Oliv.
320
防己Stephania tetrandra S.Moore
306
防风Saposhnikovia divaricata (Turcz.) Schischk.
306
大黄Rheum palmatum L.
306
川芎Ligusticum chuanxiong Hort.
312
陈皮Citrus reticulata Blanco
323
苍术Atractylodes lancea(Thunb.)DC.
315
槟榔Areca catechu L.
324
桑白皮Morus alba L.
312
桑螵蛸Tenodera sinensis Saussure
315
白术Atractylodes macrocephala Koidz.
309
泽泻Alisma plantago-aquatica Linn.
307
异叶天南星Arisaema heterophyllum Bl.
307
全蝎Buthus martensii Karsch
307
土茯苓Smilax glabra Roxb.
308
地黄Rehmannia glutinosa Libosch.
310
瓜蒌Trichosanthes kirilowii Maxim.
315
姜黄Curcuma Longa L.
312
骨碎补Drynaria fortunei(Kunze)J.Sm.
353
乳香Boswellia bhaw-dajiana Birdw.
306
地骨皮Lycium chinense Mill.
308
椿皮Ailanthus altissima(Mill.) Swingle
316
1.2 试验方法1.2.1 DenseNet-BC模型选取传统稠密神经网络DenseNet为试验模型。DenseNet由密集连接块、过渡层、池化层、卷积层以及全连接层组成,具有网络窄,参数少的特点,从而使得特征和梯度的传递更加有效。
DenseNet根据是否包含瓶颈层和压缩层又分为以下三类:DenseNet-B(包含瓶颈层)、DenseNet-C(包含压缩层)以及DenseNet-BC(既包含瓶颈层又包含压缩层)。表2是DenseNet和DenseNet-BC在3个数据集(C10,C100,SVHN)上的对比结果,由表中数据可知DenseNet-BC的网络参数和相同深度的DenseNet相比减少很多,既可节省内存,还能减少过拟合。
利用Keras框架选择其中的DenseNet-201网络进行复现。数据经过预处理后进入卷积网络,网络中包括1个初始卷积层,卷积核宽度为7,步长为2;初始卷积层后是一个最大池化层,连接4个密集连接块,块与块之间使用过渡层连接,共3层;数据在经过最后一个密集连接块后通过一个全局平均池化层将特征向量化,连接一个线性分类层完成分类。
表3为网络模型结构。网络中的卷积层定义为3个连续操作的复合函数:批量规范化处理,修正线性单元和核大小为1×1的卷积操作。稠密模块是数个核大小1×1卷积层的卷积核组,这样的卷积核组在4个稠密模块中的数目分别为6,12,48和32,并且设置特征映射网络的增长速率k为32。每个稠密模块中特征映射网络的大小是不变的,只有数量上的变化,因此需要用过渡层来连接不同的块。过渡层是由一个核大小为1×1的卷积层连接一个步长为2×2的平均池化层组成的。
图1部分中药图像
Fig.1 Some slices of traditional Chinese herbal medicine
表2在CIFAR和SVHN数据集上的错误率
Table 2 Error rate on CIFAR and SVHN datasets
%
方法Method
深度Depth
参数大小Paramus
C10
C10+
C100
C100+
SVHN
稠密网络(k=12)DenseNet(k=12)
40
1.0M
7
5.24
27.55
24.42
1.79
稠密网络(k=12)DenseNet(k=12)
100
7.0M
5.77
4.1
23.79
20.2
1.67
稠密网络(k=24)DenseNet(k=24)
100
27.2M
5.83
3.74
23.42
19.25
1.59
瓶颈稠密网络(k=12)DenseNet-BC(k=12)
100
0.8M
5.92
4.51
24.15
22.27
1.76
瓶颈稠密网络(k=24) DenseNet-BC(k=24)
250
15.3M
5.19
3.62
19.64
17.6
1.74
瓶颈稠密网络(k=40) DenseNet-BC(k=40)
190
25.6M
-
3.46
-
17.18
-
表3模型结构
Table 3 Model structure
层次Layer
输出大小Output size
传统稠密神经网络Dense neural net
卷积层Convolution
112×112
7×7 conv, stride 2
池化层Pooling
56×56
3×3 max pool, stride 2
稠密块Dense block(1)
56×56
过渡层Transition layer(1)
56×56
1×conv
28×28
2×2 average pool, stride 2
稠密块Dense block(2)
28×28
过渡层Transition layer(2)
28×28
1×1conv
14×14
2×2 average pool, stride 2
稠密块Dense block(3)
14×14
过渡层Transition layer(3)
14×14
1×1 conv
7×7
2×2 average pool, stride 2
稠密块Dense block(4)
7×7
分类层Classification layer
1×1
Global average pool
softmax
1.2.2 丢弃法由于全连接层参数过多会产生过拟合,为避免网络的过拟合,结合本文数据集,在传统网络模型基础上引入丢弃法,随机将50%的元素置零,这样每次被学习的特征有所不同,每个特征都可以对模型的预测有所贡献,同时也在训练时起到正则化的作用。在多层感知机中,假设其输入层节点数为n,那么隐藏层节点数为n+1,故而隐藏层节点hi(i=1,2,……,n)的输出值计算方法为:
hi=φ(x1w1i+…+xnwni+bi) (1)
其中φ表示激活函数,bi表示偏差,wji(j=0,1,……,n-1)表示第i个隐藏层节点和输入层连接之间的权重。当对隐藏层使用丢弃法时,该层的隐藏单元将有一定概率被丢弃掉。设丢弃概率为p,那么有p的概率hi会被清零,有1-p的概率hi会除以1-p做拉伸。丢弃概率是丢弃法的超参数,具体来说,设随机变量εi为0和1的概率分别为p和1-p,使用丢弃法时计算新的隐藏单元h′i:
由于期望值E(εi)=1-p,因此:
即丢弃法不改变其输入的期望值。
2结果与分析
2.1 扩充数据集根据Keras框架建立卷积快、稠密块和过渡层等模块,在卷积模块中主要进行批量标准化层、利用ReLu()激活函数将一个节点的输入信号转换成一个输出信号和卷积等操作;稠密模块是卷积层的叠加,每一个卷积层都与其之上的同一个稠密模块中的卷积层有相互链接;过渡层连接每个稠密模块,并使用平均池化层进行降维、特征压缩和减少网络复杂度。利用构建的DenseNet-201模型分别在中药材图像测试数据集上进行测试,并统计分析试验结果。模型的训练和测试流程如图2所示。
图2模型训练和测试流程
Fig.2 Model training and testing process
其中对数据集的预处理操作如下:首先把像素点的值除以255,使之为0~1,将图片进行归一化处理,接着进行水平或垂直投影变换,同时在长宽两个方向进行50%的放缩操作,并在[0,30]度范围内进行随机角度旋转,随机对图片执行水平翻转操作,扩充训练集。对测试集只进行归一化操作。
2.2 参数调优采用批量训练的方法将训练集与测试集分为多个批次,初始学习率设为0.000 5,采用Adam优化器,当验证集上的准确率停止提升3个迭代次数时,降低学习速率,其中Adam方法能够在训练过程中自适应调整学习率,很适合高维度和大数据集得到非凸优化,一共迭代50个周期。由于GPU的特性,批量大小(batch size)最好选用8、16、32、64等,batch size太小会导致网络收敛不稳定,收敛慢,过大会增加花费的时间,对参数的修正也就显得更加缓慢,同时后期训练效果不显著。综上,本试验将batch size分别设为8、16、32,依次进行试验,找出与本数据集适宜的批量大小。
2.3 试验结果对比分析不同批量大小的模型在验证集上的准确率与迭代次数的关系如图3所示。虽然稳定后的模型准确率均在97%左右,但收敛时间大有差别。可以看到batch size为16时,模型在第20个迭代之后就达到收敛,模型稳定性最好,准确率稳定在在90%以上;其次是batch size为8时,模型迭代30次之后达到稳定;而当batch size为32时,模型验证率起伏较大,收敛相对比较慢,迭代40个周期才逐步收敛。
图3不同批量大小下的识别率与迭代次数
Fig.3 Accurate rate and iteration times under different batch sizes
采用交叉验证算法验证鲁棒性,模型在验证集上的损失函数变化如图4所示。从3个曲线可以看出,在迭代的前20次内损失值都处于振荡状态,但当批量为16时,损失值在第20次迭代后开始迅速下降,并维持在很低水平,在0.1左右震荡,而其余两个模型先后在第25次迭代和第30次迭代后逐步到达稳定状态。从这里也可得出批量设为16时,模型拥有较强的鲁棒性。
图4不同批量下损失值和迭代次数
Fig.4 Loss and iteration times under different batch sizes
利用这3种模型分别对50种中药测试集进行测试分类,测试结果如图5所示,可见只改变批量时,模型的分类性能很接近,只是在某些中药材上的识别率略有差别。对于每一种模型,识别率在85%以上的药材均占到45种,占到类别总数的90%,最高识别率可达100%。
图5不同批量大小下50种中药的测试结果
Fig.5 Test results of 50 kinds of Chinese herbal medicine slices under different batch sizes
由表4可见,批量大小对试验结果有一定的影响。对于数据集数目庞大的试验,一次性加载所有数据是不可行的,但如果批量大小设置的太小,模型又很难达到收敛。在合理的范围内,增加批量大小既可以增加内存利用率又可以加快数据处理速度,但增大到一定程度时,其确定的下降方向已经基本不再变化,且对参数的修正也就显得更加缓慢。batch size为16时的平均识别准确率达到95.21%,表现出最优秀的识别效果,而增大到32时,识别率与之相差无几,但却占用大量的内存空间。
表4不同批量下的识别率
Table 4 Recognition rate under different batch sizes
补充标目Supplementaryheading
批量大小Batch
平均识别率/%Averagerecognition rate
试验1 Experiment 1
8
94.53
试验2 Experiment 2
16
95.21
试验3 Experiment 3
32
95.13
为了进一步探索试验结果,在识别率最高的试验2的基础上进行深入研究,以最佳模型(即批量大小设置为16,初始学习率为0.001,迭代次数为50)对50种中药进行识别分类,每个类别上的识别率如表5所示,结果表明此模型在23种药材上的识别精度均达到100%,其中识别率在90%以上的种类达到43种,占总类数的86%;平均识别率达到95.21%,表现出优异的性能,可以精准识别绝大多数的中药饮片。因此,手动搭建的稠密神经网络在加入丢弃法防止过拟合的情况下,不仅在识别精度上保持着较好的准确性,而且在多个药片环境下也具有良好的鲁棒性。
表5每种药材的识别率
Table 5 Recognition rate of eachmedicinal material
类别Category
识别率/%Recongnitionrate
类别Category
识别率/%Recongnitionrate
类别Category
识别率/%Recongnitionrate
类别Category
识别率/%Recongnitionrate
类别Category
识别率/%Recongnitionrate
1
84.44
11
100.00
21
44.44
31
97.78
41
97.78
2
86.67
12
100.00
22
97.78
32
100.00
42
97.78
3
100.00
13
100.00
23
100.00
33
100.00
43
100.00
4
100.00
14
95.56
24
100.00
34
100.00
44
95.56
5
100.00
15
100.00
25
100.00
35
97.78
45
100.00
6
100.00
16
86.67
26
95.56
36
97.78
46
100.00
7
77.78
17
100.00
27
88.89
37
70.00
47
97.78
8
97.78
18
93.33
28
93.33
38
100.00
48
95.00
9
100.00
19
100.00
29
100.00
39
88.89
49
93.33
10
97.78
20
95.56
30
100.00
40
97.78
50
97.78
尽管模型取得不错的效果,但是试验中也出现一些低质量的识别结果。其中在类别21鸡血藤上和类别36的识别率很低,只有44.4%和70%,如图6、图7所示。具体原因可能是该类中药片拍摄问题,导致图像模糊,纹理细节不清晰,另外选择的白色背景板在阳光下呈透明状态,板上的划痕增加了背景复杂度,影响了识别率。另一个重要原因是类别中同类型的样本纹理特征差异较大,纹理特征和颜色不同。
图6鸡血藤图片
Fig.6 Pictures of spatholobus stem
图7槟榔片
Fig.7 Pictures of betel nut
2.4模型验证为了验证该模型和次数据集的拟合度,将同样的数据集置于ResNet网络、Wide_resnet101_2网络和Densenet121网络上分别进行对比试验,试验条件完全相同的情况下,试验结果如表6所示。
由表6可知,该数据集在残差网络模型下的拟合度并不优秀,识别准确率也比稠密网络低3.81%至10.05%。同时从该模型在验证集上的识别率和损失值皆在20个迭代左右就稳定在97%和0.1左右,综上可得出该模型与预测值更加接近,有较好的泛化能力。
表6模型验证结果
Table 6 Validation results of model
预训练模型Pre-training model
平均识别率/%Averagerecognition rate
残差网络152 Resnet152
85.16
宽残差网络101_2 Wide_resnet101_2
91.40
稠密网络121 Densenet121
95.21
3结 论
为解决中药饮片识别困难、效率低的问题,本试验组织研究人员经过多次、长时间的工作,构建了包含常见的50种中药片的数据集,每种药材均包含300张以上图像,其中既有单个饮片图像也有多个饮片重叠图像,模拟了真实的实际应用环境。基于深度学习技术建立DenseNet-201中药饮片识别模型,并引入丢弃法、控制变量法优化模型,防止模型过拟合,提高模型识别效果。试验结果表明该模型能够对常见的50种中药材进行有效分类和识别,其中有43种中药识别率90%以上,最高识别率为95.21%,因此基于深度学习的中药饮片识别方法能够快速、高效进行中药饮片识别,具有较好的实际应用价值。
近期文章推荐(点击即可查看)
排版:高瑞祥 校对:陈金秋 审核:蒋涵如
请转发本文,或在文末右下角点击在看
感谢您对小编的支持 ,更多精彩请关注公众号~
声明:本文来源于西北农业学报.2023,32(11),转载自知网。分享仅为传播中药基础知识,其版权归原作者所有,文中观点仅代表作者本人,不代表本平台立场,感谢原作者的辛苦付出。转载请标明来源。若有异议,将做删除处理。
特
别
提
示
由于公众号平台更改了分发机制,不再按照时间显示,而是按权重随机推送,如您没有对我们公众号设为星标,也很少点在看,权重会降的非常低,有可能看不到我们的推文内容了。
如果大家觉得我们的内容还不错,还想每天看到更多文章,请大家动动手:
1.将中药材种植养殖专业委员会公众号设为星标⭐
2.看完文章,在文末右下角给我们点下在看
3.点击左下角分享,更欢迎您的留言评论。
每天一品种,学习靠谱技术
中药材科学种养殖
道地药源
期待你的加入|扫码关注
微信公众号|中药材种植养殖专业委员会
中国中药协会|中药材种植养殖专业委员会
入会咨询
扫码添加微信咨询