EdgeBoard人体关键点软硬一体方案说明
1 简介
1.1 人体关键点识别说明
1.2 开发管理平台功能说明
1.3 硬件接口说明
2 使用步骤
2.1 连接设备
2.2 登录管理平台
2.3 查看预置模型
2.4 添加摄像头
2.5 添加任务
3 系统设置
4 HTTP结果回调
5 HTTP模型推理服务接口
简介
EdgeBoard软硬一体方案,是以EdgeBoard边缘AI计算盒为底座,WEB开发管理平台为控制中心,专项适配百度自研算法,并深度兼容AI开发平台EasyDL和开源深度学习平台PaddlePaddle,支持模型在线效果验证,外接显示器实时显示渲染结果,同时,支持HTTP回调和HTTP模型推理服务,可接入USB摄像头和RTSP网络摄像头,硬件接口丰富,支持二次开发。
人体关键点软硬一体方案,预置人体关键点算法,可离线本地化部署,可用于行为分析,检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶、五官、颈部、四肢主要关节部位,支持多人检测、大动作等复杂场景。
人体关键点识别说明
对于输入的一张图片(可正常解码,且长宽比适宜),检测图片中的所有人体,输出每个人体的21个主要关键点,包含头顶、五官、脖颈、四肢等部位,同时输出人体的坐标信息和数量。
21个主要关键点的位置:头顶、左眼、右眼、左耳、右耳、左嘴角、右嘴角、鼻子、脖子、左肩、右肩、左手肘、右手肘、左手腕、右手腕、左髋部、右髋部、左膝、右膝、左脚踝、右脚踝。
支持多人检测、人体位置重叠、遮挡、背面、侧面、中低空俯拍、大动作等复杂场景。
软硬一体方案的算法精度可参考云端接口,人体关键点功能体验: https://ai.baidu.com/tech/body/pose
开发管理平台功能说明
Edgeboard内置可视化开发管理平台,支持web页面进行总览、摄像头管理、模型管理、任务管理、系统设置等操作。
| 功能 | 描述 |
|---|---|
| 总览 | 支持实时查看设备内存、CPU和存储空间的资源剩余情况,以及当前添加的模型、摄像头和任务情况。 |
| 模型管理 | 支持PaddlePaddle模型、Easydl的图像分类和物体检测模型以及其他Edgeboard模型的添加和管理,支持在线效果验证 |
| 摄像头管理 | 支持USB摄像头、RTSP网络摄像头的添加和管理,在线校验视频流地址,支持画面预览 |
| 任务管理 | 支持添加数据采集任务、Paddle模型视频分析、EasyDL模型视频分析和EdgeBoard SDK视频分析等任务,支持画面预览,支持任务的开启和关闭。 |
| 系统设置 | 支持设备信息的显示、系统时间的修改、软件版本升级、以太网设置和Wi-Fi网络设置、恢复出厂设置、重启等功能。 |
| HTTP回调 | 支持将视频流任务或者采集任务结果通过HTTP协议推送到指定地址,方便客户进行二次开发。 |
| HTTP模型推理服务 | 支持调用HTTP服务接口传入图片,EdgeBoard再将分析结果回传至HTTP客户端。 |
硬件接口说明
更多硬件介绍请参考EdgeBoard基础硬件使用说明
使用步骤
以下仅以人体关键点软硬一体方案的常规操作进行演示,更多使用方式请参考EdgeBoard开发管理平台使用说明
人体关键点软硬一体方案,预置了人体检测模型以及人体关键点模型,可以直接添加摄像头和任务,开启AI识别,大体操作流程如下:【连接软硬一体设备】----> 【登录开发管理平台】----> 【查看预置模型】----> 【添加摄像头】----> 【添加任务】----> 【开始预测】
连接设备
将设备通过网线连接电脑(直连电脑或者通过路由器),设备的网络参数为:ip=192.168.1.254,子网掩码=255.255.255.0,网关=192.168.1.1。保证设备和电脑在同一网段,如果是直连电脑可以将电脑设置成固定IP。
电脑端网络配置可参考网络配置
登录管理平台
在浏览器中输入开发管理平台首页地址,即可显示登录页面,登录完成后进入管理页面。
开发管理平台首页地址:http://ip:9876/ 出厂默认:http://192.168.1.254:9876/
开发管理平台账号:admin,初始密码:admin
进入系统
查看预置模型
查看模型管理页面,人体关键点软硬一体设备中,包含人体检测模型和人体关键点模型。
注意:模型管理页面的【效果验证】仅提供单模型的推理效果
添加摄像头
EdgeBoard开发管理平台支持USB摄像头和RTSP摄像头两种类型,用户可根据使用场景进行选择。
添加USB摄像头
先将USB摄像头插到EdgeBoard上再在页面中添加对应的摄像头,此时,点击【选择摄像头】右边框的箭头,下拉框会自动弹出当前设备上已插入的USB摄像头节点,并采集一张当前图片,点击待添加的摄像头,确定。
添加网络摄像头
保证EdgeBoard和网络摄像头的网络互通的状态下,添加网络摄像头,摄像头类型选择网络摄像头,输入视频流地址后,点击右侧的【校验】按钮,如果出现对勾,证明视频流地址(RTSP流地址)填写正确,并能够正常采集到图片。校验成功后点击确定,在管理页面就可以看到已添加的摄像头。
SN码为您的摄像头设备唯一ID(选填)。
添加任务
EdgeBoard开发管理平台支持添加不同功能的任务,例如可以添加数据采集任务,视频分析任务等。以视频任务为例
选择任务类型
选择任务类型选择EdgeBoard算法,关键点检测
任务配置
配置与paddle模型类似,带“*”为必填项,确定需要部署的模型和对应的摄像头,以及模型推理的帧率,其余按需填写即可。
画面框定
画面框定是指在检测区域中框定一个闭合区域,后续只识别框定区域内的物体。在人体关键点软硬一体设备中,画面框定功能可选。不需要画面框定时,直接确认即可。
注:画面框定最多可以绘制10个分析区域
启动任务
画面预览
外接显示器
EdgeBoard提供视频输出接口miniDP,可以外接显示器(如果是HDMI接口的显示器,需要使用主动式miniDP转HDMI转换线,接口输出参考链接),在上电状态下插入显示器时,首次点击【外接显示器】的开关按钮后,需要重启设备。
一般情况下,显示器显示的视频帧率为创建任务时设置的帧率,当设置的帧率大于设备实际能够处理的帧率时,设备会以最大处理速率显示,渲染画面和系统中【画面预览】相同。
更多任务管理设置请参考EdgeBoard开发管理平台使用说明
系统设置
系统设置请参考EdgeBoard开发管理平台使用说明-系统设置
HTTP结果回调
说明
当用户需要获取EdgeBoard的分析结果时,EdgeBoard开发管理平台支持将视频流任务结果通过HTTP协议推送到指定地址,方便客户进行二次开发。
HTTP回调方式:EdgeBoard ----- post -----> 用户服务器
EdgeBoard <------ response---- 用户服务器
HTTP回调接口:http://ip:port/xxxxxxx 。该接口由用户定义,不做固定格式要求。
回调功能设置
添加任务时,可设置回调功能
回调状态:勾选【启用】会开启回调功能;勾选【禁用】会关掉回调功能;
回调地址:用户实际回调服务地址(图中地址仅作展示),开启回调后,设备会将结果数据发送至该地址;
回调条件:回调结果支持基于模型标签(label)进行条件筛选,增加回调条件后,服务器就会得到筛选后的数据;
回调图片:回调图片仅指回调参数中“background”的返回值,【原图】指返回的background为不带渲染的base64图片,【原图+渲染】指返回的background为不带渲染的base64图片,【无图片】则回调结果中不返回background参数。由于回调中返回图片会占用大量的资源和带宽,实际使用时推荐选择【无图片】选项。
人体关键点数据返回格式
1//人体关键点
2{
3 "background":"",
4 "camera_id":3,
5 "camera_name":"10",
6 "camera_sn":"",
7 "fence_data":[
8 {
9 "coordinates":[
10 [
11 0.33603707995365,
12 0.0323805845242693
13 ],
14 [
15 0.32792584009269987,
16 0.9696794129007338
17 ],
18 [
19 0.9826187717265353,
20 0.9882193897257627
21 ],
22 [
23 0.9687137891077636,
24 0.013840607699240337
25 ]
26 ],
27 "id":5,
28 "name":"area"
29 }
30 ],
31 "height":1080,
32 "models_id":[
33 5
34 ],
35 "result_data":[
36 {
37 "extended":{
38 "left_ankle":{
39 "lable":"left_ankle",
40 "score":8.4041109085083,
41 "x":1568.7294921875,
42 "y":989.484375
43 },
44 "left_ear":{
45 "lable":"left_ear",
46 "score":52.639060974121094,
47 "x":1848.4658203125,
48 "y":859.4892578125
49 },
50 "left_elbow":{
51 "lable":"left_elbow",
52 "score":50.125,
53 "x":1627.9677734375,
54 "y":810.1240234375
55 },
56 "left_eye":{
57 "lable":"left_eye",
58 "score":23.13203239440918,
59 "x":1894.5400390625,
60 "y":866.0712890625
61 },
62 "left_hip":{
63 "lable":"left_hip",
64 "score":131.25938415527344,
65 "x":1884.6669921875,
66 "y":1027.3310546875
67 },
68 "left_knee":{
69 "lable":"left_knee",
70 "score":115.63125610351562,
71 "x":1700.3701171875,
72 "y":1037.2041015625
73 },
74 "left_mouth_corner":{
75 "lable":"left_mouth_corner",
76 "score":15.035351753234863,
77 "x":1894.5400390625,
78 "y":951.6376953125
79 },
80 "left_shoulder":{
81 "lable":"left_shoulder",
82 "score":17.87299919128418,
83 "x":1674.0419921875,
84 "y":708.1025390625
85 },
86 "left_wrist":{
87 "lable":"left_wrist",
88 "score":11.080322265625,
89 "x":1670.7509765625,
90 "y":918.7275390625
91 },
92 "neck":{
93 "lable":"neck",
94 "score":38.607810974121094,
95 "x":1910.9951171875,
96 "y":869.3623046875
97 },
98 "nose":{
99 "lable":"nose",
100 "score":27.00547218322754,
101 "x":1851.7568359375,
102 "y":898.9814453125
103 },
104 "right_ankle":{
105 "lable":"right_ankle",
106 "score":15.68470573425293,
107 "x":1920,
108 "y":777.2138671875
109 },
110 "right_ear":{
111 "lable":"right_ear",
112 "score":55.51250076293945,
113 "x":1845.1748046875,
114 "y":872.6533203125
115 },
116 "right_elbow":{
117 "lable":"right_elbow",
118 "score":26.020702362060547,
119 "x":1841.8837890625,
120 "y":810.1240234375
121 },
122 "right_eye":{
123 "lable":"right_eye",
124 "score":23.848634719848633,
125 "x":1910.9951171875,
126 "y":997.7119140625
127 },
128 "right_hip":{
129 "lable":"right_hip",
130 "score":109.59062194824219,
131 "x":1851.7568359375,
132 "y":1010.8759765625
133 },
134 "right_knee":{
135 "lable":"right_knee",
136 "score":59.338279724121094,
137 "x":1713.5341796875,
138 "y":1040.4951171875
139 },
140 "right_mouth_corner":{
141 "lable":"right_mouth_corner",
142 "score":15.80195426940918,
143 "x":1858.3388671875,
144 "y":945.0556640625
145 },
146 "right_shoulder":{
147 "lable":"right_shoulder",
148 "score":43.55937576293945,
149 "x":1772.7724609375,
150 "y":708.1025390625
151 },
152 "right_wrist":{
153 "lable":"right_wrist",
154 "score":38.95429992675781,
155 "x":1855.0478515625,
156 "y":875.9443359375
157 },
158 "top_head":{
159 "lable":"top_head",
160 "score":9.510705947875977,
161 "x":1904.4130859375,
162 "y":800.2509765625
163 }
164 },
165 "image_data":"",
166 "score":0.3517540991306305,
167 "x0":0.8561185598373413,
168 "x1":0.9994791746139526,
169 "y0":0.6872234344482422,
170 "y1":0.9990741014480591
171 },
172 {
173 "extended":{
174 "left_ankle":{
175 "lable":"left_ankle",
176 "score":8.658203125,
177 "x":1686.310546875,
178 "y":993.197265625
179 },
180 "left_ear":{
181 "lable":"left_ear",
182 "score":265.3000183105469,
183 "x":1681.955078125,
184 "y":736.224609375
185 },
186 "left_elbow":{
187 "lable":"left_elbow",
188 "score":211.63125610351562,
189 "x":1472.892578125,
190 "y":967.064453125
191 },
192 "left_eye":{
193 "lable":"left_eye",
194 "score":73.33906555175781,
195 "x":1668.888671875,
196 "y":718.802734375
197 },
198 "left_hip":{
199 "lable":"left_hip",
200 "score":43.66719055175781,
201 "x":1721.154296875,
202 "y":919.154296875
203 },
204 "left_knee":{
205 "lable":"left_knee",
206 "score":89.99687957763672,
207 "x":1468.537109375,
208 "y":967.064453125
209 },
210 "left_mouth_corner":{
211 "lable":"left_mouth_corner",
212 "score":38.50410461425781,
213 "x":1638.400390625,
214 "y":779.779296875
215 },
216 "left_shoulder":{
217 "lable":"left_shoulder",
218 "score":118.64688110351562,
219 "x":1655.822265625,
220 "y":853.822265625
221 },
222 "left_wrist":{
223 "lable":"left_wrist",
224 "score":34.13984680175781,
225 "x":1594.845703125,
226 "y":949.642578125
227 },
228 "neck":{
229 "lable":"neck",
230 "score":151.09376525878906,
231 "x":1747.287109375,
232 "y":818.978515625
233 },
234 "nose":{
235 "lable":"nose",
236 "score":64.234375,
237 "x":1668.888671875,
238 "y":736.224609375
239 },
240 "right_ankle":{
241 "lable":"right_ankle",
242 "score":10.692383766174316,
243 "x":1490.314453125,
244 "y":940.931640625
245 },
246 "right_ear":{
247 "lable":"right_ear",
248 "score":197.01876831054688,
249 "x":1764.708984375,
250 "y":723.158203125
251 },
252 "right_elbow":{
253 "lable":"right_elbow",
254 "score":60.609375,
255 "x":1843.107421875,
256 "y":797.201171875
257 },
258 "right_eye":{
259 "lable":"right_eye",
260 "score":57.22187423706055,
261 "x":1668.888671875,
262 "y":731.869140625
263 },
264 "right_hip":{
265 "lable":"right_hip",
266 "score":30.068750381469727,
267 "x":1577.423828125,
268 "y":847.2890625
269 },
270 "right_knee":{
271 "lable":"right_knee",
272 "score":32.05547332763672,
273 "x":1477.248046875,
274 "y":967.064453125
275 },
276 "right_mouth_corner":{
277 "lable":"right_mouth_corner",
278 "score":44.23788833618164,
279 "x":1638.400390625,
280 "y":779.779296875
281 },
282 "right_shoulder":{
283 "lable":"right_shoulder",
284 "score":26.766407012939453,
285 "x":1843.107421875,
286 "y":797.201171875
287 },
288 "right_wrist":{
289 "lable":"right_wrist",
290 "score":15.72343635559082,
291 "x":1725.509765625,
292 "y":919.154296875
293 },
294 "top_head":{
295 "lable":"top_head",
296 "score":258.20001220703125,
297 "x":1721.154296875,
298 "y":640.404296875
299 }
300 },
301 "image_data":"",
302 "score":0.20987997949123383,
303 "x0":0.7509458661079407,
304 "x1":0.9768182635307312,
305 "y0":0.5868204236030579,
306 "y1":0.9990741014480591
307 }
308 ],
309 "task_id":5,
310 "task_name":"关键点",
311 "task_type":"eb::humanpose",
312 "time":1652951298068,
313 "width":1920
314}
HTTP模型推理服务接口
人体关键点的模型推理服务接口与开发管理平台接口使用方法相同,推理结果与可视化页面模型管理中的效果验证结果相同。
HTTP模型推理服务接口使用请参考EdgeBoard开发管理平台使用说明-HTTP模型推理服务接口
