系统需求

某人脸检索系统,系统有3个方面的要求:

  1. 实现黑名单监控告警

    黑名单中保存的是在逃人员的人脸特征,摄像头提取的人脸都与黑名单库中的人脸做对比。

  2. 同人识别

    摄像头提取的人脸都会与证照库中的人脸特征做对比,通过人脸找到关联的证件ID,通过这种方式把人脸转出结构化数据。

  3. 历史库人像检索

    对于在证照库中找不到的人脸,会保存在历史人像库中,并保存1个月,以备后续案件侦破的时候查询轨迹使用。

系统架构

人像管理部分的系统架构如下:



  • 应用层

    实现用户界面和下层调用逻辑

  • 数据层

    对数据做了抽象,对人像抽象出四个库。

    1. 黑名单库

      向量库,该库有100w数据。每个摄像头拍到的人像需要首先到这里做对比,1000路摄像头,评价每秒产生1张人脸照片,要求1000 QPS,为了减少误报,系统对准确率要求较高,可以使用无损检索模式。

    2. 人员库

      向量库,保存了2亿人脸特征数据,会有少量更新,摄像头的人脸都会到这个库做检索,对QPS要求极高,每个摄像头每秒检索1次,要求1000 QPS。

    3. 历史库

      向量库,保存1个月的人脸向量数据,每天1000路摄像头会产生4.3亿人脸数据,1个月产生129亿向量,人脸检索的时候,首先通过人员库查找人员ID,如果检索到人员ID则根据人员ID到轨迹库检索轨迹,否则到历史库中通过人脸特征检索人脸轨迹,所以该库QPS要求较低,100 QPS即可。

    4. 轨迹库

      同人识别是为了实现摄像头每张人脸都能映射到人员ID,表中保存,摄像头识别的每张人脸都会去证照表中检索,如果检索到则会把人脸对应的id和摄像头位置等信息写入轨迹库(结构化数据表)。

  • 基础设施

    分析型数据库PostgreSQL版实现结构化和向量数据存储和计算,OSS实现非结构化数据存储。