更新时间:2024-04-03 GMT+08:00
分享

人脸客流统计技能

技能描述

智慧门店的人脸抓拍和客流统计技能。本技能使用多个深度学习算法,实时分析视频流,对进入门店的人形进行抓拍,并自动筛选出此人进店过程中尺寸、清晰度、角度最佳的人脸和对应的原图上传至您的后台系统。

结合云上人脸识别服务(Face Recognition,简称FRS)还可以进一步做VIP客户统计、回头客统计等应用。使用时需要提供您的业务RESTful接口和RTSP视频地址,当前最大支持两路网络摄像头接入。

人流较密集、互相遮挡或者全程看不清顾客的脸时,可能存在抓取到的人形找不到对应人脸的情况。

摄像头部署建议请参见摄像头部署

技能配置项请参见运行时配置参数

技能接口设计请参见技能结果上传接口

基本信息

人脸客流统计技能的基本信息如表1所示。

表1 技能参数说明

参数

说明

技能名称

人脸客流统计

应用场景

智慧门店

支持固件版本

HiLens Framework 1.1.2及以上,升级操作请见升级HiLens_Device_Agent固件版本

系统固件要求为2.2.200.011(TR6),升级操作请见升级HiLens Kit系统固件版本

最大路数

最多2路

视频流传输协议

RTSP

输入方式

外接IPC摄像头

输出方式

POST

摄像头部署

摄像头的架设会影响人脸客流统计模型的准确率。在实际架设中,尽量保证拍摄画面清晰,光照充足,人脸较正,无遮挡,比如前边的人脸容易挡住后边的人脸。监控视频场景下尽量保证拍摄的画面能拍到更多的正脸。

摄像头参数基本设置

不同品牌的摄像头都有一些基本的视频设置,例如分辨率、帧率和码率等,参数要求如表2所示。

表2 摄像头参数设置要求

参数

要求

分辨率

不低于720P,如果需要做人脸识别和去重不低于1080P,不高于4K(3840*2160)。

帧率

不高于25fps,不低于15fps,建议值20fps。

码率

720P建议设为4096Kbps~6144Kbps左右,1080P建议设为6144Kpbs~8192Kbps,更高分辨率可设置更高码率。

视频编码

如果支持H.265,设置为H.265。

日夜切换

关闭夜间自动切换红外模式,暂不支持抓取红外模式下的人脸。

宽动态

关闭宽动态。普通摄像头的宽动态无法到达专业相机的效果,人的走动速度较快时存在运动模糊,应关闭宽动态设置。

人脸角度要求

人脸角度按照三个维度定义:人脸抬头低头角度(pitch),正面人脸旋转角度(roll),前后转头偏转角度(yaw)。人脸检测算法对三个空间维度都有限制。检测模型根据三个维度做姿态评估以后,将检测到的人脸图片发送出来。如果摄像头安装角度不合适,拍摄的画面容易将一些正脸误检为侧脸,在安装好摄像头以后,需要安装人员在现场走进画面实际测试,确认拍摄的人脸画面不产生过大的角度,不会造成算法无法抓到人脸。

请保证人在正常行走中,视频中人脸成像前后转头偏转角度“yaw”不超过45°(即摄像头无斜拍),人脸抬头低头角度“pitch”不超过30°(即摄像头架设俯视角合理),人脸旋转角度“roll”不超过20°(即摄像头两侧水平,无倾斜角),满足上述正脸姿态要求。

人脸大小要求

对于不可调焦距的摄像头,摄像头应安装在距离抓拍点较近处,使得人脸在画面中的像素大小不小于30px*30px。摄像头架设建议如下。

架设高度:2m-2.5m

监控距离:5m-6m

监控宽度:2m-3m

俯视角度:15°左右

对于可调焦距摄像头,应调节焦段使得人脸像素大小满足大于30px*30px的要求。

如果抓取人脸后还需发送给FRS服务,请保证人脸像素大小大于80px*80px,对应设置运行时配置参数中的“cropSizeMin”参数值为“80”

光照要求

