安全帽检测技能
技能描述
面向智慧园区的安全帽检测技能。本技能使用深度学习算法,实时分析视频流,自动检测园区工人未戴安全帽的行为。
本技能支持根据业务需求划定区域,只检测固定区域内的未戴安全帽的行为,技能返回该区域内安全帽检测的统计信息和坐标信息。
使用时需要提供您的业务RESTful接口和RTSP视频地址,最大支持8路网络摄像头接入,并按照接入的路数进行收费。
基本信息
参数 |
说明 |
---|---|
技能名称 |
安全帽检测 |
技能版本 |
1.0.0 |
适用芯片 |
Ascend 310 |
OS平台 |
Linux |
应用场景 |
智慧园区 |
支持固件版本 |
HiLens Framework 1.0.0及以上,DDK887 |
最大路数 |
最多8路 |
视频流传输协议 |
RTSP |
输入方式 |
外接IPC摄像头 |
输出方式 |
POST |
摄像头部署
摄像头的架设会影响安全帽检测模型的准确率。在实际架设中,尽量保证拍摄画面清晰,光照充足,人形较正,无遮挡。监控视频场景下尽量保证拍摄的画面能拍到更多的人形。
目前安全帽检测模型的训练场景主要针对工地入口。具体为摄像头距离地面三到四米左右,在安全帽检测的区域,人形不会有太严重的遮挡。为了保证检测算法的准确率,需要确保画面图像中安全帽清晰可辩。同时,摄像头画面中场景尽量干净简单、空旷,避免场景复杂造成误检。
摄像头参数基本设置
不同品牌的摄像头都有一些基本的视频设置,例如分辨率、帧率和码率等。
- 分辨率:建议1080P,不低于720P且不高于1080P。
- 帧率:不高于25fps,不低于15fps,建议值20fps。
- 码率:720P建议设为4096Kbps~6144Kbps左右,1080P建议设为6144Kpbs~8192Kbps。
- 视频编码:如果支持H.265,设置为H.265。
- 日夜切换:关闭夜间自动切换红外模式。
- 宽动态:关闭宽动态。普通摄像头的宽动态无法到达专业相机的效果,人的走动速度较快时存在运动模糊,应关闭宽动态设置。
摄像头拍摄方向
摄像头拍摄方向要正向行人正反面,略成俯视角度。保证行人上半身轮廓清晰可见。
架设高度:4m左右
监控距离:2-10m
监控宽度:2-5m
俯视角度:左右偏角小于8°;俯仰角10°-20°
光照要求
光照条件要求需要满足以下几项:
- 行人区域正面光照强度100lux及以上,防止出现过暗或者噪点。
- 行人左右侧光照强度差不超过一倍,防止产生阴阳脸。
如果现场的光线不满足上述要求,则需要通过强光抑制或补光来优化现场的光照条件。强光抑制可以改善“背光”现象,即通过减弱侧面光照来改善光照条件。补光则可以通过增加额外光源的方式改善光照条件,提高图像的采集效果。
周围环境要求
- 镜头前方不要有遮挡的障碍物,避免漏检。
- 不要将摄像头架在房子遮阴的挡板下,会造成光照过暗,人形和安全帽模糊。
运行时配置参数
技能在运行时,需要添加运行时配置。配置完成后,参数会从华为HiLens云侧下发到端侧设备。
- 配置参数说明
技能相关配置参数说明如表2所示。
表2 运行时配置参数说明 名称
是否必选
参数类型
说明
heartbeat_interval
是
Int
技能心跳消息发送间隔。单位为秒,0表示不发送。技能心跳消息判断技能是否离线。
post_url
是
String
技能消息POST请求的URL地址。心跳和技能的输出发送到指定的URL。
multi_camera
是
Array
一个设备上多路视频的技能参数,其技能参数说明请见表3。
表3 “multi_camera”参数说明 名称
是否必选
参数类型
说明
camera_names
是
Array
摄像头名称。摄像头名称与设备的rtsp流配置的名称对应。可配置多个名称,表示多个摄像头采用同样的配置。
send_image
是
Int
是否发送原始图,默认值为0。
0:表示不发送
1:表示发送
image_compression_ratio
是
Int
“jpeg”格式原始图压缩百分比,默认值为90,表示图片压缩比90%,取值范围[1,100]。
use_tracking
是
Int
是否启用跟踪去重。
0:表示不启用
1:表示启用
draw_rectangle
否
Int
是否对技能显示出的不戴安全帽行人画框,默认值为0,即默认不画框。
0:表示不画框
1:表示画框
roi
否
String
检测区域配置。区域的设置由“Polygon”开头,其后依次为区域的坐标(按顺时针排列的x,y坐标)。默认值为“Polygon 0 0 0 0”,表示检测整个画面。
- 示例
HiLens Kit设备支持多路摄像头接入,如果要为不同的摄像头设置不同的技能配置,或者几个摄像头共用同一技能配置,则可在配置列表中给出相应的配置信息,示例如下:
//constructionsite01的两个摄像头pos1和pos2配置不同参数: { "heartbeat_interval": 30, "post_url": "https://abc.company.com/webhook", "multi_camera": [{ "camera_names": ["constructionsite01_pos01"], "send_image": 1, "image_compression_ratio": 90, "use_tracking": 1, "roi": "Polygon 0 0 0 0" }, { "camera_names": ["constructionsite01_pos02"], "send_image": 1, "image_compression_ratio": 80, "use_tracking": 0, "roi": "Polygon 0 0 1920 0 1920 1080 0 1080" }] } //constructionsite02的两个摄像头pos1和pos2配置相同参数: { "heartbeat_interval": 60, "post_url": "https://abc.company.com/standard", "multi_camera": [{ "camera_names": ["constructionsite02_pos01"," constructionsite02_pos02"], "send_image": 1, "image_compression_ratio": 90, "use_tracking": 1, "roi": "Polygon 0 0 0 0" }] }
技能结果上传接口
- 请求消息
推理结果将以HTTPS POST请求方法推送到应用系统server的指定URL地址。
POST {sendUrl}
其中sendUrl在技能运行时配置中设置。
- 请求消息头
技能以json形式返回推理结果,因此消息头“Content-Type”类型为“application/json”。消息头其它部分,用户可根据自身的业务需求设定,如鉴权等。
表4 请求消息头参数说明 名称
描述
是否必选
示例
Content-Type
消息体的类型(格式)
是
application/json
- 公共消息体
HiLens公共消息体包含了技能的公共消息内容,如表5所示。
- 技能心跳消息体
表6 技能心跳消息体参数说明 名称
类型
说明
time
Uint64
心跳时间戳。
- 公共消息体示例
{ "msg_type": "heartbeat", "skill_id": "f5c526eb6c51440c8a0ee5e3cc65f23c", "time": 1527603463 }
- 技能消息体
安全帽检测的json消息体如表7所示:
表7 技能消息体参数说明 名称
类型
说明
camera_name
String
摄像头名称。
image_id
String
摄像头原始图UUID。
time
Uint64
检测到未戴安全帽人头时的时间戳。
bounding_box
Array
未戴安全帽人头在背景图中的位置信息,其参数说明如表8所示。
image
String
原始图BASE64编码结果,如果配置不发送原始图,则为空字符串。
安全帽检测的消息体示例:
{ "msg_type": "no_helmet_alert", "camera_name": "constructsite01_pos02", "skill_id": "f5c526eb6c51440c8a0ee5e3cc65f23c", "image_id": "0DD1BF0A-634B-11E8-8B0B-407D0FAD9218", "time": 1527603463, "bounding_box ": [{ "x": 32, "y": 379, "w": 49, "h": 65 }, { "x": 54, "y": 632, "w": 36, "h": 95 } ], "image": "4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...", }
- 请求消息头
- 响应消息
- 响应消息头
响应消息头可包含如下两部分。
- 一个HTTP状态代码,从2xx成功代码到4xx或5xx错误代码。或者可以返回服务定义的状态码。
- 附加响应头字段,如支持请求的响应所需,如Content-type响应消息头。
详细的公共响应消息头字段如表9所示。
- 响应消息体
响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中“Content-type”对应,传递除响应消息头之外的内容。
- 响应消息头