13 年前,当我的同卵双胞胎儿子出生时,我和妻子很容易认出哪一个是 Nicolas,哪一个是 Alexander。 在旧金山加利福尼亚太平洋医学中心的新生儿重症监护室(NICU)陪伴了他们 8 周后,我们知道如何将他们的个人行为与名字相匹配。我们很早就学到了大多数同卵双胞胎父母都会掌握的东西:一个人是谁,不仅取决于他的长相,还取决于他走路、说话的方式,以及在与世界互动时的各种行为举止的差异。处理这个广泛的数据集使人类能够立即识别出我们所认识的人,包括同卵双胞胎。 图|Alexander 和 Nicolas 随着从识别罪犯到帮助我们购物等各个方面的广泛应用,面部识别在新闻中被称为“矩阵式的银弹”(Matrix-like silver bullet),我一直在想,当数据集只呈现出非常微小的差异时,机器在辨别人脸方面能够做到什么地步?比如识别同卵双胞胎。 深入探讨差异 随着儿子们一天天长大,我们详细地讨论了他们基因组成的独特性质——本质上说,他们是从同一个受精卵中克隆而来的(注:这有一个频率非常高的“克隆”(“coolness”)因素,因为他们是《星球大战》中克隆人军队的忠实粉丝)。 对他们来说,他们是完全相同的人,从相同的蓝图中创造出来。当然,它们之间是有区别的,这些区别使得我偶尔会将他们弄混淆,而且我猜测,机器也会分不清。相同的 DNA 是一回事,但是基因的内在表现和所处环境的影响,在人类随着时间变化和发展中起着重要作用。 举个例子,我最近购买了一部带有指纹识别器的手机,我问我的儿子们是否想做一个小实验:一个将指纹录入,然后另一个用自己的手指去解锁,这显然是行不通的。事实证明,多种环境因素(其中只有一种是基因)驱使了子宫内的“指纹”形成,因此双胞胎通常具有不同的指纹。
为了帮助回答有关“人类或机器谁更擅长识别同卵双胞胎”的问题,我决定设计一个比指纹读取器稍微复杂的实验,并邀请我的“小科学家们”(我的儿子)接受培训以提供帮助。 构建实验 对于这个项目,我想构建一个尽可能便宜的计算机系统,该系统能够运行执行和训练机器学习与面部识别模型所需的所有软件。我选择树莓派(Raspberry Pi)是因为它具有极高的成本效益,其外围支持并且能够运行标准的 Linux 发行版以及所有编译软件所必需的工具。
我现在已经拥有一些用于其他项目的 Raspberry Pi,因此我测试了三个,看哪种最适合该应用程序。Pi Zero 可以正常工作,但在分析视频提要的帧并编译所有必需的软件时,它耗时 48 小时(是的,编译该软件需要 2 天)。 对于任何想要运行类似环境的人,我强烈推荐 Pi 4b(8GB 型号),因为它具有更快的处理器,多个内核和扩展内存。我们测试的三个 Pi 的详细细节和形状因子如下所示。该设置过程的其余部分假定使用 Pi 4b(8GB)。 图 | Pi Zero,Pi 3b+ 和 Pi 4b- 刻度铅笔 这个项目还需要一个网络摄像头。我已经有一个 Logitech USB 网络摄像头,该摄像头运行良好,无需安装驱动程序。任何现代的 Logitech 或类似的网络摄像头都可以使用。 设置:步骤 1 设置Pi的第一步是将 Raspberry Pi OS 闪存到 micro SD 卡上并进行一些基本配置。为此,将 Raspberry Pi 成像器下载并安装到工作站上。安装完成后,插入 micro SD 卡(通常使用适配器),启动成像仪,选择操作系统和 SD 卡,然后选择“写入(Write)”。 对于 OS(操作系统),请选择 Raspberry PI OS(32位),这是 Debian Linux 的端口,具有设置机器学习环境所需的一切要素。SD 卡写入并验证后,请勿将其移除,将其重新插入 Pi 之前,还需要进行三个附加配置:设置 WiFi,SSH 和视频输出。