【飞桨开发者说】韩爱庆 北京中医药大学管理学院 副教授

中药是中医临床治疗的主要载体、也是中医药文化最核心的载体,蕴含着大量的科技资源、文化资源、产业资源。据相关报道,我国是全球最大的中药材市场。数据显示,2019年预计我国中成药及饮片市场规模达到6800亿元,未来5年将达到2万亿元,可见中药材庞大的市场价值。由于中药材的真伪、优劣与临床用药的安全有效有直接关联,因此对中药材进行客观、科学的鉴定识别,有利于规范中药材市场,加强质量监控,促进中药材产业的发展。

很多学者对应用客观指标来进行中药材的鉴定识别进行了广泛的研究,相关研究所采用的方法包括近红外光谱、指纹图谱、电子鼻以及化学模式识别,或者采用多方法相结合来开展研究。这些方法的共同特征是需要基于专家经验或先验知识来人工设计或提取特征,前期的特征提取工作量特别大,得到的模型在训练集上准确率虽然高,但在测试集上普遍存在泛化能力差的情况;另外使用这些方法来进行中药识别需要专用设备,便利性较差,应用门槛高,不利于推广应用。因此,开发一款能够自动提取特征,并能够使用通用终端设备进行识别,准确率高,泛化性能好的中药识别系统是行业的迫切需求。

近年来,以深度学习为代表的人工智能技术飞速发展。与以往不同的是,这次人工智能不仅在学术界备受关注,在工业界也备受推崇。以“深度学习”为关键词搜索国家自然科学金委近年资助项目,发现基金委资助和立项的“深度学习”相关的课题数量呈逐年快速上升趋势,如下图所示。由于本轮人工智能可落地性非常强,可快速为行业应用赋能,所以在工业、商业、金融等各领域亦备受追捧,目前正快速应被推广应用到各个领域。

在此背景下,世界知名公司纷纷推出深度学习框架,在美国,Google推出TensorFlow,Facebook推出Pytorch,在国内,百度推出了飞桨。作为集深度学习核心框架、基础模型库、端到端开发套件、工具组件和服务平台于一体的开源深度学习平台。在深度学习框架上,我们选择了飞桨。基于飞桨模型,并借助百度AI Studio开发平台以及平台提供的Tesla V100 GPU算力,我们开发了基于深度学习的中药材识别模型,并完成了微信小程序开发和部署。在下文中,我们将为大家解析此过程。

方案解析

01

数据采集与预处理

研究对象为炮制好的中药材,植物状态的药材不在考虑范围内。应用Python编写爬虫程序从百度图片批量爬取163种中药饮片图片,经过人工复检,删除重复图片、植物状态图片和中成药图片等异常图片,最后保留33834张,每种药材的图片数量约为200张。

应用留出法,将80%的样本设置为训练集,20%的样本设置为测试集。为了增加训练集的数据量,提高模型的泛化能力,对训练集进行数据增强处理,应用数据增强技术,对已有图片做缩放、随机旋转、随机裁剪、对比度调整、色调调整以及饱和度调整,使得总训练样本量达到213140张,数据增强后,大幅提升了训练样本数量。

02

配置网络

配置网络包括三个部分:网络模型、损失函数及优化函数。

本研究采用的网络模型为ResNeXt50卷积神经网络。目前主流深度学习分类模型包括LeNet、AlexNet、VGG、GoogleNet、Inception、ResNet、ResNext等。其中,ResNet是2015年ILSVRC的冠军,而ResNeXt模型是ResNet模型的升级版,是2016年ILSVRC的亚军。ResNeXt同时采用 VGG 堆叠的思想和 Inception 的 split-transform-merge 思想,以一种简单可扩展的方式延续split-transform-merge策略,整个网络的buildingblock都是一样的,不用在每个stage里对每个buildingblock的超参数进行调整,只用一个结构相同的buildingblock,重复堆叠即可形成整个网络。模型的可扩展性比较强,可以认为是在增加准确率的同时基本不改变或降低模型的复杂度。以下为ResNet(左图)与ResNeXt(右图)基本block对比。

Left:ABlock of ResNet

Right:Ablock of ResNeXt with cardinality=32,with roughly the same complexity

构成ResNeXt基本单元的Buildingblock代码如下:

def bottleneck_block(self,input,num_filters,stride,cardinality,reduction_ratio,name=None):conv0 = self.conv_bn_layer(input=input,num_filters=num_filters,filter_size=1,act='relu',name='conv' + name + '_x1')conv1 = self.conv_bn_layer(input=conv0,num_filters=num_filters,filter_size=3,stride=stride,groups=cardinality,act='relu',name='conv' + name + '_x2')conv2 = self.conv_bn_layer(input=conv1,num_filters=num_filters * 2,filter_size=1,act=None,name='conv' + name + '_x3')scale = self.squeeze_excitation(input=conv2,num_channels=num_filters * 2,reduction_ratio=reduction_ratio,name='fc' + name)short = self.shortcut(input, num_filters * 2, stride, name=name)return fluid.layers.elementwise_add(x=short, y=scale, act='relu')