光照条件要求需要满足以下几项:

  • 行人正脸光照强度较好,光线过强和过弱都不太合适。

    如果不满足此要求,例如在夜晚或光线不足的白天等环境,会使得采集人脸图像曝光不足,获取的人脸画面偏暗、噪点偏多,导致发送至FRS服务的图片正确率偏低。

  • 人脸两侧光照强度差值不宜过大。

    如果不满足此要求,即左右侧光照强度如果差异过大,采集的人脸图像有“阴阳脸”现象(半张脸暗,半张脸亮)。

  • 行人背面光照强度<正面光照强度* 2。

    如果不满足此要求,即行人背面光照强度远大于正面光照强度,采集人脸图像有严重“背光”现象,最终导致人脸曝光不足,五官细节丢失。

  • 室外安装摄像头不宜正对着太阳光,会导致人脸拍摄光照不均,造成人脸反光。

    如果不满足此要求,会导致光线太强和太弱,人脸五官细节都会丢失。

  • 室外摄像头安装,不宜选择背阴严重或者有遮挡物挡住光线的地方架设。

    如果不满足此要求,会导致光线太强和太弱,人脸五官细节都会丢失。

如果现场的光线不满足上述要求,则需要通过强光抑制或补光来优化现场的光照条件。强光抑制可以改善“阴阳脸”“背光”现象,即通过减弱侧面光照来改善光照条件。补光则可以通过增加额外光源的方式改善光照条件,提高人脸图像的采集效果;主要通过普通射灯、白炽灯等在不影响装修、路人视觉效果的情况下提高人脸的光照度,消除“阴阳脸”

周围环境要求

  • 镜头前方不要有遮挡的障碍物,容易挡住人脸,造成漏检。
  • 不要将摄像头架在房子遮阴的挡板下,会造成光照过暗,人脸完全看不清。
  • 室内安装摄像头,部署在楼道里需要注意光照,楼道里灯光明暗交替变化过快,摄像头拍摄时获取的画面可能会偏暗,检测到的人脸发送给FRS后,正确率较低。比如,走廊较长,楼道光照较暗,人距离摄像头较远时,检测出的人脸很模糊。
  • 室外安装摄像头,需要注意雨雪的影响,避免在露天下布置,雨水或者雪将摄像头的镜头盖住,造成拍摄画面模糊不清。

进店划线设置要求

人脸客流统计技能根据划线参数(passLineThreshold,详见表4)判断顾客是否进店,该参数的设置与摄像头画面有较大关联,建议如下:

  • 保证正常身高的人站在门槛处,能完整的看到整个人形,清晰的看到正脸(人脸条件满足上面的要求);
  • 门槛建议处于画面垂直距离80%~90%左右,即画面中80%~90%为店外,10%~20%为店内。

运行时配置参数

技能在运行时,需要添加运行时配置。配置完成后,参数会从华为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:表示发送

    sendOriImgCompressionRatio

    Int

    原始图jpeg压缩百分比,默认值为90,表示图片压缩比90%,取值范围[1 100]。

    cropSizeMax

    Int

    发送人脸图片长宽的最大像素,默认值400。

    cropSizeMin

    Int

    发送人脸图片长宽的最小像素,默认值80。

    faceQualityThreshold

    Float

    人脸质量总分阈值,质量分大于此值的人脸才会抓拍,默认值0.25。

    facePoseThreshold

    Float

    人脸姿态分阈值,质量分小于此值的人脸才会抓拍,默认值0.45。

    faceBlurThreshold

    Float

    人脸模糊度阈值,质量分小于此值的人脸才会抓拍,默认值0.55。

    faceMargin

    Float

    上报人脸时人脸框的外扩比例,默认值2.0。

    passLineThreshold

    Float

    进店统计时判断过线的Y轴坐标比值,默认为0.9。例如分辨率为1920x1080,比值0.75即1080*0.75=810。

    sendUrl

    String

    发送技能消息POST请求的URL地址。

  • 示例

    HiLens Kit设备支持多路摄像头接入,如果要为不同的摄像头设置不同的技能配置,或者几个摄像头共用同一技能配置,则可在配置列表中给出相应的配置信息,示例如下:

    //Store001的两个摄像头pos1和pos2配置不同参数:
    { 
      "logLevel": "INFO",
      "keep_running": 1,
      "multi_camera": 
             [{
              "camera_names": ["store001_pos1"],
              "sendOriImgFlag": 0,
              "sendOriImgCompressionRatio": 90,
              "cropSizeMax": 400,
              "cropSizeMin": 100,
              "faceQualityThreshold": 0.25,
              "facePoseThreshold": 0.45,
              "faceBlurThreshold": 0.55,
              "faceMargin": 2.0,
              "passLineThreshold": 0.9,
              "sendUrl": "https://abc.company.com/face",
             },
             {
              "camera_names": ["store001_pos2"],
              "sendOriImgFlag": 1,
              "sendOriImgCompressionRatio": 100,
              "cropSizeMax": 300,
              "cropSizeMin": 80,
              "faceQualityThreshold": 0.25,
              "facePoseThreshold": 0.45,
              "faceBlurThreshold": 0.55,
              "faceMargin": 2.0,
              "passLineThreshold": 0.9,
              "sendUrl": "https://abc.company.com/face",
              }]
    }
    //Store002的两个摄像头pos1和pos2配置相同参数:
    { 
      "logLevel": "INFO",
      "keep_running": 1,
      "multi_camera": 
             [{
              "camera_names": ["store002_pos1","store002_pos2"],
              "sendOriImgFlag": 0,
              "sendOriImgCompressionRatio": 90,
              "cropSizeMax": 400,
              "cropSizeMin": 120,
              "faceQualityThreshold": 0.25,
              "facePoseThreshold": 0.45,
              "faceBlurThreshold": 0.55,
              "faceMargin": 2.0,
              "passLineThreshold": 0.9,
              "sendUrl": "https://abc.company.com/face",
             }]
    }

