安播辅助服务程序说明.md 7.6 KB

安播辅助服务程序说明

程序运行流程

  1. 超脑WebAPI 取出基础信息,基础信息包括
    • 算法信息
    • 平台信息(摄像机信息)
  2. 从总控WebAPI获取到相关的处理规则
  3. 从超脑(也是Redis)获取到监测信息,信息包括
    • 是否带口罩
    • 人员计数等
  4. 根据处理规则处理获取到的监测信息
  5. 将处理过的信息写入到数据库中

使用到的地址

  1. 超脑基础信息API地址 apifox
  2. Redis地址
  3. 总控数据库
    • SQL Server
      • 数据表:EQM_BJ
      • IP:192.1.3.105
      • 用户名:sa
      • 密码:Qwer1234
    • 达梦数据库
      • 数据表:EQM
      • IP:192.1.2.44
      • 密码:QWERT12345
      • 数据库:EQM_BJ
    • WebApi

从行业超脑获取基础信息

  1. 使用http从行业超脑获取到算法列表设备列表
  2. 这里使用一个线程单独读取,可能需要定时更新
  3. 算法列表设备列表tAction对应的值,算法列表好像只有这三个只有用,读取到后写入到EQM数据库 |算法列表|设备列表|EQM| |:--|:--|:--| |ability|ability|ActionId| |taskTypeId|taskTypeId|ActionTaskid| |muAiName|taskTypeName|ActionName|
  4. 设备列表获取的数据写入到EQM数据库的tActionCamer表格中,其对对应的关键字如下 |设备列表|tActionCamer| |:--|:--| |deviceId|CamerId| |deviceName|CamerName| |deviceSerial|CamerSerial| |deviceType|CamerType| |port|CamerPort| |userAccount|CamerUsr| |userPWD|CamerPwd|

  5. 安播可能会用到的算法 |编号|算法名称|能力|基础算子| |:--|:--|:--|:--| |1|人脸识别|facerecognitionstudio|facelib| |2|人员计数|mancount|atom-msrcnn| |3|违禁物品|contraband|atom-msrcnn| |4|玩手机|playPhone|atom-hodet(atom-yolo1)| |5|睡岗识别|sleep|atom-yolo(atom-itc)| |6|疲劳检测||atom-itc| |7|动物识别|animal|atom-msrcnn| |8|老鼠识别|mousedetection|atom-yolo1| |9|未戴口罩|mask|atom-yolo1|

从Redis获取数据

  1. Key的组成:%d : %s, DeviceID, 算法ID
  2. 算法ID通过获取摄像头算法列表获取到这个设备的算法编号,关键字是ability,存放在EQM数据库的tAction表格的ActionID
  3. Redis获取到的是JSON格式的数据,写入tAlarmInfo表格,需要根据Redis数据去其他表格获取补充数据,组合好后写入tAlarmInfo表格。Redis数据格式如下:

    {
        "actionDes": "",
        "actionResult": true,
        "alarmId": 73113,
        "beginTime": "2024-09-01T16:52:38.426",
        "channel": 1,
        "classifyId": 64,
        "classifyName": "培训教室-海康",
        "deviceSerial": "172.16.9.31",
        "endTime": "2024-09-01T16:53:38.426",
        "eventTime": "2024-09-01T16:53:08.426",
        "imageInfo": "http://webdav-read.default:80/webdav//GUI/1/PUMPING/2024/09/01//66d42b74e4b02066478c1ace.jpg",
        "isKeyPoint": 0,
        "personList": [],
        "picUrl": "66d42b74e4b02066478c1ace.jpg",
        "taskId": 452,
        "taskName": "夜晚001",
        "bBoxes": [
        {
            "bbox": [
            1692,
            369,
            1791,
            604
            ],
            "colorFlag": 1,
            "conf": [
            "0.03"
            ],
            "label": [
            "未成年人"
            ],
            "match_id": "",
            "status": false
        }
        ]
    }
    
  4. 补充数据关键字和其对应的EQM库表格 |关键字|补充表格|所需的数据| |:--|:--|:--| |channel|tChannel|获取通道信息| |CamerId|tRoomCamer|获取到RoomId| |RoomId|tRoomInfo|获取到Room信息|

