[关闭]
@xlsd1996 2018-03-16T02:42:34.000000Z 字数 2633 阅读 728

访客管理系统-人脸识别模块

Work Design

系统设计

数据流

CMDBPythonTensorflow用户照片对比 本地照片集进行判断判断结果根据结果决定是否新建用户新的照片进行训练CMDBPythonTensorflow

总体流程图

Created with Raphaël 2.1.2访客到来拍照并上传至cmdashboard发送给python服务程序进行识别是否已存在此用户cmdashboard保存访客到来记录将新照片交给tf训练程序结束让新用户填表注册yesno

使用face_recognition库的识别流程图

Created with Raphaël 2.1.2服务程序启动,遍历known文件夹中的照片并生成特征向量列表vl收到一张照片计算得到新照片的特征向量v,遍历vl,找出与v相似度最高的用户v'若 v'与v的相似度超过一个阈值已存在此用户返回相似用户的id与相似度列表尚未存在此用户yesno

为什么要使用face_recognition与tensorflow共存的设计


实现

前端页面

  1. 照片框,候选人物列表
  2. 人物信息表单,出入记录表单
  3. 访客记录列表

前端功能

  1. (页面1)采集图像
  2. (页面1)使用采集到的图像进行识别(接口1),返回识别结果供访客选择(页面1)
  3. (页面1)若访客选择已存在的人物,则根据选择的人物id,查询人物信息(接口3)来填充表单(页面2)
  4. 若用户没有当天到访记录则让其填写到访记录信息(页面2)并上传签到记录(接口6,接口9)
  5. 若用户已有到访记录则提示签离成功并上传离开记录(接口7)
  6. (页面1)若访客选择注册,则提供一个空的表单进行注册(页面2)(接口4),并上传用户的照片(接口2)

后端接口

  1. POST /visitor/doRecognize
    上传一张照片,返回最接近的人物的ID与相似度列表
  2. POST /visitor/addKnownPhoto
    根据visitorId为一个人物增加一张照片
  3. POST /visitor/getPersonInfoByIds
    根据visitorId列表查询一些人物的信息
  4. POST /visitor/registerVisitor
    提交form注册一个人物
  5. GET /visitor/getPhoto
    根据visitorId获取一个人物的照片
  6. POST /visitor/addVisitRecord
    为某个人物添加一条到访记录
  7. POST /visitor/addLeavingRecord
    为某个人物添加一条离开记录
  8. GET /visitor/getVisitRecordSignature
    根据recordId获取一条record中的签名
  9. POST /visitor/addVisitSignature
    根据recordId为一条记录添加一张签名图片
  10. IT模块中searchgidbyname接口

npm --registry=https://registry.npm.taobao.org --cache=HOME/.cnpmrc

angula2 use camera
https://stackoverflow.com/questions/40131772/angular-2-and-instantiation-of-a-camera-stream-with-html-5-video

angular2 post img
https://devblog.dymel.pl/2016/09/02/upload-file-image-angular2-aspnetcore/

angular2 canvas to img
https://stackoverflow.com/questions/37873043/how-to-draw-on-image-angular2-ionic2
https://stackoverflow.com/questions/43538362/upload-html5-canvas-image-to-server-angular2-spring-boot

签入签出机制:

  1. 进行识别,得到相似度最高的k个人物
  2. 对k个人物进行查询,查看人物在当天是否有未签出的记录,若有则默认提供签出选项
  3. 每天结束时对所有未签出的记录进行签出
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注