ResNeXt-50的整体网络结构如下,主要是将ResNet单元换成了ResNeXt单元。

Left:ResNet-50

Right:ResNeXt-50with a 32*4d template

在输出层,将softmax作为分类输出函数,损失函数使用交叉熵(cross_entropy)函数,采用在均方根传递算法(RMSprop)上改进的适合比较大规模的适合训练大数据集的阶梯阶梯型的学习率算法,通过反向传播来不断更新模型中的参数,从而使得损失函数逐渐减小来不断优化模型。

03

训练网络

针对个人和机构AI研究者普遍缺乏算力的现状,AI Studio平台免费提供基础版(CPU:2 Cores RAM:8GB,Disk:100GB)和高级版(GPU:Tesla V100,Video Mem:16GB;CPU:8Cores,RAM:32GB, Disk:100GB)两种运行环境。由于本项目数据量较大,模型训练过程选用GPU高级版运行环境。

训练分为三步:第一步配置好GPU训练环境;第二步用训练集进行训练;第三步保存好训练的模型。

第一步,定义GPU计算场所,创建一个executor,对program进行参数初始化。

第二步,设置好训练的轮数,用训练集进行训练。遍历batch_reader迭代器,喂入一个批次的数据。为方便后续分析和过程可视化,为每个pass的每个批次数据加上索引step_id,每喂入500个batch,保存一次Pass_Num,trainbatch_Num,Train_loss,Train_acc1和time,并使用print语句输出训练的中间结果,随着训练的进行,损失率逐渐下降,准确率逐渐提高,模型逐渐优化。

第三步,模型保存。由于数据量较大,需要训练几十个小时。为防止训练过程意外中断,在训练过程中,每喂入500个批次的数据保存一次中间模型,一旦出现意外中断,下次训练直接导入中间模型继续训练,不需重新开始。最终训练完成时保存最终训练模型,为预测模型做准备。

04

模型预测并设计微信小程序

预测程序为独立代码模块,可独立运行。预测主要分为四步:

第一步:配置预测环境;

第二步:预处理预测图片。将非RGB图片进行模式转换,转为RGB模式;对预测图片进行裁剪和缩放,调整大小为[3, 224, 224];

第三步:加载预测模型并将预测图像放入模型进行预测;

第四步:输出预测结果,确定结果所属类别。本研究共预测图片6766张,预测准确率predict accuracy=94%,部分图片预测结果如下图所示。

为方便应用推广,我们还设计和开发了微信小程序。用户只需使用手机扫描真实的中药饮片,即可快速识别药材名称,小程序会在识别的同时推送该中药材的性味、归经和功能主治等信息,如下图(上)所示。目前小程序已收录了257味常见中药材的药性和作用,如下图(下)所示。

目前此款小程序还在内部测试中,上线时间待定。

05

总结与展望

飞桨复现了经典和前沿深度学习算法,快速迭代更新,同步学术前沿,且提供高质量支持迁移学习的工业级预训练模型,利用飞桨进行中药材图片辨识取得较好的识别效果,基于微信小程序的应用也更便于人们使用,结合AI Studio平台的强大算力、丰富的数据、海量开源算法和优质共享项目,为AI技术学习者和行业应用者打开了一扇快速通往人工智能的大门。

从中药材识别,中药材真伪鉴定,到基于舌象、人脸特征、脉象的疾病诊断和中医体质识别等领域,都有待应用深度学习技术去深入探索。也希望未来飞桨能帮助越来越多的行业完成 AI 赋能,为中医药事业的发展注入新的活力。

想与更多的深度学习开发者交流,请加入飞桨官方QQ群:796771754。

如果您想详细了解更多飞桨PaddlePaddle的相关内容,请参阅以下文档。

官网地址:

https://www.paddlepaddle.org.cn/

GitHub地址:

https://github.com/paddlepaddle/paddle

