部署物体检测模型
更新时间:2023-04-12
本教程说明如何将一个物体检测模型通过BIE部署至边缘节点。
操作指南
导入配置项
- 进入配置管理
- 点击导入配置项
- 选择导入文件: amd64:配置项-easyedge-linux-mdp-4fn7k2tve4xyknp1-amd64.json arm64:配置项-easyedge-app-arm64.json
- 导入完毕以后,将增加一个配置项。
- 在内网环境下,可以先下载模型文件,再上传至内网的对象存储,最后修改配置项的下载地址为内网地址。
导入应用
- 进入应用部署
- 点击导入应用
- 选择导入文件: amd64:应用-easyedge-app10amd64.json arm64:应用-easyedge-app-arm64.json
- 导入完毕以后,将增加一个应用。
- 在内网环境下,可以先下载镜像:
registry.baidubce.com/aiot/edgekit_x86:1.0.4
,
Plain Text
1registry.baidubce.com/aiot/edgekit_armv8:1.0.2
,再上传至内网的镜像仓库,最后修改应用的镜像地址为内网地址。
部署应用到边缘节点
在应用部署当中,可以选择将应用部署至哪些边缘节点,部署的逻辑是通过边缘节点的标签进行匹配。例如edge-node这个边缘节点有一个baetyl-node-name: edge-node
这样的KV标签,如下图所示:
那么目标节点界面,点击匹配标签,添加baetyl-node-name: edge-node
作为目标节点标签,如下图所示:
在添加完毕以后,系统自动基于标签匹配出目标节点为edge-node,如下图所示:
验证边缘AI服务运行
打开原模型的label_list.txt文件,我们可以看到此模型可以识别以下种类物体:
Bash
1background
2aeroplane
3bicycle
4bird
5boat
6bottle
7bus
8car
9cat
10chair
11cow
12diningtable
13dog
14horse
15motorbike
16person
17pottedplant
18sheep
19sofa
20train
21tvmonitor
可以看到此模型可以识别人和狗这两种物体,我们可以找一张遛狗的测试图片。
通过浏览器验证
本案例当中的AI推断服务提供了web操作界面,所以可以通过web界面上传上述测试图片。打开浏览器,访问:http://[边缘节点IP地址]:8088/
。如果能够打开界面,表示边缘推断服务正常启动。此时上传测试图片,推断服务将自动给出推断结果,如下图所示,在置信度为80%时,识别出图片当中有3个人,1条狗,置信度可用户自定义修改。
通过API验证
边缘AI应用作为一个容器服务运行在边缘节点,它同时对外提供API访问接口,支持被其他应用调用,并返回物体检测结果。具体API使用参考API文档
下面通过python代码调用接口进行示例说明:
- 拷贝下面的python代码保存至本地,命名为test_ai_model_api.py。
Python
1import requests
2
3with open('./1.jpg', 'rb') as f:
4 img = f.read()
5
6# params is GET params, data is POST Body
7result = requests.post('http://[边缘节点ip]:8088/', params={'threshold': 0.8},data=img).json()
8
9print (result)
- 下载图片 1.jpg,保存至与test_ai_model_api.py同目录下。
- 执行test_ai_model_api.py
Shell
1python test_ai_model_api.py
- 查看接口返回结果为如下JSON,同样标识识别出1个人和3条狗。
JSON
1{
2 "cost_ms":179,
3 "error_code":0,
4 "results":[
5 {
6 "confidence":0.9943918585777283,
7 "index":12,
8 "label":"dog",
9 "location":{
10 "height":397,
11 "left":100,
12 "top":691,
13 "width":383
14 },
15 "name":"dog",
16 "score":0.9943918585777283,
17 "x1":0.14523082971572876,
18 "x2":0.6987910866737366,
19 "y1":0.6263848543167114,
20 "y2":0.9866765737533569
21 },
22 {
23 "confidence":0.9922541379928589,
24 "index":15,
25 "label":"person",
26 "location":{
27 "height":304,
28 "left":547,
29 "top":332,
30 "width":92
31 },
32 "name":"person",
33 "score":0.9922541379928589,
34 "x1":0.7918291687965393,
35 "x2":0.9249030947685242,
36 "y1":0.30082497000694275,
37 "y2":0.5762962102890015
38 },
39 {
40 "confidence":0.9846013784408569,
41 "index":15,
42 "label":"person",
43 "location":{
44 "height":1020,
45 "left":311,
46 "top":63,
47 "width":308
48 },
49 "name":"person",
50 "score":0.9846013784408569,
51 "x1":0.4507014751434326,
52 "x2":0.8969031572341919,
53 "y1":0.05781838297843933,
54 "y2":0.9817966222763062
55 },
56 {
57 "confidence":0.9536634683609009,
58 "index":15,
59 "label":"person",
60 "location":{
61 "height":357,
62 "left":35,
63 "top":327,
64 "width":149
65 },
66 "name":"person",
67 "score":0.9536634683609009,
68 "x1":0.05083557963371277,
69 "x2":0.2662031948566437,
70 "y1":0.2963605523109436,
71 "y2":0.6200013160705566
72 }
73 ]
74}