华为云用户手册

  • 使用场景 当您注册的设备超过1台时,在该设备上安装您自行开发的基础技能类型技能,包括在控制台开发的技能、使用可训练技能模板开发的技能,需要购买HiLens端边云协同平台服务,在设备管理页面对指定设备进行权限激活。 安装来自技能市场的技能,其安装权限不受限制,无需购买HiLens端边云协同平台服务,也无需激活权限。 首台注册的设备,其技能安装权限不受限制,无需购买HiLens端边云协同平台服务,也无需激活权限。
  • 运行时配置参数 技能在运行时,需要添加运行时配置。配置完成后,参数会从华为HiLens云侧下发到端侧设备。 配置参数说明 技能相关配置参数说明如表3所示。 表3 运行时配置参数说明 名称 是否必选 参数类型 说明 logLevel 是 String 日志级别,默认为“INFO”;如果设置较低级别,如“DEBUG”,可在日志中打印更多信息。 keep_running 是 Int 当技能崩溃是否强制自动拉起技能并持续运行,HiLens Framework 1.1.0版本以上才会生效,升级操作请见升级HiLens_Device_Agent固件版本。 multi_camera 是 List 一个设备上多路视频的技能参数,详情请参见表4。 表4 视频参数说明 名称 是否必选 参数类型 说明 camera_names 是 List 运行技能的IP摄像头名称,需要事先在摄像头管理中配置。可配置多个名称,表示多个摄像头采用同样的技能配置。 sendCarImgFlag 否 Int 是否发送检测到的汽车图,默认值为“0”。 “0”:表示不发送 “1”:表示发送 roi 否 String 检测区域配置。区域的设置由“Polygon”开头,其后依次为区域的坐标(按顺时针排列的x,y坐标)。默认值为“Polygon 0 0 0 0”,表示检测整个画面。 sendUrl 是 String 发送技能消息POST请求的URL地址。 示例 HiLens Kit设备支持多路摄像头接入,如果要为不同的摄像头设置不同的技能配置,或者几个摄像头共用同一技能配置,则可在配置列表中给出相应的配置信息,示例如下: //Store001的两个摄像头pos1和pos2配置不同参数: { "logLevel": "INFO", "keep_running": 1, "multi_camera": [{ "camera_names": ["store001_pos1"], "sendCarImgFlag": 0, "roi": "Polygon 0 0 0 0", "sendUrl": "https://abc.company.com/car" }, { "camera_names": ["store001_pos2"], "sendCarImgFlag": 1, "roi": "Polygon 0 0 0 0", "sendUrl": "https://abc.company.com/car" }] } //Store002的两个摄像头pos1和pos2配置相同参数: { "logLevel": "INFO", "keep_running": 1, "multi_camera": [{ "camera_names": ["store002_pos1","store002_pos2"], "sendCarImgFlag": 0, "roi": "Polygon 0 0 0 0", "sendUrl": "https://abc.company.com/car" }] }
  • 摄像头部署 摄像头的架设会影响车型车标模型的准确率。在实际架设中,尽量保证拍摄画面清晰,光照充足,汽车角度较正,无遮挡,比如前边的车容易挡住后边的车。 摄像头参数基本设置 不同品牌的摄像头都有一些基本的视频设置,例如分辨率、帧率和码率等,参数要求如表2所示。 表2 摄像头参数设置要求 参数 要求 分辨率 不低于720P,不高于4K(3840*2160),建议1080P。 帧率 不高于25fps,不低于15fps,建议值20fps。 码率 720P建议设为4096Kbps~6144Kbps左右,1080P建议设为6144Kpbs~8192Kbps,更高分辨率可设置更高码率。 视频编码 如果支持H.265,设置为H.265。 日夜切换 关闭夜间自动切换红外模式。 宽动态 关闭宽动态。普通摄像头的宽动态无法到达专业相机的效果,运动速度较快时存在运动模糊,应关闭宽动态设置。 摄像头架设要求 镜头前方不要有遮挡的障碍物,容易挡住汽车,造成漏检。 不要将摄像头架在房子遮阴的挡板下,会造成光照过暗。 室外安装摄像头,需要注意雨雪的影响,避免在露天下布置,雨水或者雪将摄像头的镜头盖住,造成拍摄画面模糊不清。 摄像头俯视角度尽量保持在15°左右。
  • 背景信息 在华为HiLens控制台开发技能时,会占用OBS资源,需要收取一定费用,收费规则请参见对象存储服务 OBS。 算法模型必须是.om格式,且满足华为HiLens的要求,详细可参考开发算法模型。 逻辑代码的存储方式有两种:“在线编辑代码”和“从OBS上传代码”。 如果您的代码逻辑较简单,建议直接在线编辑代码。 如果您的代码结构比较复杂,推荐用本地IDE开发完成后,使用OBS上传代码zip或tar.gz包的方式,上传操作可参见OBS快速入门。上传到OBS需要收取一定费用,收费规则请参见对象存储服务 OBS。 上传文件时,要求此OBS桶与您使用的华为HiLens处于同一区域。 若您从OBS上传代码,需要将所有代码文件压缩后上传,上传的文件必须为“.zip”或“tar.gz”格式,且入口文件必须在一级目录。如下示例所示,入口代码(“main.py”)在一级目录,其它的代码按需求自行设计,您可将模型与代码一起打包上传。 入口代码所在文件(如上面的main.py)通过参数【代码执行文件】进行配置,后面会有说明。 代码目录示例如下所示: skill/ |---main.py #入口文件,名称与新建技能的“代码配置”参数一致 |---depends/ #可选,用于存放模型文件 |---workspace/ #工作空间,用于存放技能生成的数据 |---data/ #用于存放运行时配置
  • 4. 运行时配置(可选) 图4 运行时配置-22 部分技能在运行的时候需要用户配置参数,比如人脸判断类的技能需要用户上传人脸库等。运行时配置就像是一个“钩子”,开发者把“钩子”放出去,用户运行技能的时候设置了这些配置项,HiLens就会帮开发者把“钩子”收回来,这时候在代码里面开发者就可以使用这些用户的设置。您可以在界面中单击添加配置标签,参考表3填写您的配置。 您还可以单击“预览JSON格式”查看“钩子”的格式。开发者通过HiLens Framework提供的get_skill_config接口获取技能配置的JSON格式,读取里面字段的值来使用用户的配置。 运行时配置JSON格式如下所示: { //全局配置 "Language": "enum", //视频分路配置 "multi_camera": [ //该字段key值multi_camera固定,值表示摄像头分路配置 { "camera_names": [ //该字段key值camera_names固定,值表示该分组配置里包含了哪些摄像头 "cameraX", "cameraY" ], "FaceLib": { //配置名 "from": "file source", //文件类型值,表示文件来自哪个服务。比如OBS "path": "file path" //文件类型值,表示文件的路径 } } ], } 表3 运行时配置的参数说明 字段名称 说明 配置名 配置的名称,逻辑代码里面可用该字段获取该配置的值。运行时配置指技能在运行的时候,由用户配置的内容。比如人脸判断技能需要用户上传人脸库等。需要说明的是,整个运行时配置是可选的,但如果添加了一条配置,那么“配置名”、“配置说明”是必填项。 值类型 表示该配置项的值是什么类型的数据。 数值类型(int、float)、枚举类型、字符串和文件类型。 值约束 表示该配置可以设置的范围。跟值类型有关。 数值类型:用开闭区间的表示方法。如[1,100)表示大于等于1小于100。 字符串和文件:该项无需输入。 枚举:集合的表示方式,如{a,b}。 配置说明 说明该配置的作用,以及配置方法。该字段非常重要,用户会根据该字段的说明来配置,所以如果有运行时配置,开发者一定要在这里解释清楚。 配置对象 HiLens Kit可以连接多个(个数不大于设备上所安装技能的支持通道数之和)摄像头,所以可以开发支持多路视屏的技能。 选择“视频”,则表示该配置是可以针对设备上每个摄像头视频进行配置的,比如摄像头1和摄像头2采用不同的人脸库。 选择“全局”,则表示设备上所有摄像头都用同一个配置值。
  • 升级风险 升级前请仔细阅读以下风险,谨慎升级。 HiLens Kit处于注册使用状态时,升级HiLens Kit系统固件版本前,请先联系接口人评估升级操作对业务连续性的风险。 升级HiLens Kit系统固件版本会重装整个系统目录,将导致系统目录下安装的软件会丢失。可采用如下方法确定系统目录的位置,用df -h命令可查看当前分区信息,“/dev/mmcblk0p2”对应根目录即是系统目录。此目录为软件默认安装目录,升级时该目录下安装的软件会丢失。其他非系统目录中的文件在升级过程中不受影响,如:“/dev/mmcblk0p*”对应的目录。 攻略:为了后面系统升级不受系统目录的影响,对于支持重定向安装的软件包,可以通过重定向安装到HiLens Kit设备系统“/opt”目录,规避以后系统升级,文件丢失问题。例如yum重定向安装软件包“XXX”,执行命令yum --installroot=/opt install xxx。对于不支持重定向安装的软件包,如yum安装、ROS安装涉及的rpm包,只能部署在系统目录,升级后会丢失。 升级HiLens Kit系统固件版本后可能会导致部分原有技能无法运行,请谨慎升级。
  • 升级优势 支持智能边缘系统注册设备,注册流程请参见智能边缘系统注册设备。 支持端侧通过admin登录最长1个小时不掉线。 升级后,在admin用户模式下,通过命令timeout设置超时时间,最长1小时,例如设置超时时间为1小时,则执行命令timeout 3600。 首次登录智能边缘系统必须修改默认用户名、密码,防止使用默认用户名、密码带来的安全问题。 增加硬件设备和资源监测,当硬件异常或资源使用超过告警线,会上报告警提示您。 对第三方组件进行相关的安全升级。
  • 后续操作 如果升级前HiLens_Device_Agent固件版本高于1.0.7,升级HiLens Kit系统固件版本后升级一次HiLens_Device_Agent固件,详细操作请参考升级HiLens_Device_Agent固件版本(如果HiLens_Device_Agent固件已经是最新版本,需要重新升级一次最新版本的HiLens_Device_Agent固件)。 升级HiLens Kit系统固件版本和HiLens_Device_Agent固件版本后,注册设备需要同步时区和时间,详情请参见同步时区和时间。
  • 技能结果上传接口 请求消息 推理结果将以HTTPS POST请求方法推送到应用系统server的指定URL地址。 POST {sendUrl} 其中sendUrl在技能运行时配置中设置。 请求消息头 技能以json形式返回推理结果,因此消息头“Content-Type”类型为“application/json”。消息头其它部分,用户可根据自身的业务需求设定,如鉴权等。 表4 请求消息头参数说明 名称 描述 是否必选 示例 Content-Type 消息体的类型(格式) 是 application/json 公共消息体 HiLens公共消息体包含了技能的公共消息内容,如表5所示。 表5 公共消息体参数说明 名称 类型 说明 msg_type Enum 消息类型,包括“no_helmet_alert”和“heatbeat”两种。 skill_id String 技能ID。 技能心跳消息体 技能心跳的json消息体包含一个时间戳信息: 表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编码结果,如果配置不发送原始图,则为空字符串。 表8 “bounding_box”参数说明 字段 类型 说明 x Int 人头图左上角顶点x坐标值。 y Int 人头图左上角顶点y坐标值。 h Int 人头图高。 w Int 人头图宽。 安全帽检测的消息体示例: { "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所示。 表9 公共响应消息头参数说明 名称 描述 示例 Date HTTP协议标准报头。表示消息发送的时间,时间的描述格式由rfc822定义。 Mon, 12 Nov 2007 15:55:01 GMT Server HTTP协议标准报头。包含了服务器用来处理请求的软件信息。 Apache Content-Length HTTP协议标准报头。用于指明实体正文的长度,以字节方式存储的十进制数字来表示。 xxx Content-Type HTTP协议标准报头。用于指明发送给接收者的实体正文的媒体类型。 application/json 响应消息体 响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中“Content-type”对应,传递除响应消息头之外的内容。
  • 摄像头部署 摄像头的架设会影响安全帽检测模型的准确率。在实际架设中,尽量保证拍摄画面清晰,光照充足,人形较正,无遮挡。监控视频场景下尽量保证拍摄的画面能拍到更多的人形。 目前安全帽检测模型的训练场景主要针对工地入口。具体为摄像头距离地面三到四米左右,在安全帽检测的区域,人形不会有太严重的遮挡。为了保证检测算法的准确率,需要确保画面图像中安全帽清晰可辩。同时,摄像头画面中场景尽量干净简单、空旷,避免场景复杂造成误检。 摄像头参数基本设置 不同品牌的摄像头都有一些基本的视频设置,例如分辨率、帧率和码率等。 分辨率:建议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”,参数说明如表5所示。 表5 请求消息头参数说明 名称 描述 是否必选 示例 Content-Type 消息体的类型(格式) 是 application/json。 公共消息体 华为HiLens 公共消息体包含了技能的公共消息内容,如表6所示。 表6 公共消息体参数说明 名称 类型 说明 msg_type String 技能类型,为face_detection_result。 cam_name String 摄像头名称。 skill_id String 技能ID。 技能消息体 人脸检测的json消息体如表7所示: 表7 技能消息体参数说明 名称 类型 说明 face_id String 人脸图UUID。 track_id Uint64 人脸的跟踪标记,相同的track_id表示同一个人脸。 ori_img_id String 人脸背景原始图UUID。 time Uint64 图片解码时间的时间戳,单位为秒。 bbox Object 人脸图在背景图中的位置信息。位置信息参数请参见表8。 clarity Float 人脸清晰度,范围[0,1]。 face_image String 人脸图BASE64编码结果。 ori_image String 原始图BASE64编码结果,如果配置不发送原始图,则无该字段。 表8 bbox位置信息参数说明 字段 类型 说明 x Int 人脸图左上角顶点x坐标值。 y Int 人脸图左上角顶点y坐标值。 h Int 人脸图高。 w Int 人脸图宽。 人脸检测的json消息体示例如下: { "msg_type": "face_detection_result", "cam_name": "store001_pos2", "skill_id": "f5c526eb6c51440c8a0ee5e3cc65f23c", "face_id": "0DD1BEA6-634B-11E8-8B0B-407D0FAD9218", "track_id": 1, "ori_img_id": "0DD1BF0A-634B-11E8-8B0B-407D0FAD9218", "time": 1527603463, "bbox ": { "x": 32, "y": 379, "w": 49, "h": 65 }, "clarity": 0.55, "face_image": "4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...", "ori_image": "4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...", } 响应消息 响应消息头 响应消息头由服务器端(应用系统)收到请求消息后返回。 响应消息头可包含如下两部分。 一个HTTP状态代码,从2xx成功代码到4xx或5xx错误代码。或者可以返回服务定义的状态码。 附加响应头字段,如支持请求的响应所需,如Content-type响应消息头。 详细的公共响应消息头参数说明如表9所示。 表9 公共响应消息头参数说明 名称 描述 示例 Date HTTP协议标准报头。表示消息发送的时间,时间的描述格式由rfc822定义。 Mon, 12 Nov 2007 15:55:01 GMT Server HTTP协议标准报头。包含了服务器用来处理请求的软件信息。 Apache Content-Length HTTP协议标准报头。用于指明实体正文的长度,以字节方式存储的十进制数字来表示。 xxx Content-Type HTTP协议标准报头。用于指明发送给接收者的实体正文的媒体类型。 application/json 响应消息体(可选) 响应消息体通常以结构化格式(如json或xml)返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。
  • 技能描述 面向智慧商超的人脸采集技能。本技能使用多个深度学习算法,实时分析视频流,自动抓取画面中的清晰人脸上传至您的后台系统,用于后续实现其他业务。 本技能支持: 判断并过滤尺寸过小、清晰度较差、角度过大等无法判断的人脸。 同时检测多张人脸。 人脸跟踪。对同一个人抓拍的人脸做去重,避免大量的重复上报。 根据业务需求划定区域,只抓取固定区域内的人脸。 使用时需要提供您的业务RESTful接口和RTSP视频地址,最大支持10路网络摄像头接入,并按照接入的路数进行收费。 摄像头部署建议请参见摄像头部署。 技能配置项请参见运行时配置参数。 技能接口设计请参见技能结果上传接口。
  • 运行时配置参数 技能在运行时,需要添加运行时配置。配置完成后,参数会从华为HiLens云侧下发到端侧设备。 配置参数说明 技能相关配置参数设计如表3所示。 表3 运行时配置参数 名称 是否必选 参数类型 说明 logLevel 是 Enum 日志级别,包括INFO,DEBUG,WARNING和ERROR。建议设置为INFO。 keep_running 是 Int 当技能崩溃是否自动拉起技能并持续运行。此项配置在1.1.0及以后版本起作用。 multi_camera 是 List 一个设备上多路视频的技能参数,详情请参见表4。 表4 视频参数说明 名称 是否必选 参数类型 说明 camera_names 是 List 摄像头名称。可配置多个名称,表示多个摄像头采用同样的技能配置。 sendOriImgFlag 是 Int 是否发送人脸背景原始图,默认值:0。 0:表示不发送 1:表示发送 sendRepeatFaceFlag 是 Int 是否重复发送清晰人脸图,开关打开后,同一个人只要显示更清晰的人脸会重复发送, 默认值:0。 0:表示不发送 1:表示发送 sendOriImgCompressionRatio 否 Int 原始图jpeg压缩百分比,默认值为90,表示图片压缩比90%,取值范围[1 100]。 cropSizeMax 否 Int 发送人脸图片长宽的最大像素,默认值400。 cropSizeMin 否 Int 发送人脸图片长宽的最小像素,默认值80。 roi 否 String 检测区域配置。区域的设置由Polygon开头,其后依次为区域的坐标(按顺时针排列的x,y坐标)。默认值为Polygon 0 0 0 0,表示检测整个画面。 sendUrl 是 String 发送技能消息POST请求的URL地址。 faceQualityThreshold 是 Float 人脸清晰度阈值。清晰度大于此值的人脸才发送。取值范围[0.0, 1.0],默认值0.38。 centerMode 否 Int 是否只检测roi区域中的最大人脸,默认值0。 0:返回所有人脸。 1:只返回roi中最大的人脸。 示例 HiLens Kit设备支持多路摄像头接入,如果要为不同的摄像头设置不同的技能配置,或者几个摄像头共用同一技能配置,则可在配置列表中给出相应的配置信息,示例如下: //Store001的两个摄像头pos1和pos2配置不同参数: { "logLevel": "INFO", "keep_running": 1, "multi_camera": [{ "camera_names": ["store001_pos1"], "sendOriImgFlag": 0, "sendRepeatFaceFlag": 0, "sendOriImgCompressionRatio": 90, "cropSizeMax": 400, "cropSizeMin": 120, "roi": "Polygon 0 0 0 0", "sendUrl": "https://abc.company.com/face", "faceQualityThreshold": 0.45, "centerMode": 0 }, { "camera_names": ["store001_pos2"], "sendOriImgFlag": 1, "sendRepeatFaceFlag": 1, "sendOriImgCompressionRatio": 100, "cropSizeMax": 300, "cropSizeMin": 80, "roi": "Polygon 0 0 0 0", "sendUrl": "https://abc.company.com/face", "faceQualityThreshold": 0.55, "centerMode": 0 }] } //Store002的两个摄像头pos1和pos2配置相同参数: { "logLevel": "INFO", "keep_running": 1, "multi_camera": [{ "camera_names": ["store002_pos1","store002_pos2"], "sendOriImgFlag": 0, "sendRepeatFaceFlag": 0, "sendOriImgCompressionRatio": 90, "cropSizeMax": 400, "cropSizeMin": 120, "roi": "Polygon 0 0 0 0", "sendUrl": "https://abc.company.com/face" "faceQualityThreshold": 0.55, "centerMode": 0 }] }
  • 参数配置 部分技能在运行的时候,需要用户配置相关的参数。比如一般人脸判断的技能都需要用户上传人脸库,运行技能时就需要配置相关的参数。 单击“添加参数”,按表3填写。 表3 参数配置说明 参数 说明 参数名称 参数名。必填参数。技能或容器镜像里可用该参数获取该参数的值。用户在添加技能作业时需要配置参数名称和参数的值。 类型 参数值的类型,表示该参数项的值是什么类型的数据。支持“string”、“int”、“float”、“object”类型。 必填 参数是否必填。 固定值 参数是否为固定值。 默认值 参数的默认值。如果参数为固定值,参数的默认值必填。 最大值 如果参数类型为“int”和“float”,则需要设置参数的最大值。 最小值 如果参数类型为“int”和“float”,则需要设置参数的最小值。 步长 如果参数类型为“int”和“float”,则需要设置参数的步长。 参数说明 填写参数相关说明,比如参数值的范围说明等。
  • 查看作业实例 在部署列表,可查看已有作业的实例详情,可选择启动或停止实例。 在专业版管理控制台左侧菜单栏选择“设备管理”。 进入“设备列表”页面。 单击设备名称,进入设备详情页。 默认进入“部署列表”页签。 选择部署,单击部署名称左侧的。 下方会出现当前部署工程的作业信息。 单击实例数列的“实例详情”下拉框。 弹出“实例详情”对话框,可查看“作业名称”、“作业ID”、“实例详情”。 操作列可根据实际业务选择“启动”或“停止”实例。
  • 输入 技能运行时,数据输入来源,输入当前支持“摄像头”、“URL”、“Edge Restful”、“VCN”和本地路径输入。 摄像头 勾选已添加在专业版管理控制台的摄像头。需要提前在管理控制台手动添加摄像头,详情请见添加摄像头。 设置“资源限制”和“每实例数路数限制”。 “资源限制” 设置视频流计算所需的计算资源,包括“起始资源”和“每增加1路所需资源”。 “起始资源”:指作业中接入第1路摄像头的视频流时,计算所需的基础资源。 “每增加1路所需资源”:指作业中每增加1路摄像头时所需的计算资源。 在设置资源限制项时,申请资源量指预留的最小计算资源,限制资源量指预留的最大计算资源。当接入路数计算所需资源超过所有实例的剩余资源时,该路视频流可能无法计算。 “每实例数路数限制” 每个实例下可接入摄像头总数的最大值。 图1 资源限制 URL 从URL输入数据。请输入长度不超过255,且合法的云侧算法地址,例如“https://test1.test2.test3”。 可单击“添加URL”,添加多个URL。 可单击“删除”,删除URL。 图2 URL 输入 设置“计算资源”: 分配给每个实例的计算资源,包括“CPU核数”、“内存大小”以及是否打开“开启AI加速卡”开关。 “申请”资源量指预留给每个实例的最小计算资源。“限制”资源量指每个实例可使用的最大计算资源。当技能运行所需资源大于所有实例的限制资源时,技能可能无法运行。 如果打开“开启AI加速卡”开关,选择AI加速器配额。 图3 计算资源 Edge Restful 从Edge Restful输入数据。按表1填写参数信息。 单击“添加配置”,可添加多个Edge Restful。 表1 Edge Restful输入 参数 说明 URL 视频流服务器提供用于获取rtsp地址的rest接口,仅支持http或https协议。 rtsp地址相对位置 在视频流服务器提供的响应体重,rtsp地址的相对位置。例如:"data/url"表示rtsp地址在"{data:{url:'rtsp://url'}}"中的相对位置。 请求头 输入“属性名”和“属性值”。请输入长度为1-63的字符,大小写字母或中划线开头,由数字、大小写字母、点号(.)、中划线(-)下划线(_)组成。 单击“添加消息头”,可添加多个请求头。 单击,可删除请求头。 设置“计算资源”: 分配给每个实例的计算资源,包括“CPU核数”、“内存大小”以及是否打开“开启AI加速卡”开关。 “申请”资源量指预留给每个实例的最小计算资源。“限制”资源量指每个实例可使用的最大计算资源。当技能运行所需资源大于所有实例的限制资源时,技能可能无法运行。 如果打开“开启AI加速卡”开关,选择AI加速器配额。 图4 计算资源 VCN 从VCN输入数据。填写IP地址、端口号、用户名、密码。 单击“添加”,输入摄像头ID,选择码流类型。 设置“资源限制”和“每实例数路数限制”。 “资源限制” 设置视频流计算所需的计算资源,包括“起始资源”和“每增加1路所需资源”。 “起始资源”:指作业中接入第1路摄像头的视频流时,计算所需的基础资源。 “每增加1路所需资源”:指作业中每增加1路摄像头时所需的计算资源。 在设置资源限制项时,申请资源量指预留的最小计算资源,限制资源量指预留的最大计算资源。当接入路数计算所需资源超过所有实例的剩余资源时,该路视频流可能无法计算。 “每实例数路数限制” 每个实例下可接入摄像头总数的最大值。 图5 资源限制 本地路径 从本地路径输入数据。填入本地路径,如:C:/filename/video。 设置“计算资源”: 分配给每个实例的计算资源,包括“CPU核数”、“内存大小”以及是否打开“开启AI加速卡”开关。 “申请”资源量指预留给每个实例的最小计算资源。“限制”资源量指每个实例可使用的最大计算资源。当技能运行所需资源大于所有实例的限制资源时,技能可能无法运行。 如果打开“开启AI加速卡”开关,选择AI加速器配额。 图6 计算资源
  • 输出 技能运行时,数据输出位置,当前支持“DIS”、“Webhook”、“本地路径”、“本地屏幕”和“RTSP”。 DIS 输出数据到数据接入服务(Data Ingestion Service,简称DIS),需要提前在DIS控制台创建通道,详情请见数据接入服务 DIS 用户指南。 单击“选择DIS通道”,在对话框中选择通道,然后单击“确定”。 Webhook 输出数据到Webhook。按表2填写信息。 表2 Webhook输出 参数 说明 URL 输出数据的URL地址,仅支持http或https协议。 不能为空,请输入长度不超过255个字符,且合法的云侧算法地址。 请求头 输入“属性名”和“属性值”。其中“属性名”输入不能为空,请输入长度为1-63的字符,大小写字母或中划线开头,由数字、大小写字母、点号(.)、中划线(-)下划线(_)组成。 单击“添加消息头”,可添加多个请求头。 单击,可删除请求头。 本地路径 输出数据到本地路径。填入本地路径,如:C:/filename/video。 本地屏幕 显示在本地屏幕上的标题。若有多个输出同时到同一个本地屏幕,可按标题区分。填入本地屏幕。 RTSP “windows”类型和“RK”类型的设备支持RTSP输出。填入RTSP地址。
  • 2.填写基础信息 在新建技能页面填写基本信息,参数说明请见表1,填完基本信息后单击右下角的“下一步”,配置启动参数。其中,“技能版本”的版本号应该高于之前的版本号。 表1 技能基本信息参数说明 参数 说明 技能名称 技能的名称,下发到端侧也使用该名称作为根目录,默认为技能新建时的名称,不可修改。 可输入中文、字母、数字、下划线或中划线,必须以中文、字母开头,以中文、字母或数字结尾,长度3~60个字符。 说明: 由于技能市场不允许存在同名技能,所以如果想发布到技能市场,请使用全局唯一的名称对您的技能进行命名。 技能版本 技能的版本。版本号格式为“A.A.A”,“A”为不超过3位的自然数。例如“1.0.0”。 当“A”超过一位时,不允许以“0”开头,比如禁止输入“01.0.0”。 版本号应当高于之前的版本号。 适用设备类型 技能适用的设备类型,包括Windows、Atlas 500、通用x86设备、通用ARM设备、SDC等设备类型。 应用场景 技能适用的场景,例如“园区”、“工业”、“零售”、“金融”等场景。 技能图标 技能的头像。 标签 待创建技能的标签。 单击“添加标签”,填写标签键和标签值。 只允许大小写字母、数字、下划线和中划线,不允许为空。标签名不允许重复,最大长度为36个字符;标签值最大长度为43个字符。 如果删除标签,可单击“操作”列的“删除”。 简介 对技能的简单介绍。 最大长度512,不允许输入~^$%&等特殊字符。 描述 对技能的详细介绍。 技能格式 支持“技能包”和“容器镜像”两种格式,具体格式要求请见技能包和容器镜像。 技能格式选择“技能包” 技能包路径:单击“选择OBS地址”,选择RPM技能包在OBS的存储路径。 技能格式选择“容器镜像” 镜像类型:支持镜像类型为“ModelBox镜像”和“普通镜像”。 镜像路径:单击“选择SWR地址”,选择容器镜像在OBS的存储路径。 RootKey 使用ModelBox开发框架的加密工具ModelBox Tool加密模型后,可获取Root Key。 模型密钥 使用ModelBox开发框架的加密工具ModelBox Tool加密模型后,可获取模型密钥。
  • 单设备部署技能流程 单设备技能部署流程如图1所示,操作指引如设备管理及部署流程简介所示。 图1 技能部署流程 表1 单设备部署技能流程 任务 说明 详细指导 注册设备 在使用专业版HiLens管理控制台之前,您需要将计算设备注册至控制台。 目前支持HiLens设备(Windows、Atlas 500、通用x86设备、通用ARM设备、SDC等设备类型)和HiLens Kit的注册、管理和注销。 注册HiLens设备 激活设备 注册设备后,需购买HiLens端云协同AI运行服务,并在设备管理页面对设备进行权限激活,该设备方能部署技能。 订购HiLens端云协同AI运行服务 激活设备(购买端云协同AI运行服务) 准备技能 购买技能:在技能市场购买符合设备规范的技能。 技能市场 自定义技能:专业版HiLens管理控制台支持RPM格式的技能包和容器镜像两种技能,本地按技能规范准备技能。 技能介绍 部署技能 将技能部署到设备上,运行技能。 创建部署工程 添加作业 查看技能运行效果 查看技能日志,观察技能运行效果。 管理设备日志
  • 设备管理相关操作及说明 激活设备(购买端云协同AI运行服务):注册设备后,需购买HiLens端云协同AI运行服务,并在设备管理页面对设备进行权限激活,该设备方能部署技能。 部署技能:可在已注册的设备上部署技能、查看部署信息、升级部署、删除部署、添加作业等。 添加标签:可对已注册的设备添加标签。 管理设备日志:在部署并添加作业后,可查看技能日志。 升级HiLens_Device_Agent固件版本:当设备厂商有新的固件版本时,您可以选择升级固件版本。 添加摄像头:为已注册的设备连接管理更多的IP摄像头。 注销设备:在设备不再使用时,注销设备以释放资源。
  • 容器镜像 容器镜像格式是一个包含应用运行需要的各种组件和应用本身的镜像。可以使用ModelBox提供的软件包打包工具或者是镜像打包工具,也可以按照下面的格式手动打包。 应用容器镜像包含三层:基础镜像层、ModelBox框架层和应用层。 基础镜像层:提供下层设备的驱动,以及其中ModelBox框架和基础功能单元依赖的一些第三方库如FFmpeg,TensorRT,OpenCV等。 ModelBox框架层:包括ModelBox基础框架包和ModelBox基础功能单元包。 应用层:包含用户自定义的一些功能单元,以及功能单元需要的一些第三方库,以及业务流程图等。
  • 控制台新建技能流程 当前专业版HiLens控制台支持新建技能包和容器镜像两种格式的技能。在准备新建技能前,请明确您需要开发一个什么类型的技能。 图1 控制台开发技能流程 表2 控制台开发技能流程说明 流程 说明 详细指导 准备工作 如果希望新建的技能部署至端侧设备,需要提前注册设备至专业版HiLens控制台。 当注册的设备超过1台时,需购买HiLens端云协同AI运行服务,并激活设备,才能安装自行开发的技能至设备上。 注册HiLens设备 订购HiLens端云协同AI运行服务 激活设备(购买端云协同AI运行服务) 新建技能 在专业版HiLens控制台基于业务需求新建技能。 新建技能 部署技能 将新建的技能部署至端侧设备,调试技能。 创建部署工程 查看技能运行效果 查看技能日志,观察技能运行效果。 管理设备日志
  • 查看作业实例 在部署列表,可查看已有作业的实例详情,可选择启动或停止实例。 在专业版管理控制台左侧菜单栏选择“设备管理”。 进入“设备列表”页面。 单击设备名称,进入设备详情页。 默认进入“部署列表”页签。 选择部署,单击部署名称左侧的。 下方会出现当前部署工程的作业信息。 单击实例数列的“实例详情”下拉框。 弹出“实例详情”对话框,可查看“作业名称”、“作业ID”、“实例详情”。 操作列可根据实际业务选择“启动”或“停止”实例。
  • 输入 技能运行时,数据输入来源,输入当前支持“摄像头”、“URL”、“Edge Restful”、“VCN”和本地路径输入。 摄像头 勾选已添加在专业版管理控制台的摄像头。需要提前在管理控制台手动添加摄像头,详情请见添加摄像头。 设置“资源限制”和“每实例数路数限制”。 “资源限制” 设置视频流计算所需的计算资源,包括“起始资源”和“每增加1路所需资源”。 “起始资源”:指作业中接入第1路摄像头的视频流时,计算所需的基础资源。 “每增加1路所需资源”:指作业中每增加1路摄像头时所需的计算资源。 在设置资源限制项时,申请资源量指预留的最小计算资源,限制资源量指预留的最大计算资源。当接入路数计算所需资源超过所有实例的剩余资源时,该路视频流可能无法计算。 “每实例数路数限制” 每个实例下可接入摄像头总数的最大值。 图1 资源限制 URL 从URL输入数据。请输入长度不超过255,且合法的云侧算法地址,例如“https://test1.test2.test3”。 可单击“添加URL”,添加多个URL。 可单击“删除”,删除URL。 图2 URL 输入 设置“计算资源”: 分配给每个实例的计算资源,包括“CPU核数”、“内存大小”以及是否打开“开启AI加速卡”开关。 “申请”资源量指预留给每个实例的最小计算资源。“限制”资源量指每个实例可使用的最大计算资源。当技能运行所需资源大于所有实例的限制资源时,技能可能无法运行。 如果打开“开启AI加速卡”开关,选择AI加速器配额。 图3 计算资源 Edge Restful 从Edge Restful输入数据。按表1填写参数信息。 单击“添加配置”,可添加多个Edge Restful。 表1 Edge Restful输入 参数 说明 URL 视频流服务器提供用于获取rtsp地址的rest接口,仅支持http或https协议。 rtsp地址相对位置 在视频流服务器提供的响应体重,rtsp地址的相对位置。例如:"data/url"表示rtsp地址在"{data:{url:'rtsp://url'}}"中的相对位置。 请求头 输入“属性名”和“属性值”。请输入长度为1-63的字符,大小写字母或中划线开头,由数字、大小写字母、点号(.)、中划线(-)下划线(_)组成。 单击“添加消息头”,可添加多个请求头。 单击,可删除请求头。 设置“计算资源”: 分配给每个实例的计算资源,包括“CPU核数”、“内存大小”以及是否打开“开启AI加速卡”开关。 “申请”资源量指预留给每个实例的最小计算资源。“限制”资源量指每个实例可使用的最大计算资源。当技能运行所需资源大于所有实例的限制资源时,技能可能无法运行。 如果打开“开启AI加速卡”开关,选择AI加速器配额。 图4 计算资源 VCN 从VCN输入数据。填写IP地址、端口号、用户名、密码。 单击“添加”,输入摄像头ID,选择码流类型。 设置“资源限制”和“每实例数路数限制”。 “资源限制” 设置视频流计算所需的计算资源,包括“起始资源”和“每增加1路所需资源”。 “起始资源”:指作业中接入第1路摄像头的视频流时,计算所需的基础资源。 “每增加1路所需资源”:指作业中每增加1路摄像头时所需的计算资源。 在设置资源限制项时,申请资源量指预留的最小计算资源,限制资源量指预留的最大计算资源。当接入路数计算所需资源超过所有实例的剩余资源时,该路视频流可能无法计算。 “每实例数路数限制” 每个实例下可接入摄像头总数的最大值。 图5 资源限制 本地路径 从本地路径输入数据。填入本地路径,如:C:/filename/video。 设置“计算资源”: 分配给每个实例的计算资源,包括“CPU核数”、“内存大小”以及是否打开“开启AI加速卡”开关。 “申请”资源量指预留给每个实例的最小计算资源。“限制”资源量指每个实例可使用的最大计算资源。当技能运行所需资源大于所有实例的限制资源时,技能可能无法运行。 如果打开“开启AI加速卡”开关,选择AI加速器配额。 图6 计算资源
  • 参数配置 部分技能在运行的时候,需要用户配置相关的参数。比如一般人脸判断的技能都需要用户上传人脸库,运行技能时就需要配置相关的参数。 单击“添加参数”,按表3填写。 表3 参数配置说明 参数 说明 参数名称 参数名。必填参数。技能或容器镜像里可用该参数获取该参数的值。用户在添加技能作业时需要配置参数名称和参数的值。 类型 参数值的类型,表示该参数项的值是什么类型的数据。支持“string”、“int”、“float”、“object”类型。 必填 参数是否必填。 固定值 参数是否为固定值。 默认值 参数的默认值。如果参数为固定值,参数的默认值必填。 最大值 如果参数类型为“int”和“float”,则需要设置参数的最大值。 最小值 如果参数类型为“int”和“float”,则需要设置参数的最小值。 步长 如果参数类型为“int”和“float”,则需要设置参数的步长。 参数说明 填写参数相关说明,比如参数值的范围说明等。
  • 输出 技能运行时,数据输出位置,当前支持“DIS”、“Webhook”、“本地路径”、“本地屏幕”和“RTSP”。 DIS 输出数据到数据接入服务(Data Ingestion Service,简称DIS),需要提前在DIS控制台创建通道,详情请见数据接入服务 DIS 用户指南。 单击“选择DIS通道”,在对话框中选择通道,然后单击“确定”。 Webhook 输出数据到Webhook。按表2填写信息。 表2 Webhook输出 参数 说明 URL 输出数据的URL地址,仅支持http或https协议。 不能为空,请输入长度不超过255个字符,且合法的云侧算法地址。 请求头 输入“属性名”和“属性值”。其中“属性名”输入不能为空,请输入长度为1-63的字符,大小写字母或中划线开头,由数字、大小写字母、点号(.)、中划线(-)下划线(_)组成。 单击“添加消息头”,可添加多个请求头。 单击,可删除请求头。 本地路径 输出数据到本地路径。填入本地路径,如:C:/filename/video。 本地屏幕 显示在本地屏幕上的标题。若有多个输出同时到同一个本地屏幕,可按标题区分。填入本地屏幕。 RTSP “windows”类型和“RK”类型的设备支持RTSP输出。填入RTSP地址。
  • 注册设备 在专业版管理控制台左侧菜单栏选择“设备管理”。 进入“设备列表”页面。 单击“注册设备”。 进入“注册设备”页面。 填写注册信息,单击右下角的“确认”。 基本信息 图1 基本信息 表1 注册设备基础信息 参数 说明 设备名称 设备注册时使用的名称,批量注册时使用该名称作为前缀。仅允许中文字符、英文字母、数字、下划线、中划线且长度不超过64。 描述 设备描述。不允许输入*~#等特殊字符且长度为0-255。 标签 设备标签。 单击“创建标签”,添加标签,在输入框中依次填写标签键和标签值。 只允许大小写字母、数字、下划线和中划线,不允许为空。标签键不允许重复,最大长度为36个字符,标签值最大长度为43个字符。 最多可添加20组标签。 单击,删除标签。 部署方式 当前仅支持注册“HiLens”类型设备。 设备类型 选择待注册的设备类型,包括“Atlas 500”、“Atlas 800”、“通用ARM设备”、“通用x86设备” 等设备类型。 本样例选择“Windows”。 高级设置 图2 高级设置 参数 说明 开启AI加速卡 AI加速卡开关。 批量注册 批量注册开关。如果开启,选择注册设备的数量。 输入值范围必须在1~100000。 IAM用户名 由帐号在IAM中创建的用户,如果没有IAM账户时,填写华为云帐号名。相关概念请参见IAM基本概念。 工作空间 选择设备注册的工作空间。默认帐号的默认工作空间,可自定义选择。 事件有效时间 若您在设备离线时进行操作,则操作将保留在待执行的事件列表中,待设备上线后执行。 日志设置 配置日志的“日志存储时间”、“日志等级”,设置“LTS日志上传”开关。 图3 应用日志 表2 注册设备日志设置 参数 说明 日志存储时间 日志存储时长,单位为天。输入值范围必须在1~30。 日志等级 选择日志等级,可选“Error(错误)”、“Warning(警告)”、“Info(信息)”、“Debug(调试)”。 本地日志设置 大小限制 对该注册设备的日志大小限制,默认为50MB,不可自定义。 日志滚动数量 每隔 {0} 天,对本地日志根据数量对日志进行一次日志滚动,删除最旧的日志文件。每个日志文件固定10M。 LTS云日志设置 日志上传 日志上传开关。系统日志与应用日志默认在本地存储,如果要上传至云日志服务(LTS),可开启“日志上传”开关。 开关开启后,选择日志等级,仅对应等级的日志上传至LTS。
  • 2.填写基础信息 在新建技能页面填写基本信息,参数说明请见表1,填完基本信息后单击右下角的“下一步”,配置启动参数。 表1 技能基本信息参数说明 参数 说明 技能名称 技能的名称,下发到端侧也使用该名称作为根目录。 只允许英文小写字母、数字、中划线、最大长度32的字符,必须以英文小写字母、数字开头和结尾。 说明: 由于技能市场不允许存在同名技能,所以如果想发布到技能市场,请使用全局唯一的名称对您的技能进行命名。 技能版本 技能的版本。版本号格式为“A.A.A”,“A”为不超过3位的自然数。例如“1.0.0”。 当“A”超过一位时,不允许以“0”开头,比如禁止输入“01.0.0”。 适用设备类型 技能适用的设备类型,包括Windows、Atlas 500、通用x86设备、通用ARM设备、SDC等设备类型。 应用场景 技能适用的场景,例如“园区”、“工业”、“零售”、“金融”等场景。 技能图标 技能的头像。 标签 待创建技能的标签。 单击“添加标签”,填写标签键和标签值。 只允许大小写字母、数字、下划线和中划线,不允许为空。标签名不允许重复,最大长度为36个字符;标签值最大长度为43个字符。 最多可添加20组标签。 如果删除标签,可单击“操作”列的“删除”。 简介 对技能的简单介绍。 描述 对技能的详细介绍。 技能格式 支持“技能包”和“容器镜像”两种格式,具体格式要求请见技能包和容器镜像。 技能格式选择“技能包” 技能包路径:单击“选择OBS地址”,选择RPM技能包在OBS的存储路径。 技能格式选择“容器镜像” 镜像类型:支持镜像类型为“ModelBox镜像”和“普通镜像”。 镜像路径:单击“选择SWR地址”,选择容器镜像在OBS的存储路径。 RootKey 使用ModelBox开发框架的加密工具ModelBox Tool加密模型后,可获取Root Key。 模型密钥 使用ModelBox开发框架的加密工具ModelBox Tool加密模型后,可获取模型密钥。 校验配置文件 对校验配置文件中的文件和路径进行校验,防止技能中的文件被篡改。使用该功能,需要使用modelbox-tool在技能包或容器镜像中增加校验配置文件。
  • 容器镜像 容器镜像格式是一个包含应用运行需要的各种组件和应用本身的镜像。可以使用ModelBox提供的软件包打包工具或者是镜像打包工具,也可以按照下面的格式手动打包。 应用容器镜像包含三层:基础镜像层、ModelBox框架层和应用层。 基础镜像层:提供下层设备的驱动,以及其中ModelBox框架和基础功能单元依赖的一些第三方库如FFmpeg,TensorRT,OpenCV等。 ModelBox框架层:包括ModelBox基础框架包和ModelBox基础功能单元包。 应用层:包含用户自定义的一些功能单元,以及功能单元需要的一些第三方库,以及业务流程图等。
共100000条