多摄像头行人跟踪+人脸识别系统
项目地址: https://github.com/wuqian5000/Large-scale-software-design
项目背景:
随着近年人脸识别的高速发展,准确度不断提升,人脸识别已经在生活中广泛应用,例如刷脸支付,打卡认证等。该项目的应用场景将会是基于一幢大楼内的多个摄像头构成的网络得到的视频流,检测、跟踪、识别出现在视频中的人脸,与系统中人脸特征库进行比对,并根据不同摄像头的物理位置,得到某一个身份的轨迹信息,同时利用数据库对人脸特征库以及轨迹信息进行管理。
项目意义:
可广泛应用于企业安防、打卡,此外,由于不同摄像头所处的环境(光照、角度)不同,亦可作为人脸项目的实验平台。
第一轮迭代
已实现功能:
一个基本的视频播放器(为之后连入视频源或打开本地视频文件做准备)
主界面如下图
-
Play: 视频播放
初次点击play按钮会唤醒地图功能
-
Pause:视频暂停
-
Restart:重新播放
-
Open:打开本地文件
-
可拖动进度条
-
可点击的地图
-
目标跟踪(行人检测)
-
预留功能: Tools/Test
下一轮迭代计划:
- 完成UI预期功能函数接口
- 选择人脸识别模型
- 使用训练样本对识别模型进行训练
第二轮迭代
1.多视频播放界面
【在这里插图】
功能:
-
登录
点击“登录”,左侧栏弹出摄像头列表
-
注销
点击“注销”,将已展示的摄像头列表清除
-
在线处理
进入“在线处理状态”,接入实时视频流
-
离线处理
进入“离线处理状态”,接入离线视频流 -
视频流数量切换
视频播放区域点击鼠标右键,弹出菜单,可供切换的视频数量为【1,4,9,16】
- 多个视频源同时进行行人检测
2.收集《老友记》人脸照片,制作训练集
下一轮迭代目标
- 人工分类一些老友记中的人脸数据
- 对老友记的数据集进行训练
第三轮迭代
1.手工对收集的《老友记》数据集进行标注
老友记的主角有6位,分别是
①chandler:
②Joey
③Monica
④Phoebe
⑤Rachel
⑥Ross
人工分类完毕后,放入以人名为索引的文件夹下:
2.送入网络进行训练
训练框架参考地址:(https://github.com/cydonia999/VGGFace2-pytorch)
论文链接:http://www.robots.ox.ac.uk/~vgg/software/vgg_face/
网络框架:
需要注意的是我们的数据集总量只有5000多张,这对训练一个原始网络是远远不够的,因此我们加载了预训练模型(下载地址:预训练模型下载),加载了预训练模型的网络具备一定提取人脸特征的能力。在训练的过程中,我们冻结卷积层的参数更新,只使用它们提取出深度特征,随后送入全连接层分类器,只更新全连接层的参数。
网络最后的输出为1x6的向量,对应针对6个身份(Chandler、Joey、Monica、Phoebe、Rachel、Ross)的判断置信度,选取置信度最高的作为判断结果。