## 百度EasyDL图像分类的使用
1. 创建模型
浏览器打开
https://ai.baidu.com/easydl/image_classification
点击开始训练,然后点击创建模型,选择公司或个人,填写对应资料,如下图:
点击下一步,可以看到模型已经创建成功
2.创建数据集
点击我的数据集——>创建数据集
输入数据集名称,然后上传压缩包,图片和压缩包需要遵守右边的规定。
然后点击上传压缩包——>保存
然后等待数据集处理完成,这个时间非常短。
可以看到上传了54张图
3.训练模型
点击训练模型——>选择刚才创建好的模型——>勾选云服务
这里根据自己的需求选择算法和训练方式,对应的算法和训练方式后面会有详细的说明。
调参功能需要先申请开通权限才能使用。
还可以勾选离线服务,可以在无网络的情况下使用模型
然后点击添加训练数据,选择训练集,添加标签。
可以看到底部已经显示:已经选择1个数据集的2个分类。这里还可以从其他数据中添加标签。
添加完成后点击取消,回到之前的页面,如果有需要,可以添加识别结果为其他的分类,当检测到的结果不在分类标签中,都会归为【其他】分类。从之后的实测检验情况来看,建议最好不要勾选。
然后点击开始训练,这样就开始训练了。
4.校验
等待训练结束后,如下图所示:
点击校验——>启动模型校验服务
等待一会,进入到如下界面:
点击添加图片,然后选择校验图片,可以看到下图:
分类结果不正确的情况下,点击纠正识别结果,把图片放到对应的分类和数据集中,然后提交。
5.上线
当模型经过自测检验,能达到预期的识别率的时候,可以点击申请上线的的按钮。
填写服务名称与接口地址,然后点击提交申请。
可以看到状态为审核中,等待审核通过。
期间可以在 我的模型全部版本中进行查看
可以看到申请状态为审核成功
点击服务详情,再点击立即使用
进入到如下页面
点击创建应用,然后填入名称和描述,如下图:
点击立即创建,创建成功后再点击返回应用列表,回到如下界面:
可以看到API Key和Secret Key
6.获取access_token
使用get请求,通过下面的链接可以拿到access_token
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【API Key】&client_secret=【Secret Key】
- 1
返回结果:
{
"refresh_token": "25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074",
"expires_in": 2592000,
"scope": "public wise_adapt",
"session_key": "9mzdDZXu3dENdFZQurfg0Vz8slgSgvvOAUebNFzyzcpQ5EnbxbF+hfG9DQkpUVQdh4p6HbQcAiz5RmuBAja1JJGgIdJI",
"access_token": "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074",
"session_secret": "dfac94a3489fe9fca7c3221cbf7525ff"
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
access_token: 要获取的Access Token
expires_in: Access Token的有效期(秒为单位,一般为1个月)
7.进行图像分类
import requests
import time
import base64
access_token = “24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074”
request_url = “https://aip.baidubce.com/rpc/2.0/ai_custom/v1/classification/tools?access_token={0}”.format(access_token)
with open(‘test_dao.jpg’, ‘rb’) as f:
image_base64 = base64.b64encode(f.read())
image_base64_data = image_base64.decode()
data = {
“image”:image_base64_data,
“top_num”:“5”
}
start = time.time()
result = requests.post(request_url, json=data).text
end = time.time()
print(‘耗时====’,end - start)
print(result)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
输出结果如下:
耗时==== 2.406568765640259
{"log_id":8743601095974003063,"results":[{"name":"[default]","score":0.8629010319709778},{"name":"knife","score":0.12168608605861664},{"name":"screwdriver","score":0.015412857756018639}]}
- 1
- 2
name是图像分类名称
score是可信度