【我与ModelArts的故事】使用ModelArts搭建"花卉种类识别"服务
目录
前言
本文面向所有想要入门人工智能的新手和老手。
无论你是否了解AI的各种算法,也无论你是否具有数学基础,都可以通过华为云的ModelArts,将AI技术引进到你的项目中。
产品入口
华为云的ModelArts网址为:https://www.huaweicloud.com/product/modelarts.html
直接在浏览器中输入该地址,即可进入页面
选择模型
在ModelArts产品页面的功能模块处,选择“AI Gallary”
AI Gallery 是一个“资产集市”。通过该集市,开发者可以有偿(或无偿)的共享Notebook代码样例、数据集、算法、模型、Workflow等AI资产。
本文教大家拿来即用,直接使用AI Gallary训练好的模型。在 AI Gallery 页面,选中“资产集市”,然后点击“部署”下的“模型”按钮
在所有模型中,选择我们今天要实践的“基于图像的花卉种类识别”
订阅模型
这个模型可以预测102种常见的花卉,包含pink primrose, hard-leaved pocket orchid, canterbury bells, sweet pea, english marigold等。输入一个图像,这个模型会预测该图像中花卉分别属于每个类别的置信度,置信度的取值范围为0到1。
点击“订阅”按钮,订阅该模型
部署上线
订阅成功后,会多出一个“前往控制台”的按钮
点击“前往控制台”会让你选择“云服务的区域”(选一个离你服务器近的,将来访问速度会更快)。这里我使用默认的“华北-北京四”
之后会自动跳转到“我的订阅”页面
点击“部署”—>“在线服务”,进行部署
部署时,只需修改名称,然后勾选协议,即可进行下一步
然后它会列出“部署清单”,确认无误后,点击“提交”即可
任务提交成功后,点击“返回在线服务列表”按钮,可以查看部署进度(部署比较慢,需要耐心等待差不多5分钟左右)
服务指南
过了一段时间后,这里会变成绿色的“运行中”状态(免费的部署会持续一小时,时间过了会自动停止运行,不会产生扣费)
点击“名称/ID”可以查看服务详情
默认打开的是“事件”选项卡。可以看到部署从“提交”到“成功启动”总共花了 6分半钟
切换到“调用指南”选项卡,可以查看到API接口的“请求类型”与“具体的参数信息”
测试服务
在网上随便下载一个花卉的图片到本地,例如我在这个网址上下载图片
然后在“详情”页中,切换到“预测”选项卡。点击“上传”按钮,上传图片,然后再点击“预测”按钮调用服务
预测结果为
{
"predicted_label": "sword lily",
"scores": [
[
"sword lily",
"0.141"
],
[
"rose",
"0.127"
],
[
"sweet pea",
"0.126"
],
[
"snapdragon",
"0.056"
],
[
"foxglove",
"0.041"
]
]
}
翻译成中文就是
英文 | 中文 | 概率 |
---|---|---|
sword lily | 剑百合 | 14.1% |
rose | 玫瑰花 | 12.7% |
sweet pea | 香豌豆 | 12.6% |
snapdragon | 金鱼草 | 5.6% |
foxglove | 毛地黄 | 4.1% |
这个预测已经很准了!
调用服务(Python)
获取接口地址
查看调用指南的API地址,右侧有说明“接口支持本租户AK/SK以及token认证方式”
获取AK/SK
下面使用AK和SK的方式调用接口。获取AK和SK的方式为
- 右上角账户名,点击“我的凭证”
- 左侧切换到“访问密钥”选项卡
- 新建访问密钥
- 下载 credentials.csv 密钥文件
- Access Key Id 就是AK;Secret Access Key 就是SK
注意:如果访问密钥泄露,会带来数据泄露风险,且每个访问密钥仅能下载一次,为了帐号安全性,建议您定期更换并妥善保存访问密钥。
Python代码
# coding=utf-8
import requests
from apig_sdk import signer
if __name__ == '__main__':
# Config url, ak, sk and file path.
url = "https://d6340a6041614c14b716b71ec6e08d0e.apigw.cn-north-4.huaweicloud.com/v1/infers/00877750-a132-4797-934e-08b01f2ccfde"
ak = "填你的AK"
sk = "填你的SK"
file_path = "D:/Desktop/flower.webp"
# Create request, set method, url, headers and body.
method = 'POST'
headers = {"x-sdk-content-sha256": "UNSIGNED-PAYLOAD"}
request = signer.HttpRequest(method, url, headers)
# Create sign, set the AK/SK to sign and authenticate the request.
sig = signer.Signer()
sig.Key = ak
sig.Secret = sk
sig.Sign(request)
# Send request
files = {'images': open(file_path, 'rb')}
resp = requests.request(request.method, request.scheme + "://" + request.host + request.uri, headers=request.headers, files=files)
# Print result
print(resp.status_code)
print(resp.text)
将代码粘贴到Spyder中执行(你也可以粘贴到Jupyter)
可以看到代码执行出错,错误是:
ModuleNotFoundError: No module named 'apig_sdk'
首先从下面链接下载apig sdk
https://obs.cn-north-1.myhuaweicloud.com/apig-sdk/ApiGateway-python-sdk.zip
下载好后解压文件夹,解压后的目录结构如下 (执行main.py时,会自动引用apig_sdk文件夹下的内容)
将main.py的代码替换成上述代码后,再次点击执行按钮
执行成功,输出如下
runfile('D:/Downloads/ApiGateway-python-sdk/ApiGateway-python-sdk-2.0.4/main.py', wdir='D:/Downloads/ApiGateway-python-sdk/ApiGateway-python-sdk-2.0.4')
Reloaded modules: apig_sdk, apig_sdk.signer
200
{"predicted_label": "sword lily", "scores": [["sword lily", "0.141"], ["rose", "0.127"], ["sweet pea", "0.126"], ["snapdragon", "0.056"], ["foxglove", "0.041"]]}
推荐一个在线格式化JSON的网站:https://www.bejson.com/
在这里可以将上面返回的JSON字符串贴入,然后进行格式化
从监控信息可以看到,两次调用均成功返回,并且当前CPU和内存的使用率均在极低的负载中
好了,至此已经将华为云ModelArts的AI Gallary中的“花卉种类识别”模型已经成功部署上线,并接入到我们实际的代码中了(上述只是演示接入Demo代码的全流程)
释放资源
最后,返回在线服务列表,点击“更多”—>“删除”按钮,删除部署的服务并释放资源
总结
看完这篇博客,你可能会觉得——哇,原来接入AI如此简单!这背后的大量复杂计算和模型设计,华为云ModelArts都已经为你做完了。你剩下要做的就只是接入应用而已(甚至连接入应用的代码也已为你写好,只需修改少量配置信息即可)。
你可以是AI新手,可以无需了解复杂的数学运算公式,通过华为云ModelArts产品,即可实现3步上云,10分钟接入AI。怎么样,这感觉是不是很棒 ^_^ 赶紧来学习吧
结束语
我正在参加【有奖征文第21期】说说你和ModelArts的故事,输出优质产品体验文章,赢开发者大礼包!
https://bbs.huaweicloud.com/blogs/395149
- 点赞
- 收藏
- 关注作者
评论(0)