不认得各种中药材?来看看飞桨开发者的妙招相关推荐

  1. 聚百川之源,欢迎28位AI开发者加入飞桨开发者技术专家计划!

    PPDE计划是飞桨开发者技术专家的荣誉认证体系,无论是热爱编程开发的资深程序员.大型技术社区的引领者,还是顶级开源软件的Committer.新兴科技公司创始人或CTO,这些开发者技术专家将通过线上线下 ...

  2. 「飞桨开发者说」稿件征集活动 正式推出!

    飞桨PaddlePaddle入驻CSDN,正式推出「飞桨开发者说」稿件征集 活动! 「飞桨开发者说」稿件征集 我们将长期征集学习飞桨相关内容,绝对的0门槛!,只要是与Paddle相关的各类知识点.踩坑 ...

  3. 全网流行的黑白照片上色技术,看看飞桨开发者是如何实现的

    点击左上方蓝字关注我们 [飞桨开发者说]李思佑,PPDE飞桨开发者技术专家.指导老师:昆明理工大学理学院石剑平 我们都知道,有很多经典的老照片,受限于那个时代的技术,只能以黑白的形式传世.尽管黑白照片 ...

  4. PPDE迎新 | 欢迎18位AI开发者加入飞桨开发者技术专家计划!

    PPDE计划是飞桨开发者技术专家的荣誉认证体系,无论是热爱编程开发的资深程序员.大型技术社区的引领者,还是顶级开源软件的Committer.新兴科技公司创始人或CTO,这些开发者技术专家将通过线上线下 ...

  5. PPDE第二季度迎新 | 欢迎22位AI开发者加入飞桨开发者技术专家计划!

    PPDE计划是飞桨开发者技术专家的荣誉认证体系,无论是热爱编程开发的资深程序员.大型技术社区的引领者,还是顶级开源软件的Committer.新兴科技公司创始人或CTO,这些开发者技术专家将通过线上线下 ...

  6. 飞桨开发者创意荟:PaddleHub一键部署,AI创意实现原来如此简单

    自从百度深度学习7日打卡营[Python小白逆袭AI大神]课程开营以来,小编收到了很多使用PaddleHub实现的创意AI开源项目,本次作品荟选取了35个有趣实用的优秀作品进行分享,给大家带来更多灵感 ...

  7. 飞桨领航团 x Datawhale联合Meetup来了!杭州的小伙伴可以见面了!

    Datawhale线下 主办:百度飞桨,Datawhale 飞桨领航团是飞桨开发者的兴趣社区,为开发者们提供丰富的本地技术沙龙.Meetup.及线上交流平台,面向所有对人工智能及深度学习领域感兴趣的开 ...

  8. 飞桨模型保存_重磅发布开源框架、生物计算平台螺旋桨,百度飞桨交了年终成绩单...

    机器之心报道 作者:蛋酱.张倩 在 12 月 20 日举行的「WAVE SUMMIT+ 2020 深度学习开发者峰会」上,飞桨平台交出了一份非常亮眼的年终成绩单. 2020 年,是不平凡的一年:这一年 ...

  9. 5分钟“调教”一只机器狗,百度飞桨已经简单到这地步了吗?

    金磊 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI "调教"一只机器狗学会新技能需要多长时间? 仅需5分钟. 一个往左走的手势,它就乖乖地向左挪了挪:一个" ...

最新文章

  1. [Android]webview直接加载网页允许JS,进度条,当前应用内跳转
  2. python爬虫动态加载页面_python3的爬虫笔记8——动态加载页面爬虫
  3. UVa10825 Anagram and Multiplication(dfs)
  4. 前端技术公众号运营心得记录
  5. mp4无法用于直播流
  6. RabbitMQ初探--用C#简单实现通信服务
  7. Matlab和C++混合编程
  8. 服务器性能优化和Mysql性能优化
  9. char添加一个字符_LINUX字符设备驱动模型分析(起始篇)
  10. 人,人,还是人-对需求、沟通、辅导、会议、改变、学习的狂想
  11. 【LeetCode】【字符串】题号:*58. 最后一个单词的长度
  12. js ...运算符_JS专题之深浅拷贝
  13. QQ for linux不用udp8000端口?
  14. (第3章)Docker核心原理解读
  15. Linux下ALSA驱动分析
  16. 将多个html文件合成一个,【答疑】怎么用pr将多个项目工程文件合成一个? - 视频教程线上学...
  17. 方差 标准差_总体、样本、总体方差、样本方差、抽样方差和标准误
  18. 如何恢复计算机我的电脑工具栏,电脑任务栏怎么还原 电脑任务栏的还原方法...
  19. 用MDT 2012为企业部署windows 7(十)--制作windows 7标准模板机
  20. 使用八爪鱼采集器抓取上市公司财报,一次1万条

热门文章

  1. 一款炫酷的H5视频播放插件
  2. 安卓无线蓝牙耳机哪个品牌好?平价好用的蓝牙耳机推荐
  3. 普林斯顿大学算法第一周个人总结1
  4. 按钮linkbutton置灰与取消置灰
  5. Comparator接口的使用
  6. 'BMap' is not defined 导致百度地图无法正常显示的解决方案,亲测有效!
  7. NODE.JS短信接口示例demo
  8. linux设置端口80禁止访问,linux iptables 设置仅22、80端口可访问
  9. 卷积计算,反卷积计算,特征图大小计算,空洞卷积计算
  10. ORCL数据库无监听程序解决方案