在不到两周内构建一个面部识别机器人

用例和项目 雅各Padley

我是雅各布,一个15岁的计算机科学爱好者,刚刚在Dataiku达到了为期两周的实习期,我任务创建一个可以识别办公室不同人面临的计划。以下是我如何将覆盆子PI转为我们伦敦办事处的新的Robo接待员。

机器人

人脸识别并不容易。但是机器学习算法,特别是经过重新训练的谷歌Inception V3模型,可以使这样的任务相对容易地完成。而使用Dataiku则使它变得更加简单,因为该模型可以重新训练以分类人脸图像。但在我完成所有这些之前,我必须设置硬件。

硬件

在这个项目中,我们使用了带有摄像头、PIR运动传感器和LCD屏幕的树莓派4来制作将放置在办公室的项目部分。相机和液晶显示器的安装是快速、简单和相对来说没有痛苦的。

然而,PIR是另一个故事。我们最初面临的问题是,传感器会不断检测到运动,即使是放在厨房里找到的碗下,单独放置五分钟。要么是我们做错了什么,要么是办公室里萦绕着昔日数据科学家的幽灵。所以我们开始寻找解决方案。

捉鬼敢死队gif

经过几小时的卸载和重新安装封装和更改代码和电线,我们发现传感器侧面的小盘控制灵敏度。事实证明,传感器被衰减得如此之高,这可能感觉到空气中原子的振动(可能不是那么高)。所以随着这个表盘转向合理的水平,我们继续使用该项目。

在办公室入口处,有一辆公交车,可以在那里举行会议。由于这个位置直接位于电梯前面,大多数人进入办公室,这自然是放置电子产品的最佳位置。

但我们不能直接把电路板粘到公交车上(尽管那样会快得多)。作为一家科技公司,我们使用3D打印机打印所有组件的外壳。这使得它们可以很容易地使用双面胶带安装到总线上。

红色和绿色机械

数据科学部分

现在为有趣的部分 - 数据科学。使用PI安装到墙壁以及需要的所有模块,是时候开始收集数据了。我们设置了AWS S3存储桶,以允许我们将图像转储到存储桶中以供以后标记。

我们在Pi上设置了一个Python脚本,它会在每次检测到运动时拍摄一张照片,然后从图像中提取每个人脸并将它们发送到bucket中。然而,如果没有机器人的个性,这就不完整了。我为液晶显示器创建了一些自定义字符,使其人性化,任何人都会这样做。

然后,这个程序完成后,我把它部署在Pi上,并让它工作。几天之内,它就收集了600多张图片。令人遗憾的是,其中大约一半是衣架和闪亮的电梯门上的反光。但至少我们有大约300张面部图像可以用于模型训练。

事实证明,有些人几乎不离开他们的办公桌,几乎不被我们可怜的、孤独的机器人看到。另一方面,有些人(比如我自己)经过传感器很多很多次,收集了几十张——我的情况是数百张——的图像。

收集完这些图片后,是时候进行不那么吸引人的部分了——给图片贴上标签。遗憾的是,除了坐下来手动标记600张图片,没有其他方法来准备训练数据集。幸运的是,我有达泰库和一些乐于助人的同事。

我使用Dataiku创建了一个web界面,可以方便地给所有照片添加标签。一旦完成,我们就开始集体标记机器人捕捉到的每一张图像。幸运的是,我编程了一些快捷键来加快这个过程。

人打字gif

奖金:事实证明,人们的标签图像是学习人民名称的非常​​快速的方法!

一旦所有图像都被标记,我们最终可能攻击培训机器以识别办公室的不同成员。使用Dataiku插件,我们将图像和标签送入模型中并将其留给培训。

当我们回到模型时,它的估计准确率达到了80%。这是一个令人印象深刻的数字;然而,我们很快意识到这是由于一半的数据集是非人类的。这台机器能够认出我和另外两个人,但很难正确地标记其他任何东西。

你好,雅各布在屏幕上

出于这个原因,我们决定采取另一种方法并将数据分成人类和非人类。这样我们就可以训练两个模型 - 一个人来识别图像是否是人脸,也可以识别脸部所属的人。这产生了更高的效果,在人脸过滤器上具有90%的精度额定值,面部分类器的精度为65%。现在剩下的一切都是让小机器人用这些信息做点什么。

我更新了脚本,一旦它认出了人,就会向他们打招呼,还添加了一点私人的接触(当然是一个笑脸)。这一切结束后,我想向大家介绍达太库团队的最新成员,新的机器人接待员!

我现在认为我已经设法使用机器的力量,从而消除任何人可能在进入办公室时感受到的悲伤或压力。有一个小机器人按名称迎接你,肯定会蒸发你的思想中的所有消极情绪。毕竟,谁能抵抗这么可爱的小脸?

如果要重新创建类似的项目,请查看GitHub回购!

你可能也会喜欢

用phdata鼓励下一代妇女数据科学

阅读更多

用Dataiku了解新加坡不同地区的天气

阅读更多

NLP在地下地质中的应用

阅读更多

如何使用dataiku从砖头和砂浆移动到网上

阅读更多