技能结果上传接口

  • 请求消息

    推理结果将以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。

      device_id

      String

      设备ID,指代运行此技能的设备。如您的HiLens Kit的设备ID,可登录华为HiLens控制台,在“设备管理>设备列表”页面的设备卡片查看。

    • 技能消息体

      人脸客流统计技能的json消息体如表7所示。

      表7 技能消息体参数说明

      名称

      类型

      说明

      time

      Uint64

      图片解码时间的时间戳,单位为秒。

      track_id

      Uint64

      人的跟踪标记,相同的t“rack_id”表示同一个人,每次初始化后“track_id”的值为从0开始依次递增。

      person_id

      String

      人形UUID。

      person_image

      String

      进店那一刻的原图BASE64编码结果。

      ori_img_id

      String

      人脸对应的原图UUID。

      ori_image

      String

      进店过程中的最佳人脸对应的原图BASE64编码结果。

      face_image

      String

      进店过程中的最佳人脸图BASE64编码结果。

      clarity

      Float

      人脸清晰度,范围[0,1],值越大表示质量越高。

      quality_pose

      Float

      人脸姿态分,范围[0,1],值越小表示人脸姿态越正

      quality_blur

      Float

      人脸模糊度 ,范围[0,1],值越小表示人脸越清晰

      bbox

      Object

      人脸在原图中的检测框位置信息,详细说明见表8

      表8 “bbox”参数说明

      字段

      类型

      说明

      x

      Int

      检测框左上角顶点的x坐标值。

      y

      Int

      检测框左上角顶点的y坐标值。

      w

      Int

      检测框宽度。

      h

      Int

      检测框高度。

    • 示例

      人脸客流统计的json消息体示例如下:

      { 
        "msg_type": "face_detection_result",
        "cam_name": "store001_pos2",
        "skill_id": "f5c526eb6c51440c8a0ee5e3cc65f23c",
        "time": 1527603463,
        "track_id": 1,
        "person_id": "0DD1BEA6-634B-11E8-8B0B-407D0FAD9218",
        "person_image": "4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...",
        "ori_img_id": "0DD1BF0A-634B-11E8-8B0B-407D0FAD9218",
        "ori_image": "4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...",
        "face_image": "4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQE...",
        "clarity": 0.35,
        "quality_pose": 0.45,
        "quality_blur": 0.55,
        "bbox ": {
                   "x": 32,
                   "y": 379,
                   "w": 49,
                   "h": 65
                   },
       }
  • 响应消息
    • 响应消息头

      响应消息头由服务器端(应用系统)收到请求消息后返回。

      响应消息头可包含如下两部分。

      • 一个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对应,传递除响应消息头之外的内容。

相关文档