【我与ModelArts的故事】使用ModelArts搭建"花卉种类识别"服务

举报
福州司马懿 发表于 2023/05/04 00:13:21 2023/05/04
【摘要】 通过本篇对“花卉识别”模型接入应用的实战教学,你会发现原来接入AI如此简单!这背后的大量复杂计算和模型设计,华为云ModelArts都已经为你做完了。你剩下要做的就只是接入应用而已(甚至连接入应用的代码也已为你写好,只需修改少量配置信息即可)

目录

前言

本文面向所有想要入门人工智能的新手和老手。

无论你是否了解AI的各种算法,也无论你是否具有数学基础,都可以通过华为云的ModelArts,将AI技术引进到你的项目中。

产品入口

华为云的ModelArts网址为:https://www.huaweicloud.com/product/modelarts.html

直接在浏览器中输入该地址,即可进入页面

图片.png

选择模型

在ModelArts产品页面的功能模块处,选择“AI Gallary”

图片.png

AI Gallery 是一个“资产集市”。通过该集市,开发者可以有偿(或无偿)的共享Notebook代码样例、数据集、算法、模型、Workflow等AI资产。

本文教大家拿来即用,直接使用AI Gallary训练好的模型。在 AI Gallery 页面,选中“资产集市”,然后点击“部署”下的“模型”按钮

图片.png

在所有模型中,选择我们今天要实践的“基于图像的花卉种类识别”

图片.png

订阅模型

进入对应的详情页面:https://developer.huaweicloud.com/develop/aigallery/model/detail?id=998a845c-2dbd-49fa-a664-e8887befaacc

图片.png

这个模型可以预测102种常见的花卉,包含pink primrose, hard-leaved pocket orchid, canterbury bells, sweet pea, english marigold等。输入一个图像,这个模型会预测该图像中花卉分别属于每个类别的置信度,置信度的取值范围为0到1。

点击“订阅”按钮,订阅该模型

图片.png

部署上线

订阅成功后,会多出一个“前往控制台”的按钮

图片.png

点击“前往控制台”会让你选择“云服务的区域”(选一个离你服务器近的,将来访问速度会更快)。这里我使用默认的“华北-北京四”

图片.png

之后会自动跳转到“我的订阅”页面

图片.png

点击“部署”—>“在线服务”,进行部署

图片.png

部署时,只需修改名称,然后勾选协议,即可进行下一步

图片.png

然后它会列出“部署清单”,确认无误后,点击“提交”即可

图片.png

图片.png

任务提交成功后,点击“返回在线服务列表”按钮,可以查看部署进度(部署比较慢,需要耐心等待差不多5分钟左右)

图片.png

服务指南

过了一段时间后,这里会变成绿色的“运行中”状态(免费的部署会持续一小时,时间过了会自动停止运行,不会产生扣费)

图片.png

点击“名称/ID”可以查看服务详情

默认打开的是“事件”选项卡。可以看到部署从“提交”到“成功启动”总共花了 6分半钟

图片.png

切换到“调用指南”选项卡,可以查看到API接口的“请求类型”与“具体的参数信息”

图片.png

测试服务

在网上随便下载一个花卉的图片到本地,例如我在这个网址上下载图片

图片.png

然后在“详情”页中,切换到“预测”选项卡。点击“上传”按钮,上传图片,然后再点击“预测”按钮调用服务

图片.png

预测结果为

{
    "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认证方式”

图片.png

接口地址为:https://d6340a6041614c14b716b71ec6e08d0e.apigw.cn-north-4.huaweicloud.com/v1/infers/00877750-a132-4797-934e-08b01f2ccfde

获取AK/SK

下面使用AK和SK的方式调用接口。获取AK和SK的方式为

  1. 右上角账户名,点击“我的凭证”
  2. 左侧切换到“访问密钥”选项卡
  3. 新建访问密钥
  4. 下载 credentials.csv 密钥文件
  5. Access Key Id 就是AK;Secret Access Key 就是SK

注意:如果访问密钥泄露,会带来数据泄露风险,且每个访问密钥仅能下载一次,为了帐号安全性,建议您定期更换并妥善保存访问密钥。

图片.png

图片.png

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)

图片.png

可以看到代码执行出错,错误是:

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文件夹下的内容)

图片.png

使用Spyder打开main.py

图片.png

将main.py的代码替换成上述代码后,再次点击执行按钮

图片.png

执行成功,输出如下

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字符串贴入,然后进行格式化

图片.png

从监控信息可以看到,两次调用均成功返回,并且当前CPU和内存的使用率均在极低的负载中

图片.png

好了,至此已经将华为云ModelArts的AI Gallary中的“花卉种类识别”模型已经成功部署上线,并接入到我们实际的代码中了(上述只是演示接入Demo代码的全流程)

释放资源

最后,返回在线服务列表,点击“更多”—>“删除”按钮,删除部署的服务并释放资源

图片.png

总结

看完这篇博客,你可能会觉得——哇,原来接入AI如此简单!这背后的大量复杂计算和模型设计,华为云ModelArts都已经为你做完了。你剩下要做的就只是接入应用而已(甚至连接入应用的代码也已为你写好,只需修改少量配置信息即可)。

你可以是AI新手,可以无需了解复杂的数学运算公式,通过华为云ModelArts产品,即可实现3步上云,10分钟接入AI。怎么样,这感觉是不是很棒 ^_^ 赶紧来学习吧

结束语

我正在参加【有奖征文第21期】说说你和ModelArts的故事,输出优质产品体验文章,赢开发者大礼包!
https://bbs.huaweicloud.com/blogs/395149

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。