PaddleX实现共创插件
写在前面:
- 查阅该共创文档,表示已熟悉:
- 使用PaddleX的基础模型和产业方案。
- 大致了解PaddleX的开发者模式「gradio代码」和工具箱模式「图形界面」的对应关系。
- 本共创文档,仅支持在「PaddleX已经支持的模型」上进行共创工作。
1.共创完成流程
2.共创涉及内容
2.1PaddleX开发者模式代码&文档
2.2 【产业方案】共创
1)内容:用户以SDK或者应用方式,直接落地应用的产品。
2)定位:可商业交付的项目。
2.2.1 文档类物料的修改
首先在左上角模型类型中勾选产业方案,可以看到产业方案的模型列表,模型列表的小卡片包含模型名称、飞桨logo、产线描述、企业、具体场景,在页面右上角可以点击勾选按纽对插件进行筛选。点击小卡片进入模型详情页面,模型详情页面包括模型简介、模型选择、模型训练。
在开发者模式中可以看到,quick_start为文档类物料,共创用户通过修改此文件对模型的介绍进行修改,其他文件均为开发类物料。
2.2.2 开发类物料的修改
点击右上角创建模型产线进入工具箱模式和开发者模式,以通用OCR模型为例,工具箱模式可以展示模型输入输出的效果,用户可以上传自己的图片进行模型训练,输入的图片在效果框里面点击右上角编辑小按钮,可以对图片进行裁剪。输出的图片结果可以直接复制文字,或者鼠标右击选择保存图片。
(1) 共创用户新增测试图片,通过/demo.png文件进行修改;
(2)体验界面的修改在/main.webui.gradio.py_文件;
(3)部署界面的修改在/deployui.py文件。
(4)通过修改/tmp/models/*新增模型;如果新增硬件部署,在/tmp/sdk/文件修改。
3.共创官网展示形式
4.共创交付清单
5.具体物料修改注意
注意:
info.yaml即对应PaddleX平台的卡片页面内容。
info.yaml文件中当出现"_en"字段,填写对应英文即可。
以下内容是PaddleX上飞桨团队建设开源模型的标准。 共创伙伴的实现路径:fork PaddleX已有的,修改成自己最终产品内容。
Info.yaml
1. info.yaml字段规范
一级字段 | 二级字段 | 类型 | 说明 | 示例 | 共创伙伴-是否需要修改 |
---|---|---|---|---|---|
name | string | 产线名称 | 安全帽检测 | 需要 | |
name_en | string | 产线英文名称 | Helmet Detection | 需要 | |
description | string | 产线描述 | 速度优先的安全帽检测SOTA方案 | 需要 | |
description_en | string | 产线英文描述 | Speed priority helmet detection SOTA scheme | 需要 | |
model_category | enum | 产业方案 | 不需要 | ||
tasks | List | 任务 | 不需要。 | ||
领域(domain) | string | 任务类型:内容参考标签体系全景,xxx字段,如CV,NLP,视频,语音,科学计算,文心大模型(*) | 不需要。 | ||
用途(task) | string | CV-图像分类,文本识别,图像生成... | 不需要。 | ||
examples | 方案所属行业(domain) | string | 行业场景:工业/能源 | 智慧零售 | 需要 |
方案场景(scene) | string | 安全帽检测 | 商品识别 | 需要。 | |
datasets | List |
百度自建数据集、ImageNet.. | 需要。需要共创伙伴修改成自己的数据集,或者修改成unknown | ||
license | string | 开源证书 | 需要。飞桨的都是开源的(基本都是‘apache 2.0’),共创伙伴如果是商业化,可以需要修改成unknown | ||
publisher | string | 发布者 | 需要。改成企业名/伙伴名 | ||
hardware | List | 需要修改。**改成共创伙伴验证过的硬件。** | |||
type | String | ||||
manufacturer | String | ||||
if_training | int | 是否支持训练 | 0:不支持在线训练1:支持在线训练(PaddleX模型,均支持在线训练) | 默认是0,不支持在线训练。 | |
if_online_demo | int | 是否支持在线体验 | 0:不支持在线体验1:支持在线体验 | 默认是1,支持在线体验。 |
2. yaml格式举例
3. yaml 修改方式
建议直接复制原来工程里面的,按照自己需要进行修改关键字段的value值即可。
introduction_cn.ipynb
煤矿挡板状态监控
应用场景:智慧工业|智慧能源|智能煤矿 | 智能矿井 煤矿行业大多需要工人在矿井下进行劳作,综采面涉及范围广,无法做到实时的监控,针对安全防范无法做到实时的掌握及动态调整。员工巡检路线都是开采过的综合采矿墙壁,为防止巡检过程有煤快掉落砸伤人员造成人员伤亡,及对墙壁保证支撑作用,所有煤矿综合开采面必须保证挡板属于贴合状态。本场景中通过人工智能计算机视觉的目标检测技术可以实现矿井下的挡板状态检测,支持识别图像中开启或关闭的状态,识别准确率达到99%以上。
1. 煤矿挡板状态监控:算法效果
(视频、动图、图片等形式,尺寸大小:1080P(1280X720))注意:视频需要打上百度飞桨的logo。
2.煤矿挡板状态监控:算法优势
算法优势 | |
---|---|
场景流程 | |
准确率 | 99.8% |
召回率 | 99.6% |
速度 | 50路摄像头@30fps |
注意:
1.对于基础模型,请参考该步骤第二章节“基础模型接入PaddleX”
2.对于产业方案,请参考该步骤第三章节“产业方案接入PaddleX”
3.基础模型主要实现了AI模型的训练、验证、压缩、推理、SDLK部署5个步骤; 产业方案主要实现了AI任务的推理和SDK部署。
Gradio等开发者模式代码
1. 熟悉PaddleX
1.1 PaddleX前端简介
PaddleX前端主要使用gradio的API实现,为用户提供可视化的交互方式,进而调用后台UAPI进行数据校验以及模型的训压推等,如下图。
PaddleX前端通过toolbox方式进行抽象和复用,根据用户的不同操作调用UAPI对应API接口实现对应功能。
1.2 PaddleX框架逻辑
PaddleX运行逻辑如下:
1.启动main.ui.gradio.py脚本,该脚本会渲染出前端UI主界面,共有数据校验、模型训练、评估测试、模型压缩(即将上线)和模型部署五个主要功能模块,每个功能模块由不同的UI组件构成;
2.每个功能模块的UI组件主要支持显示和交互功能,其中交互功能包括:
·调整参数
调整参数交互操作主要通过输入框进行:用户根据需求在功能模块内完成参数设置后,对应UI组件的回调函数会将参数更新到配置文件ui_config.yaml中。
·启动功能(按钮)
启动该模块对应的功能主要通过按钮进行:用户设置完参数后,点击启动按钮,该按钮的回调函数会启动子进程运行run_paddlex.py脚本,run_paddlex.py脚本中调用RunPaddleX类对应接口。
RunPaddleX类主要完成:1.解析配置文件,更新参数;2.调用UAPI对应接口。
2. 产业方案接入PaddleX
通用场景任务接入PaddleX,主要为用户提供一个前端UI体验通用模型具体的应用场景。如下图是通用图像分割场景任务的体验页面。
2.1 Fork 项目
选择期望修改的产业方案界面,点击 '创建模型产线' ,并进入工具箱模式/开发者模式准备开发。
注意:该步骤主要是最小化共创成本(写gradio图形界面代码)。如果开发者对PaddleX和gradio已经非常熟悉,可以按照自己的方式展开共创工作。
2.2 模型推理开发
UAPI提供了单个基础模型推理的API,具有接口统一、支持Batch推理、支持自定义前后处理等特性。
基于项目中的模型推理示例,结合UAPI的模型推理文档,大家可以快速实现单个模型推理。如果是多个模型串联推理,大家可以自行实现中间结果的处理,进而衔接多个模型。
模型推理开发完成后,可以用于前端界面的调用,在PaddleX上展示具体使用效果。
2.3 前端界面开发
PaddleX前端体验通用场景任务包括两部分功能:模型效果展示和模型部署体验。
·模型效果展示:根据用户选择的测试模型和输入图像,调用UAPI的model.infer接口(也可以是套件内部的预测脚本,下同),为用户展示对应的推理结果;
·模型部署功能:展示FastDeploy全平台部署能力,为用户提供对应模型的 Fast Deploy部署包。
首先需要根据不同的通用场景任务准备对应的模型。模型准备主要包括以下几步:
1.根据对应任务,完成模型训练和导出,静态图模型保存到‘./info_model/模型名/****’路径下。如果共创伙伴的模型名是保密的,可以根据业务需要,修改模型名,只需要保证和代码里面保持一致即可。后续PaddleX平台会自动加密该路径下的模型。多个模型串联式,使用多个文件夹独立保存。
1.在UI主界面启动文件更新对应_MODEL_LIST和_INFER_MODEL_URL,具体参考场景模型下的main.webui.gradio.py
2.3.1 前端UI - 模型效果展示
为了方便用户体验当前通用场景任务,模型效果展示部分前端UI默认包含以下几个基本功能:
·选择输入图像:提供输入图像选择组件,并提供一张场景任务对应的示例图像,默认名称为./demo.png。
·选择模型名称:提供测试模型选择组件,测试模型为3.3中准备好的模型。
·设置模型文件来源:提供模型文件来源设置组件,支持用户设置模型文件的绝对路径或相对路径。
·开始测试:提供开始测试按钮,用户点击该按钮后,触发函数应当完成下列操作:
o1.判断模型名称合法性;
o2.判断模型文件来源及其合法性;
o3.下载并解压模型文件(如果是合法URL);
o4.处理输入图像;
o5.初始化UAPI模型,并调用infer接口进行推理;
o6.返回推理结果;
·恢复默认状态:提供恢复默认状态按钮,用户点击该按钮后,清空输出结果展示,恢复输入图像和模型选择状态。
·输出展示:根据不同任务,展示模型推理结果。
如果具体的通用场景任务除上述几个基本功能外需要新增其他功能,可自行参考gradio文档:https://gradio.app/docs/添加。
2.3.2 前端UI - 模型部署
模型部署部分前端UI主要支持用户使用默认下载链接提供的模型文件或本地模型文件,选择对应的部署环境生成 FastDeploy 部署包。由于各通用场景任务该部分功能基本一致,所以可以直接复用已完成实现的脚本。(暂时仅支持PaddleX中FastDeploy已经支持的部署SDK的加密和鉴权)
2.4 运行调试
运行前端启动脚本,验证跑通。