EQM数据库表格说明

  1. tAction是算法信息表,从超脑获取到的算法信息写入这个表格
  2. tWorkOnInfo是人员在岗信息表,也包含人脸信息库
  3. tActionCamer摄像机ID,和算法ID关联
  4. tFaceUser用户信息表,读取到超脑返回的用户数据,写入该表
  5. tRuleInfo报警规则表,区域人员检测(人员计数)会使用到
  6. tWorkOnInfo人员在岗信息表,主要给客户端同步用的
  7. tPeriod 报警时段和频道与App对应表 |标号|App| |:--|:--| |0x01|人员在岗识别| |0x02|违禁物品识别| |0x04|区域非法入侵识别| |0x08|疲劳检测识别| |0x10|区域人员统计| |0x20|老鼠识别| |0x40|玩手机识别| |0x80|未戴口罩识别| |0x0100|摔倒识别|

启动程序,可能需要从EQM获取的数据

  1. tCamerinfo获取摄像机信息
  2. tAction获取算法信息
  3. tPeriod获取时段详细信息,这里是补充获取摄像机信息
  4. tRoomCamer获取房间信息,这里是补充获取摄像机信息
  5. tRoomCamer获取通道信息,这里是补充获取摄像机信息

应用各算法的检测逻辑

  1. 逻辑详情见安播辅助提示系统需求文档
  2. 这里不再是一个摄像机一个线程了,而是根据任务分配线程,一个频率的一个检测功能就是一个线程,一个检测功能可能需要多个Action(算法),一个算法可能需要多个摄像机配合
  3. 这里的对应关系如下:

    • 频率包含几个房间
    • 一个房间包含几种功能(APP)
    • 功能包含使用到的算法(Action)
    • 算法包含需要的设备(摄像机)
  4. 也有可能一种功能需要多个房间联合判断

报警算法逻辑

单个算法-单个摄像机写入EQM数据库报警信息

  1. 出现报警时会创建一条报警信息,直接写入到数据库,只有开始时间
  2. 根据设置的规定时间继续检测(如违禁品出现10秒才算报警,防止误报警),在规定时间内报警消失,就删除这次报警信息
  3. 超过了规定时间,报警消失,更新开始创建的那条信息的结束时间

违禁品检测

  1. 违禁品检测一个摄像机一个算法
  2. 检测违禁品一般是一个算法只检测一个物品,如果有多个物品,报警只有一条,所有违禁品都消失了,才会结束报警

算法需要多个摄像机配合

  1. 区域人员计数是一个算法ID,人脸检测是一个算法ID,这两个结合起来,组合成了区域人员检测(人员计数、在岗离岗、非法入侵等)

区域人员检测(区域人员计数)

  1. 区域人员计数有几种情况
    • 直播间、导播间各有最小和最大人数
    • 直播间+导播间有最小和最大人数

区域非法入侵

  1. 区域非法入侵需要两个算法配合,区域人员检测和人脸识别
  2. 区域人员非法入侵有几种情况,这个算法需要
    • 未知人员入侵
    • 人员个数和人脸可以识别的个数不相等
  3. 区域人员检测需要判断是否在检测时间段内
  4. 一个频率只有一个直播间和一个导播间?

人员在岗识别

  1. 需要人脸识别算法
  2. 人员在岗主要是给客户端实时信息
  3. 创建一个最新的记录在tWorkOnInfo表中,不断地更新这条数据的人数和人员信息
  4. 如果所有人都离岗了,这条信息的人数就清零
  5. 最新的在岗信息清零后,人员回来,就重新创建一条新的数据

直播间-离岗在岗报警