从 0 到 1 用华为云 ModelArts 部署一个图像分类服务
前言
很多开发者第一次接触华为云时,会卡在"不知道从哪个产品开始"这一步。本文以一个完整的图像分类小项目为例,带你走通华为云 AI 开发的全流程:数据准备 → 模型训练 → 在线部署 → API 调用。全文可直接跟着操作,预计耗时 30 分钟。
适合人群:有 Python 基础、想快速上手华为云 AI 能力的开发者。
一、准备工作
开始前你需要:
一个已完成实名认证的华为云账号(这也是社区里"实名认证"勋章的任务之一);
开通 ModelArts 服务(免费额度足够本文练习);
本地或云端准备一张测试图片。
创建好账号后,进入 ModelArts 控制台 → 全局配置,确认区域选择正确(建议选华北-北京四,产品最全)。
二、准备数据集
我们使用经典的"猫狗分类"作为示例。目录结构建议如下:
TEXT
dataset/
├── train/
│ ├── cat/
│ │ ├── cat_001.jpg
│ │ └── ...
│ └── dog/
│ ├── dog_001.jpg
│ └── ...
└── val/
├── cat/
└── dog/
把数据集上传到 OBS(对象存储服务) 的一个桶里,例如 obs://my-ai-demo/dataset/。
小技巧:OBS 桶名全局唯一,建议加上账号 ID 后缀,避免重名失败。
三、创建训练任务
进入 ModelArts → 自动学习 → 图像分类;
新建项目,选择刚刚的 OBS 数据集路径;
系统会自动帮你标注(也可手动微调);
设置训练参数:
最大训练时长:10 分钟
部署资源:CPU 规格即可(练习够用,省钱)
点击开始训练。
训练过程中可以实时看到准确率曲线。本文示例在 200 张图片上训练后,验证集准确率约为 92%。
四、部署为在线服务
训练完成后点击部署 → 在线服务,关键配置:
配置项 建议值 说明
计算节点 1 练习够用
规格 CPU 2 核 8GB 成本低
自动停止 1 小时后 防止忘记关闭产生费用
部署成功后你会得到一个在线服务 API 地址。
五、调用 API 测试
用 Python 发起请求:
PYTHON
import requests
import base64
# 1. 读取本地图片并 Base64 编码
with open("test.jpg", "rb") as f:
img_base64 = base64.b64encode(f.read()).decode("utf-8")
# 2. 构造请求
url = "https://你的在线服务地址/v1/infers/xxxx"
headers = {
"Content-Type": "application/json",
"X-Auth-Token": "你的Token"
}
data = {"images": [{"data": img_base64}]}
# 3. 发送请求
resp = requests.post(url, json=data, headers=headers, verify=False)
print(resp.json())
返回结果类似:
JSON
{
"predicted_label": "dog",
"scores": [0.97, 0.03]
}
说明模型成功识别出图片是"狗",置信度 97%。
六、踩坑记录
Token 过期:X-Auth-Token 有效期较短,正式项目建议用 AK/SK 签名方式;
OBS 权限:数据集路径报错时,优先检查桶的访问权限和区域是否一致;
费用控制:在线服务按小时计费,用完一定记得停止/删除,否则会产生持续费用;
区域不一致:ModelArts 与 OBS 必须在同一区域,跨区域会调用失败。
七、总结
通过本文,你完成了:
✅ 用 OBS 管理数据集
✅ 用 ModelArts 自动学习训练模型
✅ 部署为在线推理服务
✅ 用 Python 调用 REST API
这套流程同样适用于文本分类、物体检测等场景,只需替换数据集即可。后续可以进一步尝试:自定义算法训练、模型压缩、批量推理等进阶能力。
如果这篇文章对你有帮助,欢迎点赞 + 收藏,也欢迎在评论区交流你在华为云上遇到的坑~
- 点赞
- 收藏
- 关注作者
评论(0)