视觉套件(使用零售商品识别工作流开发应用)
ModelArts Pro的视觉套件提供了零售商品识别工作流,自主构建高精度的商品识别算法,帮助提高商品新品上线效率,提升消费者体验。
本章节介绍如何使用视觉套件中的零售商品识别工作流开发应用,以蛋糕店的蛋糕商品为样例,通过上传训练数据、标注数据、训练模型,并将生成的模型部署为在线服务。部署完成后,用户可通过在线服务识别出图片中的所有蛋糕以及图片中每个蛋糕的类别,也可以直接调用API和SDK识别。
首先,请仔细阅读罗列的要求,提前完成准备工作。使用零售商品识别工作流开发应用的步骤如下所示:
步骤1:准备数据
在开发应用之前,您需要设计好商品标签,并自行准备数据集并上传至OBS桶及文件夹中。
由于数据安全原因,本样例不提供具体的样例数据,仅提供适用本次样例的数据要求。本次样例需要准备两份数据,一份训练数据集用于训练模型,一份SKU数据用于创建SKU,即商品各类单品的图片,方便后续针对训练数据集中的数据进行自动标注。
- 商品标签
本次样例以蛋糕商品为例,设计“cream_cake”、“fruit_cake”、“cheese_cake”这三类标签。
- 数据格式
- 保证图片质量:不能有损坏的图片。
- 目前支持的格式包括JPG、JPEG、PNG、BMP。
- 训练数据集
- 本样例训练数据集使用未标注数据。
- 为了保证模型的预测准确度,训练样本跟真实使用场景尽量相似。
- 为保证模型的泛化能力,数据集尽量覆盖所有商品分类的图片,即覆盖所有标签的图片。
- 每个分类标签需要准备20个数据以上,为了训练出效果较好的模型,建议每个分类标签准备200个以上的数据。
- 所有图片放在一个文件目录下,示例如下所示。
├─Training-Dataset │ IMG_20180919_114732.jpg │ IMG_20180919_114745.jpg │ IMG_20180919_114945.jpg
如果训练数据集使用已标注数据,数据要求请见数据集要求。
- SKU数据集
- 为保证智能标注效果,建议每个分类标签的商品准备20个以上的图片。
- 文件放置方式请按“父文件夹/单品文件夹/单品图”,示例如下所示。
├─SKU-Dataset ├── cream_cake │ IMG_20180919_114732.jpg │ IMG_20180919_114745.jpg │ IMG_20180919_114945.jpg ├── fruit_cake │ IMG_20180919_114733.jpg │ IMG_20180919_114746.jpg │ IMG_20180919_114946.jpg ├── cheese_cake │ IMG_20180919_114734.jpg │ IMG_20180919_114747.jpg │ IMG_20180919_114947.jpg
- 按照上述要求准备训练数据集和SKU数据集,文件夹分别命名为“Training-Dataset”和“SKU-Dataset”,并保存至本地。
- 登录OBS服务,创建桶和文件夹,用于存放数据集。
- 创建名称为“mapro-vison”的OBS桶。
- 创建名称为“training-data-in”的文件夹用于存放训练数据集。
- 创建名称为“training-data-out”的文件夹用于存放输出的数据集。
- 创建名称为“sku-data-in”的文件夹用于存放SKU数据集。
- 创建名称为“sku-data-out”的文件夹用于存放输出的SKU数据集。
创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。为保证数据能正常访问,请务必保证创建的OBS桶与ModelArts Pro服务在同一区域。
- 参考上传文件,使用单个文件上传方式将本地准备的训练数据集“Training-Dataset”文件上传至OBS路径“mapro-vision/training-data-in”,将本地准备的SKU数据集“SKU-Dataset”上传至OBS路径“mapro-vision/sku-data-in”。
步骤2:新建应用
- 登录ModelArts Pro控制台,单击“视觉套件”卡片的“进入套件”。
默认进入“应用开发>工作台”页面的“我的应用”页签。
- 在“我的应用”页签下,单击“新建应用”。
进入“新建应用”页面。
- 按表1填写“基本信息”、“工作流配置”和“资源配置”。
图1 新建应用
表1 新建应用参数说明 参数
说明
推荐填写
应用名称
必填参数,支持输入中英文、数字、下划线及中划线。
本样例可输入“蛋糕识别应用”。
应用负责人
选填参数,应用负责人的姓名,例如蛋糕识别应用的负责人可填蛋糕店的老板。
本样例可不填。
应用描述
选填参数,应用的简短描述。
本样例填写“这是关于蛋糕的应用”。
所属行业
单击,选择应用所属行业。
本样例选择“零售”。
选择工作流
选择开发应用的预置工作流。
本样例选择“零售商品识别工作流”。
数据处理资源
用于数据处理的资源池和资源类型。
- “公共资源池”:提供公共的大规模计算集群,资源按作业隔离。您可以按需选择不同的资源类型。
- “专属资源池”:提供独享的计算资源,不与其他用户共享,更加高效。使用专属资源池需要在ModelArts创建专属资源池。
本样例选择“公共资源池”、“CPU:2核8GiB”。
模型训练资源
用于模型训练的资源池和资源类型。
- “公共资源池”:提供公共的大规模计算集群,资源按作业隔离。您可以按需选择不同的资源类型。
- “专属资源池”:提供独享的计算资源,不与其他用户共享,更加高效。使用专属资源池需要在ModelArts创建专属资源池。
本样例选择“公共资源池”。
测试资源部署
用于测试资源的资源池和资源类型。
- “公共资源池”:提供公共的大规模计算集群,资源按作业隔离。您可以按需选择不同的资源类型。
- “专属资源池”:提供独享的计算资源,不与其他用户共享,更加高效。使用专属资源池需要在ModelArts创建专属资源池。
本样例选择“公共资源池”。
部署方式
选择应用的部署方式,当前零售商品识别工作流仅支持“在线部署”。
本样例选择“在线部署”。
- 确认信息后,单击“确定”。
进入“应用开发”页面。
步骤3:选择数据
- 在“应用开发>数据选择”页面,单击“新建训练数据集”。
右侧弹出“新建数据集”页面。
- 按表2填写数据集基本信息,然后单击“确定”。
图2 新建训练数据集
表2 新建训练数据集参数说明 参数
说明
推荐填写
数据集名称
待新建的数据集名称。
本样例填写“data-cake”。
描述
数据集简要描述。
-
数据上传方式
训练数据上传的方式,当前仅支持把数据上传至OBS,默认为“选择obs文件”。
默认“选择obs文件”。
数据集输入位置
训练数据存储至OBS的位置。
单击“数据集输入位置”右侧输入框,在弹出的“数据集输入位置”对话框中,选择“OBS桶”和“文件夹”,然后单击“确定”。
选择步骤1:准备数据中提前上传数据集的OBS路径“mapro-vision/data-in”。
数据集输出位置
待新建的数据集存储至OBS的位置。
单击“数据集输出位置”右侧的“修改”,在弹出的“数据集输出位置”对话框中,选择“OBS桶”和“文件夹”,然后单击“确定”。
选择步骤1:准备数据中提前创建好的输出数据集的OBS路径“mapro-vison/data-out”。
- 勾选已上传的数据集。
- 单击右下角“下一步”。
进入“应用开发>SKU创建”页面。
步骤4:创建SKU
- 在“SKU创建”页面,单击“批量上传SKU”。
弹出“批量上传SKU”对话框。
- 在“批量上传SKU”对话框中,按表3填写信息,然后单击“确定”。
页面会显示“SKU名称”和每个SKU的“数据量”。
图3 批量上传SKU
表3 批量上传SKU参数说明 参数
说明
推荐填写
SKU存储位置(OBS)
SKU数据存储至OBS的桶和文件夹。
单击“SKU存储位置(OBS)”右侧输入框,在“SKU存储位置(OBS)”对话框中选择SKU存储的OBS桶和文件夹,单击“确定”。
本样例选择在步骤1:准备数据中提前上传SKU数据集的OBS路径“mapro-vision/sku-data-in”。
SKU输出位置
SKU数据输出的默认OBS存储位置。此位置即基础配置中默认存储位置。如需修改,请前往控制台“配置中心>基础配置”修改默认存储位置。
本样例使用默认位置,不作修改。
- 单击右下角的“下一步”。
进入“应用开发>数据标注”页面。
步骤5:标注数据
- 在“应用开发>数据标注”页面,会显示自动标注的进度,如果自动标注完成,标注进度为100%。
图4 自动标注完成。
标注完成后,您可以单击“标注结果确认”中的“前往确认”,针对“已标注”的数据进行核对和检查。针对标注错误的数据修改标注。
由于零售商品工作流标注数据时需要勾勒出商品形状,必须使用多边形标注框标注数据。
- 单击右下角的“下一步”。
进入“应用开发>模型训练”页面。
步骤8:部署服务
- 在“应用开发>服务部署”页面,按表4填写服务的相关参数,然后单击“部署”。
图9 服务部署
表4 服务部署参数说明 参数
说明
服务名称
待部署的服务名称,单击可修改服务默认服务名称。
描述
待部署服务的简要说明。
服务部署方式
当前只支持在线部署方式。
计算节点规格
界面选择计算规格。
服务自动停止
设置服务自动停止的时间,在线服务运行状态在所选的时间点后自动停止,同时在线服务也停止计费。
部署成功后,页面显示“服务部署成功”。
单击“查看应用监控”,可进入“应用监控”页面,查看应用的基本信息、历史版本和调用指南。