PAI-AutoLearning 图像分类使用教程
概述
PAI AutoLearning(简称PAI AL)自动学习支持在线标注、自动模型训练、超参优化以及模型评估。在平台上只需准备少量标注数据,设置训练时长即可得到深度优化的模型。同时自动学习PAI AL平台与EAS模型在线服务打通,一键完成模型部署。下面通过一个番茄(tomato)和黄瓜(cucumber)的图片分类示例来演示整个流程的具体操作步骤。
1、数据准备
1.1 数据集说明
数据集下载地址
数据集说明: 10张番茄图片 + 10张黄瓜图片
1.2 数据集上传到oss
注意oss的区域需要和您创建视觉模型训练示例的区域一致,这里统一选择:华东2(上海区域)
2、模型训练
2.1 创建实例
2.2 新建数据集
2.3 标注数据
2.3 训练任务
2.4 训练详情(整个训练任务大概需要20分钟)
3、EAS模型部署
4、控制台快速校验测试
4.1 请求Body示例
{
"dataArray":[
{
"name":"image",
"type":"stream",
"body":"base64数据"
}
]
}
4.2 本地图片base64编码处理
{
"dataArray":[
{
"name":"image",
"type":"stream",
"body":"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"
}
]
}
4.3 在线调试
5、SDK调用部署模型
5.1 Java SDK调用
pom.xml
<dependencies>
<dependency>
<groupId>com.aliyun.openservices.eas</groupId>
<artifactId>eas-sdk</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
Code Sample
import com.aliyun.openservices.eas.predict.http.PredictClient;
import com.aliyun.openservices.eas.predict.http.HttpConfig;
import sun.misc.BASE64Encoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Test_OCR {
public static void main(String[] args) throws Exception{
//启动并初始化客户端
PredictClient client = new PredictClient(new HttpConfig());
client.setToken("YWY4YmYxNWUxNjA5NWE0NzczZTYyYjRlNTgzMmZl****************");
// Token信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—Token”中获取
client.setEndpoint("18482178********.cn-shanghai.pai-eas.aliyuncs.com");
//http://18482178********.cn-shanghai.pai-eas.aliyuncs.com/api/predict/ocr****
// 注意上面endpoint信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分
client.setModelName("/ocr****");
// 填入服务名称
//上传本地图片
String pic_path = "C:\\Users\\Administrator\\Downloads\\u=2765021670,4091973407&fm=26&gp=0.jpg";//本地图片的路径
File picBase64 = new File(pic_path);
String pic = encodeImageToBase64(picBase64);
//提出base64编码的换行符问题
String data = pic.replaceAll("[\\s*\t\n\r]", "");
//输入字符串定义
String request = "{\n" +
" \"dataArray\":[\n" +
" {\n" +
" \"name\":\"image\",\n" +
" \"type\":\"stream\",\n" +
" \"body\":\""+data+"\"\n" +
" }\n" +
" ]\n" +
"}";
// 输入请求请根据模型进行构造,此处仅以字符串为输入输出的程序示例
System.out.println(request);
//通过eas返回字符串
try {
String response = client.predict(request);
System.out.println(response);
} catch(Exception e) {
e.printStackTrace();
}
//关闭客户端
client.shutdown();
return;
}
/**
* 将本地图片编码为base64
*
* @param file
* @return
* @throws Exception
*/
public static String encodeImageToBase64(File file) throws Exception {
//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream in = null;
byte[] data = null;
//读取图片字节数组
try {
in = new FileInputStream(file);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
throw new Exception("图片上传失败,请联系客服!");
}
//对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
String base64 = encoder.encode(data);
return base64;//返回Base64编码过的字节数组字符串
}
}
The Result
{"success":true,"result":{"output":[{"type":"cv_common","body":[{"label":"tomato","conf":0.99999988079071045},{"label":"cucumber","conf":8.9488075616372953e-08}]}],"meta":{"height":651,"width":1024}}}
5.2 Python SDK调用
eas-prediction 包安装
Code Sample
#!/usr/bin/env python
from eas_prediction import PredictClient
from eas_prediction import StringRequest
import base64
# 读取本地图片
filenamePath = "C:\\Users\\Administrator\\Desktop\\番茄3.jpg" # 测试图片存放在项目目录下
base64_data = ''
with open(filenamePath, "rb") as f:
base64_data = base64.b64encode(f.read())
if __name__ == '__main__':
# 完整的接口地址:http://18482178********.cn-shanghai.pai-eas.aliyuncs.com/api/predict/tomatoandcu******
client = PredictClient('18482178********.cn-shanghai.pai-eas.aliyuncs.com', 'tomatoandcu******')
# 注意上面的client = PredictClient()内填入的信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分
client.set_token('ZjM4YzQwOWZhOTVlMjdlZTVhYzdiOGI1MjdmYTBj****************')
# Token信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—Token”中获取
client.init()
requestBody = '{"dataArray":[{"name":"image","type":"stream","body":"'+base64_data.decode()+'"}]}'
request = StringRequest(requestBody)
# 输入请求请根据模型进行构造,此处仅以字符串为输入输出的程序示例
for x in range(0, 1):
resp = client.predict(request)
print(resp)
The Result
b'{"success":true,"result":{"output":[{"type":"cv_common","body":[{"label":"tomato","conf":0.99999988079071045},{"label":"cucumber","conf":8.9488075616372953e-08}]}],"meta":{"height":651,"width":1024}}}'
参考链接
图像分类
公网地址调用
阿里云人脸识别Python3调用示例参考
阿里云人脸识别Java调用示例参考
PAI-AutoLearning 图像分类使用教程的更多相关文章
- 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
背景 我们在之前的文章中介绍过如何通过PAI内置的TensorFlow框架实验基于Cifar10的图像分类,文章链接:https://yq.aliyun.com/articles/72841.使用Te ...
- 深度学习与CV教程(2) | 图像分类与机器学习基础
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 【教程】5分钟在PAI算法市场发布自定义算法
概述 在人工智能领域存在这样的现象,很多用户有人工智能的需求,但是没有相关的技术能力.另外有一些人工智能专家空有一身武艺,但是找不到需求方.这意味着在需求和技术之间需要一种连接作为纽带. 今天PAI正 ...
- (转!)利用Keras实现图像分类与颜色分类
2018-07-19 全部谷歌渣翻加略微修改 大家将就的看哈 建议大佬们还是看看原文 点击收获原文 其中用到的示例文件 multi-output-classification 大家可以点击 下载 . ...
- 一份快速完整的Tensorflow模型保存和恢复教程(译)(转载)
该文章转自https://blog.csdn.net/sinat_34474705/article/details/78995196 我在进行图像识别使用ckpt文件预测的时候,这个文章给我提供了极大 ...
- 皮卡丘检测器-CNN目标检测入门教程
目标检测通俗的来说是为了找到图像或者视频里的所有目标物体.在下面这张图中,两狗一猫的位置,包括它们所属的类(狗/猫),需要被正确的检测到. 所以和图像分类不同的地方在于,目标检测需要找到尽量多的目标物 ...
- caffe 教程
Caffe是一个清晰而高效的深度学习框架,本文详细介绍了caffe的优势.架构,网络定义.各层定义,Caffe的安装与配置,解读了Caffe实现的图像分类模型AlexNet,并演示了CIFAR-10在 ...
- Caffe 深度学习框架上手教程
Caffe 深度学习框架上手教程 blink 15年1月 Caffe (CNN, deep learning) 介绍 Caffe -----------Convolution Architec ...
- 库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)
项目地址:https://github.com/bharathgs/Awesome-pytorch-list 列表结构: NLP 与语音处理 计算机视觉 概率/生成库 其他库 教程与示例 论文实现 P ...
随机推荐
- ORM多表增删改查
一 创建多表 在models.py里创建4张表:Author(作者).AuthorDetail(作者详细信息).Publish(出版社).Book(书) 四张表关系为: (1)首先创建一对一关系.On ...
- DP+容斥 BZOJ1042
1042: [HAOI2008]硬币购物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2558 Solved: 1539[Submit][Stat ...
- HDU4315 Climbing the Hill
题目链接:https://cn.vjudge.net/problem/HDU-4315 知识点: 博弈论 题目大意: \(Alice\) 和 \(Bob\) 轮流指挥 \(N\) 个人爬山,这 \(N ...
- Fundamental ES6 Part-I
Exercise-01 with Solution Write a JavaScript program to compare two objects to determine if the firs ...
- poi 针对word模板内容替换
最近多了一个需求,需要对word模板内容进行替换,一开始用的是word03版的,替换起来比较简单,主要是range对像替换非常方便,而且可以保留替换前的字体样式. InputStream is = n ...
- MyBatis通过注解方式批量添加、修改、删除
唯能极于情,故能极于剑 注: 本文转载于:CodeCow · 程序牛 的个人博客:http://www.codecow.cn/ 一.数据库实体DO public class User implemen ...
- [Objective-C] 006_Protocol(协议)
学过java的同学都知道Interface(接口),那么在Objective-C中有没有接口呢?其实 Objective-C中用Protocol(协议)来实现的,在Objective-C具体怎么用,我 ...
- 【Java8新特性】关于并行流与串行流,你必须掌握这些!!
写在前面 提到Java8,我们不得不说的就是Lambda表达式和Stream API.而在Java8中,对于并行流和串行流同样做了大量的优化.对于并行流和串行流的知识,也是在面试过程中,经常被问到的知 ...
- 一文让你快速上手 Mockito 单元测试框架
前言 在计算机编程中,单元测试是一种软件测试方法,通过该方法可以测试源代码的各个单元功能是否适合使用.为代码编写单元测试有很多好处,包括可以及早的发现代码错误,促进更改,简化集成,方便代码重构以及许多 ...
- STM32读取匿名光流数据——与Guidance的光流和超声波做对比测试
使用两个串口同时读取匿名光流和Guidance数据:用以比较两个光流的效果 Github链接:https://github.com/W-yt/YuTian_Pro/tree/master/Guidan ...