BossSensor
张宇亮 / 2017-10-01
今天是国庆假期的第一天,早上一觉睡到自然醒,美滋滋(~ o ~)。晚上吃完晚饭来实验室打个酱油,发现之前有个有趣的项目还没来得及写篇博客,遂准备利用今晚上这点时间好好整理一下。
记不得是今年什么时候的看到的一篇博文写到:有个程序员写了一个程序,使得老板在向他的办公桌走来时,电脑屏幕自动切换到工作时的样子,大神真是无处不在,啧啧啧,但当时这个文章没讲具体是怎么实现的,前段时间在逛github时偶然发现了这个项目,但这个代码复制过来以后不能直接在本地计算机上实现以上功能,于是做了一些改动和说明,增加了图像数据收集的过程,这样就可以在小笔记本上愉快地跑起来了。
首先简单地阐述一下项目实现的原理:
收集老板脸部的图像信息,收集非老板的一些其他人的脸部图像信息,数据集越大越好(500~1200张左右),这样下一步训练的模型的准确度也就越高。
使用python的keras库调用TensorFlow训练一个可以特异性识别老板的卷积神经网络模型模型。(当然这个直接用TensorFlow写也可以,Keras的语法更容易上手,我看这个大神使用了四层卷积,两次max pooling,识别的准确率还不错)
打开摄像头,将其对准老板走到你工作位置的必经之路,捕捉老板的面部信息,使用第二步训练的模型判断老板是否出现,这一步需要使用OpenCV捕捉面部信息,并把数据传递给模型进行识别,所以要先安装好OpenCV。
我的代码分享在我的github里1,可以直接下载,解压后是一个文件夹,应当包含以下文件:

运行“face_capture.py”会使用电脑自带的摄像头拍摄1200张照片,存放在“data/boss”文件夹,注意修改脚本中的保存路径,现在脚本中的保存路径只适用于我的笔记本。在“data/other”文件夹下我已经收集了一些非boss(我自己or你自己)的脸部图像。
完成数据的准备工作后,运行“boss_train.py”训练模型,保存在“store”文件夹下。
运行“camerareader.py”打开摄像头,如果老板出现在摄像头中,就会把保存好的截屏python IDE图片“spycharm.jpg”全屏显示在屏幕上,同时要把此脚本第11行的路径进行修改,使得其与你安装的OpenCV的路径一致。

确保在运行脚本前安装了“requirements.txt”文件中相对应的包。
玩笑归玩笑,我简单评估一下这个项目的实战价值:不太可能应用到和实验室老板的…,嗯当然我肯定是没有这种想法的,没有、我不是、你瞎说,咳咳。难点还是很多的,比如:
- 如何让老板待在你的电脑前安安静静的让你拍两分钟的照,或者慢慢收集老板的照片,这个…..
- 如何向老板解释你从自己的桌子上接了个摄像头出来,并且对准老板的方向。
- 识别是很快的,但是识别程序要一直开着。
我倒是想到了一些可能的应用,比如在树莓派上外接个摄像头,并且和Arduino结合做些智能家居,或者安装一个“我妹”报警器,毕竟现在年纪还小,估计一个棒棒糖两分钟还是可以保证的,实在不行就两个。哈哈哈,just kidding😎。
