基于ModelArts Standard实现超市商品识别
在超市称重时,一体机通过摄像头自动识别商品并进行称重打标签,展现了一种高度智能化(计算机视觉技术computer vision)和自动化应用场景。这一过程通常涉及到先进的图像识别技术、重量检测和打印设备的结合使用。
ModelArts Standard平台提供了模型部署、推理功能,使得用户在已经构建或获取了预训练模型的基础上,能够将这些模型直接导入到Standard环境,并且快速地部署成为高效的在线服务以执行实时预测任务。
本篇文章将通过一个具体的案例——“商超商品识别”模型,来详细阐述如何在ModelArts Standard平台上实现已有模型向在线服务的转变过程,进而进行AI技术的实践与学习。此外,我们还将展示如何通过编写Python代码来调用这一AI服务,从而满足不同场景下的定制化需求。
“商超商品识别”模型具备识别多达81种常见超市商品的能力,覆盖范围广泛,包括但不限于各类蔬菜、水果以及饮品等。还能进一步提供置信度最高的前五种商品及其对应的置信度得分,极大地增强了识别结果的实用性和参考价值。
步骤一、 订阅模型
-
“商超商品识别”的模型共享在AI Gallery中。您可以前往AI Gallery订阅此模型。
在模型详情页,单击“部署”,阅读并勾选同意《数据安全与隐私风险承担条款》 和 《华为云AI Gallery服务协议》。
部署商品识别模型
-
前往控制台,在弹出的“选择云服务区域”页面选择ModelArts所在的云服务区域,单击“确定”跳转至ModelArts控制台的“模型管理(AI应用) > 订阅应用”页面。
-
在“订阅应用”列表,单击“版本数量”,在右侧展开版本列表,当订阅模型的版本列表的状态显示为“就绪”时表示模型可以使用。
步骤二、使用订阅模型部署在线服务
模型订阅成功后,可将此模型部署为在线服务。
- 在展开的版本列表中,单击“部署 > 在线服务”跳转至部署页面。
- 在部署页面,参考如下说明填写关键参数。
- “名称”:自定义一个在线服务的名称,也可以使用默认值,此处以“商超商品识别服务”为例。
- “资源池”:选择“公共资源池”。
- “AI应用来源”和“选择AI应用及版本”:会自动选择订阅模型。
- “计算节点规格”:在下拉框中选择推理使用的计算资源。如果有免费资源,建议选择免费资源。
- 其他参数可使用默认值。
- 参数配置完成后,单击“下一步”,确认规格参数后,单击“提交”启动在线服务的部署。
-
任务提交成功后,单击“查看服务详情”,等待服务状态变为“运行中”时,表示服务部署成功。预计时长4分钟左右。
步骤三:页面方式预测结果
在线服务部署完成后,单击“预测”页签。
在“预测”页签,单击“上传”,上传一个“不娜娜”测试图片,单击“预测”查看预测结果。此处提供一个样例图片供预测使用。
不娜娜
预测结果为banana概率最大。
步骤四:代码方式进行预测
代码需要apig_sdk,安装方式:https://support.huaweicloud.com/devg-apisign/api-sign-sdk-python.html
完整代码:
# coding=utf-8
# 指定文件编码格式为UTF-8
import requests
# 导入requests库,用于发送HTTP请求
import os
# 导入os库,用于操作系统相关的功能
from apig_sdk import signer
# 从apig_sdk库导入signer模块,用于签名请求
if __name__ == '__main__':
# 当脚本作为主程序运行时执行以下代码
# Config url, ak, sk and file path.
url = "https://2f3de628da05422f8a0c62568461bdad.apigw.cn-north-4.huaweicloud.com/v1/infers/8a57f8a6-5e07-4ec9-a14d-a8c547c76bec"
# 设置API的URL地址
# 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,
# 建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
# 本示例以ak和sk保存在环境变量中来实现身份验证为例,
# 运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
ak = "HC4ESGFJTPMH1********N"
sk = "zyHHrfAkxbiG10KCyoHY0IQ**********nFelr"
# 设置访问密钥(AK)和秘密密钥(SK),用于认证请求
file_path = "C:/Users/lenovo/Pictures/banana.png"
# 设置要上传的图像文件路径
# Create request, set method, url, headers and body.
method = 'POST'
# 设置请求方法为POST
headers = {"x-sdk-content-sha256": "UNSIGNED-PAYLOAD"}
# 设置请求头,包含SHA256摘要
request = signer.HttpRequest(method, url, headers)
# 创建HttpRequest对象,初始化请求参数
# Create sign, set the AK/SK to sign and authenticate the request.
sig = signer.Signer()
sig.Key = ak
sig.Secret = sk
# 创建Signer对象,设置AK和SK用于签名请求
sig.Sign(request)
# 使用AK和SK对请求进行签名
# Send request
files = {'images': open(file_path, 'rb')}
# 打开图像文件,准备作为multipart/form-data上传
resp = requests.request(request.method, request.scheme + "://" + request.host + request.uri, headers=request.headers, files=files)
# 发送POST请求,包含请求方法、URL、头部信息和文件数据
# Print result
print(resp.status_code)
# 打印响应状态码
print(resp.text)
# 打印响应正文
4.1 获取在线服务信息
在调用接口时,需获取在线服务的调用地址,以及在线服务的输入参数信息。步骤如下:
登录ModelArts管理控制台,在左侧导航栏中选择“模型部署 > 在线服务”,默认进入“在线服务”列表。
单击目标服务名称,进入服务详情页面。
在“在线服务”的详情页面,可以获取该服务的调用地址和输入参数信息。
“API接口公网地址”即在线服务的调用地址。当模型配置文件中apis定义了路径,调用地址后需拼接自定义路径。如:“{在线服务的调用地址}/predictions/poetry”。
4.2 file_path
“file_path”为预测文件的本地路径,既可使用绝对路径(如Windows格式"D:/test.png",Linux格式"/opt/data/test.png"),也可以使用相对路径(如"./test.png")。
4.3 代码执行结果
五、结论
本文介绍了如何在超市中使用打签一体机通过摄像头自动识别商品并进行称重打标签的过程,这体现了计算机视觉技术和自动化在AI领域的应用。文章详细描述了如何在ModelArts Standard平台上部署“商超商品识别”模型,将其转换为在线服务,以便执行实时预测任务。通过订阅模型、部署在线服务、页面方式预测和代码方式预测四个步骤,读者可以学习如何将预训练模型应用于实际场景中。此外,文章还提供了Python代码示例,展示了如何调用AI服务进行图像识别,并获取预测结果。最后,文章强调了在处理敏感信息时的安全性问题,建议使用环境变量或其他安全方法来管理AK和SK。