在不到两周的时间内打造一个面部识别机器人

用例和项目 雅各布·帕德利

我是雅各布,一名15岁的计算机科学爱好者,刚刚结束在Dataiku为期两周的实习,我的任务是创建一个程序,可以识别办公室里不同人的面孔。以下是我如何尝试将一个覆盆子Pi变成我们伦敦办公室的新机器人接待员。

机器人

面部识别并不容易。但机器学习算法,特别是经过再培训的Google Inception V3模型,可以相对轻松地完成这样的任务。使用Dataiku更容易,因为该模型可以重新训练,以对人脸图像进行分类。但甚至在我能做所有这些之前,我必须设置硬件。

硬件

在这个项目中,我们使用了一个带有摄像头、PIR运动传感器和LCD屏幕的覆盆子Pi 4来制作项目中放置在办公室的部分。摄像头和LCD的安装速度快、简单,而且相对无痛。

然而,PIR是另一回事。我们面临的最初问题是,传感器会不断检测运动,即使将其放在我们在厨房找到的碗下,并单独放置五分钟。要么我们做错了什么,要么办公室里到处都是旧时代数据科学家的鬼魂。所以我们开始寻找解决方案。

捉鬼者

经过数小时的卸载和重新安装软件包、更改代码和线路后,我们在传感器一侧找到了控制灵敏度的小刻度盘。事实证明,传感器被调得很高,可能是感应到了空气中原子的振动(可能没有那么高)。因此,把这个刻度盘调低到合理的水平,我们继续这个项目。

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

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

红绿机械

数据科学部分

现在来看有趣的部分——数据科学。随着Pi和它需要的所有模块安装在墙上,是时候开始收集数据了。我们设置了一个AWS S3存储桶,允许我们将图像转储到存储桶中,以便以后进行标记。

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

然后,在这个程序完成后,我将其部署到Pi上,并将其设置为工作状态。几天之内,它收集了600多张图片。不幸的是,其中约有一半是衣架,闪闪发光的电梯门上有倒影。但至少我们有大约300张人脸图像,可以用于模特训练。

事实证明,有些人几乎没有离开他们的办公桌,我们可怜的、孤独的机器人几乎从未见过他们。另一方面,一些人(比如我自己)多次经过传感器,在桶上获得了数十张——在我的例子中是数百张——的图像。

收集了这些图片之后,是时候做一些不那么迷人的事情了——给图片贴标签。遗憾的是,除了坐下来手动标记600张图像中的每一张之外,没有其他方法可以为训练准备数据集。幸运的是,我有Dataiku和一些乐于助人的同事。

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

男子打字gif

好处:事实证明,给人的形象贴标签是学习人名的一种非常快速的方法!

一旦所有的图像都贴上标签,我们终于可以开始训练机器识别办公室的不同成员。使用Dataiku插件,我们将图像和标签输入模型,并让它进行训练。

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

你好,屏幕上的雅各布

出于这个原因,我们决定采取另一种方法,将数据分为人类和非人类。通过这种方式,我们可以训练两个模型——一个用于识别图像是否是人脸,另一个用于识别人脸属于谁。这产生了更有希望的结果,人脸过滤器的准确率为90%,人脸分类器的准确率为65%。现在剩下要做的就是让这个小机器人用这些信息做点什么。

我对脚本进行了更新,以便在识别出人后立即向他们打招呼,并进行了一些个人接触(当然是笑脸)。完成这些之后,我想向您介绍Dataiku团队的最新成员,新的机器人接待员!

我现在相信,我已经成功地利用了机器学习的力量,消除了某人进入办公室时可能感到的任何悲伤或压力。让一个小机器人直呼你的名字肯定会让你的消极情绪烟消云散。毕竟,谁能抗拒这样一张可爱的小脸呢?

如果你想重新创建一个类似的项目,请查看GitHub Repo!

你可能也喜欢

使用Dataiku中的自然语言处理(NLP)处理文本

阅读更多

数据争论中的人工智能

阅读更多

基于深度学习和Dataiku的胸部X线疾病分类

阅读更多

向客户提供针对性的产品建议bob体育开户

阅读更多