发布信息

人脸识别程序:自动隐藏桌面内容,避免老板尴尬发现

作者:软荐小编      2024-06-15 16:06:26     101

介绍

工作的时候肯定会浏览一些和工作无关的东西,别说你没做过。

被老板发现的话多桌面切换软件,那可就太丢脸了。当然,我可以立刻切换桌面,但这种行为太可疑了,有时候老板来了我都察觉不到。为了不显得那么刻意,我做了一个脸部识别程序,当老板过来时,自动隐藏桌面内容。

具体来说,我使用 Keras 实现了一个用于面部识别的神经网络,使用网络摄像头判断他是否正在靠近,然后切换图像。

任务

这个程序的目的是当检测到boss靠近时,自动切换电脑桌面。

场景如下:

切换桌面软件快捷键_切换桌面图标_多桌面切换软件

我和老板的座位相隔6-7米,他离开座位后大概需要4-5秒才能到达我的工作站。所以我必须在这个时间内切换桌面,时间很紧迫!

战略

您可能有很多方法可以做到这一点,以下是我的个人解决方案。

首先,利用深度学习技术,让电脑记住老板的脸;然后在我的工作站安装一个网络摄像头,一旦捕捉到老板的脸,就快速切换桌面。我觉得这是一个完美的策略,我们叫它“Boss Sensor”。

多桌面切换软件_切换桌面软件快捷键_切换桌面图标

系统结构

Boss Sensor的系统架构如下图所示。

多桌面切换软件_切换桌面图标_切换桌面软件快捷键

在此过程中使用了以下技术:

让我们一步一步地分析一下。

捕捉面部

首先,用网络摄像头捕捉镜头。

我用的是BUFFALO BSW20KM11BK。

切换桌面软件快捷键_切换桌面图标_多桌面切换软件

你也可以使用电脑软件自带的摄像头,但考虑到接下来的步骤,还是直接获取图像比较好。由于接下来需要进行面部识别,所以需要对图像进行裁剪。我使用 Python 和 OpenCV 来获取面部图像。以下是代码:

面部图像比预期的更清晰。

切换桌面软件快捷键_切换桌面图标_多桌面切换软件

人脸识别

接下来,我们使用机器学习来确保计算机能够识别老板的脸。

这个过程需要三个步骤:

让我们一步一步地分析一下。

图片集

第一的,

一开始我尝试从网络搜索和 Facebook 上收集图片,但数量不够。后来我拍摄了一段视频,将其分解成无数张图片。

图像预处理

我收集的图片已经够多了,但是除了脸部之外,还有很多不相关的部分,学习模型无法准确识别。我们只能将脸部单独裁剪掉。

我主要使用ImageMagick进行提取,人脸图像是通过ImageMagick裁剪得到的。

然后我收集了以下面部图像:

切换桌面图标_多桌面切换软件_切换桌面软件快捷键

我可能是世界上拥有老板照片最多的人,可能比他父母的照片还多。

接下来,构建学习模型。

建立机器学习模型

我使用 Keras 构建了一个卷积神经网络 (CNN),可用于训练。Keras 使用 TensorFlow 作为后端。如果只需要识别人脸,可以调用用于图像识别的 Web API,例如认知服务中的计算机视觉 API多桌面切换软件,但考虑到实时性,我决定自己编写。

下面是网络的架构。Keras 可以轻松显示架构。

======================================

层(类型)输出 ShapeParam# 连接到

======================================

convolution2d_1(Convolution2D)(无,32,64,64)896convolution2d_input_1[0][0]

activated_1(激活)(无,32,64,64)0convolution2d_1[0][0]

convolution2d_2(Convolution2D)(无,32,62,62)9248activation_1[0][0]

activated_2(激活)(无,32,62,62)0convolution2d_2[0][0]

maxpooling2d_1(MaxPooling2D)(无,32,31,31)0activation_2[0][0]

dropout_1(Dropout)(无,32,31,31)0maxpooling2d_1[0][0]

convolution2d_3(Convolution2D)(无,64,31,31)18496dropout_1[0][0]

activation_3(激活)(无,64,31,31)0convolution2d_3[0][0]

convolution2d_4(Convolution2D)(无,64,29,29)36928activation_3[0][0]

activated_4(激活)(无,64,29,29)0convolution2d_4[0][0]

maxpooling2d_2(MaxPooling2D)(无,64,14,14)0activation_4[0][0]

dropout_2(Dropout)(无,64,14,14)0maxpooling2d_2[0][0]

flatten_1(扁平化)(无,12544)0dropout_2[0][0]

density_1(密集)(无,512)6423040flatten_1[0][0]

activation_5(激活)(无,512)0dense_1[0][0]

dropout_3(辍学)(无,512)0activation_5[0][0]

density_2(密集)(无,2)1026dropout_3[0][0]

activation_6(激活)(无,2)0dense_2[0][0]

======================================

总参数:6489634

以下是代码:

现在,只要老板出现在镜头里,就能被认出来。

切换桌面

一旦学习模型识别出老板正在接近,就该切换桌面了。我选择了下面的图片来假装我正在工作。

我选择这张图片是因为我是一名程序员。

切换桌面图标_多桌面切换软件_切换桌面软件快捷键

我只是给你看一张图片。

我想要图片全屏显示,所以用的是PyQt,代码如下:

一切都准备好了。

完成的产品

只要结合以上技巧就可以了。我已经尝试过了。

“老板离开座位,向我走了过来。”

切换桌面软件快捷键_切换桌面图标_多桌面切换软件

“OpenCV 检测到老板的脸并将信息传递给学习模型。”

多桌面切换软件_切换桌面图标_切换桌面软件快捷键

“确认是BOSS后就赶紧换桌面吧!ヽ('∇')ノワーイ”

切换桌面软件快捷键_切换桌面图标_多桌面切换软件

源代码

Boss Sensor源代码下载链接如下:

记得喜欢我 m(_ _)m

综上所述

这次我结合网络摄像头的实时图像采集和Keras的面部识别,成功识别出老板并隐藏桌面。

目前我使用OpenCV进行人脸检测,但是由于OpenCV的人脸检测准确率好像不是很好,所以想尝试使用Dlib来提高准确率,另外也想尝试自己的人脸检测模型。

由于从网络摄像头获取的图像的识别准确率不是很好,所以我会做一些改进。

相关内容 查看全部