前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【EasyDL Pro】中草药材AI识别师

【EasyDL Pro】中草药材AI识别师

作者头像
小帅丶
发布2020-04-24 15:01:55
9721
发布2020-04-24 15:01:55
举报
文章被收录于专栏:XAIXAI

中医药发展已经上升到国家战略高度,中医药AI创新是五千年中医瑰宝的传承利器。2018年我国中药市场规模达到2700亿元,未来5年将达到2万亿元。国内原料药和制剂厂有3994家,其中中药企业2080家。中药强调“道地药材”,经调查药用植物有383科,2039属,11146种(以上内容来自:http://www.yikumed.com/solution/13.html)。本次使用EasyDLPro图像分类对164种中草药材,18种功能类型(清热药,解表药,补虚药,平肝息风药,化湿药,利水渗湿药,温里药,理气药,消食药,止血药,活血化瘀药,化痰止咳平喘药,安神药,收涩药,开窍药,外用药,祛风湿药,泻下药)进行深度学习模型训练,数据集达25w+,基于 paddle-fluid-v1.6.2 通过ResNet50网络训练。分类精度均达到85.8%以上,平均每次鉴别仅耗时2-5秒,已经达到很好的水平。结合现代深度学习反向传播提高精准度,为生产过程中错综复杂的参数条件找到最优方案。

什么是EasyDL

EasyDL 是基于飞桨框架 PaddlePaddle 推出的面向企业开发者打造的一站式 AI 开发平台,提供从数据管理与标注、模型训练、服务部署的全流程支持,内置丰富的预训练模型,全面支持飞桨 Master 模式;模型训练效果好、训练效率高,并且有完善安全的数据服务,支持端、云、软硬一体等多种灵活的部署方式。

目前,EasyDL 已拥有包括专业版、零售版和经典版在内的三款产品,面向不同人群、不同需求,提供高效进行 AI 模型开发部署的平台产品,已在工业、零售、制造、医疗等众多领域落地。

开发者(AI爱好者)可以通过对实际生活与业务需求的细微观察入手,基于百度大脑 EasyDL 专业版功能,创造出价值卓群的模型。无论你是 AI 入门或是资深专家,都可以轻松上手!

什么是EasyDL Pro

EasyDL专业版适用于AI初学者及AI专业工程师,支持一站式获取视觉及自然语言处理两大技术方向相关AI能力,系统内置基于百度海量数据训练的预训练模型及预置网络,可在少量训练数据上达到更优的训练效果。模型部署上可将模型灵活部署为公有云API、私有服务器部署、设备端SDK、软硬一体方案。 EasyDL专业版是EasyDL在2019年10月下旬全新推出的针对AI初学者或者AI专业工程师的企业用户及开发者推出的AI模型训练与服务平台,目前支持视觉及自然语言处理两大技术方向,内置百度海量数据训练的预训练模型,灵活支持脚本调参及Notebook两类开发方式,只需少量数据可达到优模型效果。

  • 适用人群

专业AI工程师且追求灵活、深度调参的企业或个人开发者

  • 支持定制模型类型

支持视觉及自然语言处理两大技术方向

  • 专业版产品特性

预置百度百亿级数据规模的预训练模型,包括丰富的视觉模型及自然语言处理模型ERNIE,训练效果更突出。

对比经典版,支持代码级调整模型参数和模型结构,封装底层算法逻辑细节,代码行数更少,更易有算法基础的开发者上手。

支持从数据管理,模型训练到模型部署一站式AI服务

  • 视觉:支持图像分类及物体检测两类模型训练

任务类型

预置算法

图像分类

Resnet(50,101)、Se_Resnext(50,101)、Mobilenet Nasnet

物体检测

FasterRCNN、YoloV3、mobilenetSSD

  • 自然语言处理:支持文本分类及短文本匹配两类模型训练,内置百度百亿级数据所训练出的预训练模型ENNIE. ERNIE(艾尼)是百度自研持续学习语义理解框架,该框架可持续学习海量数据中的知识。基于该框架的ERNIE2.0预训练模型,已累计学习10亿多知识,中英文效果全面领先,适用于各类NLP应用场景。 了解ERNIE

任务类型

预置网络

文本分类

BOW、CNN、GRU、TextCNN、LSTM、BiLSTM

短文本匹配

SimNet(BOW、CNN、GRU、LSTM)、FC

序列标注

CRF

  • 没用过 EasyDL 专业版? 没关系!百度AI提供在线教程,理论+实战6小时从入门到精通! 历史课程回放地址:http://abcxueyuan.cloud.baidu.com/#/course_detail?id=15167
  • 数据量不够多,算法开发经验还不够丰富? 没关系!EasyDL 专业版预置了优秀的网络结构和基于百度海量数据训练的预训练模型,Master 模式轻快开发,少量数据轻松获得高精度模型!

创建百度账号以及EasyDL相关基础使用

专业版介绍 https://ai.baidu.com/ai-doc/EASYDL/0k38n3p16 AI接入指南 https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3

创建视觉任务

完善相关信息

完善模型名称等信息

创建数据集

选择标注好的压缩包

这里数据集有25w+图片 外加标注json文件 文件个数达50w+ 根据百度压缩包的要求得到了JSON格式。使用Java的File 以及第三方fastjson、hutool 完成了数据标注 总耗时(毫秒):92008(标注JSON文件生成)+604785(文件迁移到一个文件夹下)+600000(文件夹压缩) 总耗时:22分钟完成25w+图片的标注

以下内容仅适用于图像分类单图单标签。仅供参考,绝非正经捷径

1.下载官方标注示例得到如下JSON结构

代码语言:javascript
复制
{
    "labels":[
        {
            "name":"Drama"
        },
        {
            "name":"Romance"
        }
    ]
}

2.根据JSON创建JavaBean(需要lombok插件和jar)

代码语言:javascript
复制
@NoArgsConstructor
@Data
public class EasyDLProTagBean {
    private List<LabelsBean> labels;
    @NoArgsConstructor
    @Data
    public static class LabelsBean {
        private String name;
    }
}

3.提前准备好数据集

代码语言:javascript
复制
小帅丶这里的数据是以分类名称为单位。共计164个文件夹。每个文件夹里面的文件也是以分类名称命名eg:aiye_001.jpg,aiye_002.jpg.....aiye_1500.jpg
假设以上数据都在D://dataset//chm 文件夹下面
代码语言:javascript
复制
public static void main(String[] args) {
    //数据根目录
    String filePathRoot = "D://dataset//chm//";
    File fileRoot = new File(filePathRoot);
    String[] listRoot = fileRoot.list();
    //开始时间
    long startTime = System.currentTimeMillis();
    for (String rootName : listRoot) {
        //拿到根目录文件夹名即标签名称
        String tagName = rootName;
        //根据标签名称得到所有标签名称下面的文件
        String filePath = filePathRoot+rootName;
        File file = new File(filePath);
        String[] list = file.list();
        if(list.length>0){
            //循环 生成JSON文件
            for (String s : list) {
                String fileName = s.substring(0,s.lastIndexOf("."));
                //生成一个名称与图片名称一致 后缀名为.json
                String jsonFileName = fileName+".json";
                //label对象 不是必须的 直接字符串拼接也可以
                EasyDLProTagBean bean = new EasyDLProTagBean ();
                List<LabelBean.Labels> labelsList = new ArrayList<LabelBean.Labels>();
                LabelBean.Labels labels = new LabelBean.Labels();
                labels.setName(tagName);
                labelsList.add(labels);
                bean.setLabels(labelsList);
                //生成label的json文件
                String JSONText = JSON.toJSONString(bean);
                //讲json文件写入当前文件夹中
                FileUtil.writeString(JSONText,filePath+File.separator+jsonFileName,"UTF-8");
            }
        }else{
            System.out.println(filePath);
        }
    }
    //耗时
    long timeConsuming = System.currentTimeMillis() - startTime;
    System.out.println(timeConsuming);
}

4.重复3的代码稍作修改即可完成N个文件夹下面的文件迁移到某一个文件夹下面。打包上传即可

注意:默认为10w数据量。如果不够提交工单申请哦

等待标注完成

新建训练任务

选择网络、运行环境、数据集即可开启训练 会有免费100小时的资源哦

等待训练完成

可以进行部署、效果校验(查看精准度是否符合自己的期望)操作

训练结果

部署操作

选择公有云部署(根据自己需求来)、给定一个接口地址名称 不要超过20个字符

等待发布通过查看接口地址

Java代码调用

请自行修改【API地址】、【access_token】、【本地图片地址】

代码语言:javascript
复制
    /**
     * 重要提示代码中所需工具类
     * FileUtil,Base64Util,HttpUtil,GsonUtils请从
     * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
     * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
     * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
     * 下载
     */
    public static void main(String[] args) throws Exception {
        //请将API地址替换为EasyDL Pro任务发布后所提供的API地址
        String url ="【API地址】";
        //access_token获取方法请详见API使用说明,请注意access_token有效期为30天
        String access_token="【access_token】";
        //修改图片地址,测试不同图片
        byte[] file = FileUtil.readFileByBytes("【本地图片地址】");
        //参数image:图像base64编码
        String image = Base64Util.encode(file);
        //组装json格式的请求参数
        String params = "{\"image\":\""+image+"\",\"top_num\":5}";
        String result = HttpUtil.post(url, access_token, params);
        //输出识别结果
        System.out.println(result);
    }

结果返回

可以看到识别出了 gancao 精度为 0.9859

代码语言:javascript
复制
{
    "log_id":5732642380371350220,
    "results":[
        {
            "name":"gancao",
            "score":0.9859340786933899
        }
    ]
}

演示闪图

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是EasyDL
  • 什么是EasyDL Pro
  • 创建百度账号以及EasyDL相关基础使用
  • 创建视觉任务
  • 创建数据集
    • 选择标注好的压缩包
    • 新建训练任务
      • 等待训练完成
        • 部署操作
    • Java代码调用
    相关产品与服务
    NLP 服务
    NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档