Work
Design
系统设计
数据流
总体流程图
为什么要使用face_recognition与tensorflow共存的设计
- 在早期,难以获得大量用户的照片用于tf训练模型,而使用python中现成的face_recognition包可以利用少量(单张)照片简单快速的判断用户,可以支持初期的系统运行,同时为tf收集照片数据用于训练模型;
- 在后期,如果用户数量较多,fr包遍历所有用户照片可能导致性能问题,此时tf的模型由于已有足够的训练,则可以保证准确率,故可以替代fr包
实现
前端页面
- 照片框,候选人物列表
- 人物信息表单,出入记录表单
- 访客记录列表
前端功能
- (页面1)采集图像
- (页面1)使用采集到的图像进行识别(接口1),返回识别结果供访客选择(页面1)
- (页面1)若访客选择已存在的人物,则根据选择的人物id,查询人物信息(接口3)来填充表单(页面2)
- 若用户没有当天到访记录则让其填写到访记录信息(页面2)并上传签到记录(接口6,接口9)
- 若用户已有到访记录则提示签离成功并上传离开记录(接口7)
- (页面1)若访客选择注册,则提供一个空的表单进行注册(页面2)(接口4),并上传用户的照片(接口2)
后端接口
POST /visitor/doRecognize
上传一张照片,返回最接近的人物的ID与相似度列表
POST /visitor/addKnownPhoto
根据visitorId为一个人物增加一张照片
POST /visitor/getPersonInfoByIds
根据visitorId列表查询一些人物的信息
POST /visitor/registerVisitor
提交form注册一个人物
GET /visitor/getPhoto
根据visitorId获取一个人物的照片
POST /visitor/addVisitRecord
为某个人物添加一条到访记录
POST /visitor/addLeavingRecord
为某个人物添加一条离开记录
GET /visitor/getVisitRecordSignature
根据recordId获取一条record中的签名
POST /visitor/addVisitSignature
根据recordId为一条记录添加一张签名图片
- 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
签入签出机制:
- 进行识别,得到相似度最高的k个人物
- 对k个人物进行查询,查看人物在当天是否有未签出的记录,若有则默认提供签出选项
- 每天结束时对所有未签出的记录进行签出