体验华为云ModelArts,用python让你的头像动漫化【玩转华为云】
产品入口
华为云的ModelArts网址为:https://www.huaweicloud.com/product/modelarts.html
直接在浏览器中输入该地址,即可进入页面
选择模型
在ModelArts产品页面的功能模块处,选择“AI Gallary”
AI Gallery 是一个“资产集市”。通过该集市,开发者可以有偿(或无偿)的共享Notebook代码样例、数据集、算法、模型、Workflow等AI资产。
本文教大家拿来即用,直接使用AI Gallary训练好的模型。在 AI Gallery 页面,选中“资产集市”,然后点击“部署”下的“模型”按钮
在模型首页,能看到一个近期更新,里面有一个“头像动漫化模型”。本文就带大家体验下,如何借助华为云ModelArts,让你的头像动漫化
头像动漫化模型
“头像动漫化模型”的链接地址为:https://developer.huaweicloud.com/develop/aigallery/model/detail?id=b37976a6-4ffe-48bd-aba0-ffa82a44d91a
它通过POST的方式接收上传的图片,然后将图片进行动漫化,并返回处理好的图片的Base64信息
订阅模型
点击右上角的订阅按钮,确定提示后,即可订阅到该模型。
订阅成功后,会弹出一个绿框提示,然后额外显示出一个“前往控制台”的按钮
点击“前往控制台”后,首先要做的就是选择云服务区域
部署云服务
进入控制台后,默认只会显示出你刚刚订阅的模型。点击“部署”按钮,然后选择“在线服务”
然后开始实际部署
- 改变服务器名(也可以不改变,主要是为了好认)
- 选择免费的服务器
- 勾选协议
确认部署信息后,提交即可
然后就是在控制台中等待部署状态变为“已启动”
在线调试
等待了10分钟左右,模型已经部署成功了。点击右边的“预测”按钮,进入在线服务页面
在这里上传一个需要“动漫化”的照片,然后点击“预测”。等待了2-3秒后,可以看到右侧出现 base64 形式的返回结果,如下图。
推荐一个站长工具,可以用来将BASE64转为图片:https://tool.chinaz.com/tools/imgtobase/
但是经过测试,该BASE64无法转为图片(应该是有错)
代码调试
要使用代码调用云服务,首先要拿到的就是你的AK/SK
获取AK/SK
下面使用AK和SK的方式调用接口。获取AK和SK的方式为
- 右上角账户名,点击“我的凭证”
- 左侧切换到“访问密钥”选项卡
- 新建访问密钥
- 下载 credentials.csv 密钥文件
- Access Key Id 就是AK;Secret Access Key 就是SK
注意:如果访问密钥泄露,会带来数据泄露风险,且每个访问密钥仅能下载一次,为了帐号安全性,建议您定期更换并妥善保存访问密钥。
获取API公网接口
选项卡切换到“调用指南”,然后复制“API接口公网地址”即可
编写Python脚本
首先从下面链接下载apig sdk
https://obs.cn-north-1.myhuaweicloud.com/apig-sdk/ApiGateway-python-sdk.zip
下载好后解压文件夹,解压后的目录结构如下 (执行main.py时,会自动引用apig_sdk文件夹下的内容)
然后在开始菜单中,打开 Spyder
或 Jupyter Notebook
(本文以 Spyder
为例)
打开 ApiGateway-python-sdk/main.py
文件,将其替换为如下代码
# -*- coding: utf-8 -*-
"""
Created on Sun May 28 14:40:26 2023
@author: Administrator
"""
import requests
from apig_sdk import signer
# Config url, ak, sk and file path.
url = "在线服务调用地址"
ak = "AK值"
sk = "SK值"
file_path = "预测文件的本地路径"
# 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)
注意:其中的4个中文标注的变量,需要替换成你自己的值
执行后,可以看到一大串 BASE64 的图片信息,这并不直观。我们将其显示为图片看看。添加如下代码
import base64
from io import BytesIO
from PIL import Image
import matplotlib.pyplot as plt
result = eval(resp.text)
base64imgs = result["results"]
for i in base64imgs:
imgdata = base64.b64decode(i)
img = Image.open(BytesIO(imgdata))
plt.imshow(img)
plt.show()
执行后发现报错:
Figures are displayed in the Plots pane by default. To make them also appear inline in the console, you need to uncheck “Mute inline plotting” under the options menu of Plots.
打开tools→preferences→ipython console→graphics backend→automatic,设置完成然后重启Spyder
然后再次运行程序,就可以在 Plots
处查看到图片了。新增的Python块会将返回的Base64数据转化为图片并显示出来
下面晒一下转化前后的对比图
- 原图
- 处理后的图片(只会跳出面部的部分裁剪并处理)
从两幅图中可以发现,该服务不单单对图片进行动漫化,还包含人脸识别算法,只提取出图片中关于人脸的部分,然后进行处理,真的是非常智能
停止服务
实验结束后,展开右边的更多按钮。手动停止,并关闭服务,释放资源
总结
用华为云ModelArts的的AI模型,可以让你0人工智能基础,就能部署上线一个很强大的AI模型,而且操作、代码都还很简单,赶紧一起来试试吧
- 点赞
- 收藏
- 关注作者
评论(0)